diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index e35d1c45..34e6d64c 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1 +1 @@ -* @gleanwork/api-client-reviewers +* @gleanwork/pact diff --git a/.speakeasy/gen.lock b/.speakeasy/gen.lock index 1b4f5481..fb978c5e 100644 --- a/.speakeasy/gen.lock +++ b/.speakeasy/gen.lock @@ -1,49 +1,55 @@ lockVersion: 2.0.0 id: 3e3290ca-0ee8-4981-b1bc-14536048fa63 management: - docChecksum: 91d38b9d4b28ef9b1b98e10a0b5a7371 + docChecksum: 89c2eac364945e9c2e201f80cb8a2d72 docVersion: 0.9.0 - speakeasyVersion: 1.686.0 - generationVersion: 2.796.1 - releaseVersion: 0.11.27 - configChecksum: 37e1926f5925719f705610da6ba7d40e + speakeasyVersion: 1.795.1 + generationVersion: 2.932.9 + releaseVersion: 0.16.0 + configChecksum: 305d1b3865da828cf96c1c98829ad9ba repoURL: https://github.com/gleanwork/api-client-python.git installationURL: https://github.com/gleanwork/api-client-python.git published: true persistentEdits: - generation_id: 8295e5cc-3cba-4720-b40b-d377a32f9ce7 - pristine_commit_hash: ec8d0cb548d884b034e3aa08460751054ec7dca1 - pristine_tree_hash: f2f4799cb7a7f9af40b1a07a81904fe71f4a3e37 + generation_id: cd37a2f4-9877-4161-9fc7-f557dd9e4231 + pristine_commit_hash: 72efbc39af4ca0a33ff8d10dc9395be6ab128f55 + pristine_tree_hash: 7d506ac8f9bdc4b783207925aee89b353e41ad64 features: python: - additionalDependencies: 1.0.0 - additionalProperties: 1.0.1 + acceptHeaders: 3.0.0 + additionalDependencies: 1.1.0 + additionalProperties: 1.0.2 + callbacks: 2.0.0 configurableModuleName: 0.2.0 - constsAndDefaults: 1.0.5 - core: 5.23.18 + constsAndDefaults: 1.0.7 + core: 6.1.0 defaultEnabledRetries: 0.2.0 deprecations: 3.0.2 devContainers: 3.0.0 - enumUnions: 0.1.0 - envVarSecurityUsage: 0.3.2 - examples: 3.0.2 + downloadStreams: 1.0.1 + enumUnions: 0.1.1 + envVarSecurityUsage: 0.3.3 + examples: 3.0.4 flatRequests: 1.0.1 flattening: 3.1.1 - globalSecurity: 3.0.4 + globalSecurity: 3.0.7 globalSecurityCallbacks: 1.0.0 globalSecurityFlattening: 1.0.0 - globalServerURLs: 3.2.0 + globalServerURLs: 3.2.1 groups: 3.0.1 - methodArguments: 1.0.2 - mockServer: 0.1.1 + inputOutputModels: 3.0.0 + methodArguments: 1.1.1 + methodServerURLs: 3.1.2 + mockServer: 0.1.4 multipartFileContentType: 1.0.0 - nameOverrides: 3.0.1 - responseFormat: 1.0.1 - retries: 3.0.3 - sdkHooks: 1.2.1 - tests: 1.19.6 - unions: 3.1.2 - uploadStreams: 1.0.0 + nameOverrides: 3.0.3 + nullables: 1.0.2 + responseFormat: 1.1.0 + retries: 3.1.0 + sdkHooks: 1.3.0 + tests: 1.19.10 + unions: 3.1.9 + uploadStreams: 1.0.3 trackedFiles: .devcontainer/README.md: id: b170c0f184ac @@ -69,30 +75,82 @@ trackedFiles: id: 3aed33ce6e6f last_write_checksum: sha1:8e83346b5645b6bef8a2423f0dbc9a6365b5bd46 pristine_git_object: 13f153fada6e805e20d596947edc7b0bc9351317 + docs/errors/accessrequestpermissiondeniedresponseerror.md: + id: ef4760b1057f + last_write_checksum: sha1:bc4a2392e4e46ce5b32fdbd3f70121cb0598e803 + pristine_git_object: 057362704954f0b059084ef5cf8b5451e0310d0d docs/errors/collectionerror.md: id: 3d0bc04308fd last_write_checksum: sha1:b0c6864817dbdc3bde8fee4a1e142d51e89f781c pristine_git_object: a6800fed5ba94f25934cdd5b8fe3fa6832f51239 + docs/errors/errorinforesponse.md: + id: 140fa0c6adb9 + last_write_checksum: sha1:7c4f28cfb4e47bcb3f6dbc44d9cc2baa6b2027a7 + pristine_git_object: 09e01a60f99d53e50015bf69e749965e69617771 + docs/errors/errorresponse.md: + id: 910ef333346b + last_write_checksum: sha1:1f4ebb1db37a510e68d02e7f1f5b7b2fd63c0311 + pristine_git_object: 7ac30077e52db91693472ff9b82ee421d24014d5 docs/errors/gleandataerror.md: id: d8679ae13234 - last_write_checksum: sha1:bc595bf0967592999c683a4e3a43fa69783bbd10 - pristine_git_object: f1df02d4e5daa03df8e8c1b5684fcc91bcabc8a7 + last_write_checksum: sha1:a6567c83c6c0bf8eaed55f50af08001869d6a5de + pristine_git_object: 7c4c0d90fd0a2de3e48b99ce691c1e9a6ab03041 + docs/errors/platformproblemdetailerror.md: + id: e92c15ace3bc + last_write_checksum: sha1:5208ac53c3ccef42decf04d32f2e415299bc7ac6 + pristine_git_object: d5a6d0abd3cce2307eafb570c8d03387a73f809f + docs/errors/platformunauthorizedagenttoolsproblemerror.md: + id: 57383742ed65 + last_write_checksum: sha1:6e11cf16bb180a3bd8864274e4a370f86b6e2e4d + pristine_git_object: 38c45b09fb348198d5e0f6ea6efc607ae9d3a0c1 + docs/errors/unauthorizedagenttoolserror.md: + id: fc7c77695467 + last_write_checksum: sha1:896287bfaf412afdb356d2af882513c8aab460f0 + pristine_git_object: 38819b2d63ff688e0ee9b2eb9062262f860609fb + docs/models/accessrequestpermissiondeniedresponseerrortype.md: + id: cf10b3c05fce + last_write_checksum: sha1:f7cd44ff9d027f0aca17dfbf6e52360b16ae38f6 + pristine_git_object: 2c42a6041e901e954535b0b33fb856d255695bf0 + docs/models/actionauthtype.md: + id: f6c3ce39f190 + last_write_checksum: sha1:6fe1004cc273d5e15dff5ba82f42bd218774a83b + pristine_git_object: d288ff5c0b7fa166bdd7d0b218083b6a1595ee50 + docs/models/actionpackauthstatus.md: + id: ac77720bcbb1 + last_write_checksum: sha1:55c853abc3f8cf36560a2f07a6a906332363abfe + pristine_git_object: 70a7b62401070d647ccad29ba721f91c413785e8 + docs/models/actionpackauthstatusresponse.md: + id: f9e31988def9 + last_write_checksum: sha1:765093f3bb92679552cd425206653065235f08f9 + pristine_git_object: af0cfc2eb55c65f7d424ee10654d824c968af9f8 + docs/models/actionpreview.md: + id: 794647b3310a + last_write_checksum: sha1:16c32dc560ebfcaa76478139fefc3e2940b4a7eb + pristine_git_object: 1f46c6b53386dd344b1b3af0b4ec7214b54f4d33 + docs/models/actionsummary.md: + id: 1ff225176066 + last_write_checksum: sha1:e1adfabd2ed131a1414cb6b86495ad3116bb95df + pristine_git_object: fc60149cf9a0bc37e5609f6e1fd7534719980775 + docs/models/actiontypesource.md: + id: 8a1b61caacd0 + last_write_checksum: sha1:1c5cab2e8776ff0fbd0d0bef793fb68a9f7a5869 + pristine_git_object: bde2a8b471a33a62d98b0e8d50e35526bf31171a docs/models/activity.md: id: 78c9fe854b65 last_write_checksum: sha1:2bb3d1005124784d416910cff9777277facaebb2 pristine_git_object: d76ec39a136065ebc4abb068f012772760b691f9 docs/models/activityenum.md: id: e83caa6309bf - last_write_checksum: sha1:1bd70a0c6c402c10746be7a11f493a7cb1573ee7 - pristine_git_object: 249769c9314576554dcff1826d1d0823c7c31fc3 + last_write_checksum: sha1:dada375bf3ce6404db82354f2dffb0223e2bdab2 + pristine_git_object: 7e266e5547286d204720d0043374d5cf7bb7a65a docs/models/activityevent.md: id: 6fb2935f5fd2 last_write_checksum: sha1:ea2d439de41f2a481aa341f7337da1a9a9c451cb pristine_git_object: 6a4f00ff713a5a99f8006722c0e6847ed5941434 docs/models/activityeventaction.md: id: 8b40a2a5c7b3 - last_write_checksum: sha1:862e596ac515d66fed8b3f0aecb1a07db43c7a46 - pristine_git_object: d364b2f618ea82202976f354f4a1ce5eb5df320b + last_write_checksum: sha1:53a8104830b267072a14c0019d9e31beb6d2fcd5 + pristine_git_object: f2a30c1b9f3709f477f22f3a1507377ccb35e607 docs/models/activityeventparams.md: id: 45b35cfb2c89 last_write_checksum: sha1:c800299d146bf1563b15d48d47536abe1e1a021b @@ -103,12 +161,16 @@ trackedFiles: pristine_git_object: 31aa0600e412c0b6eae303d6ce4ff6a152f865bf docs/models/addcollectionitemserrorerrortype.md: id: 19bb11e23f98 - last_write_checksum: sha1:9b25446aefc18b4ea83a19bced450488b108dff8 - pristine_git_object: da1476fc245c3008f35dbfdb2ddd9a1e5c2e6544 + last_write_checksum: sha1:48722d7fe76382e5d457a8d0a6f1bdb93405eb39 + pristine_git_object: 761a12fef01d4fd9fe497b78376c1ee82a9201e5 docs/models/addcollectionitemsrequest.md: id: 77be3840df27 last_write_checksum: sha1:d3c2c8791ea4ad38979641f79b12473d5ef7b6af pristine_git_object: 3f8e3df44347af6a5233e01edd5ed4eb8a195ee3 + docs/models/addcollectionitemsrequestrequest.md: + id: 12fae7efc710 + last_write_checksum: sha1:12862265b02d82195bb05861465a683f1ff70b6f + pristine_git_object: 06b734c859b0d9579513d68bb5819df38aff3e3c docs/models/addcollectionitemsresponse.md: id: 7da8da71c4d9 last_write_checksum: sha1:973313c99ec4dd5eeabbce4373d5ba409d3c17a9 @@ -117,6 +179,14 @@ trackedFiles: id: 561d5510e1fd last_write_checksum: sha1:372dec0693e8b9804729161c20c4064c6c8e054b pristine_git_object: b91d9ff68747160fb9b1df76f6499ddc66baef14 + docs/models/addverificationreminderrequest.md: + id: d036e5a8e487 + last_write_checksum: sha1:c6bce69847c73c7d812862396affa79d8f3e47ca + pristine_git_object: ac943c103887202145ede4cc4fda97541cc768be + docs/models/adminsearchrequest.md: + id: defaea5cef39 + last_write_checksum: sha1:f2593488f88b6a1a278dc05787212eec1ea023c0 + pristine_git_object: 608a7bad94d9445cfa1e7ad9de07cd0bb6848272 docs/models/agent.md: id: ffdbb4c53c87 last_write_checksum: sha1:5cae21e5f1580771477cf08ee54749aa174f1390 @@ -131,76 +201,72 @@ trackedFiles: pristine_git_object: a1664d98b1a9d02c1b2aa5fc8ec85a9bcdfc89e8 docs/models/agentenum.md: id: 1209c0033b50 - last_write_checksum: sha1:3d1664930fb4babe2f691e13a7219ad4da573406 - pristine_git_object: b80a0fea061b82c998068e104db8348ad3ffaf13 + last_write_checksum: sha1:ded3d81b230238d759bc5f0a1a9de8b8cfb399d2 + pristine_git_object: 561a7e7728db00d22208921c69d8ae9389e63774 docs/models/agentexecutionstatus.md: id: 4087123e1461 - last_write_checksum: sha1:bf35b6315cf3654117a529a944215bc366d133cd - pristine_git_object: c1bd49e6e3a94b09b3268bf6df07d3e0367070a4 + last_write_checksum: sha1:a7b37e7351ffaa54aa2384af4ffba8fc95fe9cee + pristine_git_object: d15717b2f9659e4aefbdf8e1560adb663102b0df docs/models/agentmetadata.md: id: 73ecfb89f67c last_write_checksum: sha1:0695be39013d7ee099dd77e65f5ef57bb97a3019 pristine_git_object: aec0cc1eec7dad413ec698c535c010e6be756a69 docs/models/agentrun.md: id: 71e2caf9b95a - last_write_checksum: sha1:e78aeb4eff73bf8d90878933b0325e72ed43e72a - pristine_git_object: ba0e0f9a25efd7f050da4c76e9bc2c2db66593ea + last_write_checksum: sha1:8433dcf487a90f703f04b766383a08b5c0c933b3 + pristine_git_object: 534e93714734fd41fabc0d64b5da344b2dda110d docs/models/agentruncreate.md: id: 2ab11e93c9de - last_write_checksum: sha1:0bb40ce69125ac4d6240e600001c0ed360a981a8 - pristine_git_object: 8c52882a75a63a52fcf9ac9d2db0e124ec10bef9 + last_write_checksum: sha1:5f6d67b0cf39049f4ead7eecec6a27f3d2862cba + pristine_git_object: 46d31de6280f25734883618e5ac037cb623e6eda docs/models/agentrunwaitresponse.md: id: 2c571dee53ea last_write_checksum: sha1:a9d9e9928a5629f4c75364315f312801f06c51b7 pristine_git_object: 51fc6fc76b0487468b5e073f048628ed03b38836 docs/models/agentschemas.md: id: a2193f5fe96f - last_write_checksum: sha1:f53c3696f89f1563a62db12f3454151b04267a19 - pristine_git_object: 3535a940f98027b35c3e8c6d96c99d1d7bea0914 + last_write_checksum: sha1:e6801938b086307067b31fe554e3d4f87fc22d4f + pristine_git_object: 4ccba78fab4fe2cae243e8a654413edb6e01c422 docs/models/agentsinsightsv2request.md: id: 9d5fdb90e1e6 - last_write_checksum: sha1:a02b97b0fa1b6993913ce744e120681213094041 - pristine_git_object: fc4a769fd5f7f8c5e36e1eec936d9454f0f01242 + last_write_checksum: sha1:2599567d774df8843a83e974e3af1439c5dca8a0 + pristine_git_object: 0218c6facda06ed257e28efb43191b2dad1ee403 docs/models/agentsinsightsv2response.md: id: c419d6511b8b - last_write_checksum: sha1:29a7479361fd666c5acca9722f30a0c49e124bc8 - pristine_git_object: c0812335d968b650ae99d0b59b95d2e9307237ae + last_write_checksum: sha1:660b206505b7e2cc7181dda1e2b9e6acd76b09a3 + pristine_git_object: bde7e4fd054fb0e8b4b3c243370ba46ece9e8def + docs/models/agentstimesavedinsight.md: + id: c998db614c46 + last_write_checksum: sha1:0653ac44dfc9ed51985aec9a129941b91501812a + pristine_git_object: 552714b4d8aeed7dba72e1b11880f3fb71884e53 docs/models/agentsusagebydepartmentinsight.md: id: 8e00b4ec28db last_write_checksum: sha1:ba6bc3369d70a9f8b0cd136e5ffa9318b54222d3 pristine_git_object: 4c36908d52176a2a907c75baa72220dd0c5b4af7 + docs/models/agentusecaseinsight.md: + id: 64232b208d9b + last_write_checksum: sha1:1b16c2e2fb1dfe9497529830dc32cd5cf746737b + pristine_git_object: 88a6bd23f65b896d244ac106cada2c2bf48be582 docs/models/agentusersinsight.md: id: d175e9ef2267 last_write_checksum: sha1:13186b89e562d1930304e5f822f47de768855397 pristine_git_object: 69acef4de938067397980887e41d16ff3df23529 - docs/models/aiappactioncounts.md: - id: ae019ddd2731 - last_write_checksum: sha1:c35ae442a452843b6eb87d743944a815d4a579b8 - pristine_git_object: cb0b5e37b7b1b640641cdbe598ed7ea65348a8fe - docs/models/aiappsinsightsresponse.md: - id: e6d964f0f919 - last_write_checksum: sha1:d043a59b04db3ebde22000f4677a30155709e240 - pristine_git_object: 81de92098753e0c2cc2b0f5d8ca76d9a1cf3b37e - docs/models/aiinsightsresponse.md: - id: a656569eb097 - last_write_checksum: sha1:f9b035035d79889e3c19e6d45d3623ecce5b2580 - pristine_git_object: 670dbf43f248ee2df1d42bdc42c127525f25c85f docs/models/allowlistoptions.md: id: ba4d408f7c0f - last_write_checksum: sha1:552aedb8f14b744735e387cac111e935991b6330 - pristine_git_object: e986d96670dfd60f104d4690368bd5f08153a4fa + last_write_checksum: sha1:bfb1bfdc89ff18c7b2a1f4674afaee48ebd536ae + pristine_git_object: e1c6f3876247ed4fa2fdce53f576ad5945b2f670 docs/models/announcement.md: id: b48819ef2145 - last_write_checksum: sha1:c0cb64c03c162409922ef5ae2b79630b730e75c8 - pristine_git_object: dc590582264ec5e212808b30f60cb17b4a9ea024 + last_write_checksum: sha1:e44bf192a9507dad79b8aa155305eebbbceeca36 + pristine_git_object: 74daa7c9ea2445b0d16c86ebf5840d4daaff734f docs/models/announcementchannel.md: id: 77e2f76c4a55 - last_write_checksum: sha1:db6dade7143f3a315bab7672c0083e1a3953fc55 - pristine_git_object: 17d0d36c5df3d8f789b3c3160c6c7f9cacaf2397 + last_write_checksum: sha1:e910c9e0f9bbde66ce0aefbb97f63263ae9be9c6 + pristine_git_object: cf846a339de5fab4017d9608d68d6e3e34a6dab0 docs/models/announcementposttype.md: id: 06f56ae76086 - last_write_checksum: sha1:421f88a4b7042b5987d783190241876440efb96f - pristine_git_object: 4fdf8058bb32d91e36d96ba1f1b54f4259914807 + last_write_checksum: sha1:c417ea9c3d3d0d397aff39310fec7bb6a6631f09 + pristine_git_object: cd25f0b90e6ef3586645ad5340e1a217083c5616 docs/models/announcementviewerinfo.md: id: 94b4b32f9d1b last_write_checksum: sha1:ead129b26d41a570bfb6c1b7aa789428140be339 @@ -211,20 +277,20 @@ trackedFiles: pristine_git_object: 7d8f1d017e4ffb671bf8037fbd6c156b433cc994 docs/models/anonymouseventeventtype.md: id: 8a14e5a8a712 - last_write_checksum: sha1:1336017c5a83d593f71ee775e1284064533c87e8 - pristine_git_object: c49c89c1b10a8731b3cd8d101fcf771dcf5eabd4 + last_write_checksum: sha1:f8aa5517148368188aed5be9784e76ac0ea510d6 + pristine_git_object: 484b59b07d1e829e2a31d7f3bcfd5c27b885630b docs/models/answer.md: id: 9ac735faad2d - last_write_checksum: sha1:884ab6fafd5b6aeb97900e9439f6656674aa6804 - pristine_git_object: a7f382b47b6a085416916beedf32565ac42ab4c2 + last_write_checksum: sha1:325cb54c4dcb9510a9b1d6dd8f0e149b43ab7913 + pristine_git_object: 70996a33c2feb01bd99159fd2d971dee17e602a1 docs/models/answercreationdata.md: id: a18b584bd509 - last_write_checksum: sha1:cf7db3388010f97cccfeefc745365934988fcd2f - pristine_git_object: d373c0f91a9042bb47c3177f8340b2b91aa6611d + last_write_checksum: sha1:a17a1af356808b805aee9e0c4053beccd176d161 + pristine_git_object: d9670acef650c59dfe7f0983b20c25ed6484cdf0 docs/models/answercreationdatasourcetype.md: id: 28abe8879511 - last_write_checksum: sha1:e6ed750ae063051f6b1fdd218cb521750c32ff44 - pristine_git_object: a3a2a0c09a4a9e284dd13ac13bd3d55aa9ae0b56 + last_write_checksum: sha1:42b03ea1b83924b05562f4d747ebe0deea555e72 + pristine_git_object: 2290212184627ae706a1b6d643b9ad048401ca9e docs/models/answerlike.md: id: fc0e3d3a62ee last_write_checksum: sha1:299e5a0177a6fa19ac83fbb53bf4185edc0b4327 @@ -235,56 +301,92 @@ trackedFiles: pristine_git_object: 745079d0f49ffe73827ca3c0d7766928f9ed9b80 docs/models/answerresult.md: id: d31c58c69e7b - last_write_checksum: sha1:581f8733f319cc4ad42dd5bd2611dc4b2c57c57f - pristine_git_object: ef148e0a37abcea5520495c9e5897ad807541a24 + last_write_checksum: sha1:8263033d27ae15046096e5cb066f88a1fd676dfb + pristine_git_object: 3b877b10086ed245b6ec65fea0d324d03ec85da5 docs/models/answersourcetype.md: id: ac6a657e8c7d - last_write_checksum: sha1:b8d33691e0cc34606e0ad8b4ae72ee7f3273fc99 - pristine_git_object: 052e5e4e097461800046b3263257d7abdcdb81c3 + last_write_checksum: sha1:e30431477256685c99a486eda882442270d5fdaa + pristine_git_object: 6de6108904db7850847317149806fbb54575d037 docs/models/appresult.md: id: 333a2b7c460c last_write_checksum: sha1:f9779ac516afac0d0cab5f0a9e4993b5e305f413 pristine_git_object: b1d37dea76990544293f38221b2314739c22ffaa - docs/models/assistantactivitytype.md: - id: 2692e8ee163c - last_write_checksum: sha1:902006322e01297d66c98716a3c4de189bef8329 - pristine_git_object: 9502cc831072bffebc21349b523359d317cfed9a docs/models/assistantinsightsresponse.md: id: 4da438a09c8e - last_write_checksum: sha1:d7e8d307918c8e317320b03306fd64f15da02e34 - pristine_git_object: 022c4ee4c9a283e7da5cb032c267577bd95cfba3 + last_write_checksum: sha1:79953a586b4b90fa67d44c370271de068b3d49f3 + pristine_git_object: d5cc0973f8bced08083dc8ad0ce7ff501668cedb docs/models/authconfig.md: id: fbdae66f0362 - last_write_checksum: sha1:57f9fce2f290544135dae7f3d1ebdb55b1cf0eb6 - pristine_git_object: 4f7c019155bf58fe8322b2658cf2a5a0a3db856c + last_write_checksum: sha1:89c2f69de007d535563bb9b7a594e066f71ffac5 + pristine_git_object: deafc0eaddc9dc2a95369251b9148853a1a3e304 docs/models/authconfigstatus.md: id: faed76680e4f - last_write_checksum: sha1:fd9ee4966ba3c2fff11a55dbc622c0e136218e11 - pristine_git_object: 60f45500e7b6bd289418735ce851c98a110f4a07 + last_write_checksum: sha1:b4337cf080b32707bf4d897552f3433ecd409f5b + pristine_git_object: 62132edb9479509e8474df1dc15ca34a209480e1 docs/models/authconfigtype.md: id: 631104fca2c6 - last_write_checksum: sha1:e597bfec95f9984d827b159271b24425ecd5cfa4 - pristine_git_object: 03e3f1134fa828af826475529520a1b3f489f630 + last_write_checksum: sha1:cf868619375d419c3e69d7b536c2a9bd58975734 + pristine_git_object: 0427eb93de1eeb4305c60569a4c72c92987de17d + docs/models/authcontext.md: + id: 458c8700cfa0 + last_write_checksum: sha1:068e18a2377e9c1de199140f034eef0132458431 + pristine_git_object: e861d79b68d3c689bca4f94af16572b105a0108e + docs/models/authheadertype.md: + id: 9c85b12e5bef + last_write_checksum: sha1:941d66cac49a6eb0e98de411562895c79e9e2520 + pristine_git_object: 8a6b33facdaf965e571a30378e5c3654410ba0af docs/models/author.md: id: b4139065dbed - last_write_checksum: sha1:a84ab82dff8606837d477f07ad83dbe0a8c04a54 - pristine_git_object: d936487d9cffa5693f8c6e4860f37669c238a752 + last_write_checksum: sha1:015462f693083cc40f7c88d90621ec5613fcd98a + pristine_git_object: 9145b8660b04968e115355c7cfa85711040d1bf2 + docs/models/authorizeactionpackrequest.md: + id: 0b38a0fb43b7 + last_write_checksum: sha1:a3067a0ec18cbc72faab1d73bf1f2b0d21ac8292 + pristine_git_object: 1b8864fe428ff9a1f09b60a49529f4f282f28192 + docs/models/authorizeactionpackrequestrequest.md: + id: 08beba244fd1 + last_write_checksum: sha1:73f039e074e4bc54d0f636228f0aca15da29a002 + pristine_git_object: 8b8fbeb8e65836abcced47952b57d26e2c6cdd85 + docs/models/authorizeactionpackresponse.md: + id: 259c7805d864 + last_write_checksum: sha1:a2a36f4376b5550c02047bfe1b528b10b039cf80 + pristine_git_object: 24363138d837adc7e9c840c941f1caae2054bb21 + docs/models/authorizetoolserverrequest.md: + id: 55dfb72f6638 + last_write_checksum: sha1:b5c9e704d32ad79e3c824812e7cbf55a283e4f06 + pristine_git_object: f6697f2598adc4cbf20044f498cf77799721411a + docs/models/authorizetoolserverrequestrequest.md: + id: e80ef1e8bff8 + last_write_checksum: sha1:a57640146deaef7519f3d438ec88f9a86965413e + pristine_git_object: 31792316e795dc1ff13975b63ba0a8cec3d06536 + docs/models/authorizetoolserverresponse.md: + id: 7b884b58873b + last_write_checksum: sha1:da887cd86b6d22514259e71f22f9f21cc70548c4 + pristine_git_object: b74d0886cf0cb12321f41aba776a23a52dd11c6a + docs/models/authstatus.md: + id: a3855939ee61 + last_write_checksum: sha1:2aaf208024005706afc64573d4904c31ed107f55 + pristine_git_object: f686ee274e68f0e9d850b47403c4b30d264f72bc docs/models/authtoken.md: id: 4bd9c62da20d last_write_checksum: sha1:792bc02293f4a693aa8f9062afc738bb9dbfd493 pristine_git_object: 171168a65d976e5322c475f85f673a8db5fad1b1 docs/models/authtype.md: id: e7d1386db3fa - last_write_checksum: sha1:731c2f301f20b0cf8780d80ce10c683b09fcbc19 - pristine_git_object: 7be58bb97b08fff4536f632ae67f01b45e12e4dd + last_write_checksum: sha1:c9a0046345344bc545a6ad2937956c653f812c4b + pristine_git_object: 120f98984fd9088eefaa77137bef62f43912089a docs/models/autocompleterequest.md: id: 17d479e27d90 last_write_checksum: sha1:e59c2e682e4271aee48faf382e069ec614f1f1b7 pristine_git_object: f3dfd2e93990c4b6bc193454f63ad4fee24d7095 + docs/models/autocompleterequestrequest.md: + id: 317ac647722c + last_write_checksum: sha1:12cc5b7ecb4f809bf8735c278e50b9d89c5a337e + pristine_git_object: f52bd9ee886df0323f70d1416c7f567beee45fe9 docs/models/autocompleterequestresulttype.md: id: b8d90b50b8a1 - last_write_checksum: sha1:ba2246fb302575968eae095e79f2da48c8244c9c - pristine_git_object: ead3f82a5624ba108214c3be1fc7bd3f4652f565 + last_write_checksum: sha1:384db0e85ba2259d36c469bf18aad238ce221de9 + pristine_git_object: 1133a59c5d24f501ea467fb19e9a467682cd9d31 docs/models/autocompleteresponse.md: id: a8f4f0d2e960 last_write_checksum: sha1:e80e1ab5896798594c21df4361f9c5711f55d8d0 @@ -299,12 +401,16 @@ trackedFiles: pristine_git_object: 50c4361043902ea66f73de0cca21e46eb72d8735 docs/models/autocompleteresultresulttype.md: id: 6836c607354c - last_write_checksum: sha1:c820abb8f2b120c3cf6a1a0ca00e3a9e6ad806ff - pristine_git_object: bb8a1893636ed8833970ed64b81031982af17e0d + last_write_checksum: sha1:400e45cf3c6c4373d774711f701ef567a3bb9b84 + pristine_git_object: 9e2a7661c61009d972b42f3fad2d8af966b95fc9 docs/models/badge.md: id: 1a875de7727e last_write_checksum: sha1:41161b237fd17651efebe457fac1d95052605a89 pristine_git_object: 06cf46df1c5e8e897928c57585c307b386f4aefb + docs/models/breakdowntype.md: + id: 852d76343384 + last_write_checksum: sha1:fb3820973b2df634462475d5bed0b75cc09dfa09 + pristine_git_object: dbe3672757339f9ecbbb904f50a7ba5924ee4a43 docs/models/bulkindexdocumentsrequest.md: id: ea279e5855b8 last_write_checksum: sha1:4ae80ed6fa8146e90de4818a30d46af50e9affaa @@ -339,8 +445,12 @@ trackedFiles: pristine_git_object: 4663c390eb1ac356d16c42042bb36d96d15d37b7 docs/models/bulkuploadhistoryeventstatus.md: id: 19182dacc064 - last_write_checksum: sha1:0d0e61987889c12b092b3de2218d4016cf8adf8c - pristine_git_object: d146ed1ef5a7a2eb228734eafba32b3187ca0912 + last_write_checksum: sha1:81aad9b978d55bd5e4bb6b0b78736ae51c96a2a4 + pristine_git_object: dcc8036722980aeadd202cacc8343f4c40fcca0d + docs/models/bundle.md: + id: 7d8688a5dbf6 + last_write_checksum: sha1:70739badd105665d19482017bc8f7386fe454837 + pristine_git_object: be38317813e3a9f663bffa698617775fd3a41d49 docs/models/calendarattendee.md: id: 65658df6d5ed last_write_checksum: sha1:95c9c7713d8dd0387c417133e10f3e8fc015738e @@ -351,12 +461,16 @@ trackedFiles: pristine_git_object: 58af4f277fb9df54ac00672daccab0a9de5ef85f docs/models/calendarevent.md: id: 9e2312fab53f - last_write_checksum: sha1:ab74d1fc0dae4709bce9315595b2e0540db47d49 - pristine_git_object: 91c8c22a8b8193d6390213ea3b67c6063b605084 + last_write_checksum: sha1:c2de9681ec86517396f9cc8a33510f4f3eabf801 + pristine_git_object: 077d4b46088935902b373240047029acb7cbe778 docs/models/calendareventeventtype.md: id: d46158398e36 - last_write_checksum: sha1:6e5e6b6df3eaf4f7d96f495259799e2c783119f6 - pristine_git_object: 8d5d6eb9d35caf1b2bab0683954efcbc53916074 + last_write_checksum: sha1:086fce57b60cd539b9ab120f24055d3d5388959a + pristine_git_object: d477e13e31d8af9e32a0b71dfaa896fad33b3c8a + docs/models/calendarroombookingstatus.md: + id: 13dcf29d9ff0 + last_write_checksum: sha1:ef6d2c2a8a35236862b39153ca4ef12eac8e9e75 + pristine_git_object: a26d6c42b17422f9446c26dd26d6cea5d0d7d41b docs/models/canonicalizingregextype.md: id: 7fbd76463a36 last_write_checksum: sha1:8a160bf9d8941da21f49dcdcd60dca736abe56c6 @@ -379,28 +493,28 @@ trackedFiles: pristine_git_object: 31d5a62636ad0c94d41892b473b78a7988df0a17 docs/models/chatfilefailurereason.md: id: 7d31e70789c0 - last_write_checksum: sha1:fec1b0fc1a7112b996c5050aba2b6f3a30f4c2a3 - pristine_git_object: 64426814af5b0e5f252db06e7c8851eb079cb483 + last_write_checksum: sha1:c25843500d3d528b357a2739abf35da16f1a3f3f + pristine_git_object: cef1b10b3ccf662842807b61d80f42386068841f docs/models/chatfilemetadata.md: id: 0cc9ade06a58 last_write_checksum: sha1:231dba9ebb94cb688a9b1e3dafae879be6d56e5c pristine_git_object: 67979aa2200513b9e68f924662801b4515d21bf8 docs/models/chatfilestatus.md: id: 353dfcb79ee6 - last_write_checksum: sha1:bf150a35b7978f8efc8dfa5944f4326eae6a64e7 - pristine_git_object: ebbb19511b46565159e552579219ca1125c069fa + last_write_checksum: sha1:14a82425ae8934057ad003b6329fe463aa8a8620 + pristine_git_object: d531ff5bcb94079a22528ff5a2b64e572bf677d6 docs/models/chatmessage.md: id: 768623ba5622 - last_write_checksum: sha1:c177b8b6249caa3c0c26d3425df0cc2c9f5fe109 - pristine_git_object: 7d770c5ae1a7b743cbcd47367f75e852d7e6619e + last_write_checksum: sha1:de3b12dcf57e893d4facbfc151263895f807605f + pristine_git_object: 7134cbbbb0e874365e08c98808b1fbba6666cd59 docs/models/chatmessagecitation.md: id: 081d0d2ead7a - last_write_checksum: sha1:d31f16dbc8f428b3013a6f1cb90b961ac354f8dc - pristine_git_object: 976651ca2b66662bfb9186301b7ead0f8f405720 + last_write_checksum: sha1:cfb01803bd38a1239689f64880ee2721f866abf5 + pristine_git_object: 66737ea5adad94131631be69fbb4a398a43fd94b docs/models/chatmessagefragment.md: id: 9f4738df6b1b - last_write_checksum: sha1:c1579999ebb97ae544c1dbc1c9df2f5cfd9d0e65 - pristine_git_object: f7de9397bbdbc53cd8b41821b9f34e33d69bf653 + last_write_checksum: sha1:7f004324dfbdb6182e010a2e0121d9ad026f9c5c + pristine_git_object: 1a6f0ed225844450fb6ea131033c438d5eb60eb3 docs/models/chatmetadata.md: id: 04d1111a98ac last_write_checksum: sha1:3e94025fd78eea7b18064ba4b5741bec7286e912 @@ -415,12 +529,12 @@ trackedFiles: pristine_git_object: ae4528f9bb83105c8bb4a8f7d9bcef9ce97e83c8 docs/models/chatrequestrequest.md: id: a3ec3d49636c - last_write_checksum: sha1:947597b3e944c1810f0b7bc559d67a73175b0978 - pristine_git_object: 733a2720da0f9a5e18c6a63710f4bc3946af13e7 + last_write_checksum: sha1:a7728be88e6fc29a1827f5abeb9b565293447857 + pristine_git_object: 743e1fd15ef2e5a212c755a793811ccbf19d46a5 docs/models/chatresponse.md: id: f59beb8f6c98 - last_write_checksum: sha1:fb69e7b641548c4a72d60bb607b87443fb9abc06 - pristine_git_object: c1e42aeb62c37b61a4bf6ee0dcbdd44c8cb3feba + last_write_checksum: sha1:bd47cff924de4909d80b32ccf122e0c8a8ae366c + pristine_git_object: 5c8440777426c3cea6b1d2d4608ccf5bbe84005d docs/models/chatrestrictionfilters.md: id: cae12da2c86d last_write_checksum: sha1:0cbed53f5ff5fe8fe9f44909300ad9ab82ace936 @@ -429,18 +543,26 @@ trackedFiles: id: 0d44370308d5 last_write_checksum: sha1:a9d6fa6612f238fea9328bc614cc44da5423a5d1 pristine_git_object: f9d52d76dd6527406433f485ed424eb1e66dc923 + docs/models/chatskill.md: + id: 4d256d9379f1 + last_write_checksum: sha1:c1d799c0a247190b8793d417053348e1fbaefd5d + pristine_git_object: a49cc28486066d46c91f66e68f7e51a611ab903c docs/models/chatstreamrequest.md: id: 1602d5226e53 last_write_checksum: sha1:7276ee2d9c61572dd0747c4f41059e7ea3f970ad pristine_git_object: f04f0b8f01b063f1b3cb838e55a093880cf94693 docs/models/chatsuggestion.md: id: ed9377964a1e - last_write_checksum: sha1:eba30229d615406b20be9f888d0aba8ad2d2ea77 - pristine_git_object: 7d74912784d88349362713bbeb434e4250f39a40 + last_write_checksum: sha1:ec415c7f0e372089f398ba9425cd64cce9e2b527 + pristine_git_object: e18aae7ba79f1f9c0d9a9b302f15ce4b1b1a8aac docs/models/chatzerostatesuggestionoptions.md: id: 93484e4440f7 last_write_checksum: sha1:70ab46266394ffd387991ec7036aa7e12346d278 pristine_git_object: f003c186b000ff51b939282191e5d42e08e06f7b + docs/models/checkdatasourceauthresponse.md: + id: c4214ea019e2 + last_write_checksum: sha1:0cb03f6f8262685c2963aee29986841a38b6548a + pristine_git_object: be60699cc5a111d76b214d6f28642c7e79c6a806 docs/models/checkdocumentaccessrequest.md: id: 7e17285c9fb1 last_write_checksum: sha1:40cc7d27e54e5aca99ebaa24670579d312b9252c @@ -455,8 +577,8 @@ trackedFiles: pristine_git_object: c4adf53fcc703010d5524af57ca9758c04e939d2 docs/models/clustertypeenum.md: id: 2f55d1ed0998 - last_write_checksum: sha1:d5fecab5a429e33244ba7f582d329dba91c07617 - pristine_git_object: 53fe04d6345ba2c01e8bcb86accd3445cc244b19 + last_write_checksum: sha1:5bc2294488eac58eb85c082b68dc12512c93224c + pristine_git_object: 11effcca09bc9721015d0a6171c3019f3037a5e9 docs/models/code.md: id: 2fcb3964c9c0 last_write_checksum: sha1:e7dda0d13324c09f7acda4cde816844a3f070916 @@ -467,16 +589,16 @@ trackedFiles: pristine_git_object: 27e56b3268211656a422d2717f6caff64a7f024f docs/models/collection.md: id: 33e46ebd8c53 - last_write_checksum: sha1:642a064592058d8a039a89b14d44d12188646c4e - pristine_git_object: f59843284c9694b3fd624bef993daf494bc75faf + last_write_checksum: sha1:87c07c81300d7d58a0e5d5d2cb95978d6b0b94e3 + pristine_git_object: 3f51dfa3b384401e382bc4115e08a5092d08c52d docs/models/collectionerror.md: id: 6279ba18f0a7 last_write_checksum: sha1:b0c6864817dbdc3bde8fee4a1e142d51e89f781c pristine_git_object: a6800fed5ba94f25934cdd5b8fe3fa6832f51239 docs/models/collectionerrorerrorcode.md: id: 0d8a5a9d335a - last_write_checksum: sha1:f4c7df20f5297abe7d667c1006c6aaf4f6006238 - pristine_git_object: 7903ee61efaa4f4219a5c03519b1388c0084c79f + last_write_checksum: sha1:01673cf76ab5e3a3155835835ee98cba03fd4d35 + pristine_git_object: 2aedaf4ae1ab74dc735b8ebadf93561a9ac93a23 docs/models/collectionitem.md: id: 4960e28c5856 last_write_checksum: sha1:72297a3ca7b72b75a41a12073bb959e308051c65 @@ -487,24 +609,24 @@ trackedFiles: pristine_git_object: 1ce4ae9b5310e7aeb341de3d5dc80839b2a4ece9 docs/models/collectionitemdescriptoritemtype.md: id: a708a0061fd8 - last_write_checksum: sha1:6a64245db8875973141700e2fbcd5fa754498b1e - pristine_git_object: 25e2a57f27b7b50511c722ddd819306ff460b462 + last_write_checksum: sha1:39c753bf47906a1bc51b3513859979f77fc5f8d3 + pristine_git_object: 46d88741305849ceb9eb0ea3e7161356fb0bf545 docs/models/collectionitemitemtype.md: id: 77ee84f9265a - last_write_checksum: sha1:421a565c20802a5e8a836626c8cc941e546931f4 - pristine_git_object: 937308f8dec155a7d790627800ec6d2736ac6784 + last_write_checksum: sha1:483bef03d5ff45c75f2453ddc1833c7245427f2b + pristine_git_object: 69999acea317b698d421cb23824dbe7490da6aa8 docs/models/collectionpinmetadata.md: id: b2587a91cecf last_write_checksum: sha1:f48dbf2b3d98cdb316858e0d51ba04873c526b42 pristine_git_object: 3541f9f68eec64d451c0bd1dd2b5c0ca9bc377d6 docs/models/collectionpinnablecategories.md: id: 5ca430dab671 - last_write_checksum: sha1:6e50d9606d9e5f692e5590758e73a4c2e70919a0 - pristine_git_object: d9ab23f1041cc9663d760401a969b8d28faf6078 + last_write_checksum: sha1:0675290db8fd17fad831b6d7210c29f730332d2c + pristine_git_object: f9ed8d0540287369214ec1549a8a5a8888771473 docs/models/collectionpinnabletargets.md: id: 1679e91bb30f - last_write_checksum: sha1:1b2b8ef1a94315e9635962d72d253c75c9bad4fd - pristine_git_object: 742229663b14389183872b21446363a4f5d6a6e4 + last_write_checksum: sha1:ae795f89cafff161afd89ace89800e5ffda3b86a + pristine_git_object: e58d9dfb7c809eb0fe8ac0f795ee4e2af957dce6 docs/models/collectionpinnedmetadata.md: id: 46c604ec06b0 last_write_checksum: sha1:12fa1ba7289b21515a574c1f12e882a988ab8b82 @@ -519,8 +641,8 @@ trackedFiles: pristine_git_object: c5c009d177582eef349547c5de1f9b9a99371611 docs/models/communicationchannel.md: id: 8aab95c8335e - last_write_checksum: sha1:5eed432ef84b3443e5a525eb879220faf3739cce - pristine_git_object: eee4a8599943b0f043039516577f364412b64289 + last_write_checksum: sha1:95070961be8a99439ab49acc3d83ae50e42530ef + pristine_git_object: 4acce537794987af82c102e294cfd8d3f099cdcb docs/models/company.md: id: 25a3bf8dece0 last_write_checksum: sha1:9ba8857ffd2dfbf88f32095f35f561ea66bbc162 @@ -531,44 +653,56 @@ trackedFiles: pristine_git_object: 79a189506ba75c9afc180d0a5332c7b909d7d839 docs/models/conferencedatasource.md: id: 0ef7e380c9bc - last_write_checksum: sha1:c597b1a30b09f87991a13bb59c53400410134f35 - pristine_git_object: b9e1060aed3df9dcc4a396b895e26bd7529f6d61 + last_write_checksum: sha1:189843e83af6991d92e24b1d421668dc6fae4d90 + pristine_git_object: a01e5df992a0c9388565172c9b39cfb7a26653c5 + docs/models/configurationvalue.md: + id: 4dd9104463d1 + last_write_checksum: sha1:97fd02f694962abf4799b31a586b688966cac4ea + pristine_git_object: aea215fe87d00675a3b97d150d81470b16fe2a84 docs/models/connectortype.md: id: e6f4d8f19cd5 - last_write_checksum: sha1:9efd332a75fba3f2023b761f238f274680a46d81 - pristine_git_object: 940429843795c892fe1c541570432f0ab440547a + last_write_checksum: sha1:8fe938ab7879871ccd5d3d7d278b3188040d3f50 + pristine_git_object: 39fa8c6ec94d29683f81089dc954f03e0851265c docs/models/contentdefinition.md: id: 938260420b2c last_write_checksum: sha1:a2b0d83bf5bba8acdcf91da6af61471fe96a46b0 pristine_git_object: a8dfd5117cccf8959dc6688b829b36c480680e45 - docs/models/contentinsightsresponse.md: - id: 80e7bcc54c54 - last_write_checksum: sha1:374305c995ece5eefb57ae9858c26ed123fd6ff0 - pristine_git_object: 54d206aca749dac4c16d4f286fb9c29f62b00732 docs/models/contenttype.md: id: 78e9266f4216 - last_write_checksum: sha1:aa88820dcb37e4eb55531b8f049d00990d8cc344 - pristine_git_object: a68e84da71aaf71e5b238e424a5aaaa5730918be + last_write_checksum: sha1:7755464b42b31e074708e3fcbc2f6d50643a4a4c + pristine_git_object: f20d9c65cd50c9a5204a9bc6a06c12870381c4bf docs/models/countinfo.md: id: fdce0b0bc491 last_write_checksum: sha1:6ba12c90efff718bdd939e773d0426df695090d4 pristine_git_object: dd22b66754081ff30b9d76cfc937603c6d80d965 + docs/models/createagentrequest.md: + id: 9484bab389c1 + last_write_checksum: sha1:2d1e18eb538b82a4e4448cf66696872d8f138b9c + pristine_git_object: 6d556c537edb110ad9d80ee992b5f12a3974713e docs/models/createannouncementrequest.md: id: a37b0e57dfe9 last_write_checksum: sha1:5da6f2bd206ac915200248706e91c0601a4c7d79 pristine_git_object: f7bf1e242474f0362d50c45c04c217ca21472084 docs/models/createannouncementrequestchannel.md: id: 489eb87f68bb - last_write_checksum: sha1:51f29effd04f3bd8825a8f04960d4edbd24529ad - pristine_git_object: 2cefcb7e3b3c494a156d58cb5391d85135da8653 + last_write_checksum: sha1:f459e86f42918351e4a9c1a2a359f12cd073f5a0 + pristine_git_object: e9068e68350e26d5609f7c7450c6385abbf14a0f docs/models/createannouncementrequestposttype.md: id: a024b65d5db4 - last_write_checksum: sha1:b8f82bdff7d69ba3fc7535c58363842f55015f1f - pristine_git_object: f5442c4758dd1a228b08f9835aab8533a47a8868 + last_write_checksum: sha1:d5152f2a5b3abfe46562a0d0b5516558f6274615 + pristine_git_object: 0c04105de6c2b6a59b9040d673fbde577fb3ed3d + docs/models/createannouncementrequestrequest.md: + id: de0c3ac42c0f + last_write_checksum: sha1:81b253aba6c657667e69d75cf93c6030a2118a42 + pristine_git_object: 69fa43dd3539008293a4d5dd0d345864665cf5da docs/models/createanswerrequest.md: id: b2f4f1bd1e2d last_write_checksum: sha1:06738631e9d37cd6b74284d99ea0a13a538a4f32 pristine_git_object: d00968f31b3d5c21eecdb205bf6bbc76586e968c + docs/models/createanswerrequestrequest.md: + id: ceeb2981de22 + last_write_checksum: sha1:a4ba09a3544dd4eda7b0ffa862fdc4f8f393780b + pristine_git_object: 297b5967bdbfb9dfcb0cdae19efd17f0aaacec9e docs/models/createauthtokenresponse.md: id: 11242161d015 last_write_checksum: sha1:97cdc3ab9b3f9f9ad126ed2e2195f373114fec26 @@ -577,6 +711,10 @@ trackedFiles: id: 4fb742a4bf50 last_write_checksum: sha1:54daa6dff72ccf9da5aa759e7e6ac7693f491f85 pristine_git_object: f0e6c91b8fd6a92ff6862fcc99a6c8aa1d32ae3d + docs/models/createcollectionrequestrequest.md: + id: aba8cdd4ff72 + last_write_checksum: sha1:f9fac4f1e3989d38a3997785710c6b00e56d2d17 + pristine_git_object: 7eaa07b63ff249dd034cb37b080a5936a586b945 docs/models/createcollectionresponse.md: id: 1c420e97a6da last_write_checksum: sha1:28feca094bb87797c4129d2f61685e7d521a60c8 @@ -593,22 +731,30 @@ trackedFiles: id: 19d7a34341b9 last_write_checksum: sha1:8eb5ba8fbfea9bf7df0d5ed1da91c8c639067dd8 pristine_git_object: 1b6b63a0fbf2b25ed4a8337d663860bc417a4a10 + docs/models/createshortcutrequestrequest.md: + id: a616232d47e9 + last_write_checksum: sha1:01576ae1544e66d6f283901101d822132acbb383 + pristine_git_object: 558b5abfe01c41bad4f92940f1c95e5ed057ddbf docs/models/createshortcutresponse.md: id: 82707fc9efe5 last_write_checksum: sha1:320bddb9b5ab5dec88760d844b2d585aea2d87f8 pristine_git_object: f3315390350a0db0d3eded212d626abc52c0c834 + docs/models/createworkflowrequest.md: + id: dd9173517846 + last_write_checksum: sha1:0c65e19e884a9444d65dbe54e93073f7d2f7d88f + pristine_git_object: e955a419d336ed9e949e8cab1f341aac83901665 docs/models/currentactiveusers.md: id: 8c45d84c2408 - last_write_checksum: sha1:5a8633009fe928f98ba777a6392d0e33e6973f40 - pristine_git_object: 3852b41c29bd3a35ab1ffcb5953165590be3fbfa + last_write_checksum: sha1:74a4477b894de8d1caca58492504b472a82a94c2 + pristine_git_object: f5cb3add39de3d84535d0ff5cda036c3bf68d012 docs/models/customdatasourceconfig.md: id: dcc49d2f5f6e last_write_checksum: sha1:2d9a671f15e56ecd77c318817ca2828420f86119 pristine_git_object: 2ecb8158e5265f1ddcddb4d0ce1231dfaf97f82d docs/models/customdatasourceconfigconnectortype.md: id: 7dd8e0da1ef8 - last_write_checksum: sha1:bdbd854dbad2c37a2b564402406fb5f1faefd6ce - pristine_git_object: 81126c245f193135e984d9a2df2c4298a1c280db + last_write_checksum: sha1:ed03cb8615d256289ff98d79f7b0131df48c1c19 + pristine_git_object: 0478f66844c4622dec82606d6fed5865c672dc7e docs/models/customdatavalue.md: id: 0646c2f2d3ef last_write_checksum: sha1:259403bd21db12ffe1d2c83510dbbb1f5f06fa5e @@ -649,10 +795,26 @@ trackedFiles: id: 10e27bf957cf last_write_checksum: sha1:d7e46925c8afddb55373a1eaf4fd242615f98dae pristine_git_object: a4b0b181977a85fe59b01ecdaa91574a651d91da + docs/models/custommetadatapropertydefinition.md: + id: 7504ef58165c + last_write_checksum: sha1:0499d47e78ef18fb559af34ad28f7c4cf3f5b7f3 + pristine_git_object: 302418b2bc09c69a0bc141968716dcbf18bfbedc + docs/models/custommetadatapropertydefinitionpropertytype.md: + id: 2cde37e83967 + last_write_checksum: sha1:54fd555b214ef9d8edede064f42ae7ca489f6aaf + pristine_git_object: 3901872095edb3ead48784140a6539439ef698cd + docs/models/custommetadataputrequest.md: + id: a122a6bc9bbe + last_write_checksum: sha1:cb455b4c9e5299c601ca2a1504469fad7ed456a7 + pristine_git_object: cce52d05cbf5643cd894aa9f562b4cb0afa4a237 + docs/models/custommetadataschema.md: + id: 92b8f5c6aa4e + last_write_checksum: sha1:ac8969c2b2c2634a3c1cc4e195f09ba50f3cf4c7 + pristine_git_object: 0795bcb58b5ce1714df36d8dab2c0a75e0b3628f docs/models/customproperty.md: id: b78e4b74d102 - last_write_checksum: sha1:53a34f450bb06abfe86d2053c72c37b1396b5852 - pristine_git_object: 3b363fbe4004aaf6476d0e6596226bd835cf4284 + last_write_checksum: sha1:68ff7c444fdf2b0d8009dcb6f61dd3867333fa2b + pristine_git_object: 415897d4299dd3cd8105eb2f6e2a619dfab70e22 docs/models/customsensitiveexpression.md: id: 978a0191d4b9 last_write_checksum: sha1:2d43d5d8b71ce4640b0a9b0cccc33350cb66a3f4 @@ -663,28 +825,44 @@ trackedFiles: pristine_git_object: 04ae799b13b8747facae38cd235e17e4c94c0d61 docs/models/customsensitiverulelikelihoodthreshold.md: id: 4fd57e9cd6cb - last_write_checksum: sha1:c66508d672aa98532728665c9ecaae0e34b67c70 - pristine_git_object: b7676f4dbe586035eb67a4ed034aefb22bae9c42 + last_write_checksum: sha1:2f50620e3cc362c46de7a79e7daded8850dc3f00 + pristine_git_object: fae764188c3c67ea85608839ff84cb5ffd87b085 docs/models/customsensitiveruletype.md: id: 6bd863598a1a - last_write_checksum: sha1:cfc285f7e7851bf9d2b88a1732eaaad1cd8d6e75 - pristine_git_object: fe80b6f85d4bdadceee71772de79e0d28c77d61e + last_write_checksum: sha1:1c371d5f383860c537688f361928cb6ae662acf3 + pristine_git_object: 6961690df0348a2e1ed6f05630921ad81ff2ff62 docs/models/datasource.md: id: 1fe408a0fe08 - last_write_checksum: sha1:3ceb4f96933199e3755cdc21622485ed1569f66b - pristine_git_object: 154a81d3adcb8659b6917dc11dc086463a778bae + last_write_checksum: sha1:b4964019d65ec8d10f5c9e538349799bf18e22f3 + pristine_git_object: c9eaa5a7c4e5fec5262c430021ca8530cdde27de docs/models/datasourcebulkmembershipdefinition.md: id: 05ac54ce5eaa last_write_checksum: sha1:12fd86d9314abe47cdec93f997a7bdf5ac70f9a3 pristine_git_object: 8445ecad49bc3bbd7b064649b72e824713db1ae7 docs/models/datasourcecategory.md: id: 0480a1f35070 - last_write_checksum: sha1:9dad3acf74b5977a6476f86ba6c45781c352aa81 - pristine_git_object: 44d81a93960839704e0ee5f0d19ec4884aab0c4e + last_write_checksum: sha1:221e5a4f881063f398b9881d36d622747d3ede52 + pristine_git_object: c7a5d3c3182c0a7820f14cd6395fc9a7690aa4fb + docs/models/datasourceconfigurationresponse.md: + id: 7c6f38290f96 + last_write_checksum: sha1:10c0068be581150ab5915785029e610bdf472ab5 + pristine_git_object: ba3be1321e92d6af0bfdad972ec394d96dec7baf + docs/models/datasourcecredentialstatus.md: + id: b2c547314a78 + last_write_checksum: sha1:d9668e2b566cb7f7401035f4b517f0679b3c16bc + pristine_git_object: 546c77b9e9d419c6e9489314b72a535b80685c87 + docs/models/datasourcecredentialstatusresponse.md: + id: d513182b6b07 + last_write_checksum: sha1:62dfc54ae5c5732258745444162c57f34243c117 + pristine_git_object: 29641fd5e8b7176222bb063da21e360a6f188286 docs/models/datasourcegroupdefinition.md: id: 2b5e3862da5c last_write_checksum: sha1:594f0d360c5a2466e6492ca11e05a7c46c070208 pristine_git_object: e716c04f9ea29e7b8acca40f62f429b35c795614 + docs/models/datasourceinstanceconfiguration.md: + id: 968e0a9feb17 + last_write_checksum: sha1:7674d089b7dc06b3fdde2a7fe1a44e50b871ca83 + pristine_git_object: 4aa3cb988fe844a3994344f543171622bf11e227 docs/models/datasourcemembershipdefinition.md: id: 8e527b6d054c last_write_checksum: sha1:e381cf7d015eaa27815876df0388f2d92e96fa96 @@ -699,16 +877,16 @@ trackedFiles: pristine_git_object: deaaa99771f93f4b90dd93fae540370bde88af4f docs/models/datasourcestype.md: id: 25d08b2d7720 - last_write_checksum: sha1:9d41ff1d99694a784f9773315b2b792ffbd9083c - pristine_git_object: 41b7c17081f6d5f6b10671ed4928517a2671d1f4 + last_write_checksum: sha1:dfdb62057151fcb8a87f1450e42876de15310676 + pristine_git_object: d20e1336ce01423a29b5ed42edebe6f74ecb1264 docs/models/datasourceuserdefinition.md: id: f55c0a585395 last_write_checksum: sha1:c4137b26e8e08373fae20e3b3e70b4779f1101fc pristine_git_object: 43a88da5135ac8cbf4d76b542b4ed03403870d7c docs/models/datasourcevisibility.md: id: 1be157158a49 - last_write_checksum: sha1:3b9a1c67e10db898601285994835468e4c1dc757 - pristine_git_object: f9ff5b888bcfc3dd641d6e97e8cc96deb75d56b3 + last_write_checksum: sha1:a4e5af873ee3567294fa852244f34590dc3a807d + pristine_git_object: 3ae0d199f7ae7d287ed6015738f58b39257e31d2 docs/models/debugdatasourcestatusidentityresponsecomponent.md: id: 9e97db1d9971 last_write_checksum: sha1:b87f54d7eff6aaec0026cdee931d2ddd6a6e9d09 @@ -725,6 +903,14 @@ trackedFiles: id: a15c7f77c9ed last_write_checksum: sha1:8d352c83a81d629bd06cdda8d74a942b459580fb pristine_git_object: e28d970e78ba1a9aefc121d61e2b338453c965ff + docs/models/debugdocumentlifecyclerequest.md: + id: b38894d9a56d + last_write_checksum: sha1:c68e16b64c52a4c8d4c73c8732fa528df2042297 + pristine_git_object: f17f8e7e6f761e474acdd95dce6e4d2b10daa17b + docs/models/debugdocumentlifecycleresponse.md: + id: d825e536ff47 + last_write_checksum: sha1:19f615eab9605ea42138e052761bd6a4969a9450 + pristine_git_object: 401d2b6c68304da62e32702856fedb8ac56c493e docs/models/debugdocumentrequest.md: id: 472dfd215403 last_write_checksum: sha1:d8af629ac5ef4a502dc2433a899b878588bd92a8 @@ -755,36 +941,48 @@ trackedFiles: pristine_git_object: c4849b3bf6c68ed1bf5a4d515b3f78117b06c9e3 docs/models/deleteallchatsrequest.md: id: 0df31df547ef - last_write_checksum: sha1:19846d33a03738d2881537195ede6ecf39062d1a - pristine_git_object: f98987ba31c9c572488c313fba6f510c33ff0b39 + last_write_checksum: sha1:469b4a6d062bdb6d7932751074656d48d1d9f3b1 + pristine_git_object: 01ac00c0e14b2cac033a0f543f5552a9e64641f0 docs/models/deleteannouncementrequest.md: id: 697f967aeab2 last_write_checksum: sha1:7ba31babddd36adf4e5f5ad96f1188e4ea4dd758 pristine_git_object: 61052076395a429afa6fb0fce1a64baa85c86db8 + docs/models/deleteannouncementrequestrequest.md: + id: 7000e6336d32 + last_write_checksum: sha1:9d1f60a56d32aa96750c2e458372edca7643fc56 + pristine_git_object: 689b1e04c427d189edd6689a3ad7a7d5d07f0b15 docs/models/deleteanswerrequest.md: id: 03a96322822c last_write_checksum: sha1:4255563fe55a59ed04d3dbd64f18eb66d44d91b0 pristine_git_object: 0c9627b096e3cd35d84de3d7a59ff18ddbbf916a + docs/models/deleteanswerrequestrequest.md: + id: 039fc36c25a1 + last_write_checksum: sha1:b0c6e179d80fe5b2e6b95ebd7a7e10bd420292d0 + pristine_git_object: 05520c6f5bac6b44027aa115d9cbd7ee5fba5079 docs/models/deletechatfilesrequest.md: id: 8a85abb12a53 last_write_checksum: sha1:e6de32e685605fd3f0ec4689ca5d52143adf6acf pristine_git_object: 4c7da5812e95ca08dad4b6e669d02bbb919950c5 docs/models/deletechatfilesrequestrequest.md: id: 359c2e279405 - last_write_checksum: sha1:b4f9d9712c409c9f0b5519e36e681900a9662abf - pristine_git_object: 4c37d7cab002be0343413c4fbdd32e4246a787a2 + last_write_checksum: sha1:2f317be3efc3295261a2ae27d444298dd39d5c72 + pristine_git_object: 4aa1d9f25e08907aba0385df709db78dac447008 docs/models/deletechatsrequest.md: id: 89eb2641c5d9 last_write_checksum: sha1:bee37f24e3baf452912e515861c22ae9035b2b72 pristine_git_object: 2db87b989294d5b8e6fda90fb59bc32547dd9237 docs/models/deletechatsrequestrequest.md: id: c44e6e70af59 - last_write_checksum: sha1:41b5018a1afeffa954cb7769436b313e25115491 - pristine_git_object: 24814ad3bd35ae9eace3f4f2d7c584bc85f06265 + last_write_checksum: sha1:f846035edf3b9f73d0c1bee6bd92b0ab109f4a50 + pristine_git_object: 9f0ae5c5f49f2745f903a21d51a1afdfb3c52f1f docs/models/deletecollectionitemrequest.md: id: 7ba74477b69c last_write_checksum: sha1:de0700bb4c8d17753e62a4fb574b47b7c562f321 pristine_git_object: 8032c1e5b6d81d0620b8f8166e2e1e5379f0f651 + docs/models/deletecollectionitemrequestrequest.md: + id: c7f22b20106b + last_write_checksum: sha1:d478c5c18c6fe3654e036f2ca42518631358a124 + pristine_git_object: 3c1c904e0df5ba3e03ee6cb7746d99efc6bc121f docs/models/deletecollectionitemresponse.md: id: 4131887f6194 last_write_checksum: sha1:d481dbb630fd9d0fac3a94185c13dd841a5e1b50 @@ -793,6 +991,10 @@ trackedFiles: id: 6a319d49e4f8 last_write_checksum: sha1:58ba2e905f3e38d29aff18861a32e192ffed0bff pristine_git_object: 5bc3169deaa37662a11e4f16d2208634ba753db6 + docs/models/deletecollectionrequestrequest.md: + id: 6dd52e128fe1 + last_write_checksum: sha1:d897af0af4cc61fb5bc681b69d849c23e299a5fe + pristine_git_object: b77671511a581b186eb3d516c642c33a48fae9c8 docs/models/deletedocumentrequest.md: id: 898eebfc019e last_write_checksum: sha1:4b56b845e774d8f683d8f35beebc18b6daa43673 @@ -813,10 +1015,22 @@ trackedFiles: id: e7dcb92de8a0 last_write_checksum: sha1:5d3183312e721af24d6d81400272a22754ef26b2 pristine_git_object: f4a13cb78952e4bce54071d893f79c02b0e94024 + docs/models/deleterestapiindexcustommetadataschemagroupnamerequest.md: + id: 749ae57c5051 + last_write_checksum: sha1:f6db2e24f557205caecae70a92f58a20bf990332 + pristine_git_object: fc0cdd0a271ffa15bdc403852e5da71ebab4e552 + docs/models/deleterestapiindexdocumentdocidcustommetadatagroupnamerequest.md: + id: 6c98296f1b76 + last_write_checksum: sha1:4fb073454cb521f4d1bdce6564363ea27e4f7c0e + pristine_git_object: 2214e13e746cd5005faad17f350bbd9d0f11602c docs/models/deleteshortcutrequest.md: id: 7c2220e28702 last_write_checksum: sha1:950cbd1d2057b793803c538edd36d988228ec913 pristine_git_object: 1e2e09b0677375585aef92057bc5039d035510a4 + docs/models/deleteshortcutrequestrequest.md: + id: cb6f1bded05e + last_write_checksum: sha1:a83911aaddb48be2961f7b055b581be62806d0db + pristine_git_object: 8c355d07279087e5563e1e2bf62075743cc5937a docs/models/deleteteamrequest.md: id: e984ecb440f4 last_write_checksum: sha1:f3e7cbefd6bd5dd7ebd0c77334e6038f1917f75f @@ -839,8 +1053,8 @@ trackedFiles: pristine_git_object: ee7bb74980dd5f42d03ec3bb84804e2c13965e14 docs/models/direction.md: id: 5c2dbb7995cb - last_write_checksum: sha1:ac0c333ca94db94f29f7a0ba338794faa8c39762 - pristine_git_object: 14a61a1dc19c33014ea1ead924d0e2e02d94127a + last_write_checksum: sha1:a827dab6128d52fba4cbda0f543017e9fc64df0f + pristine_git_object: efe05ba95a985a7f8ec655a3d86b8c18191dd0cb docs/models/disambiguation.md: id: 7f98ff32a361 last_write_checksum: sha1:2c394e73d2a8dd69f57b523639bf166b4021c3e7 @@ -851,20 +1065,32 @@ trackedFiles: pristine_git_object: e29b2f5fe2b191a8ad8f3e225b6accc748b81e2f docs/models/dlpconfig.md: id: bee569951c5c - last_write_checksum: sha1:657cfde6423815dc1ecc21459d948b428e30435e - pristine_git_object: 1aeca220912182e453d85cbbd4d3090473bfa5dd + last_write_checksum: sha1:de8dbe6b705782751b1470f8fca7807df1370387 + pristine_git_object: e99c7c037122ad1b1ba8b3f491460746db994d11 docs/models/dlpexportfindingsrequest.md: id: 846a7d063614 - last_write_checksum: sha1:d02690a672d76a1cc09129f514205d2fdb4d2252 - pristine_git_object: 1ecf20234bdf5b3eef7acf6fd64a3cab21e8f426 + last_write_checksum: sha1:9ca5aec938795a317d000ea1f234a9c64d85be47 + pristine_git_object: 3b8f7ff6562ca538b5d24f5c0a2b3c8f403e78e1 + docs/models/dlpexportfindingsrequestexporttype.md: + id: 7dd2a90d5769 + last_write_checksum: sha1:5f8fdc9eed3f5729b296eb59c1fc38157b5dfc0a + pristine_git_object: 7e9aee477a448c831c541e857c45255b826159c5 docs/models/dlpfindingfilter.md: id: 72eab9f49f83 - last_write_checksum: sha1:4be69bed621e6c0433cc0a2617c3926241d7587b - pristine_git_object: cf64c8cf51510a13bab54be7e3f90fd6db7e5f30 + last_write_checksum: sha1:e1061162444e25c4c3b36e6bc8701f84354c61da + pristine_git_object: 083bd836a351afc51494b036de9aff08c799b3f0 docs/models/dlpfrequency.md: id: f4604a8ff945 - last_write_checksum: sha1:944330ad33b1bb325cd4ae91c483c477fa7aa5a2 - pristine_git_object: 9ae76ef7dc4183edd5ce3be7a2e92a127640db7b + last_write_checksum: sha1:59cf084fba6095ff5151b96ca8dfd4269f728456 + pristine_git_object: 17476f3f5a6693576fd0c699271fa1bad636427e + docs/models/dlpissuefilter.md: + id: 015c17ef6125 + last_write_checksum: sha1:78377897d183ba603b4f4d58561327d1a58ebdae + pristine_git_object: 69f4a0b81543e6f3763cf39f35c0e976032ff1f6 + docs/models/dlpissuestatus.md: + id: bd67979c68c1 + last_write_checksum: sha1:1f9b9f3090255714b1ece78a71f0a4fa71d6b38f + pristine_git_object: 26c2139d9e09cdb0f9aaf221e341f4e3a115f39c docs/models/dlpperson.md: id: a7d2a215ac10 last_write_checksum: sha1:6e328f42974e9211f7a259efaf18f38e825d10a9 @@ -879,40 +1105,36 @@ trackedFiles: pristine_git_object: 67dc82411941f609b7b00bc43ae7c1a57f1d7df0 docs/models/dlpreportstatus.md: id: b9c039d457a2 - last_write_checksum: sha1:27c9b01d38654965eac442a06961ab5778f02449 - pristine_git_object: ba04744a16469254104ae62f62250f0e2ac55d86 + last_write_checksum: sha1:fe360daac10e2aee01245b7dc9697950a9e7c489 + pristine_git_object: ed2a14b5b68de54335a7439d8b531781417ea127 docs/models/dlpseverity.md: id: fad6ecae05e8 - last_write_checksum: sha1:10754ae20b111bc6c2a625be13f05890713e2dda - pristine_git_object: f53e3d5b15034f8dee87a700647b81f109f32b0a + last_write_checksum: sha1:4b6a6b02b46b39e3dada53a1544df4439e4de15e + pristine_git_object: 657e9962ff835c96c47a49c312f3ab063b9d5c19 docs/models/dlpsimpleresult.md: id: ca81e0658bbe - last_write_checksum: sha1:33c9868aa14972f5da45bdf04f8f4b282ae127b4 - pristine_git_object: f6e423848b36228b50191338741dc11a62412540 + last_write_checksum: sha1:bb79f1ce7cce83ea4d0b9f95e4bd8e12eedb63ec + pristine_git_object: 52a18a1148721667dfc7a24e9858cfba774d5c78 docs/models/doccategory.md: id: 821ad62d2df6 - last_write_checksum: sha1:ce8cdd4edff33650630ef4f0593cde4d7c4567f8 - pristine_git_object: 3f3a7ec68f32b10975bf09280585c338c97d8399 + last_write_checksum: sha1:1ec7a9915ac0698a53f2f01edb122cb6e14b76ef + pristine_git_object: 0e883592d7c11977a24a16657452e4a11b53c2a1 docs/models/document.md: id: cd1d2a444370 - last_write_checksum: sha1:3c58b1bee296890b3ad00d72b32647ab4ae67bd4 - pristine_git_object: 0ef8d71b674e92094644a4d72c369aef2adbc663 + last_write_checksum: sha1:794bba5709324d7278e34f2995d44b253ab39bc3 + pristine_git_object: 4b9f02406fd4f2848f4da5f5ea6fa136213f5ebf docs/models/documentcontent.md: id: 803a392940f1 last_write_checksum: sha1:232dca0c5ce302062b31d4934b927f001f112904 pristine_git_object: 5fb524be4047a39a705ea7befc6aa8afe8cc7f5f docs/models/documentdefinition.md: id: 3177ff20ce95 - last_write_checksum: sha1:592bd655c232463ee0c9acb924a29a1fddd5ba12 - pristine_git_object: 497f8be3d27c23d6065e3bb5488de7ec5c2655b3 - docs/models/documentinsight.md: - id: 782f4693530b - last_write_checksum: sha1:7fefb020d3aae3c0cf39d91a87c0e359a3782b80 - pristine_git_object: 278e30dfc594096a84175aeed49a37d03f2c8768 + last_write_checksum: sha1:6584c0b35fae2216e7b2960718654fddb1e696e0 + pristine_git_object: c1c884b1f6cfba977620b2f9a6a6b9d02feeb1b0 docs/models/documentinteractions.md: id: 40929f336351 - last_write_checksum: sha1:0767f87c7e460960b1ee5d1c3f0a08f447a28d17 - pristine_git_object: 42713431478c1e9fc301a0368ca8fbbebfb9d07d + last_write_checksum: sha1:ede65df5d5f50eeeaf919598bcb2c04ff569e552 + pristine_git_object: 6c5eb1a1ec1f832f1c392423a138bfc441fa0e7d docs/models/documentinteractionsdefinition.md: id: c25cb3fbc0da last_write_checksum: sha1:db3ce2e164b64346a2d686e1f00bd08f17828a73 @@ -959,12 +1181,12 @@ trackedFiles: pristine_git_object: f97ba78eea3e84426e32fa16906bff8c6e2de17c docs/models/documentspecugctype1.md: id: d65ddd3c18d9 - last_write_checksum: sha1:12765c9cd8ea56353e3e2e89bb99cb1f48bcb087 - pristine_git_object: 8dababc69ac733c8bed561b809cba8f7e2e7c278 + last_write_checksum: sha1:2f9426c2753077155877db7b8e39bc260d739a49 + pristine_git_object: 6b1e6c24ec175c5d5ed53f605e5ad94e2600fab7 docs/models/documentspecugctype2.md: id: 482fa3980aad - last_write_checksum: sha1:cb5ed0f37c8cdc80018d638860a50b9a5df4a32a - pristine_git_object: 313e7a436aeab3273592cbb6a98c799bbea560c6 + last_write_checksum: sha1:1568f539b72084faf5bb533f37b07a75123de070 + pristine_git_object: fea16d9d2b0488c5d45bbe5e1faca5401c61865c docs/models/documentspecunion.md: id: eb4d3f9f0d42 last_write_checksum: sha1:0d398dc3150ae343de568eef63c7c6e388721207 @@ -975,24 +1197,24 @@ trackedFiles: pristine_git_object: 96a477e2b89f439d54159a148133652258b710d2 docs/models/documentvisibility.md: id: f8c6ea7ffd5b - last_write_checksum: sha1:582c7c683e3a73d84286751a1598e5c465a01632 - pristine_git_object: e8538a995473eeb36b08bb424e37ff253f00d5a5 + last_write_checksum: sha1:b876937f101fed72160c4fa8eaab648d0dd7b361 + pristine_git_object: 794df8a8d9a2d5d3bf631d75fbffe978f6c0044e docs/models/documentvisibilityoverride.md: id: cf7668665975 last_write_checksum: sha1:b93cb21e051d129f3e09d9c7ae9e7c18c68aa29e pristine_git_object: 263e653420811efe9bad05ad4fab78c3f03f6221 docs/models/documentvisibilityoverrideoverride.md: id: 9188f3bbc76c - last_write_checksum: sha1:38b510f7ecea4eabca8c95d6b03faced79b655d3 - pristine_git_object: 0f15995d393aa0facc6f566d209bdb5c0c2894ec + last_write_checksum: sha1:deb1298c3604293d690c62385300698af66e4e1d + pristine_git_object: fc4aad73b593c0e802664ba006cefcd43d53b03f docs/models/documentvisibilityupdateresult.md: id: d1bf815a34ee last_write_checksum: sha1:7bb6108de2c0162ac00f24bd46eb973f9f9a5470 pristine_git_object: bca6013351abf18095324e3e1728e71520ec8182 docs/models/documentvisibilityupdateresultoverride.md: id: d47b76c6dda2 - last_write_checksum: sha1:53040d5470ffb90cdc6f1863edc765f73ec2dc56 - pristine_git_object: c60dc32524e2dc72d14a6e974961b44082ef37d8 + last_write_checksum: sha1:e8023d64d851923cb7a380b776ba155b0d8e9231 + pristine_git_object: 519b41bac9f083d3b5a08c86bb8794186cb07c99 docs/models/downloadfindingsexportrequest.md: id: 1887e2a3af00 last_write_checksum: sha1:4998758be6bd6eb334cb0e12f71ea987e7bc5d88 @@ -1005,18 +1227,30 @@ trackedFiles: id: 5e8a4d6d3e5f last_write_checksum: sha1:d2c6dd8e69e7aa99ce5f9dd8d2c041a5eadb6ca1 pristine_git_object: 9b386ce7fbdb22083a859ab281e833ffdecd12eb + docs/models/editagentrequest.md: + id: 16ab120df264 + last_write_checksum: sha1:3a0a4c5fe1ceb921e9ce2b2ee5543f7b08d499d4 + pristine_git_object: 41e6d8edfd644b10c4b3a2cf14ba03289fd084c1 docs/models/editanswerrequest.md: id: d6d2f92e3300 - last_write_checksum: sha1:ae38e9c690f32cff58a5da3c7e3f0c20375efb60 - pristine_git_object: 36f51e20485fe43d6958d5728e4dedd44cadf14f + last_write_checksum: sha1:436f46238083aafcbab2ae2561f1452b683ec7a3 + pristine_git_object: 3b3680d3b763bffd5c6028e6a422971e19ded8ae + docs/models/editanswerrequestrequest.md: + id: 29a629f36dd9 + last_write_checksum: sha1:7176b8e885cff7465ddd3a446e21037b30685043 + pristine_git_object: 07d1c82630deece31e284e2914d380fd97c74dae docs/models/editanswerrequestsourcetype.md: id: 4c53a25d9227 - last_write_checksum: sha1:2a9b1c7ef22fe5e0ede2b8e0e69b4e54bd9cbf43 - pristine_git_object: 19a8a4279c764a0c5707f9f808268b70a79ddbcc + last_write_checksum: sha1:dfed9e63125291ed36b20412bc229e53c85a7103 + pristine_git_object: 2b4fcbd78afbfb50f8560266c3587322bf138f0a docs/models/editcollectionitemrequest.md: id: e02a0f87262c last_write_checksum: sha1:32eecb9baa98e59b8aeffb296f1692d5b4e9c68d pristine_git_object: e056d4def346c362deb7cde0010169072528765e + docs/models/editcollectionitemrequestrequest.md: + id: e0e03730dbb8 + last_write_checksum: sha1:6691cfd131e1dae196959e4c657a9b3c5469dedc + pristine_git_object: a43167aba6ad6c80848b90013a0f7d08495f8e63 docs/models/editcollectionitemresponse.md: id: 40136411d95f last_write_checksum: sha1:41db244e001368e59a181c4bad5aa642916571f5 @@ -1025,38 +1259,50 @@ trackedFiles: id: a74e4ec0b3ed last_write_checksum: sha1:d4c9d43581c19a236a9204c69c8f8ffb1f1296fa pristine_git_object: 361840bf4bb069a3a95d0424cf1eac9fcb1076eb + docs/models/editcollectionrequestrequest.md: + id: cbd9fc914161 + last_write_checksum: sha1:21ebe4440dd686c0a5afd9d5e944081b566f16f2 + pristine_git_object: b806bc3786468d8fbd35803cb70f56cfd004df87 docs/models/editcollectionresponse.md: id: e9c5d6082c19 - last_write_checksum: sha1:21e86fc6eaf9c04acd334397ce3777dfd5273423 - pristine_git_object: 5dfbdfbac68f01d833e8f80aeb37c18a9d709744 + last_write_checksum: sha1:6371bd1a938b9f4365bdc3bec065b51a061b7a5b + pristine_git_object: 25aa8e42d345e2c9aae9b879b00e4adec5efb91b docs/models/editcollectionresponseerrorcode.md: id: 9040965d42e4 - last_write_checksum: sha1:49e0cc9f6fe4a3bf92dc7bf6c50382bf8bca99c9 - pristine_git_object: e6f6a8faedc0f2e0d70f50dace6f3a509f770ff2 + last_write_checksum: sha1:2298ba3c1f554536f5e219024b81bfd362fa37f7 + pristine_git_object: bc8f34aac40073035b752bcf860000a2c3af3f39 docs/models/editpinrequest.md: id: 14bb9e17a143 last_write_checksum: sha1:11e046873d7975a69c248dd6c640482531048289 pristine_git_object: 764555151025f6fe4bdc8fb14da13b67981d775c + docs/models/editpinrequestrequest.md: + id: 4e87783ec6bc + last_write_checksum: sha1:cab2f9325db582bde8f6057bac8aba582e5d1257 + pristine_git_object: 5a6db80b8b819de1b5de17b7519c8d629ba8d60a + docs/models/editworkflowrequest.md: + id: 2d3136c89102 + last_write_checksum: sha1:402a6e5cdb1b2a93887694ea3bd0d83cd8be94d1 + pristine_git_object: 3577eaa24f64055a24e9e06af370324b45cbf900 docs/models/employeeinfodefinition.md: id: 78f0c2b4aeb3 - last_write_checksum: sha1:fe4cf787e65eadc9db8732165436e99008c06260 - pristine_git_object: b22b23bdff4629cbf3cc8cd3f09285664b633612 + last_write_checksum: sha1:db1de06db0f1673a96b05bf7f180ef8c9e2ccc1e + pristine_git_object: c6c8ed10113146521038a84a6174ab07b2030f17 docs/models/employeeteaminfo.md: id: 9b6d83fdbff8 last_write_checksum: sha1:960d66f5b3d86a89d59264e2661b34fc59561102 pristine_git_object: 2ed673106d7587b01c35b1287ae6610c4f7d57e1 docs/models/entitiessortorder.md: id: 8792ae5f7e52 - last_write_checksum: sha1:387622ac24c5d608f68d62072b26f473b5441a4e - pristine_git_object: 3a360150ed4e7484373181cadde236aac8785788 + last_write_checksum: sha1:60d559deed52753aa24fb3c6ca3bfefc6c8d609b + pristine_git_object: 35de67c5831dd0a0e7bbbec5809969cf9804e8e9 docs/models/entityrelationship.md: id: acf0ecd9df7c last_write_checksum: sha1:15ee26661a58d80c4175fa8869d5751072d76f4d pristine_git_object: ab2b6841535c6d25816b2c825a6b56bd5324931a docs/models/entitytype.md: id: 130a2f7038b0 - last_write_checksum: sha1:fc92074673629ca7a55fb4b772afb5a4a7bc9fbe - pristine_git_object: e91144854fdb68760ee17f53e40ff4d22d16e882 + last_write_checksum: sha1:d46a25756cce3ffcd5790b65328ef2b8df491c8b + pristine_git_object: cc245095a5bdb777aed9468ad3deb10e7c5a864b docs/models/error.md: id: b96a6fb71e96 last_write_checksum: sha1:678b0f84e8f44d4eb599828cb3fb6d2520fa7c99 @@ -1065,46 +1311,42 @@ trackedFiles: id: be449d5322d1 last_write_checksum: sha1:c76cee4dfdc41c9062bff50fac7882daf2c02f8f pristine_git_object: aba28baec1db3447632d5e920f5766a354b304e8 - docs/models/event.md: - id: 311c22a8574a - last_write_checksum: sha1:65da65e93a1b3f2413558a5d6421797481fd0875 - pristine_git_object: 399107aa3439773cd831820ab8642e8050b20017 docs/models/eventclassification.md: id: e77adeacd229 last_write_checksum: sha1:a946fb8b2c26b78a03a640d841a4f5222f8586c7 pristine_git_object: 7d993d783e287838072767df4727febafa8fdae8 docs/models/eventclassificationname.md: id: b1b7f46f0830 - last_write_checksum: sha1:023abeccc3735a6a3dbf5cd4a5fb2bdac99071b9 - pristine_git_object: f66268a0c7ca23508da17e25881e03401a95367d + last_write_checksum: sha1:c5b5cdc058f20892fb6efbe70b709f546080c128 + pristine_git_object: 809a1e8311a3309e58034ad7b0aa35fe91f2139e docs/models/eventstrategyname.md: id: e28a808b01dc - last_write_checksum: sha1:1f6fbf59687b6df3b31945ab463a2e121c901c89 - pristine_git_object: 51c0237020d03cd196c1ec210563364967cead8e + last_write_checksum: sha1:5fe888a1a5120889a681270563b8dfb8e24ce8a2 + pristine_git_object: 9fa8de74a849d5f7628c70defcd8e7f6d0f8121c docs/models/exportinfo.md: id: 08c8529beddd - last_write_checksum: sha1:52c974d3e1a4740f5b41a2c96ef2674c4872a1d9 - pristine_git_object: fd1547a8a4890b6565e01918acdef4dc255e82b4 + last_write_checksum: sha1:fd668b48fbff594629afdc2a988ffff580eb0b99 + pristine_git_object: 606ef59e99f439c2cfe4f7a64b0e2953b5d3af6e + docs/models/exportinfoexporttype.md: + id: 122be1d02850 + last_write_checksum: sha1:d3626d4bfae8e63435d8d874c360d6fa3512b3b1 + pristine_git_object: fd269c2f34b80de158597191405d54914a41b319 docs/models/exportinfostatus.md: id: 00e8b292b3fb - last_write_checksum: sha1:7123b260311651a2ff48d6a66e1c3a573e7752f5 - pristine_git_object: 1639f2fa327ed0ab36a4cf9a7b523b5baad470b0 - docs/models/exporttype.md: - id: b7a0e6ea465b - last_write_checksum: sha1:7129503908e24d7f01e1a5d783b8c1614b6fa6d7 - pristine_git_object: fda2a24f0002045062fc3fbaac691f4d091fd14f + last_write_checksum: sha1:a0c9f47ee9e748357aace4b84079d18a321aa52c + pristine_git_object: f257dc5200e63afb4c756a25661244c101e2363b docs/models/externalsharingoptions.md: id: f1ff0bb532c4 - last_write_checksum: sha1:f0e7d56d118f761a1acd76154006155971cdecc1 - pristine_git_object: 967c5f819acbfa379db4505aa76c53c743ea78d4 + last_write_checksum: sha1:4aa8737cc989465e7ae6d0aecb0dd18d31e1acf6 + pristine_git_object: 96a8d1eb99e4cc073aef28a94a6a31d779a65f16 docs/models/externalshortcut.md: id: 4f33a219d4f7 last_write_checksum: sha1:3673228a49e905cb4c7c217004f0f6642748b300 pristine_git_object: 3af382268d5ebd1aaa8e8e6148d6d576a42226da docs/models/extractedqna.md: id: 0f86d9e8b582 - last_write_checksum: sha1:b2cf63e5ffcec27c2812e2329dc1681c4c9062a1 - pristine_git_object: 5bf715b985fedb8e52eb987e76d39830df1799a8 + last_write_checksum: sha1:5977b5d481ea0b205321b3c307fe8114be9c152e + pristine_git_object: f7e9ba66e3cc7b74a927f52baffe9c073b444fb1 docs/models/facetbucket.md: id: 505adf83d6d8 last_write_checksum: sha1:db6c016c360766b32371cb5a98fe22482b1924a6 @@ -1123,8 +1365,8 @@ trackedFiles: pristine_git_object: 5db794d949ed3e2e606579aa6eefc7f6477eaa13 docs/models/facetfiltervalue.md: id: 501cf7ea1ad2 - last_write_checksum: sha1:31ab0cc602d2b7d5ad430acc0ea24585385450a1 - pristine_git_object: 74ab3a85ebe3a374502fb770122e105dc896adc0 + last_write_checksum: sha1:3c9405d204fb20a25b89b57a674fa6bd07de1f56 + pristine_git_object: 84c2170436d8a27af07137fc9ec9e7d3402da784 docs/models/facetresult.md: id: 7a68e5e2821e last_write_checksum: sha1:3393d2c01205b3d3c46fc46a8d5c3e24217099d3 @@ -1139,20 +1381,24 @@ trackedFiles: pristine_git_object: cda19e794c2804c82be0d56fed9d32239c9ff312 docs/models/feedback.md: id: 0b23bc8d754e - last_write_checksum: sha1:44cabcab77efbaa2f730a4c6cad82150bcaf9440 - pristine_git_object: 6fe107ab85daab1088cd3582c1a3aac24e1b710e + last_write_checksum: sha1:3c33ed23371c2e7c5af7ab570d4d8757083d4fcf + pristine_git_object: 635bde27e87c984c8056313d6c7f7226d4a39a2a docs/models/feedbackcategory.md: id: 11d7d6ae413a - last_write_checksum: sha1:d6fa46c63cedeb912d877a5855bda8593a86cfd8 - pristine_git_object: 0cd81ec736a52c06fd74a865dfae336e2d7c3077 + last_write_checksum: sha1:95981db935631ad5da5bd48d1f52570e119d0236 + pristine_git_object: 53cf5fdba1751f76ef1f4662b722532105ab44af docs/models/feedbackchannel.md: id: 89419461712e - last_write_checksum: sha1:f49c87db4756488a0fc3c5a18e8f82e8d80797d4 - pristine_git_object: e1126a1f29bb6debf64096ba33967d41011f9a14 + last_write_checksum: sha1:4f19104093f394b1a7a4a0be08c976fc5863ff30 + pristine_git_object: 10a59bd3da2a1729a1d63d61794aec74559093b4 docs/models/feedbackchatexchange.md: id: 29903e964933 last_write_checksum: sha1:fd1cd864d67a4ad5acd5cc1d8452b54f275053af pristine_git_object: e7fd9066fb837f2982110121146ed2bf5bb12a65 + docs/models/feedbackevent.md: + id: b5a9d15e3af5 + last_write_checksum: sha1:2bd583d011d2aaf5812806c09637d4d8712ca8b8 + pristine_git_object: e64b37496759c50e3eca30da56ee0b9811e3e3e3 docs/models/feedbackrequest.md: id: 85ad9bb28a9c last_write_checksum: sha1:cc9882978656e3308e13926fea9d1ce93f031bbf @@ -1167,40 +1413,40 @@ trackedFiles: pristine_git_object: a851a7f13eb25d515fa9b9244c5dfdc98fa14e2c docs/models/feedrequestcategory.md: id: 31a02f3064c7 - last_write_checksum: sha1:323ae6b23468f7e91b31606b707e6d3ea5737541 - pristine_git_object: b6590356d8a0a71bddd8320b51d92c7a4b5912a1 + last_write_checksum: sha1:6b7d01384e760cef73f66b4bad6b0819af88faa2 + pristine_git_object: 833e3e946d89d99e7f3203ab796012c13557eced docs/models/feedrequestoptions.md: id: 58eb26b19e77 last_write_checksum: sha1:fd2ab08736cef8156169b0cfee8c52e7aed1accf pristine_git_object: 78ae4bc82dcbaf7881021b486ac501a7f1bdfdda + docs/models/feedrequestrequest.md: + id: 6b8dea423ab2 + last_write_checksum: sha1:a326cece89473e5acd6029847b3b091a4c75f1ee + pristine_git_object: e662bffd1c3411c0d30099c488c90cea22931998 docs/models/feedresponse.md: id: f45ab450a68f last_write_checksum: sha1:96e3f76f8ad6bf8c9717b53d6fa530fab2530089 pristine_git_object: 7f3ded753911005508191be31592746cef1c2781 docs/models/feedresult.md: id: 4b67dc1cea64 - last_write_checksum: sha1:88483849cc6d4bcfe685cf25a593e9ab50d47c26 - pristine_git_object: 6318b0206b7d4027b036e78c709ed4eb259ccedb + last_write_checksum: sha1:9257ff8b3d935716255b221c801b7e080b31f580 + pristine_git_object: f6f92abf16b61f88b527e1c906f605e98306878e docs/models/feedresultcategory.md: id: a5f77f38d0a7 - last_write_checksum: sha1:dafd64ea3daaa6ed1710173d63aefa085d6471e2 - pristine_git_object: 5de26d31937be419bac63087ec2b81199e4e1a2e + last_write_checksum: sha1:ce8c5903f3caf430bbd8fbe8b2437b834d31c87a + pristine_git_object: cf76344578ecbe9e3d953b28322c3e19b32595a9 docs/models/fieldscope.md: id: e6b52bcb22a6 - last_write_checksum: sha1:fd3c671bbaaaad1be401de980a7314e840184f86 - pristine_git_object: e57e72331bdf8088b7bcdb9e4d568c4243168f6a - docs/models/file.md: - id: 4ad31355bd1c - last_write_checksum: sha1:ade4d3c908c664a07a3c333cc24bc1bfb43ab88b - pristine_git_object: 37cc418f9e5189c18f312c42060fd702e2963765 + last_write_checksum: sha1:13a1492ce39d2f89a01d626996a345a1339a1873 + pristine_git_object: 3c3c097ac04d2e75a6cff47985e6688cf027d236 docs/models/followupaction.md: id: 5c7a87d7ed17 last_write_checksum: sha1:c554d9907c2a862ba7d07855bdcbfad06f7631ce pristine_git_object: 65bdd1003fcb4ea405b23fc891b37c0791dd3ab0 docs/models/format_.md: id: a17c22228eda - last_write_checksum: sha1:a2edbc69f1288b7f57ae022e972d32e9f0fbf918 - pristine_git_object: 8e5b70d97b1c22756a423d6880f70562cc3dc8a2 + last_write_checksum: sha1:577734c6a90602d0e5e0a0e43e130367f6d4dbbc + pristine_git_object: d5119bf1f3aa290c96daf28eeb1743aa8e3f27d1 docs/models/generatedattachment.md: id: bd997931455b last_write_checksum: sha1:8a821c9febd74e3cf171fe1a7b2d3a139e7550cf @@ -1211,32 +1457,40 @@ trackedFiles: pristine_git_object: 5b6df50b66f6d12c7ef616ea9675098a0d92312c docs/models/generatedqna.md: id: 5cf2dc8efcd4 - last_write_checksum: sha1:655c7741c553808f487b6d7ad889b82e364d7d75 - pristine_git_object: 45bd3342eac923ce91d9ad9be9c33865f3b8638d + last_write_checksum: sha1:3e0c1eeab4fccec6cf71c0d25275d04e7ccaa1f8 + pristine_git_object: 52fbfb416be5cc294521c2259c3279f32b08d831 docs/models/generatedqnastatus.md: id: 539b7c1a607d - last_write_checksum: sha1:58ef90f687d397dfa347a5b2ea1b5ef932dd4bb7 - pristine_git_object: 5a8c54997e977bddfe521d58690e702227d526ff + last_write_checksum: sha1:88766a93162f9ea70a183c7937e6566994232b30 + pristine_git_object: a7b0cc919fcb4dc72c6717298fd386798b0c3f07 + docs/models/getactionpackauthstatusrequest.md: + id: fc2bd8f0d8e5 + last_write_checksum: sha1:73f71d5b3b728b7721cd8246390e5c1e87069446 + pristine_git_object: 60ccf15d8a46fb1cce406b74a919776dc12350b0 docs/models/getagentrequest.md: id: 743f3a4630be - last_write_checksum: sha1:67cc3963a8da4a532ba7237c679cda747a6e65cc - pristine_git_object: 2b1bcba369869613ef96f22592f6fc595eb69bb5 + last_write_checksum: sha1:b6d2630bc17e91ec71d2bc7e01fec9f7cf046914 + pristine_git_object: 7418c2cec29a24966be06d6da4f7c184ba7f530f docs/models/getagentschemasrequest.md: id: 6eb36cc8bcc8 - last_write_checksum: sha1:e0873cfe8b6b2f75662a607dfb382de244c58938 - pristine_git_object: 925f9ef56c09d8fd31b835cc084136c9cfb63de8 + last_write_checksum: sha1:4db48f06eef4729de598b493e32efa4857c9cf2f + pristine_git_object: 110d717211f9a714c82cdddcfe5ef4be93558194 docs/models/getanswererror.md: id: b744c56b1dd9 last_write_checksum: sha1:317f4758e8da16c2d3ba3929edebc9593e3042cf pristine_git_object: 1585ad62bb0e81173a4ec0fda48e5d55f95a6750 docs/models/getanswererrorerrortype.md: id: d248499e9347 - last_write_checksum: sha1:208f691d55eb0f4de9e1b2721be81886943e6943 - pristine_git_object: d2af7588afa9aa93591e1ecd783247bf9c1849d3 + last_write_checksum: sha1:65aa17f028cee3c7745eceacef3f28c2e6584d4f + pristine_git_object: 3f9be2ece700fea1190f089d79661484282290be docs/models/getanswerrequest.md: id: 25f11c52ac77 last_write_checksum: sha1:17475690eebcc1076b3956f764f52ed3d16c36ff pristine_git_object: bc1d44fc2d81ba4956a70cf3532597ae82ba29ab + docs/models/getanswerrequestrequest.md: + id: 659200436db2 + last_write_checksum: sha1:782906eda75ea7eb9f00b70a4f1c111991585dc2 + pristine_git_object: 3502669e02362cb22f4e2c816b7a1a5dfd05662e docs/models/getanswerresponse.md: id: a2d88593e719 last_write_checksum: sha1:816f478aa8e17984131569eb7ccc093d520e5174 @@ -1247,20 +1501,24 @@ trackedFiles: pristine_git_object: ad9d8ad5f1b5098e95d1f0f16bfc4c4c7300c895 docs/models/getchatapplicationrequestrequest.md: id: 87a4fde892ff - last_write_checksum: sha1:f25f6bf8338e6407752049cb876e66273aa9c702 - pristine_git_object: 6920abdc6ad8ba972164513e2aec0e15b0a8be1e + last_write_checksum: sha1:b1e295e46ea284b811665ab6f92d596e7e7ac3e8 + pristine_git_object: 79cddc37d221bf75e0f1fcb8ab39735e05cc1eac docs/models/getchatapplicationresponse.md: id: 5c2141b43841 last_write_checksum: sha1:61a1da000e2b5157f5bab5582e828026e1989212 pristine_git_object: 2d9398f6a4a3641a77489a6ef9c408e5ff772722 + docs/models/getchatfilerequest.md: + id: 26456bd960ca + last_write_checksum: sha1:88a59fcaf364c5e979491a2a45365c66b5d4753e + pristine_git_object: c4a020cc9dfc566b246b9fd6c09266c7585354f2 docs/models/getchatfilesrequest.md: id: e3db2543e901 last_write_checksum: sha1:7dcf6a78247d07976795a1941bb80346af2704a7 pristine_git_object: 13d9edeca4d01df1e77f2d65a4f2ca6e42401846 docs/models/getchatfilesrequestrequest.md: id: db34624f95d8 - last_write_checksum: sha1:70733a7210c2422293dbb6eb94310cfe9f3c6d31 - pristine_git_object: b9c9dbd212a26472edddce27d81759f3cf68f47d + last_write_checksum: sha1:650f3861450fe6b44c9f953df4552617a4a1ee82 + pristine_git_object: 886c639f34d2287b6ef8529616e78780ee8ac125 docs/models/getchatfilesresponse.md: id: 5ed77f7dd180 last_write_checksum: sha1:75949c792ed2d2b22195a14fccc9fcbbaec5cf44 @@ -1271,8 +1529,8 @@ trackedFiles: pristine_git_object: 8b44a4628b905f2e3a23968b1343e75f69a9d86a docs/models/getchatrequestrequest.md: id: 89032ad4cded - last_write_checksum: sha1:ffb47c3da6154c36ed5aa4585ed5ad4570d7cd9f - pristine_git_object: 95fa70777eeaccd48cb6e4f963f4500cdef76da5 + last_write_checksum: sha1:d1af0c95a4f7ff75c6acf98f4ac59b4385a648b0 + pristine_git_object: e810c575de9d2e1cb0ce47ba68d8a739a6dfcc58 docs/models/getchatresponse.md: id: 8ca5e1521fef last_write_checksum: sha1:8a604ddd40ad6882e9620b6a4959b3b9884bc438 @@ -1281,14 +1539,26 @@ trackedFiles: id: c728f2a301f7 last_write_checksum: sha1:6f7221455f2bbfdc6ff4cb6a69e4d4f3238c8fbe pristine_git_object: 08c4ed74925b1fe99d66a5743547c422b812cbcb + docs/models/getcollectionrequestrequest.md: + id: 1951f5dd0d28 + last_write_checksum: sha1:81ef51998f8f36ddd3c42ecc33dd6950a1d80c7e + pristine_git_object: 63737249618d58f7b93fa1271dccd447b5b412e3 docs/models/getcollectionresponse.md: id: a41700e5b076 - last_write_checksum: sha1:d590565259f0114a7d45b963db515543b7aff54d - pristine_git_object: e146e4fbc67ed2316bb3db3c40794cf679bee14f + last_write_checksum: sha1:de691b93daa3790a10ac5e5ec44f32f57b9ae005 + pristine_git_object: e4795b0d4a08b1cbd66a052888937fc5fbd69518 docs/models/getdatasourceconfigrequest.md: id: 4cf100b4fe49 last_write_checksum: sha1:2209ee35f4f21791035a6785f464befc568e9afd pristine_git_object: 6bd845ab38a08ac7ec5473920c9d1f6567716ced + docs/models/getdatasourcecredentialstatusrequest.md: + id: 32c550529760 + last_write_checksum: sha1:e89cac63e998ebf2121aa0d35403d05e8b10d86f + pristine_git_object: 07c45dd2595db9f387e9dea158d9237d6edf67ae + docs/models/getdatasourceinstanceconfigurationrequest.md: + id: bb085196abd9 + last_write_checksum: sha1:d2971d5d295c276de0cdcee2ba9d4b761b10f7b2 + pristine_git_object: 949f49d131967a1bf1906f604908c5d09c8b40de docs/models/getdlpreportresponse.md: id: 3e011132423a last_write_checksum: sha1:b9907518fd1ceb0348ba69ca31459073dd5e2160 @@ -1297,6 +1567,10 @@ trackedFiles: id: 5ff6c3679628 last_write_checksum: sha1:e2add2ab3cdc7d5bf858321febf1c18f2ceb5c22 pristine_git_object: 0812366b66a6001815d72742ebbe037d0a28c58c + docs/models/getdocpermissionsrequestrequest.md: + id: 5890e488b0c3 + last_write_checksum: sha1:773d36b442ae7a05493a86ea3e4ab0ecd78efeb4 + pristine_git_object: 3f91457dd637af67938bbff9840d340427cf41fb docs/models/getdocpermissionsresponse.md: id: f3c871864de0 last_write_checksum: sha1:e5ba530519c1214d6b0dbea6894bf1268ba93958 @@ -1311,20 +1585,28 @@ trackedFiles: pristine_git_object: 9668de64010c5da59510a26019d49b51c6bd41fb docs/models/getdocumentsbyfacetsrequest.md: id: 55aa662b3ae3 - last_write_checksum: sha1:dec8f276f92ba15b33efa1331d89572be32a2fd3 - pristine_git_object: e234fb977243311c33d195ff3ff0d7ed8097894c + last_write_checksum: sha1:ac9742b938af1b712a4b6b49a524d04df57b2d03 + pristine_git_object: 31e485166c4b67efe28d5c4d67a8100755c0903c + docs/models/getdocumentsbyfacetsrequestrequest.md: + id: 5596394ba58a + last_write_checksum: sha1:6fbcfd5f2dc4356030cbc75bb3cf303ba5ddfa63 + pristine_git_object: 6fb44cfc1e3321981ac5be045d26426a1681905e docs/models/getdocumentsbyfacetsresponse.md: id: 1db5b3ab74aa - last_write_checksum: sha1:eaf2a24392f54a50b940f15f39f9cbc2296cc867 - pristine_git_object: 84a6fc873f72160e9037855c5977483f1874b66a + last_write_checksum: sha1:00fd06ee80e4b8db6664f1e1433cfedbd733394e + pristine_git_object: b7f02a4efebc02d412fa49b1c2b4eed3b8f2bef5 docs/models/getdocumentsrequest.md: id: e3bf285e69ab last_write_checksum: sha1:b0057956bdaeebcd6028d6b41b5ea9717d44b1ac pristine_git_object: 8ec36f384e76e6bec77b1f1a33f87c402b01c9b5 docs/models/getdocumentsrequestincludefield.md: id: b352a208f521 - last_write_checksum: sha1:c9c6167178228dd2882592014307e541e5c8c0d8 - pristine_git_object: 1db38b744f2b4b86860c3407566bc0b49617f7f0 + last_write_checksum: sha1:85b6ba98a60acd04b0474fe13ed8b4250034228f + pristine_git_object: 6d537debaff2078ca507df6d0c50475d4a2df133 + docs/models/getdocumentsrequestrequest.md: + id: a8c374952e75 + last_write_checksum: sha1:ee19224caa436cd2b5558e005c64775211aeb731 + pristine_git_object: d1c6b7a47144560652788c0e1a74a607bcef19bc docs/models/getdocumentsresponse.md: id: 67802d5a0eed last_write_checksum: sha1:cf5326c022369e8d38c9c596f8ab055edec2754e @@ -1345,10 +1627,26 @@ trackedFiles: id: eacac7a08e9f last_write_checksum: sha1:054e551fbaef0033c3914347dfd00b74b68fb5d4 pristine_git_object: 0bce5dedae73b06e8718f17ea3932b3a9a57463f + docs/models/getpersonphotorequest.md: + id: 90dbc76a2335 + last_write_checksum: sha1:0ca0cb5d9a126c0c85964e52dcf160bfb71bba93 + pristine_git_object: a81c0243a0c64203acc9a3fb89fb031363bb5cd9 + docs/models/getpersonphotoresponse.md: + id: eeaa7b80b779 + last_write_checksum: sha1:32205d02262773a98cea15be8eaa032f8a6787e9 + pristine_git_object: a8fca12e0b9351eebc60227476578bcf51e160bf + docs/models/getpersonphotoresponseresult.md: + id: 35c9caf792ce + last_write_checksum: sha1:36a6fb6677c1bbe44b59d764bf5f6a05b912916e + pristine_git_object: 39cfd7379a9249b1c9d56a503753dae487e9a84d docs/models/getpinrequest.md: id: 0493cde45bd0 last_write_checksum: sha1:8877bbd39413b43d4ccf88bcfe42fdbdc5e9d9d8 pristine_git_object: 09088c90c1bbd5f1c8d750472b2804cfbb7aa916 + docs/models/getpinrequestrequest.md: + id: 32c54ed66a34 + last_write_checksum: sha1:991fcff3dc0458057d6fe4b27c796127560e5cc6 + pristine_git_object: ac7a1f220e8fbe054e4306f1c860657562e6a7b8 docs/models/getpinresponse.md: id: 66abda0c0858 last_write_checksum: sha1:047514d17806168b0d7c599ec012ae6010d7df03 @@ -1361,22 +1659,38 @@ trackedFiles: id: 0e4d4eda043f last_write_checksum: sha1:52768733e9dfb11f965b77c4e5b470370d758c47 pristine_git_object: 7238f4ad8a04417f41ebd8eeb8aabf212d23fb0f + docs/models/getrestapiindexcustommetadataschemagroupnamerequest.md: + id: 242e0151a8b7 + last_write_checksum: sha1:0684faa18965fe4703b4931501d0fc29e8cf70c7 + pristine_git_object: 8ad9325ed1cd7525bd14f5d3bc0d2b087445d7da docs/models/getrestapiv1toolslistrequest.md: id: c40db54873e1 last_write_checksum: sha1:7d013cf69ab135ed71da9161ae6aa1ed004b691f pristine_git_object: 8c30fc4970323955f18cf70e3f4dde208df10512 docs/models/getshortcutrequest.md: id: 92141254f6ab - last_write_checksum: sha1:30dd545f8496f27de185a745fc9801fd0f43c38a - pristine_git_object: af868a75f66e154614f103f206e839b72397547c - docs/models/getshortcutrequestunion.md: - id: 41759b28faa3 - last_write_checksum: sha1:5382abfa412acbcb108ca54cbf7890d1d5a6344d - pristine_git_object: 43835d5100c30460c123e4ac9bc4f5ca5891f17c + last_write_checksum: sha1:4c1e631b57dbe41d2536ef7116944892134c493a + pristine_git_object: 9da5746594d93b66c13ecfa5b3d6733060628f98 + docs/models/getshortcutrequest1.md: + id: f532add93576 + last_write_checksum: sha1:b5700a9a423e9585f66ae7b3ea0ad006239fdf29 + pristine_git_object: e8d237168cb2eaab56c033d4db6f366e1126bb5f + docs/models/getshortcutrequestrequest.md: + id: 25d2ed600c62 + last_write_checksum: sha1:b148c8cef65ca3f4c2a7a7e48d7e6acb1d955fd8 + pristine_git_object: 79056b951a7652bc408d6cad92f8f511a59911fb docs/models/getshortcutresponse.md: id: 9aa3fd9aebdb last_write_checksum: sha1:98dc39c0164b5baef1dd0ed8f1a60d59da7abaf4 pristine_git_object: 5c43f37b52c456342ca156d3ccdb8ed988116606 + docs/models/gettoolserverauthstatusrequest.md: + id: 8d5b6b8336ff + last_write_checksum: sha1:9fe6a4ff332c3de18ceadcd6d52ca582321a6885 + pristine_git_object: a0ca5b754fcdd8a68325df5c82d24a0985d93043 + docs/models/gettoolservertoolsrequest.md: + id: 3a10aec5bd64 + last_write_checksum: sha1:e12fa4414e3dbbbc80f2849e6672754ebf1d2aae + pristine_git_object: 2de105627536d111849b13b052b704306066eded docs/models/getusercountrequest.md: id: b0cf45ad2c01 last_write_checksum: sha1:47972cc017eec42ff9e6572c938cccd1fa047471 @@ -1391,16 +1705,20 @@ trackedFiles: pristine_git_object: 51f7027a16bc10bb4effbdd438eab18581703421 docs/models/gleandataerror.md: id: feb7c60631e4 - last_write_checksum: sha1:bc595bf0967592999c683a4e3a43fa69783bbd10 - pristine_git_object: f1df02d4e5daa03df8e8c1b5684fcc91bcabc8a7 + last_write_checksum: sha1:a6567c83c6c0bf8eaed55f50af08001869d6a5de + pristine_git_object: 7c4c0d90fd0a2de3e48b99ce691c1e9a6ab03041 docs/models/grantpermission.md: id: 740a53de1e0a last_write_checksum: sha1:6f0d12e70708144b4978da20cccda528785c9e0d pristine_git_object: ac3f4c6c2acd8442c8686be4839c70d17ac0b8d2 + docs/models/grantscope.md: + id: 43e7d3a82fd3 + last_write_checksum: sha1:8c7331d70f108f34fbf320c25156d29eb25e8a58 + pristine_git_object: 372a2faf28d750d8aaad0c7b47c2834e3051ed65 docs/models/granttype.md: id: c3d5681ac7bd - last_write_checksum: sha1:d0f6f7d09943a8da779946de718638ae3f31c017 - pristine_git_object: 503fb8a68c148300207bb8397d3e1280017f42a3 + last_write_checksum: sha1:b0129abfff6f0d70b545c8a39bc9a6a20a1499cf + pristine_git_object: 6e2e1b8f58fa22f1fdbcb1ec1f9e1ca07257cccb docs/models/greenlistusersrequest.md: id: 02c23967c0de last_write_checksum: sha1:f33ab26aeb1d057f22774458d7f97d527c438763 @@ -1411,12 +1729,12 @@ trackedFiles: pristine_git_object: c1d48433bcb643f3403e312a32ebbd2a91909f60 docs/models/grouptype.md: id: ca781cf2b1c3 - last_write_checksum: sha1:54f49f6a63e723fc9fe457f787b6805e13af1e39 - pristine_git_object: b1d6ca4fbb780ee1b20bda19abc3325d1b8cdefc + last_write_checksum: sha1:fdc6ccb650825171da890bdf4938250236299c22 + pristine_git_object: 289506119440d77a6f1e1616f6167c856e3a2f90 docs/models/hidebuiltinfacet.md: id: 338b17567126 - last_write_checksum: sha1:67fb3847ea851d86371b88191bac55aff61a2569 - pristine_git_object: 35925329252ac966f673004a1831ed0ccbb090b6 + last_write_checksum: sha1:6fe74dd1957d4050706a4bbce1c1c413fafe12e9 + pristine_git_object: 50276f1d34c2659a852e74252f4c2e6d00c5fa4e docs/models/hotword.md: id: 68f79504703e last_write_checksum: sha1:dd7f5a06470850e7195264d0f71af828c2a9a76b @@ -1431,20 +1749,40 @@ trackedFiles: pristine_git_object: 626e9b861b1737b314e2a507b4fcf50e4df5ae29 docs/models/icontype.md: id: 0e3967649a12 - last_write_checksum: sha1:14d1e8755793c9427e285f02a52c7411a095a64c - pristine_git_object: 611f3f3fab778155a19032a881db8207b9577dc7 + last_write_checksum: sha1:df0342bec10160e89cdb81e53ce76d7c79d96390 + pristine_git_object: f0abae40fd9bced57e8e5834a28d65d1d486ea4d docs/models/identity.md: id: 322b72470576 last_write_checksum: sha1:165032455fe9dfdf7b596adbb5f01aad2c8525fd pristine_git_object: 8dfae128497ae67ba74052bed92a34d7c8a7094c docs/models/idtype.md: id: d998108e5ea8 - last_write_checksum: sha1:7d7261f7776164fed2a8021b4df7f38cfbe0cd05 - pristine_git_object: d1f0b1f87de0c1a9c0fe50f83ad0a3559e8abaca + last_write_checksum: sha1:691f92007f621c3190dd8e17e293be0852457d96 + pristine_git_object: 4f71310b6864d240adb6739549f5f8fee4807538 + docs/models/importagentrequest.md: + id: c6a418248afc + last_write_checksum: sha1:cfaaea16e4b54ec0c3d0e4a7ccd4161c0a1d9ba1 + pristine_git_object: d9f9e2a477b577b5129c6693aafe52245d086670 + docs/models/importagentrequestrequest.md: + id: d39e542ebba0 + last_write_checksum: sha1:e47ad7854090e0542b6793a94800b40290268dc4 + pristine_git_object: 1eae67877178a11d032f5853f7a189b96b00b914 + docs/models/importagentresponse.md: + id: 77b0ee805342 + last_write_checksum: sha1:26562c048b4ab28020a941c3adb9f77c032cd74d + pristine_git_object: 5b5e932259d8cb91a32d2b9503a7c416b806720d + docs/models/importagentstatus.md: + id: 5776b72122bf + last_write_checksum: sha1:c74ae8af6193e9765f0591169e1df187c875486d + pristine_git_object: 2b83dfea4f720a7b662dc1ac83175c176abd87a7 + docs/models/importagentsyncmode.md: + id: d91c452ec994 + last_write_checksum: sha1:c78f3f443d1527edd4a960e10686ea725a31c269 + pristine_git_object: c0af50c56227264f36d4346cb6d4d4952d48fa1d docs/models/includetype.md: id: c81f8e97e293 - last_write_checksum: sha1:f8e16a541c39fa564fe06b0058fe97a18fed89ac - pristine_git_object: a01749bae69ce2f86cfa175826c874071b202940 + last_write_checksum: sha1:060845bfb32df30df1f8d9927c4cd550aca16c37 + pristine_git_object: bd1e080c6d5b6f159571b2169eab580e36769408 docs/models/indexdocumentrequest.md: id: 993d8499e413 last_write_checksum: sha1:aae876c02cc969d488ec475883c93e6b626dee76 @@ -1481,106 +1819,118 @@ trackedFiles: id: 1db1dc7ee526 last_write_checksum: sha1:c5fcecc026e19e338aa6f14b49e177eeeffea606 pristine_git_object: 92e666de5f7156588d4dbaa09b36fec6e8f2403e + docs/models/input.md: + id: 5cbc446a3956 + last_write_checksum: sha1:edb11fdd84b602cb02ed2ca9e3a54e664bfafb17 + pristine_git_object: c54bec05e2353c4d45c272873e3d645b333a2d7e docs/models/inputoptions.md: id: 138e423f4a10 - last_write_checksum: sha1:c087981e52b62b8143f80ad746741b75e483a824 - pristine_git_object: 6d068496b9329ea3ca919e4b7b6fbc9ef3dc2677 + last_write_checksum: sha1:35aa8de6835bef5a294ef685f6480529f55f26f6 + pristine_git_object: b45ddba581891e155a1e49a6e1fe741fa66ed1da docs/models/inputoptionstimeperiodtype.md: id: c6b86b1220fb - last_write_checksum: sha1:d6ef77da924ac56d32f6bbf5401d360bf8757bb8 - pristine_git_object: c3ec83a8e649aee1c92cfa59e40e99aeb54ac633 + last_write_checksum: sha1:3f99df003dbb91a5153899f0c82ff785f745bf98 + pristine_git_object: 26843791b062e373841a2b2242dc25b6ec82d8c8 docs/models/inputschema.md: id: 5efea712238f last_write_checksum: sha1:05d1c3d1aa27fe96584c28bdb93110e7f38ce2ed pristine_git_object: 6c2fc6ab04a050a3586ef8014d4ee48c343abf92 - docs/models/insightsagentsrequestoptions.md: - id: 161686250a84 - last_write_checksum: sha1:4c84d6e81f7948b9c5fde724395a7e0f98f22f2a - pristine_git_object: 98c92da5fd54313d987f009b24a38efb7f67a922 - docs/models/insightsaiapprequestoptions.md: - id: 6d74e2ab3241 - last_write_checksum: sha1:f7bd47a21ad388398e68c5a3ae92bac4eeed1946 - pristine_git_object: 596378b6f93390428704615b9a5e6113f21088b7 docs/models/insightsassistantrequest.md: id: 37f76b1045f1 - last_write_checksum: sha1:2f65f9adb8d203ca6f9e8c07fe27bac58d082916 - pristine_git_object: 83e8e5b18918772469a7a6becf868e19f0f0fbce + last_write_checksum: sha1:7a52f3a08b97d98479b0485f417af26620760d95 + pristine_git_object: 5bca057243a4d509ec33eafbc0f7c8b70d1ce337 docs/models/insightschatsummary.md: id: 388233cb8df2 - last_write_checksum: sha1:4b6f147324b3af4319349981df3c17110edaac8b - pristine_git_object: ecbd7385eafde9fcf7c02695c219579bde24fbb0 + last_write_checksum: sha1:9b40b1d0d6a996c522a8c2346e6289670122f637 + pristine_git_object: 21fc84d49e3fe1f7b8cd2e68e044d28aa2165200 docs/models/insightsoverviewrequest.md: id: 568a56d1c6bb - last_write_checksum: sha1:0eb7d62aa1a668ee46af0621bfa056be49bac3a4 - pristine_git_object: 90e12f31c489fd3953b486a9ba20043f50362bc5 + last_write_checksum: sha1:8158a52e81032094547beaa8a996a6c91683a84b + pristine_git_object: b6fc7e69c80120509d9f691f3ba92d586b09f61d docs/models/insightsoverviewresponse.md: id: c980a8e3a69e - last_write_checksum: sha1:a897dd65b610928d7980734f630b0e1f8bd3b400 - pristine_git_object: 76c9c9a8334d732dd6fb8e01a5aeeeb448b93547 + last_write_checksum: sha1:a58c624e6a7096b9a0dbd86c29198cdda001016a + pristine_git_object: 56bb2b24091e32f66d3011c7d2c5d3e9b2e567d2 docs/models/insightsrequest.md: id: 13eaa34edff4 - last_write_checksum: sha1:3c7a299a7dc4c0e615ce11aaa18d6a3318330ab7 - pristine_git_object: b9c2ea45ca8069cd8f4091a619dac1e8d121ac56 - docs/models/insightsrequestcategory.md: - id: bd63b65986c1 - last_write_checksum: sha1:4cd9746405c6425111d5c2f35d0b6a59e50205b2 - pristine_git_object: f5831a04a99a98e2adcd70de67befae69e73a531 + last_write_checksum: sha1:43421d855599f8045baf28ab774eb06de08c2acb + pristine_git_object: 9bb517e8da0fadce81700642dee2cbf4c9951e73 + docs/models/insightsrequestrequest.md: + id: 567dcce50fab + last_write_checksum: sha1:b550099f60580ba3cac9675a4e9515044be423b3 + pristine_git_object: 42aaa5da08e2b378d3da97b7a0720a98d855374b docs/models/insightsresponse.md: id: 7bcab338ae18 - last_write_checksum: sha1:314319d868799e555d466df8a44039c1f0f942b4 - pristine_git_object: dcb429dce36747679239f31844f4385f8557aeb0 + last_write_checksum: sha1:e3ffc3ed91a66ae4c994cf6d66904a05433f6d2c + pristine_git_object: 7e11a8a186be6923915c6986177f268adc56dfe7 docs/models/insightssearchsummary.md: id: 9bf0ac766bf9 - last_write_checksum: sha1:f9a5b729b8c6ac37fc3669d134ea8f133aee3905 - pristine_git_object: d527f4369dfe54205992ca00a4c10514be12a581 + last_write_checksum: sha1:4133181c7716d5f1a0d83b9f933d60891ed8aac2 + pristine_git_object: 940085a00fdf0270f7e842ef9f6b4b7e79a0df4d docs/models/invalidoperatorvalueerror.md: id: ee6e58f56866 last_write_checksum: sha1:84827ee6331279f0148f3f299e05d30fec497f99 pristine_git_object: e6acc93ce0eae76434a8ef9f94ba080e954f022e docs/models/inviteinfo.md: id: 3d5da9535438 - last_write_checksum: sha1:653cc53628464696143b2ffb85cadb0d3dcad5d5 - pristine_git_object: e929b03338151b780598fbe5b96ffa19bc3eb583 + last_write_checksum: sha1:5f65df8961f7c86a847f4808a3e1fffe97ae0082 + pristine_git_object: 627329922765aae3e91345adcf21351b2877ebc1 docs/models/issue.md: id: 44d611a73cb7 - last_write_checksum: sha1:f6909f3a5070d87eeb198d7f7c3d04a75ca718c3 - pristine_git_object: c6db8485f546c6e7564f04b8626c2a30208ba2ff + last_write_checksum: sha1:6b426db4192279db0ccd71ff22e9133072ca1c6a + pristine_git_object: 647f9bb67a6af30d7fd71c8ddb3c5e1bf40bb938 docs/models/justificationtype.md: id: 8286affacee4 - last_write_checksum: sha1:9464386064d43020176b9a3994f1ac8bef3c2708 - pristine_git_object: 4bcceecfc6876a5b233087a7de8a54e635298e0e + last_write_checksum: sha1:da65aab15eb3fda18ce75c2a74b0c457efe4e488 + pristine_git_object: ae3931e04f130275a829a02ce00b308fff0d6b87 docs/models/knowledgetype.md: id: 1e0c90679228 - last_write_checksum: sha1:b6cf154d1bf376e8994171cd32ebf3c0ee30e6a7 - pristine_git_object: 83754f3c0f2e304ac9b78c276bc5ed6eb4e8c4f1 + last_write_checksum: sha1:0030a7539b9362bbb59e0bbd36580676058b3540 + pristine_git_object: f08f4a637a80c1c1b0ecc1dde02a0df632f34083 docs/models/labeledcountinfo.md: id: 97b5245fa78b last_write_checksum: sha1:227db53f325db89debe1721de77bc8dbe6ea494e pristine_git_object: bff91afa3686f51d1bb1962c90b13bbd1b929be4 docs/models/lastscanstatus.md: id: 8aabd356c723 - last_write_checksum: sha1:e8a2f0fa4816d783f9c0ae45b03309b19aa616f5 - pristine_git_object: 32a47a4b2a1fedd8373e49bb4949e4d085840faf + last_write_checksum: sha1:4f573cd8188662713bd35a9e0ccad5fb58c5e6ba + pristine_git_object: b870d4d41898abb592af834330932c014ad09c17 + docs/models/lifecycleevent.md: + id: 23b7e744cee2 + last_write_checksum: sha1:96297bbd77d2f5a6a39ba055510861b1587aecc1 + pristine_git_object: 4f9776b75b0177fc0abc0949856ba6fe0225f8c4 + docs/models/lifecycleeventevent.md: + id: 3393c50a2dc8 + last_write_checksum: sha1:7f7c28fbde4ed2aa4b8323c36dc67df9cfcf1932 + pristine_git_object: 29e4fb1ab057caf48115c86a51788ce410a164ea docs/models/listanswersrequest.md: id: 6864867e393c last_write_checksum: sha1:e492b758d47f41c50b8ed2c91cb6ee197a67a647 pristine_git_object: f0b1840d21cfd5745841ee3dad9f4790f7886f81 + docs/models/listanswersrequestrequest.md: + id: 593161e5aad5 + last_write_checksum: sha1:56877f7b51072348f4d7c71a68e1bf090644307d + pristine_git_object: cbe66c049da354b2aadddb5eaa583af41d553599 docs/models/listanswersresponse.md: id: ac203d72fef4 last_write_checksum: sha1:d84b2b1f6174509f4b4dcb3602b57a41f609a153 pristine_git_object: e02a3fddcc9e682dceeef74ee52bcf293ee867f5 docs/models/listchatsrequest.md: id: f4f060e9b0e1 - last_write_checksum: sha1:a2da7a15fa0c3f5953315af0593a80157ea35c91 - pristine_git_object: 2b5b4b0e1e7818bcecec1065ec36c47096386925 + last_write_checksum: sha1:e9fb2c1df6315eb6d41cfc1a9bbd172b5f5acd02 + pristine_git_object: 9a0d72592d98d5f0cd2b8e6729b2596b0e5d116a docs/models/listchatsresponse.md: id: 56cf9a543286 - last_write_checksum: sha1:c2316ed4dfc6485cc889d79dfe69ea577c533738 - pristine_git_object: 95dfd85934c63bb2c3e09eb4b1cf89ef5dae0b8c + last_write_checksum: sha1:aca00611d3f6d811d148336a8a4e38312022cc1a + pristine_git_object: 98e4510559c4169addedc70960ed3da8492d704f docs/models/listcollectionsrequest.md: id: 67e1b9abedd7 last_write_checksum: sha1:7dfe597ae0081226b8dddd81abd17d38b7557abd pristine_git_object: a566a33c052e1d66489a5725e3756a816dcdfc29 + docs/models/listcollectionsrequestrequest.md: + id: 9800bc4f9d9a + last_write_checksum: sha1:7f4bff6d20418a8dfef4ae27e4d7144c508d0672 + pristine_git_object: 1ccd21f38d814a5f4070eec6146a34da18d9141d docs/models/listcollectionsresponse.md: id: d4e9fc9b0229 last_write_checksum: sha1:b7d5407d6740b2f0ee0bf95f226b5ecce198b3f6 @@ -1595,24 +1945,36 @@ trackedFiles: pristine_git_object: 351bb2b615a924d3be9f37bb6123ef8a4948f653 docs/models/listentitiesrequest.md: id: 561ac207e315 - last_write_checksum: sha1:da4bf06589b74036707459c5e5a6cf0ce9d8fe3f - pristine_git_object: c4ac2d31d21b0682eb015401a23eccb068314e3f + last_write_checksum: sha1:a2cda4e4a713cfdd479403bd9c52267a5ff7d24c + pristine_git_object: c91150c02b373f963ba1e13133f8e949490281b2 docs/models/listentitiesrequestentitytype.md: id: 15ec59436444 - last_write_checksum: sha1:c904706e7833888e3bbc3678d460353829a0e022 - pristine_git_object: 8466478542a1bee6d3f24d7db7e1fe057ad72d1c + last_write_checksum: sha1:cb7f4664f81d08d7a6961e6bf931059a4ab34d43 + pristine_git_object: 4977acf6b7490bbca56d55d5e8861769ce979ac9 docs/models/listentitiesrequestincludefield.md: id: 22408579dc19 - last_write_checksum: sha1:2470f033b6a50c3ea4817a1b9a06f51860304b18 - pristine_git_object: dde5f54d1b3a27a037b24bb8214071230ad97079 + last_write_checksum: sha1:25b3f4a138b8c28449a213f4793cae253d16b003 + pristine_git_object: 443d5026adf0e717f1ad7fed318e648266b7558d + docs/models/listentitiesrequestrequest.md: + id: cfcc2081e0ed + last_write_checksum: sha1:3023b6615096f5c018efb1b43524499b662094ae + pristine_git_object: ec6cdd0169b604153c648926101d1925d254676a + docs/models/listentitiesrequestrequesttype.md: + id: e3a09d204704 + last_write_checksum: sha1:23756193ecc46493046a80629408204e19bb8ffd + pristine_git_object: 27ba5bb470d1190e8fdf0f42b49e69b0cf16154f docs/models/listentitiesresponse.md: id: 795662eb1108 - last_write_checksum: sha1:b8b4d3b76ff95441aa3ef08babaaad0239807cfa - pristine_git_object: d7699639a2dd03f0b6dbcaaa29742a8a2b206ad5 + last_write_checksum: sha1:f825066bddc9794ee6cdacf74b0be1d493378af2 + pristine_git_object: 5a5d654601c2a284609b5bf0d68a07ad9c05d1f6 docs/models/listpinsrequest.md: id: 8d96c63ec1bb - last_write_checksum: sha1:40ce426c3ab842c23e716b7008fa1e38bd5bc2df - pristine_git_object: 4c0c38891b36dff3b3854ba5f85a3b6c8c7c3467 + last_write_checksum: sha1:6b0dc565942e4b6b5859a2dec2e5fb463212ac52 + pristine_git_object: 49bbce57bbf9657d01c0114817ab7ea3d08e012b + docs/models/listpinsrequestbody.md: + id: b6ad35029581 + last_write_checksum: sha1:9be1a996e1620a68492d843203dd90640b527e69 + pristine_git_object: ad2e4cbdd68308127ba6df5c346316b099f85010 docs/models/listpinsresponse.md: id: c936ae1c22b1 last_write_checksum: sha1:ac94f90c1b5188fb627e4527def7187dd64db008 @@ -1627,40 +1989,76 @@ trackedFiles: pristine_git_object: c2daf74a3e83af43a3158e76b220dff3fc5a1578 docs/models/listshortcutspaginatedrequestincludefield.md: id: adaed923bedd - last_write_checksum: sha1:23ee57fe1fe07ede1b095d2c8533fe0e4ff918d7 - pristine_git_object: a06687123c10ceb41a2c332d719f83450bf7dcc0 + last_write_checksum: sha1:c743fe23333aa42d9871e4e11d412ec74a86d024 + pristine_git_object: b68782a765355611a739692df428ee3402a3f2a2 docs/models/listshortcutspaginatedresponse.md: id: 782aabefcf0b last_write_checksum: sha1:0bfe9c54078eff8b900ca0dd643b1ec62c4ffd5f pristine_git_object: c575579aff1d399e726acfb8fcc8dafba14570a7 + docs/models/listshortcutsrequest.md: + id: c52f7311f417 + last_write_checksum: sha1:ccf9d16424d7c4727cf4f424567f244fc6796a5f + pristine_git_object: 5ddc952c170644b3d4ba5b110d442422e38fe84f docs/models/listverificationsrequest.md: id: 774f0a0298e4 - last_write_checksum: sha1:a741d072047233ff9200d5f06d9087cb69f8f399 - pristine_git_object: 6852a725206c931dbfa6c7e2e95d7d1fbca55001 + last_write_checksum: sha1:65c65a6c41036b2d14dccb892353e2f34e167446 + pristine_git_object: 320d13234b20a559d2998685f60dbddf4c6a3d4f docs/models/manualfeedbackinfo.md: id: ba432c1095fd last_write_checksum: sha1:1b414738886556bfd280a822964b640f6faa6d55 pristine_git_object: dc221748b44a4bc3e0be19654e2df6e128ee2776 docs/models/manualfeedbackinfosource.md: id: c5aed96ec5a0 - last_write_checksum: sha1:a884b2e28a750b530da1ff930b15d20ff48c1596 - pristine_git_object: 27c53bc4cbb9bee977cd76b5e1b753bad63f819d + last_write_checksum: sha1:032cb332121259781b84ac1bb92d9005bdd049d1 + pristine_git_object: e5e604b2b9ee894ad5d724c5eee4a0fe20ab123b docs/models/manualfeedbackinfovote.md: id: aab988027ef4 - last_write_checksum: sha1:9efcd3ff8b63f50da968b9e699a4b0b61b1d95aa - pristine_git_object: 401fb94b06b5b6728245a67eb9472c650e79d510 + last_write_checksum: sha1:ed4d4d324f14168de7e39b3870945096a642c9ab + pristine_git_object: f74b7a47fb68023f3d91a709b31526309caab8bd docs/models/manualfeedbacksidebysideinfo.md: id: 1819084e6814 last_write_checksum: sha1:038d7721d1cad413591e39aea2186fa0ed2461dd pristine_git_object: 48d47a8570112922d5baeb14f7cb9fb8f67146cf docs/models/manualfeedbacksidebysideinfosource.md: id: 3b67556d5130 - last_write_checksum: sha1:8f701188c5689582f5226d97d99bcacf789b7f56 - pristine_git_object: ac916e0d4997b549e89e11715975a27d6af6f16f + last_write_checksum: sha1:44ead8db7b5ac7312038dfc2040feeeefa0e0ff4 + pristine_git_object: f95896aee0aebe75d740efe0eca5fa4df49e5891 docs/models/manualfeedbacksidebysideinfovote.md: id: cf68b1f63cc7 - last_write_checksum: sha1:a2b6e09205758bebf090bdbcba30acfe75503229 - pristine_git_object: 3ba4a1bed8c0ebd3f754b4a500682415943db7de + last_write_checksum: sha1:6f62aad4e5e0583365e661548b8564d1b3c97e08 + pristine_git_object: ba4cf618261dec6b6829099ec1760a6fd48bce10 + docs/models/mcpbreakdowninsightsrequest.md: + id: 8c3c8a81e52f + last_write_checksum: sha1:1aa64aa623e6a963d57251261f28e38050922509 + pristine_git_object: dfc799474ee77c7a1086e51067bcf7a2b71c3fd2 + docs/models/mcpbreakdowninsightsresponse.md: + id: cdfee60eb6f4 + last_write_checksum: sha1:c1381c087e140760b2896d1ccc047cae26b596dc + pristine_git_object: 94328ff46f865baafc8a3470bbc03119d8b5b135 + docs/models/mcphostapplicationbreakdown.md: + id: 7dbd2599b33b + last_write_checksum: sha1:bbb736a2752cec78704d81935408318ee3381236 + pristine_git_object: 22ebec8450461d7500d74f9de8e5e0a36aa1588e + docs/models/mcpinsightsrequest.md: + id: 31c5ec107f2b + last_write_checksum: sha1:0ecb48a6d0a991db7dc5b81d175fc4ba1edb87ea + pristine_git_object: dbf8e02939d30a3f36c0e5c801fb7c028d8949ab + docs/models/mcpinsightsresponse.md: + id: 7fb281e802f0 + last_write_checksum: sha1:30765d80063561930e96b060cc14649159b1d2d7 + pristine_git_object: f52735b7137552a3d71d7dbabcf348abb593c61a + docs/models/mcpserverbreakdown.md: + id: c176ce85af03 + last_write_checksum: sha1:7bd38b6bbbe91bc519010e78ae82add8e4b473c0 + pristine_git_object: d69d4ca36cbf827b298c17aa32f2e24c8e7126e1 + docs/models/mcptoolbreakdown.md: + id: fa26a0ae4ccf + last_write_checksum: sha1:bc3e3349110ab0fa18c0dc466e9f6aebb8d86e62 + pristine_git_object: 8eade3001193f86363e036f448148ca22d6e3758 + docs/models/mcpuserbreakdown.md: + id: 5a038100c9e2 + last_write_checksum: sha1:a642b877609d2765fe27b945fdaff8efc9853a8b + pristine_git_object: 1c4e22ef0d97f24e0b593d2080d123e7ce75b5d4 docs/models/meeting.md: id: 823ab6288010 last_write_checksum: sha1:9efd1c28c84b767ea662cd26598364b032e35cf3 @@ -1673,22 +2071,30 @@ trackedFiles: id: 43ebf5c6fe35 last_write_checksum: sha1:beecc147e019b999a49250a0379489cd5d9ac8a5 pristine_git_object: 4e064fddb83831285473b6c1d39b815d3ca2d173 + docs/models/messagesrequestrequest.md: + id: 2fa50c40c725 + last_write_checksum: sha1:b2f45e2474960413282369d0130b901cca91b302 + pristine_git_object: 8acae3985b40574380b506d0ae0aacf7e4700d51 docs/models/messagesresponse.md: id: c975c0170460 - last_write_checksum: sha1:98a285bfbe7da7d41ba2da1d16d6db8d5c3f3ee7 - pristine_git_object: cd049438890155b3c0804d5987ac7d92afcaca00 + last_write_checksum: sha1:e6a7cdea1bd830f591c9f76291d0a771dc503745 + pristine_git_object: 13bcccb386e993653dbaa8c1366d3dfb642c5c31 docs/models/messagetextblock.md: id: 725f98843e44 last_write_checksum: sha1:7413449c2a3047e781411c7854bcd2053d957e2c pristine_git_object: 9d44b3e3c25c22a3312ba9153974c8bc8b978d95 docs/models/messagetype.md: id: 7c0a714c5440 - last_write_checksum: sha1:4d9f0b5c17e2e6eac3d14b401c248cbeb8e463ae - pristine_git_object: bbaf0ff599dd2fcaec17129d49250d84015e80a5 + last_write_checksum: sha1:0e6889365b4cb2e70786a18e10c26003d7f55426 + pristine_git_object: 8f91442a60a35b61cb10ca0e9509bf5eba723e60 docs/models/mode.md: id: 568581cb28bc - last_write_checksum: sha1:b24cddcdf25557a80895354658ad9f58ce4a5266 - pristine_git_object: bde5127c9ad908a35e5e22ab62d1bcd470584b52 + last_write_checksum: sha1:263515c9f97885b91b6cd5844222320658442b07 + pristine_git_object: b1cd1e56279e4db030fc140598c10231ff311137 + docs/models/object.md: + id: 7ffe67d0b83f + last_write_checksum: sha1:f0d75b529d5e6940235cd6e8bff91249c97f8f07 + pristine_git_object: 06f80d51f75580152f7992a7b7dc76cda72db346 docs/models/objectdefinition.md: id: 11daa0bec25f last_write_checksum: sha1:6990618d91fdb10bba60313d1b94e1f1be0dcc24 @@ -1707,12 +2113,12 @@ trackedFiles: pristine_git_object: 88ecad105ba636cef49eed138b4e0daac952f649 docs/models/operatortype.md: id: 89dd5c1bde53 - last_write_checksum: sha1:2335571ac3a19ad8248682147f9ade7c4d519ff5 - pristine_git_object: f7d9e8574c56fc79565866477edb22ffc16bb093 + last_write_checksum: sha1:503d883f051b5eb2db687d41c95e58e1ee99e802 + pristine_git_object: 7525e28380b5ffbb57beb76dfda514357c3ec9eb docs/models/orderby.md: id: 9e749ed80f72 - last_write_checksum: sha1:3250237330a097134b899ab4c9cf211f181ce3c9 - pristine_git_object: 96a7f95dd8dc585544468e8afe40b35f82566fde + last_write_checksum: sha1:0525561e99af7f049d797b94b7df2cf20176cc6b + pristine_git_object: cb24df145ff35afedfbcec164e7531136cd7500e docs/models/outputschema.md: id: 48e0d37a531a last_write_checksum: sha1:4b66a4ceff4de7d1382332e2107928df7ab32bb9 @@ -1723,16 +2129,20 @@ trackedFiles: pristine_git_object: cabbe6e5060ca81606726370df1d3cfeffee879f docs/models/peoplerequestincludefield.md: id: 1cc1f2177bbd - last_write_checksum: sha1:01a30732938d33aa76cf6124974fdae99efcde70 - pristine_git_object: f2216729be1c3e7ebba38fe275285fee7fcb52e6 + last_write_checksum: sha1:a02e302ceae15bdcd65b89c04a3d67252d95653b + pristine_git_object: 8b933ae8aedf742a3b75025f62b43439acbbd273 + docs/models/peoplerequestrequest.md: + id: acc3cda54b12 + last_write_checksum: sha1:536bcc20d50abb8c2eda1d893650f69316f51e7d + pristine_git_object: a7ddc1835b7761cfec45f8dc7a60817e630e57ee docs/models/peopleresponse.md: id: f2403a1a85d4 last_write_checksum: sha1:2255e7801b2cea22d06806713476f711333bfb88 pristine_git_object: e92e9e8616bb5b6477112ac48f234f5e12aba738 docs/models/peragentinsight.md: id: 8b9e40d9c0e2 - last_write_checksum: sha1:559186c816ea7642d04b67bff436930d976b4818 - pristine_git_object: 8e12e9f528b9a24124e2cef5c14aa031850bdb0e + last_write_checksum: sha1:7eabfe6920858eaada150c7629e0acde0d8d783f + pristine_git_object: c8b0534806541e4e8c9f523191beee0fa870aec9 docs/models/period.md: id: bb84ae146fc6 last_write_checksum: sha1:018f64f47fe320ff0b8d46eb8d8323a06aae8420 @@ -1747,20 +2157,20 @@ trackedFiles: pristine_git_object: 5d2835e91400f8c721cd32ac9c4ad0c2d4dff668 docs/models/person.md: id: 3b0ea6e43010 - last_write_checksum: sha1:40bd01513e17ccb41bb7f3af8dabf8afef4a2663 - pristine_git_object: 345b60a8450d8d723f3233a50d7e757e24b3dd3a + last_write_checksum: sha1:c41a10861d5f427cfbdd80b81afbf201a43b3d51 + pristine_git_object: 233784bcf7eca5260994f7a48190e2207a6d6742 docs/models/persondistance.md: id: 26300c30163c last_write_checksum: sha1:37d6ba089ac53d0338b6e7f5e00d343adcc05317 pristine_git_object: a7a45c74dea5b256e3fcb318e570639113612000 docs/models/personmetadata.md: id: 15c9858b351f - last_write_checksum: sha1:67000efaad8be89c4edada9aa12fc8cd824cbe7b - pristine_git_object: 3bf2f1247f4a2fe0fd8c0c93f776df93057cb7ad + last_write_checksum: sha1:e9111e24294ce2fccdb2868f896dadcbd9ec0096 + pristine_git_object: 6bfd50db2debd6e3b2070e202efc1efd505c5361 docs/models/personmetadatatype.md: id: b6d1cc2d332e - last_write_checksum: sha1:6ca71902dd4909ace7d9e09cb6362f6fabb79c3d - pristine_git_object: 1f41993cd80014c8b6b31539317488f7406bf77b + last_write_checksum: sha1:fe678a00b3e162b7cf80a2ef0c718bf4e6bbe741 + pristine_git_object: 429584783250b15eba7dc4b9d4899fe4f6d725c9 docs/models/personobject.md: id: b61db667c399 last_write_checksum: sha1:a46315902270ad1be4fe59d63bc70674ffabe7cb @@ -1771,36 +2181,640 @@ trackedFiles: pristine_git_object: a4a52f3bcb30eedcceba09add09fc65dae8c946c docs/models/personteamrelationship.md: id: fffae2019126 - last_write_checksum: sha1:cbf7bd815ef1b17dc8f9d4ecf31162420f0425b0 - pristine_git_object: 9d958daac757d065311fbeed7dfc50c21bda6094 + last_write_checksum: sha1:39ce41219bb3ac550497d7461a641df0de8b3422 + pristine_git_object: a00dde5976017a8bdb0939fc35c52f09fdce297d docs/models/persontoteamrelationship.md: id: 7ca6e5720066 last_write_checksum: sha1:fdf351b504d8b654b8b6458e1aeff2c2ce733413 pristine_git_object: ad2118b32c73c1e83c0aa674ff2d0c6d772037da docs/models/persontoteamrelationshiprelationship.md: id: e3a09f4eb3e0 - last_write_checksum: sha1:da883cc8ed206c2f1199bb108f8c33adbb92ef82 - pristine_git_object: 2727c8ee1fba4296ec627a3daaad2a478cf84918 + last_write_checksum: sha1:1ad1f85a2dcfb4522f115df9a3f45a487578c4fc + pristine_git_object: bfb66e7a6c72f801c638ef0e27dac175f66613fe docs/models/peruserassistantinsight.md: id: 37bed9e00ed7 last_write_checksum: sha1:7543f948eea853768b8b8ba6a87bb180d62de66c pristine_git_object: 785dbb7a8af90c40fe2f22f3e37bcc540b9403d7 docs/models/peruserinsight.md: id: 06dafe79aaef - last_write_checksum: sha1:35e6387011638f2d526f8c7ed5d5f446f39bafa0 - pristine_git_object: d5ac9f328fc4b3418b67c37d72c44e37fc98be60 + last_write_checksum: sha1:f6c7824a025f72edfe0d944300fe50d9baae21b3 + pristine_git_object: 623d8c427d1ab64f8aa61cbd600709e2cd98e41e docs/models/pindocument.md: id: be1599f901e2 - last_write_checksum: sha1:a2b6f01b11f6eb2ec492643ac691bf470ec1ccf7 - pristine_git_object: def0aeba81ef69593009783dead087b206ce1b40 + last_write_checksum: sha1:2633572dbd7639c80acc1c532dbd955356561b32 + pristine_git_object: 3a7208b27e0c1364aded21d4f3e67c59adc88ead docs/models/pinrequest.md: id: 9633c2e6f354 last_write_checksum: sha1:8715b7cee9c72f746c8a24e7baa4c04ae084027a pristine_git_object: ae0403e50fece6b08d250e302e60d3e6a98f0145 + docs/models/pinrequestrequest.md: + id: 52df3106f8dd + last_write_checksum: sha1:64309a6e996c663f2f34cea4390bab0b5909764e + pristine_git_object: a24b8b95237035cda5ff134a9c0cc3bb601e06d7 + docs/models/placementreason.md: + id: e3d1cdfcf2b5 + last_write_checksum: sha1:20993a6ca9e751a4d3aa46f8f84f03fc00348d53 + pristine_git_object: f17278f2ff7680bcda387e90fb710196973b281c + docs/models/platformactionsummary.md: + id: 66630faec49a + last_write_checksum: sha1:918357358bb6dd6840b6ef69e9bbfc05620f3eda + pristine_git_object: 4a911ee3b51a89c0a847cc6984af2b01448edc73 + docs/models/platformagent.md: + id: 6d684a308415 + last_write_checksum: sha1:0f0c8b393957aebe795e3a7a142dffa1c65354a0 + pristine_git_object: dd4be2232ea15ab2219ea0d704e126a810e679ca + docs/models/platformagentcapabilities.md: + id: 7d0c164cb136 + last_write_checksum: sha1:70a0ba43c0c1fce847913b5e6c801b8ff9b17e77 + pristine_git_object: 052dd7bb60b1553c4135a36c018c2dd39d7751dc + docs/models/platformagentexecutionstatus.md: + id: 71cf171473c1 + last_write_checksum: sha1:1be45f91909f2a787a52fd947b2d1992a0634ed1 + pristine_git_object: c5b5164ab922f175f5216bb0b33a3d8fc5dbd79f + docs/models/platformagentgetresponse.md: + id: 18c7f4c9c735 + last_write_checksum: sha1:44a241668a240ee78a4c7bb6a85daf8cb4624121 + pristine_git_object: be79ecee30d70d591903bd9a89e3708a670b5e20 + docs/models/platformagentrun.md: + id: 2b8087b0fcda + last_write_checksum: sha1:a34783d31877e4a81505588767aa6e5eccf96fda + pristine_git_object: d6dffe1463ba8b77cdbfb57994a8b2bb886d07c2 + docs/models/platformagentruncreaterequest.md: + id: c1b58ab047ae + last_write_checksum: sha1:9653da975cf65f0552fbd11801d4a98e7c2eb25d + pristine_git_object: 072a5ce90d39b9f1ec6a274757364efbe77d5a7f + docs/models/platformagentrunwaitresponse.md: + id: 216b0600404e + last_write_checksum: sha1:af98dfbf6f900d7fa891640a5ad5259919062f55 + pristine_git_object: f41e4044dc63ccca2b8e1cae5ab576d810f495ea + docs/models/platformagentschemasresponse.md: + id: a9f2476c738d + last_write_checksum: sha1:91bc217f67657540aba343504479320ef577cf64 + pristine_git_object: 6ba12306df49a4d5a78a1c53269fc78d2672b7b7 + docs/models/platformagentscreaterunrequest.md: + id: c9a4aa1f28b2 + last_write_checksum: sha1:34bcec4aebfc10fa3633b22838cca8370e56496b + pristine_git_object: df93145879eef0a308f74b9241ac16c9b6acacb9 + docs/models/platformagentscreaterunresponse.md: + id: 24710130cfb1 + last_write_checksum: sha1:7060b94ca4737945356ac99814fe4cebec042bfe + pristine_git_object: 8282996d41c67596131337d85e86d52c65cd642e + docs/models/platformagentsgetrequest.md: + id: a51f3665418a + last_write_checksum: sha1:2d3c227d75b3719fdb592cfd1498e9d2fcf53956 + pristine_git_object: 5cdd73d2b039205f28b4953ce4ed6ab45d886ffb + docs/models/platformagentsgetschemasrequest.md: + id: 3591800143f3 + last_write_checksum: sha1:de1890eab4e530405f87e999f680afc39d362d72 + pristine_git_object: dfb7f4df8370052ab9b90252a509eee0e9c1b725 + docs/models/platformagentssearchrequest.md: + id: 863c7f027d45 + last_write_checksum: sha1:7e2501648e5c73a9615222c88d00f5d83ac42a61 + pristine_git_object: 381dc6be51c9a4d008f63c94b04fff7ea7bd1887 + docs/models/platformagentssearchresponse.md: + id: e2656d1b178b + last_write_checksum: sha1:11cfb0f78ed223bdc13cb93b7ec8fded52db7f99 + pristine_git_object: 1c961815688a6cbd9b0e3a298ea0641fcff045fe + docs/models/platformauthenticationsuggestion.md: + id: d3263acb33dc + last_write_checksum: sha1:0cf4d355db967c070866a43cc7cf8bfb00dabf8b + pristine_git_object: 02de0e92825452546bca7837adbc6706def585e5 + docs/models/platformchatcitationannotation.md: + id: 0c7305e6dabf + last_write_checksum: sha1:6a567d3ea92b8bc2d1a142510b1b34ae87fd5f11 + pristine_git_object: e15e66b29879dd3b3686d9faf64bce2bf40367b5 + docs/models/platformchatcitationannotationtype.md: + id: 5a3d664a4de0 + last_write_checksum: sha1:a83dc5f7153c2ff2f9182814a510d30f4db79edd + pristine_git_object: 8b83f20e7d35a28336d2ba64a7ef200f13d552c6 + docs/models/platformchatcitationsnippet.md: + id: c06b44710f50 + last_write_checksum: sha1:23d5a1e3a551da8805c66df5f1f5854edd42f997 + pristine_git_object: f4dcb28cc4b61f8719dfb716d5d26db6056f0604 + docs/models/platformchatcitationsource.md: + id: 54f318bcb2f4 + last_write_checksum: sha1:b085442e228cb1682aba41af8c54f2381dc35e25 + pristine_git_object: bb688733d0a00e09f8b9d2c613f34976b41d5735 + docs/models/platformchatcompletedresponse.md: + id: c274bca3fa55 + last_write_checksum: sha1:38a1582c5266e7c2365e700008ebe1c70461d918 + pristine_git_object: 34af8ff1c4add0e01b27c73bb654ba7c32433860 + docs/models/platformchatcompletedresponsestatus.md: + id: f52ac98c71f7 + last_write_checksum: sha1:08119b0731b552212f11f6f657a933cd06d9daec + pristine_git_object: 8bed3e0696e7a1665d1fc1ef77e883aa51affcb1 + docs/models/platformchatcreaterequest.md: + id: cd33a9dfda85 + last_write_checksum: sha1:a7d397ede45f0f7fd3332236f19e7bfe0f916f5a + pristine_git_object: f37f1031bb6bf575329284f2c5c9426194d0eca1 + docs/models/platformchatcreateresponse.md: + id: d07ae96f238d + last_write_checksum: sha1:2e27d36585ba58fc31cff8823ea1b6ba5203dd57 + pristine_git_object: 8cf9edc158c04e0a5828d33191b6ecc849257b58 + docs/models/platformchatcustomentitysource.md: + id: 6e12deaeb23d + last_write_checksum: sha1:b8ef7e1c92d45a3a3329a88b57361ba9553f28b3 + pristine_git_object: 8631370028a7c5005205ac7f2a6deb35691bde9e + docs/models/platformchatcustomentitysourcetype.md: + id: 4a2f676cfbbf + last_write_checksum: sha1:97187241129d869f4eeb58fbb00fc0df7fdb146e + pristine_git_object: 5f5b4fc6a9d3a1d27f2d4705173376c15ed71e9f + docs/models/platformchatdocumentsource.md: + id: 953dce7a7ae9 + last_write_checksum: sha1:db9abd75c816fff5a3726568415a64b6024336a9 + pristine_git_object: a8bd094eb25aeb63284dd1822a644be919f67173 + docs/models/platformchatdocumentsourcedocument1.md: + id: 3617a3ed0354 + last_write_checksum: sha1:d75343e04fe71a9c16383c1c3a8383f30ff3ea9f + pristine_git_object: 2b388ba918325d1843ca68af759b22567df35334 + docs/models/platformchatdocumentsourcedocument2.md: + id: 88f03c86a066 + last_write_checksum: sha1:ba841b422d33031b05ee502a49f6efe29929f8b8 + pristine_git_object: 1b8f64e4c598febb186b9a5552ca6827daf09b60 + docs/models/platformchatdocumentsourcetype1.md: + id: 47c9b6b27f95 + last_write_checksum: sha1:ea69403c15356c2edcb66e3bbf405c90b9892496 + pristine_git_object: 81404bd87eb8e842cb795c315d1425c2841d3acf + docs/models/platformchatdocumentsourcetype2.md: + id: 4bd893a73267 + last_write_checksum: sha1:920bce6ed056ceb6e7958e0be8620ef2ff4f6e31 + pristine_git_object: 30967f4550b07d4dc49b041428597bc44b56731f + docs/models/platformchatfilesource.md: + id: b64eca888132 + last_write_checksum: sha1:88e87ca14737f8d3166da647fbb1313fdacad945 + pristine_git_object: f18a6c67730ad51ee22272a20c75e9be0a5e3745 + docs/models/platformchatfilesourcetype.md: + id: 5d5aa5197a97 + last_write_checksum: sha1:3c2addfc1c2334452e8c420b7a0535f1179a8ecb + pristine_git_object: eccc6d3a144cf818a082a0f8761d820e32e41d93 + docs/models/platformchatinputmessage.md: + id: c9769df9aff9 + last_write_checksum: sha1:bf167f7b171a561dfc3713b0d524135d05229809 + pristine_git_object: d69e40b0db035b7e3f05be03d64a5149324d8261 + docs/models/platformchatinputmessagerole.md: + id: 0b46bce28b93 + last_write_checksum: sha1:f48e66526e0a2167b36ca51042ccd0df50b1c59c + pristine_git_object: cdf92876978850841d258d07db48586891089897 + docs/models/platformchatoutputmessage.md: + id: d236a3fe09a2 + last_write_checksum: sha1:be7029860368e4db9a914916e2e2617f233f24aa + pristine_git_object: a931e573200b0863e0902d8fef8bf77032a13643 + docs/models/platformchatoutputmessagerole.md: + id: 50ec5e5c605b + last_write_checksum: sha1:abf7f0886f60b8c18568e07d4cc1aecd9833360d + pristine_git_object: 07e97be111d2ee7924ce0295af12e5dfe2f668f1 + docs/models/platformchatoutputmessagetype.md: + id: f19e88fb1997 + last_write_checksum: sha1:03bd4ec00c5fd4668246640263bc0eb4cd5ed319 + pristine_git_object: c14068505b05003de4e946a3418828950b15479a + docs/models/platformchatoutputtextcontent.md: + id: fd2f6a03da55 + last_write_checksum: sha1:c72902588f7531a39f1783e29433709cfe157a7a + pristine_git_object: 1ea074b5e646042d60c921c8d3351e31bc0ccde2 + docs/models/platformchatoutputtextcontenttype.md: + id: 2eca715382a5 + last_write_checksum: sha1:89991c8d41e18cda29836b95477f9d6fc9919f58 + pristine_git_object: 2f8f45b28775f40b8b5014f1d056f6699de24a70 + docs/models/platformchatpersonsource.md: + id: 779c60aeabfb + last_write_checksum: sha1:bbb6d30600c5b18a2b6e286f878fc721a8e81d94 + pristine_git_object: c42d99e3556e5c16dbf32d1b37677dd04305c15a + docs/models/platformchatpersonsourcetype.md: + id: e514ca59ade7 + last_write_checksum: sha1:e0856c009120a4df0c15efccdb17b7474ba9fcd7 + pristine_git_object: 4648aec0ab515b868f019c2d399cd3a45f34472c + docs/models/platformcontentschedulewebhookevent.md: + id: 7cf591a2907e + last_write_checksum: sha1:3df88866a52033aa4555602e8b7128abdb1f6d14 + pristine_git_object: 403b249230a395d50920d788361f0bdd6bb89ae7 + docs/models/platformcontenttype.md: + id: a9175ad4799d + last_write_checksum: sha1:abb012a639cead86824ed11e596bda3632e2fddb + pristine_git_object: 1b46526d54ef25a1d018d2cfd3bbafde48fba72a + docs/models/platformdatasourcefilterinfo.md: + id: 61ae1a6d6454 + last_write_checksum: sha1:41734266d612f710490590c79d1104b15e165291 + pristine_git_object: 8119fc5d60b5afc43b6fa6c91205061bbd9a9b3b + docs/models/platformdocumentchangewebhookevent.md: + id: 6a7d5eaea3c5 + last_write_checksum: sha1:980bca6d1b189a0a14969236485ffdd8a6673f6b + pristine_git_object: 926494c10c4e191a01e7fc879c0888742c8b593d + docs/models/platformfilter.md: + id: 4e97760ae8b9 + last_write_checksum: sha1:c331962f750f8e583ea3f50d70027a2a23225ad3 + pristine_git_object: b13127363cc92f9425c6af95318b53ce2e398c41 + docs/models/platformfilterfieldinfo.md: + id: 9a7fa851c702 + last_write_checksum: sha1:e3712cf98275e049b47ab544eb8e8c2a28c05c5b + pristine_git_object: 8908111829612f9a67a7da3c9f18dc524d785ca8 + docs/models/platformfilteroperator.md: + id: 459d8f60cd58 + last_write_checksum: sha1:98575b0dfa32c14f341fc95490c0e2c5cace9fe8 + pristine_git_object: d97b6753e2056405bec741b206680b230891c331 + docs/models/platformmessage.md: + id: ea30c4fdad14 + last_write_checksum: sha1:890468283cb6b47c68edf4b7b241dec096699d95 + pristine_git_object: 626f1c36f215081121802a84c05a3a43b32bf4cd + docs/models/platformmessagerole.md: + id: e6a2fe6fb4fd + last_write_checksum: sha1:1c30e8005e9bf57a970710a3c29ab2351a55fc79 + pristine_git_object: 3646a0b786e69c448b0ef452354bd107cda591b7 + docs/models/platformmessagetextblock.md: + id: 3a2015852905 + last_write_checksum: sha1:76d7640c454b990eb346994555ddbab280d5eb28 + pristine_git_object: 68ac42502d86f948d0f9cc6c57f170bc681295c6 + docs/models/platformpersonreference.md: + id: 8e0eb24c7ab0 + last_write_checksum: sha1:b7e91a102caa171583e0033985345592eded3a47 + pristine_git_object: 9602adac9af14a6a401eaf90a16cdc7e7a96c954 + docs/models/platformproblemdetailcode.md: + id: fd61a3fb0333 + last_write_checksum: sha1:a1d01a7e9ba65fba741eb7ffc7c318ec2f00a28b + pristine_git_object: 4495e9428d4e4bc178b29fdfbc074a234e89679e + docs/models/platformproblemdetailerror.md: + id: 2e752ca0f45d + last_write_checksum: sha1:250c20189f7d3163d46e0036b2a7d8867f12f788 + pristine_git_object: 169944d5c3ce0c14a23f82a9c5ac30efdec24533 + docs/models/platformresult.md: + id: 0fe3fed8d508 + last_write_checksum: sha1:00c06fea69f19c8deedd7c27aa8fa735d1b04612 + pristine_git_object: 330039872116266288ec6bb54841328449f04759 + docs/models/platformsearchfiltersrequest.md: + id: 8bbc53cc30ee + last_write_checksum: sha1:e72c60e81d9b005abde6716e7036d8937aad2615 + pristine_git_object: 001723a502745d7ff5f80201dd8b432453e56ee3 + docs/models/platformsearchfiltersresponse.md: + id: 9ea2f0a45c78 + last_write_checksum: sha1:6a9d79d2ce163618620bc33f94b7409290195a66 + pristine_git_object: ee35d03324d6180936e9f0851d7516c641255b29 + docs/models/platformsearchfiltersresponseresponse.md: + id: 6296f0269b3a + last_write_checksum: sha1:fa863a1edcde689e9ce84e803c024f0db6ed4ff4 + pristine_git_object: dc35339f57048b4a4f944d31159cae21f09d4f32 + docs/models/platformsearchrequest.md: + id: 9f3be4029289 + last_write_checksum: sha1:044590ee0e94f1b366a29836b9b4b68767d3f384 + pristine_git_object: 59d2dc190095f5bc22afa1240fb3da2a58bdf07d + docs/models/platformsearchresponse.md: + id: b20c8f7128fc + last_write_checksum: sha1:2a830bd20b46e9d3079e7445a39122c9a2457320 + pristine_git_object: 74045b8a6ae5e046bacdfb861ababddb3d770f5c + docs/models/platformskill.md: + id: 83c575f92901 + last_write_checksum: sha1:6b749a33dc64251968dac815aec5189373449b3e + pristine_git_object: f803434a2bd716ccdd0731bfb29c6921ce8e1c88 + docs/models/platformskillcreaterequest.md: + id: d5a84c9d1cf0 + last_write_checksum: sha1:90db6d3c8fe55234b4dcf26c734c04fc641ac719 + pristine_git_object: 20f1e107df027e9582c3d48297de7ca4ceff4a0b + docs/models/platformskillcreaterequestfile.md: + id: 79740169197e + last_write_checksum: sha1:abe7c7d0668f4ad5d9e2ce0784610ae418f1b98e + pristine_git_object: 7da595ab9ddfd1daddca4dc49bb0104f7ae2181b + docs/models/platformskillcreateresponse.md: + id: c799c632c282 + last_write_checksum: sha1:3600d9c59b54763ae3c3ec660ff82a9573776ec3 + pristine_git_object: 6d49dd9d5fce3ab8dc5ec03826b8ce412cbfb19b + docs/models/platformskillgetresponse.md: + id: 1d8d7adbb244 + last_write_checksum: sha1:43c5b413dad154310df7aedf78851e4e41144c7a + pristine_git_object: 305445c73f691db85df4332708d88703eeade009 + docs/models/platformskillimportrequest.md: + id: e16cde59d7ec + last_write_checksum: sha1:6acb7fc67708475fd7f0d792654d2e7059d47a56 + pristine_git_object: e6c95bd604dd05e5d2adfa909f30c2bf9d198b56 + docs/models/platformskillimportresponse.md: + id: 9a66de8859b8 + last_write_checksum: sha1:1c24f744a99500576dee1e41d5dd83ee9c799b7b + pristine_git_object: 9a383f207c36e4ac9c50a84c4f704c86dfb2d82d + docs/models/platformskillorigin.md: + id: 66c12ec2d017 + last_write_checksum: sha1:281337f3fefcac11e66e5d8429b3b601dc357a57 + pristine_git_object: ca7bf36f2c931c0dce0bb529f8c2d86f4a06c326 + docs/models/platformskillscreateversionrequest.md: + id: bfcd223dbc04 + last_write_checksum: sha1:702b312a8f7629707857bf8e95676ac6293b2e2c + pristine_git_object: 00bd2fb2ce7bf79f2fba7db21510f31bbaf8c228 + docs/models/platformskillsdeleterequest.md: + id: 2f77c32cf1d3 + last_write_checksum: sha1:e3b5301934ecfe50b1c465cc8830a422f46a71b7 + pristine_git_object: f05b2a77d5cbd192de0b159736cb8fd568aba820 + docs/models/platformskillsgetcontentrequest.md: + id: d336cbaa3194 + last_write_checksum: sha1:2e43ac49a416bd67b397a586b7a0edf4868aabce + pristine_git_object: 0a2180e1c03e3b204ced2dbfc9868a88c43ebe82 + docs/models/platformskillsgetcontentresponse.md: + id: 8ce5fea0a148 + last_write_checksum: sha1:51ff2250d8165c7b874b6060ae06a6d0b6afbc0d + pristine_git_object: f1099c31b1cf1c29d9faf6a89b0a9e1538057f52 + docs/models/platformskillsgetrequest.md: + id: a9e7922c0a6b + last_write_checksum: sha1:e8d2aee805f122808b22b7b9967cf01e5dd97e30 + pristine_git_object: 19aeb1fe62fa39cadaa3f70da72f807b6c1b3fd0 + docs/models/platformskillsgetversioncontentrequest.md: + id: bd28da4f4aae + last_write_checksum: sha1:c803f093f5a8eb14555f0a7d25fcd67b63696b8e + pristine_git_object: ed179d36cea1157993943658b010acdb47225cf1 + docs/models/platformskillsgetversioncontentresponse.md: + id: 1e055ba78da9 + last_write_checksum: sha1:660312fedaef400c4d8f755c76f31a7067226ad5 + pristine_git_object: ca9d7b0299cec97d061bc6080a6c199047f3fd2b + docs/models/platformskillsgetversionrequest.md: + id: e2ff56de0fdf + last_write_checksum: sha1:e341e2153921ec608cf3dfd4feb47f6726163502 + pristine_git_object: 9256349d3de55ebbea5c8fae21e621b60e2d84c0 + docs/models/platformskillslistrequest.md: + id: 475ac6fb76a7 + last_write_checksum: sha1:4bac5ec35ddeb35d13d8494aebd5e8237a1d6239 + pristine_git_object: ebf0ada9b31b7f0788d46aa6aa866d91270c86e7 + docs/models/platformskillslistresponse.md: + id: 03920dfa6e9d + last_write_checksum: sha1:a01d7093df9c1723f0fc7e5e55c75c13d502e8fd + pristine_git_object: 1adcf3fef9224325ffd1a40f5a37e26aaddc3d7a + docs/models/platformskillslistversionsrequest.md: + id: 47bd785d0b34 + last_write_checksum: sha1:efd9f5c6044944bff237d1cc11d6e6756dd4840c + pristine_git_object: d97b7012a65b644ccdcfaa8cdc64a6258a0f0fae + docs/models/platformskillsourcepreview.md: + id: a20f898498fd + last_write_checksum: sha1:989f9420ee121202fec25562c5fc30ccdf14d953 + pristine_git_object: d41ccf21d006531de0c22fa9ca19139123bd3b92 + docs/models/platformskillsourcepreviewfailure.md: + id: d799da41e580 + last_write_checksum: sha1:822758dd06b0ee0c44e12fee54d93345b29df9c4 + pristine_git_object: c21fc25d86b8b5d53a9c38abda6baf742d166f08 + docs/models/platformskillsourcepreviewfailurecode.md: + id: 4c8692afdaab + last_write_checksum: sha1:e38e1e927bc1aac91ef8ff70fdd2982beb369397 + pristine_git_object: d0449869cd0e07e5714d428c24bdab5c4ebf09c0 + docs/models/platformskillsourcepreviewfile.md: + 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/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/platformskillssyncrequest.md: + id: d3c24d4f20d7 + last_write_checksum: sha1:1d44a8bd6552213daf05630e21d5c2c5f79d0219 + pristine_git_object: 2d54f2d566498c73e3fa98072a133fea0e95df40 + docs/models/platformskillstatus.md: + id: 33c93e7414d6 + last_write_checksum: sha1:7012661e93710994b8dc2a827b82bdb7da8bbb5f + pristine_git_object: 566f1092589cad8787c57dd7042e2f2c71ea49b4 + docs/models/platformskillsupdaterequest.md: + id: f8592c4371a6 + last_write_checksum: sha1:32c122889d11396f07aef39f80135d7c15880d70 + pristine_git_object: 3ea30e833501442e500b5572098b632d97d0f7ab + 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 + 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 + 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 + docs/models/platformskillvalidationfile.md: + id: ec82528a1836 + last_write_checksum: sha1:f4f4f45aeabf5eb63cf40ce57edc939fe13a8d17 + pristine_git_object: 446e41d470ce7a9606bc6a01d69083aaf642ce5f + docs/models/platformskillvalidationmetadata.md: + id: 158f1ad4d97f + last_write_checksum: sha1:8c76f5d903fbd2d069f99f997040fb9b25be5363 + pristine_git_object: 57900264fbeecd620c5bd1128107158b47dec6e0 + docs/models/platformskillvalidationrequest.md: + id: 79c56d29e7eb + last_write_checksum: sha1:7ce9a2e510c391e25a267a207e1c9e9185a10c38 + pristine_git_object: f4ffbc518738045974f468c153f53058824dc650 + docs/models/platformskillvalidationrequestfile.md: + id: 0cf6bc6f28bb + last_write_checksum: sha1:2c55941648b60014976e6dc2d50a97e4a8d33ad5 + pristine_git_object: 6802ab6379b6bd6cca97269c82fd78e88d29973a + docs/models/platformskillvalidationresponse.md: + id: 0c84081113d2 + last_write_checksum: sha1:5c2e270d4d9137ac55be2caeb0a2fb16de8bce23 + pristine_git_object: 9f8ab67f1fb03205ea3c9ef3ddc0002fe2622a1f + docs/models/platformskillversion.md: + id: b42042487614 + last_write_checksum: sha1:e137b5b43e787f547287317e56776c0375a21c5d + pristine_git_object: b0d05e4cc582a368762fad18b75db8075335ab92 + docs/models/platformskillversioncreaterequest.md: + id: b6c0e38fe554 + last_write_checksum: sha1:0bf010d1e5e55499a585bc247192df0635672062 + pristine_git_object: 8ef07feda000be7a0023dfa5b1e8bb0209361cc9 + docs/models/platformskillversioncreaterequestfile.md: + id: 23cd70e79e6f + last_write_checksum: sha1:515eefe3d197e2059c00b7ca786b8cecfd020f0a + pristine_git_object: dcac880f171e56cc03ea689bccdb0d3408c70211 + docs/models/platformskillversioncreateresponse.md: + id: fcf576ef32d2 + last_write_checksum: sha1:e5e6ec36c984856bcc56ee4af9312a97925191a7 + pristine_git_object: e355ae5e5c39d7973f9df93b948849654d2b6499 + docs/models/platformskillversiongetresponse.md: + id: 1cfe0ddc68a4 + last_write_checksum: sha1:f2bee79f43a6c6149d01eb28d0e246b356ad2564 + pristine_git_object: a89c7a90219eb99cf80714dd5307fbdafceccbd8 + docs/models/platformskillversionslistresponse.md: + id: 04f03f45e509 + last_write_checksum: sha1:3fd42ad6fe3a2cd0ec97e477a960f18e9584c883 + pristine_git_object: edd94537c72a222df7aab60ddd84a4419ff712d1 + docs/models/platformtimerange.md: + id: c37b2e815a8d + last_write_checksum: sha1:31db2f83dba4ccb6d0a5e7b80edbeff356529101 + pristine_git_object: ff19123b19a2dd81301974a38d793afff935e9aa + docs/models/platformtrigger.md: + id: 63c7d9d07b1e + last_write_checksum: sha1:18e23ba6d629d537791ae6298a996d4662c7755d + pristine_git_object: d4597f36d50c8e12101edb29f2e2b82af7dcecad + docs/models/platformtriggerauth.md: + id: 1f1c930b21ad + last_write_checksum: sha1:d5b83fa4dc803f60a923bfa4db5c7d42f570ea26 + pristine_git_object: bbe340e20879ab9b6016441d47d84e233a6b687d + docs/models/platformtriggerauthoutput.md: + id: d6e1359e1170 + last_write_checksum: sha1:57bc2525ff4f3a9afe1a944f53effe40d4fdd13a + pristine_git_object: a83975e6de80ed4574f5cff5bf3e498f4d0fd7a4 + docs/models/platformtriggerauthtype.md: + id: d6871997fb2e + last_write_checksum: sha1:a2f8310ce492a5fd323327b3ffa7dfc89518477f + pristine_git_object: 18bca2b77d8e18020179f4ee8fc95062981b9f33 + docs/models/platformtriggercreaterequest.md: + id: ef6b7277f869 + last_write_checksum: sha1:0c62b37bcfd6512f39899cc5addc3b5022aabae2 + pristine_git_object: cad7c614683b2bc6989d06ff01907f25090863d9 + docs/models/platformtriggercreateresponse.md: + id: 5dafc492951e + last_write_checksum: sha1:9cec8887a26a76a2330d3f2268761bf28f9b9611 + pristine_git_object: 3a9417a890de473ee9893c5925b3d2507fb05764 + docs/models/platformtriggerdelivery.md: + id: a50bc1969699 + last_write_checksum: sha1:6e0d71577fe5a5eba7f743eb5299e80e7b8e62eb + pristine_git_object: cb603d9075a8598f677ff749f63167bfb1b870d4 + docs/models/platformtriggerdeliveryoutput.md: + id: 8c7a53433836 + last_write_checksum: sha1:05a77a885cb535b3d7321111a3ff8e867f2933f7 + pristine_git_object: d99b2ca062342cdb032d7fa5202a73b9e02780bb + docs/models/platformtriggerevent.md: + id: 8c1265454530 + last_write_checksum: sha1:8eae3dbce44ec9c7725c1603af0ea89a7084148f + pristine_git_object: b576bda6a9b1cd7bd2fc8821fd1d84fb23739652 + docs/models/platformtriggereventreason.md: + id: d3b45140acfa + last_write_checksum: sha1:367bbc029e25edc8d3ac0024ec8bb759fa71af04 + pristine_git_object: e3c221b823b661eb933566e99c49ab8d9c76f750 + docs/models/platformtriggereventsearchrequest.md: + id: 29860dfa66e9 + last_write_checksum: sha1:dd92227615d8d7aa8908fbe20c5e1e4897f68fbd + pristine_git_object: c81ec61cbc253194973a912a240fc15ea018bbca + docs/models/platformtriggereventsearchresponse.md: + id: e9afba1cf9e7 + last_write_checksum: sha1:e6a3cd44cb28803c2288ec5d4971b984301efe17 + pristine_git_object: 7aff8cbe0bd9dc10e50eb02b130b4a3789a1d933 + docs/models/platformtriggereventtype.md: + id: fb6dc1525a69 + last_write_checksum: sha1:bd1102eabcb5449113e66e1e7470877275808b58 + pristine_git_object: 09a8a1e835a8bae6767446e23bd5dc6578f85b25 + docs/models/platformtriggergetresponse.md: + id: 77ecfe35a196 + last_write_checksum: sha1:da6a967ab0cbffba82094731084586d3e664509a + pristine_git_object: 2f3a0c491cdda17c6fde095e1bd30f33abf7b753 + docs/models/platformtriggerlistresponse.md: + id: 4a6ccfef2b35 + last_write_checksum: sha1:277bf462a0b0309ce564b8797d3db45168af7d6a + pristine_git_object: e4980bf508355f6bc7d593da278d5132f54255d2 + docs/models/platformtriggerpreset.md: + id: 769ffcf2051b + last_write_checksum: sha1:5edd922dceb47dcf6cb099dddfdaef404d3a0625 + pristine_git_object: 2dc6db1f0e974147e8c2ecc3e489615121884c2e + docs/models/platformtriggerpreseteventsearchrequest.md: + id: 1a8922142a34 + last_write_checksum: sha1:90fe81443a1c03519799365b8f6ae5688f3133a1 + pristine_git_object: 81d8fb8383e38a327e0ef646af42afa3837c8057 + docs/models/platformtriggerpresetgetresponse.md: + id: 19121824b568 + last_write_checksum: sha1:ded9f8a90fccdcb3b00b272733dfab69311aa7b8 + pristine_git_object: cca8734b87a0afa34b048f156c37862218110b54 + docs/models/platformtriggerpresetinput.md: + id: b092c1006740 + last_write_checksum: sha1:1cb064b4f8de7a4be7787f4141de78bfb4526779 + pristine_git_object: 9e232561a4f8b56e2615ae8ae2e58107bd9e2d11 + docs/models/platformtriggerpresetinputtype.md: + id: 4d704bfa30e4 + last_write_checksum: sha1:0d71f75a1d403f799c409428d80c48e1939cba2d + pristine_git_object: 4b454180e464205fd17f51ec1d2adf60104fb054 + docs/models/platformtriggerpresetinputvalue.md: + id: "9736363254e3" + last_write_checksum: sha1:f7c6b5b521f745fbdc8afba0731382f7158729c1 + pristine_git_object: 7fb2c9f91312b70e9386d04fba53f069c599a16b + docs/models/platformtriggerpresetinputvaluelistresponse.md: + id: 83d72534a3ca + last_write_checksum: sha1:87a3ad39529499b19c00b83757190076014f51c2 + pristine_git_object: f76e44bdbeb134d314848b47e4a267a547ed1453 + docs/models/platformtriggerpresetlistresponse.md: + id: f20264dc45fe + last_write_checksum: sha1:775259e97c30cc1220d06977757b4d49f0276d40 + pristine_git_object: 7d87f18317503d689665ebb8b63a87d8a09d0c11 + docs/models/platformtriggerpresetseventssearchrequest.md: + id: 232ded4889d9 + last_write_checksum: sha1:d9a9ee0f13732e71d3b3992e77b33e4a1b3733cd + pristine_git_object: 5b9b8544bf4d062ecd84bf2a3b88434de8992bc1 + docs/models/platformtriggerpresetsgetrequest.md: + id: 661f8ca0e756 + last_write_checksum: sha1:929b48e2e062df8129c84b9ec32073f9c518580c + pristine_git_object: 3649388d7de32d0dc06b74fa874db4059e0daae0 + docs/models/platformtriggerpresetsinputvalueslistrequest.md: + id: 9cbbb9eaa9c2 + last_write_checksum: sha1:8ee9facdf533164c5b41ee488662311797ef4b25 + pristine_git_object: cb4a01b8fc67367a86e2e3d1e605ac63eb0c3f33 + docs/models/platformtriggerpresetslistrequest.md: + id: 9e0579bc5584 + last_write_checksum: sha1:8da57825e3ef677c1f4432a7dbf99b76966606e1 + pristine_git_object: 5a300603fb4f7b0936482c6ef35d8c180f532be8 + docs/models/platformtriggerpresetsummary.md: + id: 49e61c3cb246 + last_write_checksum: sha1:1dd894066b32655618a84df683c508e3c95e5f5b + pristine_git_object: 18f731cec9feffa5a98950af3d06d382d4a25235 + docs/models/platformtriggerscreatetriggerwebhookeventrequest.md: + id: 51329437110b + last_write_checksum: sha1:433e4f235014d616bd151298a67e8d7a00296448 + pristine_git_object: 9a28c2e881fa9f5cc97c2f97a6a4192f7800beb9 + docs/models/platformtriggersdeleterequest.md: + id: ef6711cefab2 + last_write_checksum: sha1:f08630c117e01c5a37f6379503545d0946e73b13 + pristine_git_object: b31a34f21a3e6bdc081e4370925cde7cbc07698b + docs/models/platformtriggerseventssearchrequest.md: + id: 5c71525b6edd + last_write_checksum: sha1:f4781a66d1c1f4afd3a179a152fdae5357fed40d + pristine_git_object: 940d83b992170c738553280443a44da3e9d57c50 + docs/models/platformtriggersgetrequest.md: + id: 7a4d34377937 + last_write_checksum: sha1:a1d8d6ee1b8e6deb15bad88b45d8020dd8e7e862 + pristine_git_object: e0823c5833042f711f0f90eec4bea9fc38ea9373 + docs/models/platformtriggerslistrequest.md: + id: 67c0b855996f + last_write_checksum: sha1:e20f86ad16ceeb59341302bbc0bebaf3ae8e8536 + pristine_git_object: 8ca8fde1f9f2bf77274bcffbba9814ff6383c823 + docs/models/platformtriggerstatus.md: + id: 5faa86db7dff + last_write_checksum: sha1:520c8f1ab4ebb201670619a7c557c9194a855967 + pristine_git_object: 652a23718a22cce3498feef53e0f06dd1c196088 + docs/models/platformtriggersupdaterequest.md: + id: 35ee38f0c9c1 + last_write_checksum: sha1:6060a8f654f62b05919fc5b72d68d350fec9a517 + pristine_git_object: 8e9c286d9962b7c0b4e5be59a588081d06610175 + docs/models/platformtriggerupdaterequest.md: + id: 9df406d86a64 + last_write_checksum: sha1:e7f1120c91320965dd299da24583d92c107ead58 + pristine_git_object: 9965fdb657014590ba08608b922d6c3df6793fec + docs/models/platformtriggerwebhookevent.md: + id: 21cf14d09338 + last_write_checksum: sha1:d3f4047e843eb39bccff965930195099d0719f6f + pristine_git_object: a7a76198cef7466cee17462cdeb5e8a6a24a37da + docs/models/platformtriggerwithsecret.md: + id: ba7807f1bd05 + last_write_checksum: sha1:5c7268369788dbb8b7d4a573dceeada489dba02c + pristine_git_object: c79b1eab1799d245a50c04c3180fd8f73192459a + docs/models/platformwarning.md: + id: 458ffec7aa61 + last_write_checksum: sha1:b70d5a767413fd7559601eb8e1e9728ad8b15773 + pristine_git_object: f0a2b5fa43037837c25040988cf8135560a30bb1 docs/models/possiblevalue.md: id: 630387aebbc5 last_write_checksum: sha1:490f03fc39621ae0f816bb16d2922e1a8042cdb1 pristine_git_object: 02f0ac74a6782ea8fe45b55a94902c78f7fab079 + docs/models/postapiindexv1debugdatasourcedocumenteventsrequest.md: + id: 43915828bc17 + last_write_checksum: sha1:a83e0604127f19ab318ec1436dc473c92a4eb1b0 + pristine_git_object: 9f2b3c975820801ac23513248e143952f40ff289 docs/models/postapiindexv1debugdatasourcedocumentrequest.md: id: 38ecbe6de48c last_write_checksum: sha1:8584d4701d40c4cee616a2f2883d7f4c2d12e6a0 @@ -1817,6 +2831,14 @@ trackedFiles: id: eeaa85e50636 last_write_checksum: sha1:e255ef8b11d751c43ada45d3aa22b5490bd252d4 pristine_git_object: 15ff2ebc05e1ebc9b05388846f36ad5d7bac455b + docs/models/postrestapiindexsubmissionsdatasourceinstancetyperequest.md: + id: 78fe1bf151e3 + last_write_checksum: sha1:e535704cb6bc00fbb3a27e8abfbb7c78b77a8199 + pristine_git_object: de52e08d07e5ced900b9f54ed8f52f215a572e10 + docs/models/postrestapiindexsubmissionsdatasourceinstancetyperesponse.md: + id: 4c0d6e71d021 + last_write_checksum: sha1:0f67766a5b543d66d08d87db169b9f7b8aa8dc65 + pristine_git_object: 21e0e27edaff1966acc5b051334b4ed39c263ca8 docs/models/processalldocumentsrequest.md: id: 39f3b9c55db6 last_write_checksum: sha1:02030cd56cdfd7c6edde20074164a94d6fcf075a @@ -1831,12 +2853,12 @@ trackedFiles: pristine_git_object: 91e3cb2eaf76f0b814ce9a2f7fb1d6b25ab5b801 docs/models/processingstate.md: id: f7dd740e0572 - last_write_checksum: sha1:424e77cd7143e308dc8a41f57aec6bcb5cd85882 - pristine_git_object: 1054736b9528a15c200d40ba78e8233f101bd3ec + last_write_checksum: sha1:21bcbddadd7313166578e1e6b7dc596e28c8a04a + pristine_git_object: 63439d0308aeec0d690826dbb9a35d1deb3a54e4 docs/models/prominence.md: id: 426f5a937205 - last_write_checksum: sha1:d1f37af2ab2e7f579f922b1fa5c69526aebe85bd - pristine_git_object: f268bbdcbb6cc02901354d666b0956a8dacfffb0 + last_write_checksum: sha1:999b72a93b980bc8871cf2233497fd370e8908ea + pristine_git_object: e2084849cec0bf8d693f7113b9b0fbd21382980f docs/models/prompttemplate.md: id: 11e24c1dd6c9 last_write_checksum: sha1:c4583b14ff8d8d1a29bb3beeb36ebfd356876000 @@ -1847,32 +2869,32 @@ trackedFiles: pristine_git_object: 104dbd52aeaa357ce54fbd9f407b73067a1c957c docs/models/propertydefinition.md: id: a50cb5977744 - last_write_checksum: sha1:85c0aaa7c0c104190e2a46039f74520c8490f6bd - pristine_git_object: 9872d4c19dfdc1f84516d0b718ee0060e132bc5e + last_write_checksum: sha1:762e9a02215d5be678ae7a1704adfeec419a91f0 + pristine_git_object: e34ed621310c9dce2462589ce50467022bb14848 + docs/models/propertydefinitionpropertytype.md: + id: 7aa045c850c3 + last_write_checksum: sha1:0b8f2724562ae0aed2a5bebdf593f94860d26200 + pristine_git_object: 732480e5c844428bcc8562b847929eeb4e536f70 docs/models/propertygroup.md: id: 5e6aeebff127 last_write_checksum: sha1:ec73b9607d1e3203324f876f912471f217939d42 pristine_git_object: a1d9b7a2497fe865f3ee3435025328c14def9893 - docs/models/propertytype.md: - id: 7da644a61474 - last_write_checksum: sha1:37871b65113929e302156ce60ddfba49d67bd411 - pristine_git_object: 6ec9b3d371cdf95ddabd2d732432c892d5465327 docs/models/provider.md: id: cedb2a98f8e3 - last_write_checksum: sha1:55402a9d8dd1717bc142e73fdd2d61df4bce1edc - pristine_git_object: d83acab17ddb85f85f4c56807ae1ed61394c33b2 - docs/models/queryinsight.md: - id: d09436ba953a - last_write_checksum: sha1:194f76df850fe4d6d1f1c673acef3749b13787e8 - pristine_git_object: 6e9a3cc023e41e831c21dd4ab7c0e8123be3f815 - docs/models/queryinsightsresponse.md: - id: 0b15cb064636 - last_write_checksum: sha1:09d0880acdb50c386eaad774b07662d75e92226c - pristine_git_object: 2780966ecfcf11580cd64f47afce379912d59575 + last_write_checksum: sha1:d6899eeeb30af28988f37702ffd4fd00b44e8f9f + pristine_git_object: 4e51686e6e15ea7c11098d7766601d73fcb40f70 + docs/models/putrestapiindexcustommetadataschemagroupnamerequest.md: + id: c549318b9d46 + last_write_checksum: sha1:6fe92187ec673555b6125afee34d2da6dc4d2a49 + pristine_git_object: 342fa724901224d81c82a58835b1473f01554596 + docs/models/putrestapiindexdocumentdocidcustommetadatagroupnamerequest.md: + id: 09cbfcb31353 + last_write_checksum: sha1:85b40dc1164f197037b2b7ace5207ee7254d5685 + pristine_git_object: 5af8c6170c943739d8c120b7c70e4436b7e57631 docs/models/querysuggestion.md: id: d204ce67c5d4 - last_write_checksum: sha1:a0ff5b4d9d199993c2951c54b57e975487116470 - pristine_git_object: ebd5621bee3cd7d281b293c9a339f90f55ebb126 + last_write_checksum: sha1:2da8625502905619ae6e0490f12e598abea024f6 + pristine_git_object: b1ef6c6828df6159418aca25bdde1105aad43be1 docs/models/querysuggestionlist.md: id: 3ac61ae3997e last_write_checksum: sha1:bd5f7e3b9c1371067152f7f8b15e7e1ab00e882f @@ -1897,14 +2919,18 @@ trackedFiles: id: 9af3afaa9e89 last_write_checksum: sha1:6c61bbf334e07ef058d29a674632f8d8507ac3c9 pristine_git_object: 93f5815fc8c797405971ca52b84176073549730b + docs/models/recommendationsrequestrequest.md: + id: d2aeaccbd96a + last_write_checksum: sha1:d975dcbcb9abe64aa53de0504e890d7791b9e631 + pristine_git_object: 763a6dbaa6e001859acc66b609fadbeb87a81a5b docs/models/referencerange.md: id: 5f43eaff88a3 last_write_checksum: sha1:50afa7a8c59ee89013d2c6e2e5181f16f0d7b5e4 pristine_git_object: 961316baec5e47232764342301bcb7e7fa5e45a7 docs/models/relateddocuments.md: id: 37f62d34d466 - last_write_checksum: sha1:898e4715d46b6d6acaf24ac6477bebafd6998600 - pristine_git_object: 622962663e3885e469f9378389edf00bbfc04327 + last_write_checksum: sha1:fa99942ef722571ea6a82d8c2b4fc2e1f647f2b0 + pristine_git_object: 0002a5a978cc3e3f2cb153d3f261c152649aa36e docs/models/relatedobject.md: id: b199f29bd27f last_write_checksum: sha1:6792ea9688f7506cde526301de830759490c72ac @@ -1923,12 +2949,12 @@ trackedFiles: pristine_git_object: 9fae3b0a68d116bccc7918711829018e05d5f544 docs/models/relation.md: id: bd62bd10e24e - last_write_checksum: sha1:367a97e91b6f91483ce72ab6c7c508e01b0ed186 - pristine_git_object: 1912e0f8b123d9554894ecfe732d8366636397d4 + last_write_checksum: sha1:706b41145cf274d6a464710022cd258beb0f1e52 + pristine_git_object: dd90ac50fe5fc29e51081c509e45902b0423e555 docs/models/relationtype.md: id: a3e82ab5197f - last_write_checksum: sha1:5daabe0ea432b43eeb676e16fb28d5e927a79e01 - pristine_git_object: 647876dba4062828b8950044b27c882df12d56c1 + last_write_checksum: sha1:ef5260e78a563ffd9ef43519c9885cfe534ff097 + pristine_git_object: 2ca42951f8063802b0655f044836bd7c02202d4a docs/models/reminder.md: id: 0047a1b89b3b last_write_checksum: sha1:43ee9bee8ea2d7fd681baef92221422803babb81 @@ -1943,12 +2969,8 @@ trackedFiles: pristine_git_object: ab490c5442a9b52d0a5388ab39d3a4792f8d4ae1 docs/models/reportstatusresponsestatus.md: id: c6d3311eea79 - last_write_checksum: sha1:4768a71bfeedabe7c669f36c3eaf40f546654aaa - pristine_git_object: c74ecd90e4b7da724ee274cfd2a63532103c2163 - docs/models/requesttype.md: - id: 2e3b600ad04d - last_write_checksum: sha1:4afcb45c3b30dc2127810a796c589b817f4136d4 - pristine_git_object: 1859501ab79c0084ec7c8c65243a9ce3c056c77a + last_write_checksum: sha1:cb11955a7ece754400f4fd1a09a4586945a6e9b3 + pristine_git_object: fbbf6879eb3a324a311927d99fe558be1da01b65 docs/models/responsebody1.md: id: f324bedb3b30 last_write_checksum: sha1:998f6661be7e3d24c165ddcf3cc2c2c85d4de195 @@ -1959,16 +2981,16 @@ trackedFiles: pristine_git_object: 5a64d4a2875808416196d80e8598ac263382c31e docs/models/responsehint.md: id: 2fa9a49e2b25 - last_write_checksum: sha1:17184eac3ffe5a2eb9439c08857e1eed3caf08b7 - pristine_git_object: 82f866d3dff28ac6665ff997cbe60bcae43ed281 + last_write_checksum: sha1:b61a01fb7cb72cb85f3a5e5e456f56053313a4ce + pristine_git_object: fd0bd06d656ea1b976cf3a450bdfb89ebd4a1a4f docs/models/responsemetadata.md: id: 3e8a79783b6a last_write_checksum: sha1:622eac104c15d81360d841c8b8e5e03b4352b78b pristine_git_object: a0011a2fa1e6bf5171e8e06da65efb66e179f325 docs/models/responsestatus.md: id: 8e1106e0a4e4 - last_write_checksum: sha1:b7fd8904d1f1b50c979488fc82f9f403c90520db - pristine_git_object: 255ed6f1a118ed63b7521b1333f72d585fc18a26 + last_write_checksum: sha1:91e9b4a7f9fc27963e261a4f12f90baad3800d70 + pristine_git_object: bcd5413ee10241817bc51bd2104b5415723599d8 docs/models/restrictionfilters.md: id: 080254acc2eb last_write_checksum: sha1:4d6e84f502a02998c3d8c123fce6110e6a28c5f0 @@ -1989,22 +3011,26 @@ trackedFiles: id: c27ee1a4b407 last_write_checksum: sha1:5e3c17cc69a66fb79a9d4935bfad8e2d2312ec7f pristine_git_object: fcc597abd3b5095bef1a5bdd9fd2bb372b2785b8 - docs/models/role.md: - id: b694540a5b1e - last_write_checksum: sha1:527519264ae05019a7bb015a8765e406ea9b2ad2 - pristine_git_object: 3a788dbf0cb332a456902365b8ab43352e4b67b6 + docs/models/rotatedatasourcecredentialsrequest.md: + id: 426db1e134f1 + last_write_checksum: sha1:7046726cc6e2da03528c6df07f69dbd9c711f61c + pristine_git_object: 2074cc10e82ee45278f861502265168b24f02420 + docs/models/rotatedatasourcecredentialsrequestrequest.md: + id: b61a6cb42b82 + last_write_checksum: sha1:1f3ef55d822ce2ac387fdccbbc8c544a32edaa40 + pristine_git_object: 4a1765451a67573d800ddb567979645e031e5154 docs/models/rotatetokenresponse.md: id: bb8958b26e2a last_write_checksum: sha1:1a25b03ff78895912dbb7d50e6dfda816b67cb65 pristine_git_object: 82c1a5b5a7a8e2a1aee4719909c2c5e48f53dc77 docs/models/scope.md: id: c7d8338540ba - last_write_checksum: sha1:2bbc7553649867f3e08ff7006cdabf2b42d5aa2a - pristine_git_object: f1e506282a9aaa47981cf7f17fbf5afab3f56ca4 + last_write_checksum: sha1:14100818939e973ba9ea563c203ec40b39a1c113 + pristine_git_object: 189ff0f776f6bdaa5cee36d35444dd724f52e0d2 docs/models/scopetype.md: id: bbf7df39278c - last_write_checksum: sha1:19f1db3799158d3966ff62e720707715336eca92 - pristine_git_object: e6c2e396d2c9e5524cd45f7e159bc314a0ad81b1 + last_write_checksum: sha1:8d81c1586c14b6fa0547fdc277613894419c4e4f + pristine_git_object: 7c67e71c306fb2ec56162638dbf9beb068ced038 docs/models/searchagentsrequest.md: id: dd80edd4008d last_write_checksum: sha1:a6a2f3c53f8bd651c96eee45d73e83de4dce9564 @@ -2019,8 +3045,8 @@ trackedFiles: pristine_git_object: feb004ca5cb978decd8aeb00f38ede4fb759820b docs/models/searchrequest.md: id: bc36c5e5aee1 - last_write_checksum: sha1:9e09e3fe8c7e72b78ba824dd6089d371a430a5fb - pristine_git_object: ae190b5599695558ee0a5d2e7f92fc9f54226d51 + last_write_checksum: sha1:17380e1117c0b9cb210f397081baef1c9dad328c + pristine_git_object: cc5de4734e0fed258ff5b4eb46f6e34ff43b95b9 docs/models/searchrequestinputdetails.md: id: 26d781659873 last_write_checksum: sha1:761b9f8ccba9a19f0f00c5f0ff1789b81422aa6c @@ -2029,6 +3055,10 @@ trackedFiles: id: 46607eff2140 last_write_checksum: sha1:8880f8a97b5311b5efa0efe7474f865c33641776 pristine_git_object: fb83a2a79ff524a3d8d2e3c5eeb93dc956255a38 + docs/models/searchrequestrequest.md: + id: 0ce27fe572d6 + last_write_checksum: sha1:14c866db2a1c8143c1a13e07578f0dca0d7b2b1f + pristine_git_object: 79efc8a78bf7e29a3f1fdbe108942695aca756c2 docs/models/searchresponse.md: id: d5606b4d403f last_write_checksum: sha1:c3c978f89c42845abab11e176d6265d073b65f48 @@ -2043,20 +3073,20 @@ trackedFiles: pristine_git_object: 0ceec198bd42b9c7785367267b733c8f3f1e6c96 docs/models/searchresultprominenceenum.md: id: b42f970c0c9d - last_write_checksum: sha1:945c0afac133e2717308b15bad8724d37901aad0 - pristine_git_object: 12605e2b9c2cb0a1545ba44825611bd9165b40ee + last_write_checksum: sha1:40adf871c5deb2fd183aebf65d4dd423c6f5b8dd + pristine_git_object: 65f9fa4b4c01602d85acbc95bed4d1241506db03 docs/models/searchresultsnippet.md: id: 9e1b4de38d1c - last_write_checksum: sha1:1bd580c4365dc9a568399d38cbe5b832f13b47da - pristine_git_object: 48c9b2b4837bdc8219724e92f8328b4b665e2979 + last_write_checksum: sha1:735dba7b6569940498505f4e75e9ebe0a63c2490 + pristine_git_object: 55f6c7547b1b938d3454e813cb60a896151e03f0 docs/models/searchwarning.md: id: c94f7679e23f last_write_checksum: sha1:ab1b71b733b6ab5906b7e60f218bc6e983d0143e pristine_git_object: 76000ccfbbaf2b2979d54617625f7eccbb227151 docs/models/sectiontype.md: id: 921ba624a16e - last_write_checksum: sha1:39c7dcf8ee7f01107d4927e14ca3dc6802f96e92 - pristine_git_object: efde24304f96bde409ed26920beb87f9322d1dca + last_write_checksum: sha1:8303f299a622a1b8ea238a81f90db6399066bcd5 + pristine_git_object: a9aa833111af162ca56ec269c90280c67a036df1 docs/models/security.md: id: 452e4d4eb67a last_write_checksum: sha1:5a8ca6c033f57e615f3ffa94175b82d8eb3a9822 @@ -2067,20 +3097,36 @@ trackedFiles: pristine_git_object: 4d3d39552476495c4aa2a247e66bc87cf0847ae2 docs/models/sensitivecontentoptions.md: id: 768a5761ce69 - last_write_checksum: sha1:970592cc4a0478a95aeec31825fa50e9b95645a9 - pristine_git_object: 3f2065d8cb0ec189fa0d4bc119394cefafd627cf + last_write_checksum: sha1:6a896484ac45424ad2562ddcd6f17bd5e97643e7 + pristine_git_object: f0eae79cfb424a180030a0881f4307fee923a295 docs/models/sensitiveexpression.md: id: dfd7689b2818 last_write_checksum: sha1:991db48988096e9810a89d75ee10150139997fea pristine_git_object: 9115fe32b92d4a72016dcbe12cf6699babaf9704 docs/models/sensitiveinfotype.md: id: a96873d05eba - last_write_checksum: sha1:b835310fe774f04b589b6b900a8c41d41c90d9fc - pristine_git_object: aa3f8f6eb7458c758f25de293ccc65bffa662f9d + last_write_checksum: sha1:923004ffe629074132c7d41c7ba991ba7f9397f6 + pristine_git_object: cce44d495574a77d559ba3f01d7e4514804efde1 docs/models/sensitiveinfotypelikelihoodthreshold.md: id: 3ee71d33a4d7 - last_write_checksum: sha1:1788be376ead4318d6e2a518880ddcf440b771c9 - pristine_git_object: e0f05786278d082990859b785ccdef005370a397 + last_write_checksum: sha1:e8354d546d4580055c9be0803efad0dcc6c1b7f2 + pristine_git_object: 7f825e04ad8edef5297451309815f20ef1a3ba0b + docs/models/servertoolrequest.md: + id: 319c925f5963 + last_write_checksum: sha1:ed068a6b20d2c56ee9a993e9cc0f2160892bb6f2 + pristine_git_object: 180a4193ec93c68e238c6618ecd50a4f7bd67e84 + docs/models/servertoolrequestrequesttype.md: + id: 06e29cd74eb4 + last_write_checksum: sha1:29be142660f33ad5ca2399f1da87f21c5757c503 + pristine_git_object: 7a1e67214279e73d186e24e24900a1834a96a416 + docs/models/servertoolresponse.md: + id: 533b7f497998 + last_write_checksum: sha1:991ff0a35963108d59aad7e0bad9c15b0ec05af5 + pristine_git_object: a29914c141c0dce838c27ab19deb3e13f5369807 + docs/models/servertoolresponserequesttype.md: + id: 55248e6ccbdb + last_write_checksum: sha1:7e5ddff2060ef3f7530874736499225d1cebaedc + pristine_git_object: ad53ed32a703ab9959503cdb5f28410a778a921d docs/models/sessioninfo.md: id: 4f35f0cd75e6 last_write_checksum: sha1:54947b191223cc0100d33978470ef085255e0b45 @@ -2091,36 +3137,28 @@ trackedFiles: pristine_git_object: 6159d62667813f7d8ec05cdf85675030bc715b92 docs/models/sharingoptions.md: id: eeb3a7691b62 - last_write_checksum: sha1:de77c2226c2b882703af61b277a0bc64079af451 - pristine_git_object: 6d419954fe7a7642b04727d0fd63f4d0f41851dd + last_write_checksum: sha1:6033cd71f617cfcfb3c5fec6ca82550be8238400 + pristine_git_object: fb4801ebcad8bd8a43338c01c5df23e396db2cfe docs/models/shortcut.md: id: 057d5232b4cf - last_write_checksum: sha1:8be588a646fb805921aa2217202c21c91eb10b37 - pristine_git_object: bdbadaafc2aa7af4a529f3a1eab13c7fd63389a9 + last_write_checksum: sha1:01ecaedcd0d73880971ddd0fc21eeb9cc6836eae + pristine_git_object: f43f318c280fa8afb5e404183b346aad535173e2 docs/models/shortcuterror.md: id: 026e1d881413 last_write_checksum: sha1:dd5330cedfe492120459d7002269e7cc142c3722 pristine_git_object: 64b1554570d3fcb4b0449bee384314793d54fc6e docs/models/shortcuterrorerrortype.md: id: e1bc39b68a8a - last_write_checksum: sha1:b575a3e05d41c294daf87ae995b425f59dab2dcd - pristine_git_object: a253b5366e2a7b610237a51be51015f755da88ff - docs/models/shortcutinsight.md: - id: 3846b57a7fdb - last_write_checksum: sha1:b816b1c03ae33b3b117f196acf429d93613a5f2f - pristine_git_object: 6ad321154650970fd9f9cdbed4a3324434c63a48 - docs/models/shortcutinsightsresponse.md: - id: b4383ee24550 - last_write_checksum: sha1:4c31253bca68656e8a16059d1e65013d26e9b5cd - pristine_git_object: 72d1b064ab05900c0fd90351b129b08238be4d65 + last_write_checksum: sha1:302761ab3b7d221a4ca91fa9b609e53891b945cb + pristine_git_object: 737b2781df70717480fc76172af46e45577d5310 docs/models/shortcutmutableproperties.md: id: 78d6ffe3cf2c last_write_checksum: sha1:84ae6b4acd2e66edb0f0b641949a001abeccdef1 pristine_git_object: cb702f9c15b204ea445fe804ecb5531459e97611 docs/models/shortcutspaginationmetadata.md: id: 1eb2af56dd25 - last_write_checksum: sha1:c9e2dd3b964c7288a4f26372586f8698f3938973 - pristine_git_object: 34a47a29709b8091d581461e95249e7199b7e290 + last_write_checksum: sha1:4fddc56146295a7b5f995f35418a5e0825592933 + pristine_git_object: c4b0b103616da3cf6a2b961a4de389cd63dd3ba4 docs/models/sidebysideimplementation.md: id: bd0bc41fb2c5 last_write_checksum: sha1:5f750a2b8ec3fd3fe09ab579bcb1cbc4de35f258 @@ -2139,8 +3177,8 @@ trackedFiles: pristine_git_object: 3163bd9b142a7e47cdff754d0c540909ddd26ad8 docs/models/state.md: id: e560b4e72643 - last_write_checksum: sha1:2e518b932b28e88bb7f75c61d6528742e58e5ef6 - pristine_git_object: 3e6199e2ec8d8a8acfe2c959ec5a3c814acfad85 + last_write_checksum: sha1:9d1ff41934e2a8f7258825dbcb425b41c94b4fda + pristine_git_object: 0b0039c52ef671a23e097a64f73ba80f24671789 docs/models/structuredlink.md: id: da6d9150c7ab last_write_checksum: sha1:df24ab2b09f885ebd7a4631bbeaf6a5dac93eee2 @@ -2155,8 +3193,8 @@ trackedFiles: pristine_git_object: 3291d8df76ba41b9dcc65e6fe069d0c40455662d docs/models/structuredresultsource.md: id: 065642e7abe3 - last_write_checksum: sha1:e4fa446a21e6677b04224b3c6b23da770594ea6f - pristine_git_object: fb03b801d9a4cde37aa05205f1e80f6ce44e2970 + last_write_checksum: sha1:49da95e857c000c5dc316bab657d36a060e90616 + pristine_git_object: 75ce27201b7dd633cc2f77b858e727a2c75f3f31 docs/models/structuredtext.md: id: f29072cb71a7 last_write_checksum: sha1:ea77efd10d4b272a7f95d83f31013753fc74113d @@ -2169,10 +3207,18 @@ trackedFiles: id: 6db82cf50bb8 last_write_checksum: sha1:bd645af9b26a5ef20862ed6a29c37d3fb7920928 pristine_git_object: c144284194e4b3b591e904a26efa8afb5364a884 + docs/models/successresponse.md: + id: 95d2dc3eecc0 + last_write_checksum: sha1:f88d95a24342e6acac95ffbe0de1970fd49cc0ca + pristine_git_object: 16f7627ad669257c0ff1c0f7ea18fbac7f08b479 docs/models/summarizerequest.md: id: 8fadabab743e last_write_checksum: sha1:789e5b8e38b25c10969e80222e55f1f4de54afb1 pristine_git_object: eed3bab068a828a4059c0d1b5757161f66f0ec21 + docs/models/summarizerequestrequest.md: + id: d9e372065f07 + last_write_checksum: sha1:e0450f8cef54e63e076ff9a9c14bd69bcffa9883 + pristine_git_object: e4f7d4962256aaa4cd1e3735cb7ebde6bfc5254e docs/models/summarizeresponse.md: id: ce1fcfe05e49 last_write_checksum: sha1:cb44648e6e2d3e33ac24a81351fd6bff8955a834 @@ -2199,16 +3245,16 @@ trackedFiles: pristine_git_object: 8d7abd87759341052e2d21b22eae68411f2ba00f docs/models/teamstatus.md: id: 89e4b47e021c - last_write_checksum: sha1:1c278061bf516141e7c78c88a281f20044b2dab8 - pristine_git_object: 18176a760e4880651f14f9d80c7a88e6acfd1b7d + last_write_checksum: sha1:245862eeab99d1c9cc129fadf457cd215c97b127 + pristine_git_object: 4e615f21867c3fded047054f4eea766b084d2d0a docs/models/textrange.md: id: aa2834f24faf last_write_checksum: sha1:fefcf37a7d5795a2065ef20d809d4b394c4a3f46 pristine_git_object: ca53248daee8f03db9c78a84f6a9a9322d4759c3 docs/models/textrangetype.md: id: c3f36772bf19 - last_write_checksum: sha1:23a0dd8e9afffdc59c710477f2a64230b0521b76 - pristine_git_object: 8d8927a7f8b050a4b9f2ad95b32ff0ac7cdac6dd + last_write_checksum: sha1:6bc6095a9e4042f15a55c76a7db32705ae06fbae + pristine_git_object: 1da1c5ecfb57d12722c631412af4700f1f4ead7c docs/models/thumbnail.md: id: 67df0baa2bef last_write_checksum: sha1:63f363692d3548792f187d7b0256753e51b0a8f9 @@ -2219,8 +3265,8 @@ trackedFiles: pristine_git_object: 1c9f1f7a61215cbb3c04665585c956bd7a7d0b54 docs/models/timepoint.md: id: f494f2342453 - last_write_checksum: sha1:1ca2a2001008369af2cf9cc7b9dc0aa2f0df0927 - pristine_git_object: ce76aa4f29610312035738601c00322a49297a97 + last_write_checksum: sha1:6d90a970b179a9ca4cab7d43f037366125124d7b + pristine_git_object: e187bd0dead115985ce5cb20bfe3af3026b40880 docs/models/timerange.md: id: 6866f2e2889a last_write_checksum: sha1:91e09f4232153c0f8378809d09077223568988b4 @@ -2231,32 +3277,48 @@ trackedFiles: pristine_git_object: df34cde7f877567e4a7d7a6cbbfc5416610b9d34 docs/models/timerangefiltertimeperiodtype.md: id: f0522eda6cc6 - last_write_checksum: sha1:cd3a0c854a08f6416008b8fa48366257651ad7e0 - pristine_git_object: 30a69147d2116563f81bc90a543481d9fc690fff + last_write_checksum: sha1:45e661129d7ef5a7b7d53c4c359f1d1a1933670a + pristine_git_object: 64f1bba3aefec45ea846c103a9c666f9149e868e + docs/models/tokenendpointauthmethod.md: + id: ecc9be73734a + last_write_checksum: sha1:4a3327a0c551fdc77663e6ba16ac9f801e221bbf + pristine_git_object: 94b2406d36fc7ddf7986184885dfe7acff2690df docs/models/tool.md: id: 8966139dbeed last_write_checksum: sha1:e49814f5bc36e497d901a65b3a4aa64261f8a1a6 pristine_git_object: 55b6b74e41bc39f70f0a784802401c8c8d9281be + docs/models/toolannotations.md: + id: ac541d142ff4 + last_write_checksum: sha1:e9a5464d908995e8886a54ec7276eb437d60b957 + pristine_git_object: 32d40f7666108402339f42d00b39d8d3feb50d59 + docs/models/tooldefinition.md: + id: c509cbbe5c45 + last_write_checksum: sha1:c6bffc3661f8d7e8cf4a934433f71fa9bd2b2c6e + pristine_git_object: 1470fe61a6426e25cc637a352bc41d12a1b4d311 + docs/models/tooldefinitionsresponse.md: + id: 1b1fb4e63f76 + last_write_checksum: sha1:5448ebf0a281b0c6e764f50cd524c2c5aeae90a1 + pristine_git_object: 42c552a1928d3fc06d5ff3a871b0f74c3ec0a569 docs/models/toolinfo.md: id: 9cbb352cf0f7 last_write_checksum: sha1:9bd54f773231ec20950e3603d5001e05c9930451 pristine_git_object: 469bda8fbd2cc545c4df6d9c5ee37add49cc8aea docs/models/toolmetadata.md: id: 23fa32436363 - last_write_checksum: sha1:a9ed4882e8d4eadf0d9eaf1a89a62b5aafd41a9a - pristine_git_object: 1ef5b029096d561cc42e52d6c71854a31e15d63d + last_write_checksum: sha1:84e157ec0d488775481f758db93f702bb0f4f2b6 + pristine_git_object: c40fa7ac09778761b4c6476f7480344fbe338a72 docs/models/toolmetadatatype.md: id: b1a95a1b5c7e - last_write_checksum: sha1:c2d6a5156818a07f5aef0533422b64b28bfe3728 - pristine_git_object: 8c8c0caad20408efa6763ccf91c7d03e8d6cc691 + last_write_checksum: sha1:374c9eb85ef4a69eeedb560a73b92211a55ae7b1 + pristine_git_object: 5e5d327fcb2856a5660ed76a38034ad77f27dc9d docs/models/toolparameter.md: id: 2e4b709a8f8d last_write_checksum: sha1:0dbc63f023bc40328a0049651f3b3d2d2414dcb8 pristine_git_object: 3fa3eb6f84d159104e562fc68e25b9bf28c091c4 docs/models/toolparametertype.md: id: 6e769c2bc63a - last_write_checksum: sha1:da81cc913ce83c18531a75c85c62544fd6672335 - pristine_git_object: c9304b8a58230b562d36d47493562a2dc94342e8 + last_write_checksum: sha1:9ad438ad09ca09e625564cf0da3e3f59ad309682 + pristine_git_object: c6fda07a3035c653da0d4409b7baac502ec84057 docs/models/toolscallparameter.md: id: 5cea7f92f640 last_write_checksum: sha1:712d7288e576894278440908916b239126ecce87 @@ -2269,6 +3331,14 @@ trackedFiles: id: cf3f9152cd7b last_write_checksum: sha1:97ee5f6b52e1de5814bc36a1a677146011aeb311 pristine_git_object: aa65d98a224fe146196e2e787ddae4d7293d198b + docs/models/toolserverauthstatus.md: + id: ff4ad4a9f781 + last_write_checksum: sha1:268b4abf4561e8d693d75e0d9899ffb0de4ec497 + pristine_git_object: 58b891edcdac7c4e4a808bc8b3fabc69742d34df + docs/models/toolserverauthstatusresponse.md: + id: c05f1aa2afc1 + last_write_checksum: sha1:b4c8a50486cb88ab6d4ac287768bad72bce76a20 + pristine_git_object: c45e28a5fc483b7e514b71a8ac6ce7cd74628870 docs/models/toolsets.md: id: a965e94026ac last_write_checksum: sha1:b1adf4e7412e880a27756e105778d4cff3c258ce @@ -2279,36 +3349,56 @@ trackedFiles: pristine_git_object: 4fc04799b7fd88ff49f8e91c7a9975a39a73d6a3 docs/models/tooltype.md: id: 5e2ddf7b3863 - last_write_checksum: sha1:687dbb04be7aed941efee29fcb14269d9dcc31f3 - pristine_git_object: ea9cde8de86093172d2cd91f998078ffa1eac008 + last_write_checksum: sha1:af9eeb7a0cbd9ecd79a0f8fb1eda22009a23a114 + pristine_git_object: c7f7adecc74cc4072799169c68332df2d8932c44 docs/models/ugctype.md: id: 675d62d57771 - last_write_checksum: sha1:8fcd6e88ae59b47d95bb14af60fc5c73ea855903 - pristine_git_object: 252dc1e7c76ef09a6d54fd638755bdac75106573 + last_write_checksum: sha1:169a6f517f4b9adbf679237581b4d3066b210ad5 + pristine_git_object: 6eb0e28433d7cdfac10ceb8fad23adfe5b780a86 docs/models/uiconfig.md: id: c4d3817a701c last_write_checksum: sha1:dd422e5a1bbf9af85722cd43c5437716b8bb3017 pristine_git_object: b4baf6ac9ed785704e91c7c821dd40d1f726d721 docs/models/uioptions.md: id: dc415240cfa7 - last_write_checksum: sha1:8120476ec9af4330b9afb125a0884d376798f52c - pristine_git_object: ee50fe80fdbbaa979a24f74e9947fff1819e74f7 + last_write_checksum: sha1:047eab64e277bd948c39b0ef2733ee0bfea82a0b + pristine_git_object: 658ce2f53147228ae816674a68c9ffee72ea2453 + docs/models/unauthorizeddatasourceinstance.md: + id: b0a4b91f5b89 + last_write_checksum: sha1:252dfa0628b61ac47ac34245bc7812ba4a7cb17d + pristine_git_object: 4996cf51527f18ee273b1ec1b4e6c3fead16d44c docs/models/unpin.md: id: d3b597ed91fd last_write_checksum: sha1:c3f2d39278abdd61760af541adc0c4e0ff4c8aa7 pristine_git_object: 02cafe18f701ebabf5c89888749d7af33a1021d4 + docs/models/unpinrequest.md: + id: 0c109e9c4694 + last_write_checksum: sha1:5cf4bbc04724e25828decacfc651405ab7d12394 + pristine_git_object: 4108423841d6851a21d7fb6c10ebecc0dc5cd20a docs/models/updateannouncementrequest.md: id: b8e569974360 last_write_checksum: sha1:5ca6f13eabc5b2dd0fe8e79e87bf06a3651c1975 pristine_git_object: 00da426a4573950bf4382c785bc3b97142957469 docs/models/updateannouncementrequestchannel.md: id: 0ec5a9b511a9 - last_write_checksum: sha1:5559b23293178dc3176fba2d48270c4009751b40 - pristine_git_object: aea73b618f8ba4b3bab7a9bafb990c416631d8a3 + last_write_checksum: sha1:8eb84e595e238facab67c2089e95c05546d62fc9 + pristine_git_object: efb4113fe14249cebfff870fedff388b46a1fd03 docs/models/updateannouncementrequestposttype.md: id: c4fb8de3c6b0 - last_write_checksum: sha1:3fae77b086ef0f31131463443921a9409a206550 - pristine_git_object: b5229e364ac6e41857ea55794dec5ae7759de607 + last_write_checksum: sha1:ae8959f21c8515e8a34c4d5a91c361a75a295b4e + pristine_git_object: 78d1989de091e3a248a330cbb3659fed073fe024 + docs/models/updateannouncementrequestrequest.md: + id: 1f63a3763a40 + last_write_checksum: sha1:a31407e081b2b90412c3b07162ccddbda181547a + pristine_git_object: e08d3f9c8a6cec4f310eaeddfd9cc981101e9fa8 + docs/models/updatedatasourceconfigurationrequest.md: + id: 63517c4319b5 + last_write_checksum: sha1:06e2a875f4305e6afa50168d4c91f9b68c281b37 + pristine_git_object: 938e8f1b385c9831916cc3d151aaeab65d43f933 + docs/models/updatedatasourceinstanceconfigurationrequest.md: + id: 5230dc3a739c + last_write_checksum: sha1:5a41bbe2580b258489b341371634e3e5a979b98e + pristine_git_object: 50e0f667546eb80337155afc9d9a503b9f522a41 docs/models/updatedlpconfigrequest.md: id: 3bcc0c7398d0 last_write_checksum: sha1:1a0b62f51d306beeb83f6f8ef7d68c6a85eab65d @@ -2345,22 +3435,30 @@ trackedFiles: id: f05a3e5f94df last_write_checksum: sha1:61a0f8367c4c8a2326e679f18bb8d0e0f1dde830 pristine_git_object: 4fc6d60473199f94ee0bcce00cb625cf5cd90597 + docs/models/updateshortcutrequestrequest.md: + id: b7ac13dcabf8 + last_write_checksum: sha1:581bc7338e6854cbe08e49e0ae25e09c73dffb75 + pristine_git_object: cf21e6867e54c4f136827d083f0b08bcbce289b8 docs/models/updateshortcutresponse.md: id: 9a49aeb8358d last_write_checksum: sha1:4ce1e4cddec0f3834d9d5166df84173633e5053a pristine_git_object: eb8f7dcb8b3db7f74033c2c002d4000543398055 docs/models/updatetype.md: id: 4e32b28bffa5 - last_write_checksum: sha1:926ff43031b3b748fc9e1e0694eadfa261cdc5d5 - pristine_git_object: 36f63fe0671c76ebf906773b6b71b0fb2ce4c6eb + last_write_checksum: sha1:4a1d4c8b62f84c91cbb4e5bedad5356dd2ab4421 + pristine_git_object: 9208da7a22f7a9632ff93faa326408a5c8802c04 docs/models/uploadchatfilesrequest.md: id: c52c3f25ab45 - last_write_checksum: sha1:99a112866bfd01c4ed2389b94112cd83e5fcd191 - pristine_git_object: 78d47ad60753d15ff9256e4df9bdea65641b3fc9 + last_write_checksum: sha1:990737fd51dcb9e55cc1d412405292e70db73d70 + pristine_git_object: 9c90fa8167e3c94ae226b75da0c8a89bc764c5db + docs/models/uploadchatfilesrequestfile.md: + id: a641362de46d + last_write_checksum: sha1:af15c66614b53a8d759ea47a91377fb8a5352e72 + pristine_git_object: 9559ed4404cac353326d696b65f59476123f816c docs/models/uploadchatfilesrequestrequest.md: id: da805ab42079 - last_write_checksum: sha1:520bfed042fd627411a2a9bf0f1e848f0989b788 - pristine_git_object: f849ef6bc074b832f7ef7d82b90375482aefa818 + last_write_checksum: sha1:647679df1c7159482257ad4747b13e681b3e3858 + pristine_git_object: 47ad9ca64c909e148151aa27b69ea4cf0ab0f761 docs/models/uploadchatfilesresponse.md: id: dd5d6eda7e5f last_write_checksum: sha1:f9ae1854cf52c507220b5943274969b7c887668c @@ -2371,8 +3469,8 @@ trackedFiles: pristine_git_object: c39bc4c8185092b7bff6ef2d70c4ef80aae468fb docs/models/uploadstatusenum.md: id: 71048534ec39 - last_write_checksum: sha1:1790b719ffeb5b1cd8e42369423a8aad4402c3d7 - pristine_git_object: 56e0e46058cb2124fa8abedd45d78581b338d501 + last_write_checksum: sha1:bf315ac7ce23f4359859d4e00483bb6547314418 + pristine_git_object: a46e1e00e1a8117bd32935823ffbcdb38c731376 docs/models/user.md: id: 8306f1e41187 last_write_checksum: sha1:2b7119a504a8ed2044d41c522319269c116e35f0 @@ -2383,8 +3481,8 @@ trackedFiles: pristine_git_object: 90d7bb168aeee6f8c87a0756556309390ccb5d5a docs/models/useractivityaction.md: id: 8b611b38e1ec - last_write_checksum: sha1:b1fe03d92d0f74fb32f3b04e5cc062b8d469d72e - pristine_git_object: 495baa78b82ba00f841ce18de4ca54e4bf98a92b + last_write_checksum: sha1:77b143836a0e3489fe1c0b74a78bf5a76e320b6b + pristine_git_object: 24d98acf55487579fb7a65ba7f32fe53df2d6093 docs/models/useractivityinsight.md: id: a9213240776e last_write_checksum: sha1:d21f208280f0dd69c3e83ea4b822450aad7456a5 @@ -2393,18 +3491,14 @@ trackedFiles: id: c8ca129d5d94 last_write_checksum: sha1:596d2ebfb99e4136fc44e44a1510defa64306b29 pristine_git_object: fb295e4d7b0a1aeb5bb38a9c62e184b5fe646f57 - docs/models/userinsightsresponse.md: - id: f074bc1c8337 - last_write_checksum: sha1:5b0a96c487f2e9439574be8bfcf345ec0dfb49a6 - pristine_git_object: 55e1feea55df6fa721c785fb7e9280c0540ef9b1 docs/models/userreferencedefinition.md: id: d3a3e2ecb24c last_write_checksum: sha1:e7dc7b5f647061d00077ab48e5988068a2033b86 pristine_git_object: b65d1028ad77effabb6af26688ce6ca20d0023d9 docs/models/userrole.md: id: 63aa1e945a21 - last_write_checksum: sha1:34692fa55aa59545c63a6b875432452e549ac050 - pristine_git_object: 211f4f264cba482797c0a4c08de069a55b602fc0 + last_write_checksum: sha1:ad2368f4372f98ec6bb84dfb27e8fedb06810268 + pristine_git_object: f74d5aba55621cb07d692eee7166e749c65eb428 docs/models/userrolespecification.md: id: 9b017501aae6 last_write_checksum: sha1:04a2724b1e60ed87c3f111614afc9e792d4de7f7 @@ -2443,28 +3537,36 @@ trackedFiles: pristine_git_object: a6f11ec43188eb67372972dbb50aa5252021c4e5 docs/models/verifyrequestaction.md: id: 27ae6bec5143 - last_write_checksum: sha1:98746cab184ce77a1d856a7f50a454287541abaa - pristine_git_object: 32df67b29e4daa768a598043b25bdeb9148d0c3e + last_write_checksum: sha1:0857e0d94ea445b78fcc9490e4a911bde61f570c + pristine_git_object: e711cbe91d212255db8e32d3fcb0f3260b42ca3f + docs/models/verifyrequestrequest.md: + id: 881201e9e321 + last_write_checksum: sha1:4a0de4594e64cfeb0c141ca242c3f8c26e028883 + pristine_git_object: 8f87704c8059174c4b82314e393da7476d80b6a1 docs/models/viewerinfo.md: id: ac723e0773ae - last_write_checksum: sha1:15bec9627873d5b40ef06a4936c3a231ea2e1deb - pristine_git_object: 17e7a6fa7b1fcb67972308ce7511cb929540cdb0 + last_write_checksum: sha1:85640b3e704418562baf941ab0aba03ee579dd5b + pristine_git_object: e1cf0404fdefea6db9ebf3ac9f56709ea97edf0f + docs/models/viewerinforole.md: + id: 7218f11f313e + last_write_checksum: sha1:548816cf5c2bc230ba908f425a660539547c92e6 + pristine_git_object: 89ddc588279eaa229952b8e560f84ab08c0abe0d docs/models/warningtype.md: id: 0b9df591f487 - last_write_checksum: sha1:c2eb99d70a6980d44d807c54f76266ac2ec80d6c - pristine_git_object: e40d81ceb25d2f5a551670dd23e1bb7744457028 + last_write_checksum: sha1:d13bf7d08b648f318befe58fcedb3628001d67fb + pristine_git_object: 2935dbc78cc448dca3501e7c8b7ab16a414752f1 docs/models/workflow.md: id: a782201b7327 - last_write_checksum: sha1:19c0d6bbf95e9ff133ccfdc3cad22965dab1832e - pristine_git_object: c2e0c0ba5290c731b0dc5ea0e98e70eb096847a8 + last_write_checksum: sha1:a810a1b21a8132d1dcf7080efdf81873df5b4e4f + pristine_git_object: ee0a9aa4d669d996b7232dd8ab5125c7920fb2c7 docs/models/workflowfeedbackinfo.md: id: 948da0823637 last_write_checksum: sha1:990a1ec15bbf0af52f024a36e2538ded62bc2adb pristine_git_object: a89e9d79c08bbef75e9ce179b8b926e59ffbae0d docs/models/workflowfeedbackinfosource.md: id: 76d13d36f56c - last_write_checksum: sha1:02ace7095580183c4cb5c6b162e131bb63d2af5f - pristine_git_object: de4dcede5c79c79fdeeff18c6848042d46893538 + last_write_checksum: sha1:dc0b4584f7a50f28ec32ad448e0200682982d67b + pristine_git_object: 57ce7f1c4b7bd8f2c4ee31b53037c41b077f463f docs/models/workflowresult.md: id: 8409c730a266 last_write_checksum: sha1:1ad28bc9bfeeaaf43266e4ca8926bedd231c768f @@ -2475,68 +3577,84 @@ trackedFiles: pristine_git_object: b39290561c61d2866b50a503ea54d05a57277a90 docs/models/writeactionparametertype.md: id: aff45ecb60ef - last_write_checksum: sha1:ed806d34ce1a6a7e993934bfc34408664f23574b - pristine_git_object: dbc9543a62b7d9ff14a4193fd5f949c45447f9d1 + last_write_checksum: sha1:54da6bf2d72450ae22fb8886dbec8a7ca901559a + pristine_git_object: 50cd2a8911f81a07496e325aab0ea3f2cd698d5c docs/models/writeactiontype.md: id: eb923b8f9910 - last_write_checksum: sha1:d31ffc33d5fe32c33c346b6e43a689763c5ca8ed - pristine_git_object: b90f9f6bfff40f13ae6d86aeff20b6d1764b0315 + last_write_checksum: sha1:f0960b6f6dc931d6bed43481241839a41db5a2e3 + pristine_git_object: 35c9db68f999c0d549f467e88eaff85723d7ae1e docs/models/writepermission.md: id: ae89309e8936 last_write_checksum: sha1:e1635e99db5bc7cb1f02a91cfeacbdb71beecb21 pristine_git_object: 61dd41f0319201cc105e29174ab1cc0018cecbce docs/sdks/agents/README.md: id: 5965d8232fd8 - last_write_checksum: sha1:72e9fb0dbc7f6c7a63ccf598afc5074c9bb21f07 - pristine_git_object: 4e14896782bf2725231e0cfc5cb19700facca712 + last_write_checksum: sha1:578b795ea5a1511d0f0540a8d975eb93ca34366f + pristine_git_object: c3384d9d05bd776a0500f2b128218024b22a00da docs/sdks/announcements/README.md: id: 3d2e130a217c - last_write_checksum: sha1:7f67d9f33d9dcf9e17649490fd6e905e962f0a2d - pristine_git_object: de45b87e1b93c6f6c365c67567e3aa9d6c70ad8c + last_write_checksum: sha1:ecfa655bb27dee6890656542cfafda0aa6ed1ab9 + pristine_git_object: 6ce0ff139c5632014bea9e058cd99976050e4b14 docs/sdks/answers/README.md: id: d1b7559999eb - last_write_checksum: sha1:41e95c72116be14ed7a8c24f9e4dbf6c9ed87dc6 - pristine_git_object: 49b87159a1cf4febafffc88c7f61f6066d6dac5c + last_write_checksum: sha1:9bb496400435a160bbef383369eb1c2ae233b671 + pristine_git_object: 85153af7ec594c2dbd1e4a8c2eba5ce713796265 + docs/sdks/chatsdk/README.md: + id: 83b4ee321663 + last_write_checksum: sha1:47740532523da2b553e05be325f4af9de0fcd998 + pristine_git_object: fbb19c8f85059b35437ecc3f384f449499bd38cc docs/sdks/clientactivity/README.md: id: a309613986a5 - last_write_checksum: sha1:e7c6971c7d9683ce04aacd6cb96f467376c843e9 - pristine_git_object: 13af6c74091f19f2a38f6305f79ba7650e613e1b + last_write_checksum: sha1:d9737458d891593ba2fb3372ab6e60ea728fe9a5 + pristine_git_object: 456e90e3a787c1e62f09a17d297f1cf756c94d49 + docs/sdks/clientagents/README.md: + id: 8e00e6d6b64e + last_write_checksum: sha1:43ebb3e3cf6d1b6fa0db0b18d6329f5fd5e34d39 + pristine_git_object: e54900d95d497bbd20dc36b1924093114a35cc99 docs/sdks/clientauthentication/README.md: id: 463bffe80b61 - last_write_checksum: sha1:24f8785b3ba9eae2d84617403789c00a250e2835 - pristine_git_object: b9a4856d52e9c48fb4917c0052bf86be2ad9cd0e + last_write_checksum: sha1:406e18430be9d365f6427c804b3992c880c39498 + pristine_git_object: 7d4827b24625995a7f7a98ae5e4c8342f3b91737 docs/sdks/clientchat/README.md: id: baf998e3d238 - last_write_checksum: sha1:6aac7f35074d68a975eb2a539ddde6147a4e8b8c - pristine_git_object: 334595b13f0f12b868f16ff29d91b35d84b08bc1 + last_write_checksum: sha1:c0231ad351e101ad0f74e70c3b19e474eb510183 + pristine_git_object: dae29ba811afe3aa3d17759779e0542e88048754 + docs/sdks/clientdatasources/README.md: + id: 0d629dc3ac5b + last_write_checksum: sha1:05eb42287569bb139f48e0908139d6cde0c04dad + pristine_git_object: 83d845c004a80375e53ad2e2db956728ed261611 docs/sdks/clientdocuments/README.md: id: e0c074acef4e - last_write_checksum: sha1:e895433260cef3bb97c2e16a90b64d9052a2a243 - pristine_git_object: 8ef28d902adbc0084ebccb5b5c6fcfc196a62b21 + last_write_checksum: sha1:b0b1431d3c6e9d4f3bbd7af162a0676db38179c3 + pristine_git_object: f2fd9a073a663ef8741c07c7f84fdd3da8ed372c + docs/sdks/clientsearch/README.md: + id: 0a2a3cf68489 + last_write_checksum: sha1:daec33ac43a46786e18caa77123175caf423e332 + pristine_git_object: 20293342902b2b61006984b5bf14fc6e4bedda42 docs/sdks/clientshortcuts/README.md: id: d5a9d841b61c - last_write_checksum: sha1:f363d2654e98a9db32c6ae962ca533da61a2e5ae - pristine_git_object: 159d46c1d381d69b000661ea7c755012baf66ed9 + last_write_checksum: sha1:7f0f509d6b4242e72b854162d5f052467f2aee8d + pristine_git_object: 67222f0a0b9b62f5e2941e70ee0b156c9dd2c095 docs/sdks/clientverification/README.md: id: e8d533f9d15b - last_write_checksum: sha1:02ec8b5b65384d5e23d5ef8fa6cc8f400087bfb9 - pristine_git_object: 859adc03997d7b6179b3a8e8d646c9685b40148f + last_write_checksum: sha1:7daee0f15f8ef38b45bf6209d24edf237a7ef281 + pristine_git_object: 63fa8d6cdd4a228402f5e6670422f8adf4613081 docs/sdks/collections/README.md: id: 7985e64efccf - last_write_checksum: sha1:2deab8b221107d48c16a1acee1c455935201390a - pristine_git_object: 4b05e1970dec68d99815be24cb36c6b4b66462c4 - docs/sdks/datasources/README.md: - id: 024d3ed36945 - last_write_checksum: sha1:9e06819a20a8e78cc82c7b4ea7c84e69206a4d29 - pristine_git_object: c9f66bdb622b4684f9f8d14a8ba8720b2809f463 + last_write_checksum: sha1:cac778e2d5673e128cb98ec858b9403c2f073d3c + pristine_git_object: f311071e89056a0df703b15f5ebdd17de75e9488 + docs/sdks/custommetadata/README.md: + id: b95d224c9f1d + last_write_checksum: sha1:44527b6677330e2c517e290497b8dbe037826c83 + pristine_git_object: adac51700d9683a41dffb2f5c20ee18008a9e135 docs/sdks/entities/README.md: id: a140ac5181b9 - last_write_checksum: sha1:0126d8b4ec4e574de52f44ef7205fb9efdcb1ac6 - pristine_git_object: 70e149bf62bc544a92592d0276cbe44d6d6efc98 - docs/sdks/governance/README.md: - id: 87817eb7bf48 - last_write_checksum: sha1:a7fdbdffd43d79ba890418507c27e5d7a94254a0 - pristine_git_object: 8debef429b415a7e7ffd486ab69c81a9b84dd4ca + last_write_checksum: sha1:8ed55d70b05f1eb5c6c9f5a660f7321491cf05e4 + pristine_git_object: 55516c7df24464202dc36f9c118c323d266539f3 + docs/sdks/findings/README.md: + id: 7f7356eb9e9c + last_write_checksum: sha1:31cec287b2a5668e3f3bcf54173669c8a15aa292 + pristine_git_object: df7c4ee4211fe62148fd7a243580779e3b99930d docs/sdks/indexingauthentication/README.md: id: 3d8b5fccff24 last_write_checksum: sha1:db7a93bc9a6bad6ef56063825b85e78a032df1f5 @@ -2545,34 +3663,38 @@ trackedFiles: id: 12c7fa0c818a last_write_checksum: sha1:6ef7ed841d5ee04864791ef63a43f728d931b713 pristine_git_object: 9e293dca8d87e21416cedc1dcc033cf091f9baac + docs/sdks/indexingdatasources/README.md: + id: aa113bda8cbc + last_write_checksum: sha1:ed055d911a085011480ec1186385b6623d10d7e3 + pristine_git_object: 2cd1df569670197b98cf7953d6d72ade92909e14 docs/sdks/indexingdocuments/README.md: id: 7ca38da53414 - last_write_checksum: sha1:4d55ef9f7d2e8d0c4457753721f5044943a46db4 - pristine_git_object: 20c38b1320ddeb840b17748de9ec9e5e05b618cd + last_write_checksum: sha1:8d884174307528b84439db59c969ff3b8641d70f + pristine_git_object: 87baf153c3b1712c9527bf1b92c9b5cec04e5d14 docs/sdks/indexingpermissions/README.md: id: f13d7f2a062c last_write_checksum: sha1:06ef4e2ff054e62867b2c6add2e90abcc7d0ea5e pristine_git_object: a2231eb1cba2a1753012ea00667e6a51601b888a docs/sdks/indexingshortcuts/README.md: id: 5cf29bd168af - last_write_checksum: sha1:b2363066fd13f1d883d54848bab1a910b1e7182a - pristine_git_object: 02339bf7ce713ea28210986d201dd89a18d038dc + last_write_checksum: sha1:a5e8c40acb0c02d2f37e2595aab1170492a126bf + pristine_git_object: 6d8cda7ab4483ef459462bbd02a38ff90befddd9 docs/sdks/insights/README.md: id: cc2be3db9032 - last_write_checksum: sha1:2e0310c2b4cd0577f6eb0700ecc8af5feb86f22b - pristine_git_object: deff4674a7e152eb97fadaaece9287b6a5bb617b + last_write_checksum: sha1:b728f8f8b440f3d0f096af71b3e0c1b8066e0336 + pristine_git_object: 9dbe20451c96b5bd47aaf8740af5850fa0368286 docs/sdks/messages/README.md: id: 3f1f6d38fc33 - last_write_checksum: sha1:70686fd6614b4e073277e2320f1b1257b5b11216 - pristine_git_object: 38f6cfda4cbc913e6b43b9d94d7f08d15f4f5325 + last_write_checksum: sha1:6d327bcc514b9cc83209ec389e0f034ba9b9ebe8 + pristine_git_object: 0aa193b38d7d95cd3301469f9a6ad1260a1b1b51 docs/sdks/people/README.md: id: ff7b3ee21c2b - last_write_checksum: sha1:4bb2592f2d27226672308fa1f3cb5c7ebb7691fb - pristine_git_object: 8b35d44df3afdcf9a3e3bc320a315da2651d095b + last_write_checksum: sha1:044b490ba98c61f47dd97cc055d0347449398fef + pristine_git_object: 7976d51e738b54167c1233ddc7a20585b3d89b8d docs/sdks/pins/README.md: id: e887aca9ba0f - last_write_checksum: sha1:db8a87de076ffbaaf194914e7ec92e8d0206ad66 - pristine_git_object: 31108891e1ddb9176aad85c3bbc9f867812a9e6c + last_write_checksum: sha1:c11aea840d911395a606a528575fe224c8a6b86a + pristine_git_object: 3a4952c34995f080649e326e0deca557b6b9fa9f docs/sdks/policies/README.md: id: 636269b04e57 last_write_checksum: sha1:aba178ecf4b69bad99532d1b7493d64161109cfc @@ -2583,12 +3705,20 @@ trackedFiles: pristine_git_object: 5dd26e03b79389a3e71e90f9a3ce29b7fa384dd9 docs/sdks/search/README.md: id: 5c534716244c - last_write_checksum: sha1:1d266c4806f8349deadb9db4746c08fbd4f3984c - pristine_git_object: 546e545a012e1844e5322b64f0ab9534dc4a26ad + last_write_checksum: sha1:295a5230f6ddc2ec33782b272b44e8d041a8a1e8 + pristine_git_object: 2367ff8a3d48bca392eedfc035583e9806bb5b98 + docs/sdks/skills/README.md: + id: 3a14a5c90791 + last_write_checksum: sha1:49e30084ae2c99ba6a53d5aa6e0851e63cc2dba8 + pristine_git_object: 8cdfbc33daa86ae3521cb79c6fdc38bebff866cf docs/sdks/tools/README.md: id: 044286549bac - last_write_checksum: sha1:34a5cb54ce4f6836462bea95bd5a3ce3d8080395 - pristine_git_object: 5dd8efc1387c74693e62d8af1394cbc698785a15 + last_write_checksum: sha1:9b9a8e80c1d16018bd66150ba482b83825d6cf67 + pristine_git_object: 8a3368140d93e032981bd19a4cff0ad9c35e8f1e + docs/sdks/triggers/README.md: + id: 6706220e8a9c + last_write_checksum: sha1:5ccf393241166fe268abc6b5f56c0239856a1659 + pristine_git_object: 762c1d86c47f284ad8d7e237bfe4bba0a1b96bf7 docs/sdks/visibilityoverrides/README.md: id: c7d003d6a68f last_write_checksum: sha1:738c52c3b0964cfb441542710e10c51ca226f177 @@ -2603,12 +3733,12 @@ trackedFiles: pristine_git_object: 3e38f1a929f7d6b1d6de74604aa87e3d8f010544 pylintrc: id: 7ce8b9f946e6 - last_write_checksum: sha1:b65d1bdd77e5e2691ec8d17b02fb6f3675ab9f50 - pristine_git_object: 8e34b78a71b8bb97bad6dea99d0f791beb134e5b + last_write_checksum: sha1:ee07364348af69926e8abf84cae493c8d329e78c + pristine_git_object: 79e388be87446ab6a4064b372bad0e8376d0cb5e pyproject.toml: id: 5d07e7d72637 - last_write_checksum: sha1:e74ee3184e376810b0ad328b5c651c9c3cc31cd0 - pristine_git_object: a92333900a6aabd7e86b21f5b1cc0e4c5a232b11 + last_write_checksum: sha1:c24376fbeda6b68fea9fac8500c6133e9a13f7e5 + pristine_git_object: d391b6dbed7565288eed49d23677f789e3c487eb scripts/prepare_readme.py: id: e0c5957a6035 last_write_checksum: sha1:c2c83f71dea61eb50c9e05da83b16d18b4da8794 @@ -2631,92 +3761,116 @@ trackedFiles: pristine_git_object: 198de6078dd08c0ed6216d6582a8f45c4e547404 src/glean/api_client/_hooks/types.py: id: d927c12282ca - last_write_checksum: sha1:dc3d5c4202e6b51da6d06c1f817a5eb443247900 - pristine_git_object: 58c4d70ac1797b86ff5c4237cafbc344c42d8f64 + last_write_checksum: sha1:979e2e0e80f1eb2f893bfeb3711bcc2ae0cb7948 + pristine_git_object: 55f23c1feabfedeb7e8cd5bea8b910f0ae0b77d9 src/glean/api_client/_version.py: id: 0ce22b26136b - last_write_checksum: sha1:188529d678c18f5c3fb9c35fc9cd1e0f75e4297e - pristine_git_object: 64da52a597a1b036329005760a371e97949a7eb6 + last_write_checksum: sha1:6da27c6d8ff767845d1be3bae351052f981443bc + pristine_git_object: 6a6123654415d50089aa40e1b02b93a5b42437ec src/glean/api_client/agents.py: id: b925701a9217 - last_write_checksum: sha1:56f1329fbf799ea92ed30229d4ed2404666d455d - pristine_git_object: da34d3ab8aa94604d62ffcc34d5e84f94bc6aa16 + last_write_checksum: sha1:1d4b152d9d9260d1c97d4983f521f30b5cfa1085 + pristine_git_object: 2b4bb4f6ad1fedc85b9b0a1722d1e67f5a56ac65 src/glean/api_client/announcements.py: id: 452f3d593912 - last_write_checksum: sha1:38becc9e7b9bf6765e37d01f54fcb15b4986574b - pristine_git_object: 6f26e4a2ca1f4e62c3e4aef79387692465072ffe + last_write_checksum: sha1:4b9f4ff97fb9754b5da3a36c1cc8edb02318ed7a + pristine_git_object: a17983afc087d2cac7fffdc3d1fd1110f5392c71 src/glean/api_client/answers.py: id: 184a18f8be7e - last_write_checksum: sha1:8345c4d96e84816ce14686fbd0f86e12319edade - pristine_git_object: 25342f6ac6c30295082e1efbade4a2c45fa18e3f + last_write_checksum: sha1:00537bf7bc477465a9ef695fa26bfb4600154b21 + pristine_git_object: 5824d6a30b98361faaba6ae11740c23d98b9084e src/glean/api_client/basesdk.py: id: a9eeecf7fa49 - last_write_checksum: sha1:ccda2f226cc0c1b7d991c8210afaf86920ff7fdf - pristine_git_object: 81bace393296cfb6685a01797f20b5f0bf1624a3 + last_write_checksum: sha1:fb3d2fafa4944b79b38e8ba30e92e0d42079688c + pristine_git_object: bf7b1b3b25ce6530403b0dd9f60599d236c780ce + src/glean/api_client/chat_sdk.py: + id: f2f30e13ca42 + last_write_checksum: sha1:328e511b8bdb485025a2091b999cb098c89960b3 + pristine_git_object: 8d63acc688a0876d3a64f4fe794b8aad3d17ed8a src/glean/api_client/client.py: id: c0c188098f10 - last_write_checksum: sha1:7573d8778bba72612e7afc379c05e23c1de2ed1c - pristine_git_object: 4b013bd3d9726dd28721776467185943d5181c6d + last_write_checksum: sha1:bfadba5dfdc64280fd9c7bdbf96a0651e5db429f + pristine_git_object: e64a90a54ea914e9b77d3ee61620fc5c4c55c45a src/glean/api_client/client_activity.py: id: 8227dd95d034 - last_write_checksum: sha1:98e3a81d016b0af7e98c5e310f61e4f86fb7e3aa - pristine_git_object: 51e6d222b328f5b8aa2cb43e50ec4ce7f142799a + last_write_checksum: sha1:36b369a3a1175902a326f27e6679ffaefb4979ec + pristine_git_object: 42aa2ffce8105a293a0a02353f41f083136fdc5f + src/glean/api_client/client_agents.py: + id: 61b53ccd2b3b + last_write_checksum: sha1:fe9820c6802f3a7fc2bd2e7076a2eec27f900622 + pristine_git_object: 814240564355d980d80b74995f8fb124679d033d src/glean/api_client/client_authentication.py: id: 0b237b7c1b11 - last_write_checksum: sha1:fc023e2dc967b1cfc72648f6ea1c41b04c3e6ca9 - pristine_git_object: 74cc80064eb9ae60d112a21b8f68e54ae070f56e + last_write_checksum: sha1:4217581430cfa2131471291a6ce36854af64dcb7 + pristine_git_object: 9cd4f878de6dc1a2e29fe9456824cb66fc6a3c4b src/glean/api_client/client_chat.py: id: 42cbb9b5acf3 - last_write_checksum: sha1:adfc380bc7ae8d566bbdda75b2783f35cb82fa6f - pristine_git_object: 5c0eb9c1a4009b18b1889630884e1b015708581e + last_write_checksum: sha1:7449407ee74f9c6b86f1858622805b4ebe235ac2 + pristine_git_object: 1095d5f14af723e97da53e1f1de33d8f6322ad6b + src/glean/api_client/client_datasources.py: + id: 75635d40099f + last_write_checksum: sha1:c07b4e9aecede3c49184b2929475c05d675430ea + pristine_git_object: 0cfdfc1b672dc3f63780df6d462c3595cb4af38d src/glean/api_client/client_documents.py: id: dac599de515c - last_write_checksum: sha1:a3834a1be3fc7bdd78589452a32c2930dc7c8bab - pristine_git_object: 82b6efd9a3bfbb6ad2b413ff8662c3ea601b9596 - src/glean/api_client/client_governance.py: - id: 106860f10ce0 - last_write_checksum: sha1:ebe769873505002b9f00342174c7fd2508af52b6 - pristine_git_object: 6011411d2ab08645047358a30c0a87aec61555bc + last_write_checksum: sha1:67a32fc2e80bf0ce181037aed0edbd66cc75e074 + pristine_git_object: d93ffbbf0b761e7a84e54f152f2a528f61e792a8 + src/glean/api_client/client_search.py: + id: 49ce2de81382 + last_write_checksum: sha1:34c9a481c4b806824c3929c5f35b1ba39345fa5c + pristine_git_object: 53d4e1667b1b67f6c7ba979bfb032387095cf81b src/glean/api_client/client_shortcuts.py: id: 5ef5dacbcba9 - last_write_checksum: sha1:69c5be48facf41acbeaed7271138f94386054391 - pristine_git_object: ec94b1e83e9804136e0df20ea663786c21fbbd1f + last_write_checksum: sha1:94f35f0be652742f2f6d6912df01e133ec1247e2 + pristine_git_object: 4241e6176c34be8bc4b51a7ac8719866777c2920 src/glean/api_client/client_verification.py: id: 211199afa506 - last_write_checksum: sha1:abbd5741b3992d2bc51bdc3d969315692af07f75 - pristine_git_object: 6721985892016c9712f79e332b7812994fe39e6f + last_write_checksum: sha1:c0b76b8f9f6bd3051c0396b0dc080f5ed41fd890 + pristine_git_object: 706d849954ab96c0c5e733d935165dd97299c77b src/glean/api_client/collections.py: id: df34f0fd10dd - last_write_checksum: sha1:4526e6fed6b139afbf755b49d3f1bf1c66f5bc72 - pristine_git_object: e5d36ad77277ae8849236e47c939a35a16205dd7 + last_write_checksum: sha1:0415b7acc409d8777dc5d545bf0f77a795b30f7e + pristine_git_object: ddc1b4d7efd33893ab808f43ba94381225550d95 + src/glean/api_client/custommetadata.py: + id: d5621a2ad56e + last_write_checksum: sha1:ea635be1586ca604b7a93b42573212318ee37542 + pristine_git_object: 1e933c1c94bc93d31cd2dd343984abf821287d7d src/glean/api_client/data.py: id: 21cf13413429 - last_write_checksum: sha1:f03b31e07a912efca080d9298fbb45e16590702c - pristine_git_object: 756e122c3e258805290344aa6d978b351bcbfbf5 - src/glean/api_client/datasources.py: - id: 22aad0060f38 - last_write_checksum: sha1:07f1693c31b5372fb55f178e5b9bd02b7c40c3bf - pristine_git_object: d7340a086976fc1e2d3f10acaac30895defbc504 + last_write_checksum: sha1:e0f862b1128436220cc79ad37d977ee83c92a261 + pristine_git_object: 1187e013fddc68f46bf0601237a4d8d6ba878e41 src/glean/api_client/entities.py: id: 38ebbab2f8a0 - last_write_checksum: sha1:329f07a0f970e52a86e06703f709e3cc49af7fe3 - pristine_git_object: 34b41dbdb5d68fb714457604642ea33c77e4e1c9 + last_write_checksum: sha1:bd52afae4d0b4d60e85189a4f6b999c280128329 + pristine_git_object: adc08d2771a312d55750096248b0f1a82d0432d0 src/glean/api_client/errors/__init__.py: id: 88bbd5450191 - last_write_checksum: sha1:e90feb04f3645278f89f5bad7531fd0e5581033a - pristine_git_object: bc3197fc48bebfe302ae689b0860008dc191a6fc + last_write_checksum: sha1:1efa888eacd97dfa261f42013ae3690ab348346d + pristine_git_object: 5e260b86f2b4826576ae507b3940399bad35960b + src/glean/api_client/errors/accessrequestpermissiondeniedresponse_error.py: + id: 9cefe206b2ef + last_write_checksum: sha1:20d1fd5c5ed1fc0eaf5d9d1238a3df4dea0f2d50 + pristine_git_object: 45d07ad01c29719a13c35083a5d4049e19439b93 src/glean/api_client/errors/collectionerror.py: id: c0932ce3ae9f last_write_checksum: sha1:0b5f08e5372726fe70cd721719c386d0e21d0dcc pristine_git_object: aa03a80dd8295663dfa6b12558de485cd17f3c1d + src/glean/api_client/errors/errorinforesponse.py: + id: dcd1a5746124 + last_write_checksum: sha1:1693e1f2dc88b890ee1d903d00290143879837de + pristine_git_object: 22c95a5465bbfd37ccfcd393aae7ce777da7d5d6 + src/glean/api_client/errors/errorresponse.py: + id: 908371c9ccd7 + last_write_checksum: sha1:8aebd1486c552bb87f95f8bd1f2d4cb7a8323f96 + pristine_git_object: 70cab4aacef1e755b93552a80c88cc9998f134ea src/glean/api_client/errors/gleanbaseerror.py: id: 1d7d890ee3e5 last_write_checksum: sha1:75b3f2e5195423e6a5f5be3b3268d3eaa0b83e74 pristine_git_object: b2f7acde3c293f63d1af370cf1bd4266048c3834 src/glean/api_client/errors/gleandataerror.py: id: 8bae5389c0bf - last_write_checksum: sha1:29d39ccabff4905216e98b25d1d265a71d731785 - pristine_git_object: 978b0be0e85d64351fd71c8cfe765dbd341cf5ee + last_write_checksum: sha1:d9db844614059154744d99927a7468306de298c2 + pristine_git_object: 754c85de70a38e982ea6368b9c4f922883a9a040 src/glean/api_client/errors/gleanerror.py: id: 9f1d85652f59 last_write_checksum: sha1:a7a2bc1335123c6bd8c9f945a9c653f061e14167 @@ -2725,14 +3879,30 @@ trackedFiles: id: 3983f72729a9 last_write_checksum: sha1:7f326424a7d5ae1bcd5c89a0d6b3dbda9138942f pristine_git_object: 1deab64bc43e1e65bf3c412d326a4032ce342366 + src/glean/api_client/errors/platformproblemdetail_error.py: + id: 63827377850c + last_write_checksum: sha1:20529aaf172850e5451660610daf7a7ee92e82ee + pristine_git_object: 2bd60f32a150ba565402966f54d93e2929a1f153 + src/glean/api_client/errors/platformunauthorizedagenttoolsproblem_error.py: + id: 84af4fc5b4a1 + last_write_checksum: sha1:eb59d47d062080e4928b2222164bca8c3c73c2c4 + pristine_git_object: 52de3843d7539c47afc9e6f88c9270947448799b src/glean/api_client/errors/responsevalidationerror.py: id: 70cd17f93ab7 last_write_checksum: sha1:56b679b1845b634fad48074398e87e164af0fd70 pristine_git_object: 3e029c12197bb87be06e01323afbc495968a6eaa + src/glean/api_client/errors/unauthorizedagenttoolserror.py: + id: 2cd17aac8050 + last_write_checksum: sha1:b3b9313382ff863c5201faf5e5c32ecc11f28129 + pristine_git_object: 0207c42cc0c67e421eaee7b77f95c2ad4c036028 + src/glean/api_client/findings.py: + id: 50243a1bf5e8 + last_write_checksum: sha1:7a092ae43055ff81b49ec86df36d5b8e11b7c618 + pristine_git_object: 6dce13bd4ec8a708b2c7a701344b9772b95cdb5a src/glean/api_client/governance.py: id: e30db8f06e58 - last_write_checksum: sha1:d19e7fe4afc8e15ed67758d1553b14ff8c0bd4e7 - pristine_git_object: 7f8a45f29d0a2db4b33932bdd4794129a03ff6c0 + last_write_checksum: sha1:5c9a2e9b1d899493281974b9e9c70637d224572c + pristine_git_object: 0917cce6722a17c7e45c47e2080ede37da7d37e9 src/glean/api_client/governance_documents.py: id: e5ab033181fd last_write_checksum: sha1:761beada29ea72f570c55e6377706671d3b8fcbd @@ -2743,632 +3913,800 @@ trackedFiles: pristine_git_object: 89560b566073785535643e694c112bedbd3db13d src/glean/api_client/indexing.py: id: 46c62151847b - last_write_checksum: sha1:25a4b21167ee3b2148c858a17dd377fcf032d697 - pristine_git_object: 27b07e8e6b7df92743407034732d27968a16e86b + last_write_checksum: sha1:1e946a287c665af92c1141f8ef5a1db17e8452d7 + pristine_git_object: e4cc2c5282fc5c96a34819cab6309b69b709c432 src/glean/api_client/indexing_authentication.py: id: ab6b40ef5aa5 - last_write_checksum: sha1:0df45ff755a309dbad2287463b541b1a7fc4d8ac - pristine_git_object: ae42f9ffef6271b3ce8fbeb4bc64324973936aeb + last_write_checksum: sha1:f403cee1b7ee788c80c2783c610bada57402ba02 + pristine_git_object: 98f3a192728363595124514b94bc66b85d331921 src/glean/api_client/indexing_datasource.py: id: 97727f0727c1 - last_write_checksum: sha1:1e39324e38f2abbaf1bb65dd2a5525308f9a92e1 - pristine_git_object: 7e118cd30a61f7e8eab81c9e2b5efd83c4c5a594 + last_write_checksum: sha1:7b5200116b841c618a62b749926023083b189a8e + pristine_git_object: a0e769b23bdc4eab40a84fc690922d9cc4e933a2 + src/glean/api_client/indexing_datasources.py: + id: 9520e2db8686 + last_write_checksum: sha1:0f3af675c4a30dcfc314d299af9381ed8120c7ac + pristine_git_object: cdf0f4dbd0b9b08d84f409bb788cf3bc4b614406 src/glean/api_client/indexing_documents.py: id: b5c2b64ee1fa - last_write_checksum: sha1:d480232a8f694d6596e45943ea59e03448c636d6 - pristine_git_object: 4cfffdbcf6eb129d99c11b9834ec5f5a571c62d9 + last_write_checksum: sha1:d0745f11fb8ebf34c8c8b0462887e258060e41ce + pristine_git_object: 6f044b6cfb0485acc8f0e86e9670a240d3751b63 src/glean/api_client/indexing_permissions.py: id: 86fd3f14396c - last_write_checksum: sha1:71243cea148f15642f0875da0679008c0b9f4019 - pristine_git_object: 9d15a17c5b7d2ad36576248a25f4654be57e8a41 + last_write_checksum: sha1:1562435993344c7a69c49e3beb36634486f2f2c7 + pristine_git_object: e6e349af8dca36d171e650485b92289ee3a4ea9e src/glean/api_client/indexing_shortcuts.py: id: e833440cda56 - last_write_checksum: sha1:e12d99068af22340af922a97613038e2b3b766b2 - pristine_git_object: c626afd01ac57966ee38c29c341fc36226e6530c + last_write_checksum: sha1:05a2de1bd85b224f50c4e10d6c0274db34b6ecd2 + pristine_git_object: 14298512f59dc12234f0c593783d0689755b1974 src/glean/api_client/insights.py: id: 4c5708d15234 - last_write_checksum: sha1:e98f69ae53c5c5ef4ca8dd9d4d983efa8003040f - pristine_git_object: 4fc30c5c171586aa08c3c8c6404c5f35a3ca7c45 + last_write_checksum: sha1:d6baa83e91d32add368b49abcf395408962a8d18 + pristine_git_object: e178944fb4b06aab8e7a5edcaefaf6996fa4c2ad src/glean/api_client/messages.py: id: 3751db64257b - last_write_checksum: sha1:cb1c13448ba0224ffdc84ad545607f80f46d2155 - pristine_git_object: 591c47b9df3dba7c5d470721602a14e2256b70fd + last_write_checksum: sha1:a74562295b385e4b5e4026cd95b382432db3dafb + pristine_git_object: 77016bfff6209866592fd8b42f2f3527f900992b src/glean/api_client/models/__init__.py: id: d5f6ea5efcbe - last_write_checksum: sha1:64c5fae947529561ed83b281070c86e67f373a6e - pristine_git_object: df6441d4c6eb91e781c065f43398deefa5d35d7f + last_write_checksum: sha1:0610111c87afda1789e7c24d91dfd9335293cd64 + pristine_git_object: ebcfa532d31694456dc7957d82a273eee38d074b + src/glean/api_client/models/accessrequestpermissiondeniedresponse_error.py: + id: 22a2fa0d5899 + last_write_checksum: sha1:f7dd6f906a4dd7433992f77395f9fb491fa5ac5c + pristine_git_object: 52b5d073dba6f0af5579253ca43171617c89a36c + src/glean/api_client/models/actionauthtype.py: + id: c7402f35092d + last_write_checksum: sha1:7aaa5d1c11b105d0d7265e2a83cb005aafa89645 + pristine_git_object: 6a60ecd07772abc6b7ca0ffe4759f00d8765b1d0 + src/glean/api_client/models/actionpackauthstatus.py: + id: e4555a085d90 + last_write_checksum: sha1:e9178600a5338efa0366c75b30c23d405eb05320 + pristine_git_object: c2507aaaaf94384113f6431906d7c0ce90aa9110 + src/glean/api_client/models/actionpackauthstatusresponse.py: + id: ebe853584e07 + last_write_checksum: sha1:8a47e278fb43b3b87e16b7c2550dd8d6d518c365 + pristine_git_object: 512b9f6f3489b6a7a6fd936e145beb7fead6a840 + src/glean/api_client/models/actionpreview.py: + id: 035b3a169f75 + last_write_checksum: sha1:c09e5f7d3e1edd09572070088c1071712a752bb2 + pristine_git_object: 8aada5450c888c40a6e4dd70cdc41f774e551c9a + src/glean/api_client/models/actionsummary.py: + id: 34ccdf9f1526 + last_write_checksum: sha1:cfefc6678a5612dc8d50f2b0074dc54bb88e00e0 + pristine_git_object: 399db3e4ca60dc5a26085e908c780329b872d7b4 src/glean/api_client/models/activity.py: id: 6ea27628a0fd last_write_checksum: sha1:27f676cc8276973c98176252bf06e2b4b965935e pristine_git_object: d5bc29a46f4e35c5115aaaf0fd1ba770bbd637f2 src/glean/api_client/models/activityevent.py: id: e335c36684c8 - last_write_checksum: sha1:d59b76e49c0c02e96f903bcb2457c5ec3fa6958d - pristine_git_object: 8fe3b064e553c819f9ae60b6c77d35ab6dddec12 + last_write_checksum: sha1:8ca663ccf2ef6fa2b20b1983ac1bd71799d6c594 + pristine_git_object: 4f6bc8f3f3dcc86be5395566c7363e7951ef273e src/glean/api_client/models/activityeventparams.py: id: f6c9399e1ae1 - last_write_checksum: sha1:fe1c579f925aff6ccb412b8a559c6f51471615d0 - pristine_git_object: adf31862cd3d26eb928a8fb0dff1dc3b1ffcb8ce + last_write_checksum: sha1:46cc6bcdfe08d88c42c885dec74b11fb9b0c0ab7 + pristine_git_object: b084d4af9c37f9360038acba8620f6a928c8b3e0 src/glean/api_client/models/addcollectionitemserror.py: id: 331e64597a08 - last_write_checksum: sha1:035f1ed3dd8942935e693ce9226b80c723bfc3b4 - pristine_git_object: 054b938021330e8f560fa3839b0fa0679d1d238a + last_write_checksum: sha1:d0b29d465ddf93d455e701a30f72ff9ae4d5b46e + pristine_git_object: 8f738ea36bf445ab6ccd08d111e6d64804c63bfe + src/glean/api_client/models/addcollectionitemsop.py: + id: b74e2acd56ce + last_write_checksum: sha1:9fcffec0959386f010452d2f7b086a130b6ca0fd + pristine_git_object: 2cd893c637bb8b92fe77b5a2f20c0e9a08cd4f0f src/glean/api_client/models/addcollectionitemsrequest.py: id: c17a58ee4169 - last_write_checksum: sha1:1f9ff893d0585588e4b2cd901fe4a6c9800a2930 - pristine_git_object: 1c901ea6ad007e73f57db52053fdbbfd4f76c9b9 + last_write_checksum: sha1:39bdc6f03c053fb55adcbcb2209d8e2ecc9a4988 + pristine_git_object: b440c09be3cde09466a4d70231a5552a056aec44 src/glean/api_client/models/addcollectionitemsresponse.py: id: 692242e4f85c - last_write_checksum: sha1:942696b0c698bff1a1c01b51ad75c1088c41a62b - pristine_git_object: 776d7a2a3d7677b125a39a9d820067ecde8c0440 + last_write_checksum: sha1:ffaa821257699b0ba311f1bbf832eaeb8d2a77a9 + pristine_git_object: 80294bce5a22bd4bde89abc607fdd453e1c23541 src/glean/api_client/models/additionalfielddefinition.py: id: bbb5186e656e - last_write_checksum: sha1:c1c1d3c437feefafef553fe1da929f6f3af7585f - pristine_git_object: 0b381cf2d9934f9c85156e601a6ee8f012fca758 + last_write_checksum: sha1:62f14ca1273b7c784c38c46f853862d81a298e3d + pristine_git_object: 75e99935bb393ea10f44d384ff629e6445dae2f9 + src/glean/api_client/models/addverificationreminderop.py: + id: 333d8f0e3e72 + last_write_checksum: sha1:3385d15b62664b2816a9c1671158de067dff21df + pristine_git_object: b6b9c1a245a6092084d14c4842cfde2696b8c477 + src/glean/api_client/models/adminsearchop.py: + id: 3008f93ed424 + last_write_checksum: sha1:1320bfee596c5f9ba009617da324a6b32c51883c + pristine_git_object: 6578e5e3116dec2bf0f6d7a138668e614fbfa4e9 src/glean/api_client/models/agent.py: id: f8192dae32b0 - last_write_checksum: sha1:0a512f7a66227709bde269378487ff634bbd1f75 - pristine_git_object: cca8a2418bf71d6d46a078a651b8baa74162e2cf + last_write_checksum: sha1:3ed08dc2b92d12b407c7e9f7d4ecb5308a6ed3f9 + pristine_git_object: ce46c0888ed7f928eacc8c3f6ea4d8bc03521a54 src/glean/api_client/models/agentconfig.py: id: 6bc960f78847 - last_write_checksum: sha1:a8e996df14a88632ce86d45287256dd30ab6391c - pristine_git_object: b82d01a4dc30995fb67085f388ba64389faeb79a + last_write_checksum: sha1:58b2ce5dbc8527ddd55997535408fd1100780b2b + pristine_git_object: 2a7bb3d113f4379cc94a8299f64b98ac3b52c90c src/glean/api_client/models/agentexecutionstatus.py: id: ab4f2c2f8eed - last_write_checksum: sha1:b7333d24342b551d95d36dd4ce1021db65fbfdc6 - pristine_git_object: fa71fb35d11dede8cb81dbfc83f7ec2fa2ea52d0 + last_write_checksum: sha1:d3bb768f118d7474a4fae0a7685922c6405d0f90 + pristine_git_object: b93cae26675bab7b692af5f97f005040faff7958 src/glean/api_client/models/agentrun.py: id: b808ffdaa4d9 - last_write_checksum: sha1:4e9d703fc46bddfe9a2a571412242efd59b97390 - pristine_git_object: 69d2ea1886f5113e2fdf5c05b334ea32bd9e9c5e + last_write_checksum: sha1:152bc21e131ae652cb409cb64934d30c82d538dc + pristine_git_object: 0439dfdf5688b4cadb00dbbf24a97436e55530c1 src/glean/api_client/models/agentruncreate.py: id: e987c7a76285 - last_write_checksum: sha1:c14079d3e754e811bd80b76ebd071c918f88f91c - pristine_git_object: df2aa824479c52f2f263f4b88a004a0125eccc75 + last_write_checksum: sha1:463bed5e1b5259ba5ad2521a1c022a7cc778d6b6 + pristine_git_object: 407bbcb8c3da61750d7b2de36281851dcf836595 src/glean/api_client/models/agentrunwaitresponse.py: id: 063b87daf535 - last_write_checksum: sha1:a8afa7c0621527c4b83cc59ac61b6a0973f86181 - pristine_git_object: d43eb2a685ac8eab0d604c682756a1b37eefa796 + last_write_checksum: sha1:6a4a302684707e649a91c32c45192b6d2e06650e + pristine_git_object: e09e51eb6c09dbb2493276a6e99dbfd43503f18d src/glean/api_client/models/agentschemas.py: id: db15c1840e94 - last_write_checksum: sha1:dd549b311e28222dbc206ffec1de449c15fc40cf - pristine_git_object: 9dd72561611fe675a46b592facb6ef008326ef2e + last_write_checksum: sha1:d401bc6e8c268f7181850a0eeacce99c32dfa07f + pristine_git_object: f69f31564d278cd6d06e5ed963930d0ff6889988 src/glean/api_client/models/agentsinsightsv2request.py: id: 754887d301a3 - last_write_checksum: sha1:8bc7a683da8a838fc031cb753fa055631e16cc2e - pristine_git_object: 38bccea76e0dd975f96d9870b7a0df793d9dc0af + last_write_checksum: sha1:e147acd1ee591ad2cf0f465ca1ea9d7a51f95ec4 + pristine_git_object: 13a2eea4ef93e17d15c5544eb72bf137563dd817 src/glean/api_client/models/agentsinsightsv2response.py: id: 2bb9ea2bc70e - last_write_checksum: sha1:f2089651def9ed534676bc3c28eab70062177548 - pristine_git_object: bb4cc22a45cf6eb042796cf5581a5bdedbf805b9 + last_write_checksum: sha1:611e126409f9670e1c5598a9c4e7b33b02a37ec3 + pristine_git_object: ae50b9b4074f162313733eb3893d4d1f2b7adfe2 + src/glean/api_client/models/agentstimesavedinsight.py: + id: a0f77b3b907e + last_write_checksum: sha1:ade060149f91b527306789ab799f7aa5174416f5 + pristine_git_object: 25a613c6e515b61c98f37ae345c340b725593aed src/glean/api_client/models/agentsusagebydepartmentinsight.py: id: 50317bf09cb6 - last_write_checksum: sha1:656363883d4bbfc55aede813085e090107d85181 - pristine_git_object: 206499f6a3cec20ad0838320228785d86c7da234 + last_write_checksum: sha1:6ee545d0cdd6246b7b743870984e71276ab7dfd6 + pristine_git_object: bcfd9c3071b5b45fcc0e64f404eb8e8f83e51cbe + src/glean/api_client/models/agentusecaseinsight.py: + id: 80df217107c6 + last_write_checksum: sha1:3885677fc8a2c8ca926e9186337a3265d0d99afc + pristine_git_object: 4841a4ed05f1d52a81306cec477439e716591ca8 src/glean/api_client/models/agentusersinsight.py: id: f40366a65563 - last_write_checksum: sha1:315820b44e219c3e237b2dcc6aa9fd027f1d1d22 - pristine_git_object: dee71aa626f331467b701f0727dce307d19deaa7 - src/glean/api_client/models/aiappactioncounts.py: - id: ff74ad18ffd9 - last_write_checksum: sha1:f6fbe1edcf4b35363360f6e799207dde15291648 - pristine_git_object: 5e2a0cdf67c34293c072d4936c9cfda81b5ea5c2 - src/glean/api_client/models/aiappsinsightsresponse.py: - id: 9e9efda5fb6c - last_write_checksum: sha1:9f4230c52bfba75496ab8ba7105232bbd11baddb - pristine_git_object: 538609cc2ddab73a57221276b874fc132a455391 - src/glean/api_client/models/aiinsightsresponse.py: - id: eb1ba084b23a - last_write_checksum: sha1:6f8b963a740849a334711ab2d2d9266adeceb195 - pristine_git_object: 320406b99db7f3011d95e0f64c2acee25c0a6d02 + last_write_checksum: sha1:8190b560df9c90f0728f4d752c68eea4c1834399 + pristine_git_object: 13ed679e9400d9033694cfe6c511fb29cbb6932c src/glean/api_client/models/allowlistoptions.py: id: 956eeade455c - last_write_checksum: sha1:aabccb5a61e95ec52fb70108eef34fd120868402 - pristine_git_object: f49943d26a8e71d4c0795c3d4ac8c8b811634ab9 + last_write_checksum: sha1:60e440360bb3afc80ac0c66ffb03640979ce6426 + pristine_git_object: 0059b3cd1a9aab08d223c9c720fe273155308c08 src/glean/api_client/models/announcement.py: id: acb78a04f33a - last_write_checksum: sha1:8e4b96387fd8cd4b8f31c3f90eb2f64bb503d3c2 - pristine_git_object: 750b40176819f0891b2950aecc8764b58e5844e8 + last_write_checksum: sha1:bb0db0f198ce4f96dbae9310c2e9c9e239017659 + pristine_git_object: 2e111b784cffc91aaab63987dbfe4ab285238386 src/glean/api_client/models/anonymousevent.py: id: 6b288f5ca26b - last_write_checksum: sha1:d14f5aedf9162ba9418f0dc0dca0493c239a79f2 - pristine_git_object: cfb4f58a98f6ee4d53d33f2475739eee464ef61f + last_write_checksum: sha1:d7e0c848973745ff65222d74f7c2f278bdada0cb + pristine_git_object: 96c2e34b459baaef343e118b8f4177ceb5532b99 src/glean/api_client/models/answer.py: id: f7b69d1846ba - last_write_checksum: sha1:eaa8c5f20b2b8af3b136572a5bab652b3e660ed9 - pristine_git_object: 9f610ed50031b3122db34c358ca3e29858d54766 + last_write_checksum: sha1:9a375e318477b7796c5750d27d00b21e063f9071 + pristine_git_object: c0835860c49dc37dd0356b0d0cd7a92b1318a085 src/glean/api_client/models/answercreationdata.py: id: 85c82aca1720 - last_write_checksum: sha1:c1b71386383fb44d2fbb9856f03192837badc7d9 - pristine_git_object: cb1869dc02e1e162395fa7956763c1df431beaef + last_write_checksum: sha1:9c49bd902b00bfe8f10ffb92e71f89db99e5d89e + pristine_git_object: 2e5aee70dae8c703444e5665f4518516ce3d9edb src/glean/api_client/models/answerlike.py: id: 9425fe88486f - last_write_checksum: sha1:c32dc83751621246e7ec2c1a87d7d902139bb7fd - pristine_git_object: d915c1a98e3775de5e941d1ce9c913c7d9f85ab0 + last_write_checksum: sha1:08b729b9374fda266ee3c889985d6a092b5dd6d1 + pristine_git_object: abee3d1ad9a75461cd60429454ce56948ba71a0c src/glean/api_client/models/answerlikes.py: id: ea4601f607fe - last_write_checksum: sha1:b7df93b8606e676ab9beea8012443a6e26f41ce8 - pristine_git_object: 7eaed58093ec1ef3ab713fbeefa65c69ed1d21b6 + last_write_checksum: sha1:f921c97ea220ffd86a43907f35323a17618c95a6 + pristine_git_object: cd1539f06f5fc78656fd0bcb090b0841cdcca997 src/glean/api_client/models/answerresult.py: id: 4b17918508eb - last_write_checksum: sha1:69c5d19958a04c2d98d620b466fc3b1813b80401 - pristine_git_object: 118b4fc46f1e29d2c516918f03faffa6c3d3740c + last_write_checksum: sha1:ecaf4f3a444fecccff6a4d89a4b19b2cf7f15657 + pristine_git_object: f0b6ce8ac6251aa8d88774c623b920c99ad8c47b src/glean/api_client/models/appresult.py: id: 90f48896fb46 - last_write_checksum: sha1:7c9738b24a188ff013d50a51e8b13dc6c7ac2683 - pristine_git_object: cccd14a9ad1d214ac09fed3f380577f059323af2 + last_write_checksum: sha1:3c4b307b7a965ff51f2f8b9c0d8d558563b397b7 + pristine_git_object: 2105b7fe8cacbb74eab2c4d13bee7fe20af2c855 src/glean/api_client/models/assistantinsightsresponse.py: id: ce7387f28d84 - last_write_checksum: sha1:439b7fcb6e210cbcc78b04084319f627365baf74 - pristine_git_object: 477229a7f95bde5c2fb53918bc9724b1547e6335 + last_write_checksum: sha1:9b1c7809e56d14ec0441969ed7a7f2d39aa8d1bb + pristine_git_object: 47e9bf2fa2edbe605d30359bca3dbfebda8ed27b src/glean/api_client/models/authconfig.py: id: 9e88a246ee36 - last_write_checksum: sha1:057fcfc872999b8ff696c0b35605de3f255f563d - pristine_git_object: f7fa53f893365c44cf06a3884acabda4fcf1aa02 + last_write_checksum: sha1:6092109d1ecce4dfb01dc3fa1168642d18c96da2 + pristine_git_object: f085390a589f3bd4d3c799fb65dfea1f478cd3c7 + src/glean/api_client/models/authcontext.py: + id: e5ed1f25d2ff + last_write_checksum: sha1:666912fbc5907c277024f56996d0b1e7511299f1 + pristine_git_object: a184a4fc5b4cfae17b741ec13e9d6d84d6b2965d + src/glean/api_client/models/authorizeactionpackop.py: + id: 8cdd6426922e + last_write_checksum: sha1:318527d68494b4fc6c65d9235486feb54e8bec52 + pristine_git_object: fb2d32056f6bd88145e618c8b1f985e54dd14f7d + src/glean/api_client/models/authorizeactionpackrequest.py: + id: 95453cd9cd22 + last_write_checksum: sha1:f6097ead01c6a2b1e29c91e2243e33ebf1b3acb4 + pristine_git_object: 92a3a3f571f8030636b522801446e81fcdc132f2 + src/glean/api_client/models/authorizeactionpackresponse.py: + id: e685f2ce2a71 + last_write_checksum: sha1:d75d59513a8b813a24ce41889f62390633bfba8e + pristine_git_object: 7d8a75da5e934e205215da3df9dff20a224c8a82 + src/glean/api_client/models/authorizetoolserverop.py: + id: f66e52efcb98 + last_write_checksum: sha1:0cbda711bfdabcadc72f6c9478932e2c11cdeb92 + pristine_git_object: 9bca9ad417db954a9b7e764714c8adca8ba1b3bd + src/glean/api_client/models/authorizetoolserverrequest.py: + id: f50706ba7123 + last_write_checksum: sha1:3fc91c67cf2d2d83773ec76365b9377e0e2ab3ba + pristine_git_object: fda6a51bbe417fce2caad49e9310fd9af039fc26 + src/glean/api_client/models/authorizetoolserverresponse.py: + id: 8a18ab4a529c + last_write_checksum: sha1:ff55a5920c37e6b8160079c1fffe43785d0fc271 + pristine_git_object: c5e52da0a475add87033ce04ceb86119e2a0ff5d + src/glean/api_client/models/authstatus.py: + id: 75167e3b3ad0 + last_write_checksum: sha1:4cdc7988894d6c50dbc42d0613bc22dbe6a29666 + pristine_git_object: ea66e4544c221d502b224d8c6479cc5e3adb9872 src/glean/api_client/models/authtoken.py: id: 32cff6c3af95 - last_write_checksum: sha1:25994cb48397987f33fc1b4a4ab9a889fde59bdb - pristine_git_object: e04713a6eef423324ff935b0c8febe133f0bbb6c + last_write_checksum: sha1:0ecd2db30ec7f1e00e4809b57d3300e82c90438a + pristine_git_object: 7551c7f655fadd39b5469074d0bc14b1a5bf7a01 + src/glean/api_client/models/autocompleteop.py: + id: 64525dda05ca + last_write_checksum: sha1:712542e009a8dfae0df4658487b58eac2c799238 + pristine_git_object: 97d2bf4e337f24d11d53d15916bd5c59b9942b66 src/glean/api_client/models/autocompleterequest.py: id: 23b29c9e7dcf - last_write_checksum: sha1:9c2d2889dace26e23fe4a15ab98d4ef48d88b86f - pristine_git_object: c0f830e032a453c192d0373acfae5dc27b0dd3e6 + last_write_checksum: sha1:6ec652c62c839121a1cd8cb85ce40fd512ad9005 + pristine_git_object: c57ae464c54fd02c6be6ef63489be48df01ef855 src/glean/api_client/models/autocompleteresponse.py: id: 860297c9ef84 - last_write_checksum: sha1:ed0d980de8619e4c247985b8344e1b918094eb04 - pristine_git_object: bef3b582169bd9ca90f8c87a47aed28f784c822a + last_write_checksum: sha1:7972aeb2f5bd1c56df96bbd708088add6d5f04fd + pristine_git_object: cca14924a08bed4d2ca091fcbd03ce88d602fae7 src/glean/api_client/models/autocompleteresult.py: id: e88abde43844 - last_write_checksum: sha1:4376242657081856a59e19320968e5d7f11cca39 - pristine_git_object: a087620ce0433a927ca77a3d4c5e325cd29b6d6a + last_write_checksum: sha1:6dc42389dd4578ac166fb84fc85143d71c940c52 + pristine_git_object: 7b4d801078a8deb7bd0ebc803d0e2a32372888ed src/glean/api_client/models/autocompleteresultgroup.py: id: 10a91a57b6a0 - last_write_checksum: sha1:150cc0cde5879197eae3df711b1fd09a0f6a2008 - pristine_git_object: 54aaacb44a019c04a1b7863f10f26c8a397f4ee9 + last_write_checksum: sha1:018ee99331256ffcb4b17c746bc880f0d289bdf5 + pristine_git_object: 09788d2bc5092a529eac8404546d46baf43189ec src/glean/api_client/models/badge.py: id: 81bb71933ec7 - last_write_checksum: sha1:fabc6d1bbad923e3757470677977f64801eac117 - pristine_git_object: fd75015c81ae90db7914850a32e682e8ba7739f9 + last_write_checksum: sha1:102e5350c47971627eab93b6839c66b959a1dc7c + pristine_git_object: d5675152919e152bd5aaec27e96f623722de3da0 src/glean/api_client/models/bulkindexdocumentsrequest.py: id: 5c7c3ed649f7 - last_write_checksum: sha1:23d5462f3bb1699603e57a394ba5503d137c766b - pristine_git_object: b564922ae959a57a757c65751f2f7bf8eacc32b8 + last_write_checksum: sha1:1bafb9a88332bf0f11978fa7e65b4c32e1769e45 + pristine_git_object: db14fe54b9d48ef247e86f79a05b483924f89007 src/glean/api_client/models/bulkindexemployeesrequest.py: id: 8c5302b89bc9 - last_write_checksum: sha1:286103eb90a26186ec60a0abe65bc282c06f868e - pristine_git_object: 8704cbf54b0ee4fa4bec3bef28179915536e6343 + last_write_checksum: sha1:83a188739492734fc0df01b9e00238825cb452e7 + pristine_git_object: 43014e311dab71ae1067e8de7ba83d161670d02b src/glean/api_client/models/bulkindexgroupsrequest.py: id: 5a112a41efa1 - last_write_checksum: sha1:4886d1f694888d1076c1a0cf1ffa745a529f4e4a - pristine_git_object: 4d26f984b5da769249cd9fff69735b3f584d78df + last_write_checksum: sha1:679a7ee4740eea591466c0a6e1a407614988afa8 + pristine_git_object: 99f12d8b8314866e18dc08f7332baa43ac88c2ce src/glean/api_client/models/bulkindexmembershipsrequest.py: id: dd713fbaef52 - last_write_checksum: sha1:9e14023c910d4ff541eb3c9a43be06d6d5eca537 - pristine_git_object: 681da4158da4faa700554a91e71dd180b0c9c9ce + last_write_checksum: sha1:53f4bfe3b8aebdf2c4bd03b13c4c9e24ef2507ae + pristine_git_object: 81740610a725a531e9b2f956a02457299b7cb7fe src/glean/api_client/models/bulkindexshortcutsrequest.py: id: 1bb21d370a7c - last_write_checksum: sha1:2a8c5c3b7867521bd1d79f396eb36108b997cf36 - pristine_git_object: b1d9aa0c8907405b893f4d71f5701bf13ef5fa43 + last_write_checksum: sha1:65d752cc0af955d44cd26281c6bf09ab5abdbd84 + pristine_git_object: 3aae4c0386d42c07cfe1c538e6eb3867456b33f9 src/glean/api_client/models/bulkindexteamsrequest.py: id: 663f4c5a52ca - last_write_checksum: sha1:8510199584c3a43d1602cbd93dcdc17f7acdbb53 - pristine_git_object: efff98084fd8ff19b41874d04edeea75dc86cbda + last_write_checksum: sha1:d98f49c6a7e9f6ebe150a5d31ce71b498e871925 + pristine_git_object: 0fd38bfa3271f6c478078e2d44192b1442dc2766 src/glean/api_client/models/bulkindexusersrequest.py: id: 25684d0e6ae6 - last_write_checksum: sha1:70ec61a2e01861dbb98e7b99e67baba7d5ef7a1b - pristine_git_object: 3c68490af93bdcec22f3119fe8bf911f9fe25821 + last_write_checksum: sha1:f3cf6fbaab6f08e3b63f7442001bd56e3293f6e1 + pristine_git_object: bfbff92f09bf17a68f920d2c17ed2891ce33536b src/glean/api_client/models/bulkuploadhistoryevent.py: id: e0fc56b32d01 - last_write_checksum: sha1:9b71f0125cddf52efaab603786584a1f249c114f - pristine_git_object: 650cc89d0335b7923425ea61325984454a077e65 + last_write_checksum: sha1:ede0ec6c53bb1b18e920fa8de1fffdcb19476bf4 + pristine_git_object: b1daac94dcc8d49e2d6f0782f7e9963e3c2e0ad1 src/glean/api_client/models/calendarattendee.py: id: f061e829600d - last_write_checksum: sha1:287b5dd948c85f3fd1bc17fc6fda082767aa0366 - pristine_git_object: fedb2bb80fa18f866e925a78d75d63508da2b064 + last_write_checksum: sha1:6fb65213e2d42e6e76c67862f3ca52d3af73e6c7 + pristine_git_object: bc67f962fe6fd6e4bf605922ddac1b85a14d775a src/glean/api_client/models/calendarattendees.py: id: dd3d8d18619f - last_write_checksum: sha1:7f27d6ec2e960f2de1374bc604e0f2ee2e9abf11 - pristine_git_object: 2bef5de831c627226206d133f0b18fc2111956e1 + last_write_checksum: sha1:164b0511757d1c19d472b65e3d1d513091d09781 + pristine_git_object: 40d5ce80074cfd76645b910df1f5fdc0c0014405 src/glean/api_client/models/calendarevent.py: id: 1b4d4993373e - last_write_checksum: sha1:a322171da969b200edb9d82ac5c0b1a52ff7e6a9 - pristine_git_object: ab061ff1dae2d52677854e40e6f84be3fd14d328 + last_write_checksum: sha1:26f2455c66791dccc013541a8875ca3256bd4fe4 + pristine_git_object: 212954dc43329ec417443a0af410595f10f71bbc + src/glean/api_client/models/calendarroombookingstatus.py: + id: 4bfc6652b632 + last_write_checksum: sha1:0715c8756d82af9ea8c4433597ea2dbd17f6b0d6 + pristine_git_object: 908bd7849f4b3c657e244d68b5982fe85669f1e5 src/glean/api_client/models/canonicalizingregextype.py: id: b2cd5b9de633 - last_write_checksum: sha1:56e7c78847e4ec9b9ae1039c6f9091f2ad33aa8b - pristine_git_object: f4087d719343e0b4b1e20bf429a350653f8321ff + last_write_checksum: sha1:63eb44ad7f15925c9d47460f997a2ec8271d7a88 + pristine_git_object: 33218a642269f788bc33a1c1347b2f094f02e61c src/glean/api_client/models/channelinviteinfo.py: id: 71173b2b0492 - last_write_checksum: sha1:7428c0e991e6d7dca4a8a4f3a38d36760a1faa5e - pristine_git_object: f74f629fa7d1a43b9b05b41925a96fab852914a5 + last_write_checksum: sha1:b3d6d14d7f1ff53a4fa61bbba741d30b7dabfa4f + pristine_git_object: a97c2ccda77238b4eb4198887e879a4505e94171 src/glean/api_client/models/chat.py: id: 5566eef6a9a3 - last_write_checksum: sha1:6d588979fca840226090180e47c7b24035f9c878 - pristine_git_object: 23f6f2ad772915a3c0fe9fbafdf3ce1c0ba3857c + last_write_checksum: sha1:c3c1a2655b64e0203c0ef2d11204be23a2f5ee81 + pristine_git_object: 2c89193d682e1258a9d5e072c05546b30d21c66e src/glean/api_client/models/chatfile.py: id: 58a4c45c2027 - last_write_checksum: sha1:17b528ff2e3f71d5f507c7224812b089d2f7ab05 - pristine_git_object: c852218652c34be66fb9f6bfdef6ed3547655264 + last_write_checksum: sha1:3c40dc0bc96e493132f0b40ca73a10e7bd1a53e4 + pristine_git_object: cf7a5a7ab3f014d3a292949f84dee01b17f0e36e src/glean/api_client/models/chatfilefailurereason.py: id: c60997a33e36 - last_write_checksum: sha1:025e7cc000253326a9efd004cc5c7225f775927f - pristine_git_object: fdae31905651d8b10cbe8d645e41584a3dae769c + last_write_checksum: sha1:5f85f87d571be1ed3f67e3563720fa1e02e2ef1e + pristine_git_object: cb81e15e55a5889f6503eefe8103c320df460e0a src/glean/api_client/models/chatfilemetadata.py: id: b8648f87910e - last_write_checksum: sha1:e949c84c21b4f5cc64726d68ce1bdfb56ac0771f - pristine_git_object: 48eea5988bde6b21625dcc4d147f73058e050ac2 + last_write_checksum: sha1:ba4dff8262465c5c878c12a84f82829c64cd0618 + pristine_git_object: b4cb6dc4f77e767d75cc0c4ce8402236536907c6 src/glean/api_client/models/chatfilestatus.py: id: 0e6c1c7a372c - last_write_checksum: sha1:0c3e5390a70a53dd6e3ef035fd7de1f2c1567e1b - pristine_git_object: c9a17724686676e11d3633dfb11ad4ab9c1cce45 + last_write_checksum: sha1:2e48fd50170faf7835ed7ab1a1609cd8cf69f0d6 + pristine_git_object: 8ae7bacc6529f41eb3aa272c575ca1553f481040 src/glean/api_client/models/chatmessage.py: id: d1d93cc94501 - last_write_checksum: sha1:bb5643220a1605fa7c9da1db21858b12118765bf - pristine_git_object: 5a5f17c7b400b55ee5b51053ca0726bf9c401727 + last_write_checksum: sha1:5b0d3c530b2c6c9f34e4f54c2b670b85abed7627 + pristine_git_object: 5c636cbb81c9c203f4b12047eec4d7c54fe8e6f2 src/glean/api_client/models/chatmessagecitation.py: id: dae0d568e81c - last_write_checksum: sha1:7c16a46188a8fd6d03f22788a0d8b28788112922 - pristine_git_object: 8d5683acb08a1092b4215df29ee9e218748109c8 + last_write_checksum: sha1:fbca4b264f0e01fd29cb2a82436f55cea17538fb + pristine_git_object: 15fd378692330c508ca2b7c0c8df8070e7c688a3 src/glean/api_client/models/chatmessagefragment.py: id: 86344b2c1c3d - last_write_checksum: sha1:b87f038e48e8bfb67a472e8f19f71a754d161f90 - pristine_git_object: a4d1d3e06f915bdc670313719f5c5ea1b78155d3 + last_write_checksum: sha1:0a9e72b24f34fce355b038bfe71685bc2373fd75 + pristine_git_object: a8d3093ba7d9f481f265f0a94a407bb6b0bb6c6d src/glean/api_client/models/chatmetadata.py: id: 0469e4eebd69 - last_write_checksum: sha1:31b01738d301d6933a72686ef83d5caa17c37056 - pristine_git_object: 3a2d4c6b8bc42bc0cb5670b15005bedb135b0701 + last_write_checksum: sha1:6665183f9ae42b7258ed3b47d8bedbad19c5c7f7 + pristine_git_object: 81530650eaea827b2f252692a69160808e3b2143 src/glean/api_client/models/chatmetadataresult.py: id: 560168f894a8 - last_write_checksum: sha1:4ad72b2b6480f2ae5e90ba669bc442d02b032754 - pristine_git_object: d362afe4cc8dec7d4fcc8bbf1c2414ce5dd7edb7 + last_write_checksum: sha1:199c99f194397c58aa9f615198e6289a11326cc6 + pristine_git_object: 53e0ef9787b0ea167b78aceb773fef1b9d28882b src/glean/api_client/models/chatop.py: id: 324d679cb5db - last_write_checksum: sha1:424bab7bd559481d597c5d1312dd87b28768a1d0 - pristine_git_object: 1fc60c241a7bdaab9fb7493ea365fa6435a00c1d + last_write_checksum: sha1:1c73e74f9797932c4474c5459aa28694a997c0c0 + pristine_git_object: d14b8817de80260f39a0c79a07e5cd806c02e179 src/glean/api_client/models/chatrequest.py: id: df889fc72055 - last_write_checksum: sha1:96fb729593cbb1c39142a23dba05b7ffb3d8bd2e - pristine_git_object: f73edc1be437c79d1b631033309c9bae06ba2a1a + last_write_checksum: sha1:1789889c241b2613c24b26d7966e1182210652ae + pristine_git_object: ca0d3695d12775e30120b5f1b6a69167c4ee7bb9 src/glean/api_client/models/chatresponse.py: id: 9ae42b3bd99f - last_write_checksum: sha1:84ea199d278adced684436c71524767094a042cf - pristine_git_object: 4186e76570d0aca7b23d324174227db1a73eb6cc + last_write_checksum: sha1:b45cb5611c3f2ae0d38933b9bfb1be1902a65b99 + pristine_git_object: aa3afabf04c8187ea2bd5b5e98b03acb2f1278aa src/glean/api_client/models/chatrestrictionfilters.py: id: 634c14f688c1 - last_write_checksum: sha1:3eeaad72c226cadbfee95e6e33b9a781e47cd1c2 - pristine_git_object: d32453579c76fa3e01662968b8b2d5e44e270162 + last_write_checksum: sha1:5a289b25d5437cee31503eb48db72b6bcf4c5d37 + pristine_git_object: 51db943bb852f5bbd6dad0212aa87ee03e44e830 src/glean/api_client/models/chatresult.py: id: f449bc617fb6 - last_write_checksum: sha1:09b634b6201e37a87ac5ebf4f282619bdd578618 - pristine_git_object: 686f7d693b8062cdd3385d4b1143655b53da3ad8 + last_write_checksum: sha1:b0cd2f69fd271a5993007c401324af975310ac9f + pristine_git_object: 8058b2bbcadc2eec393752b623d65d41487f40b9 + src/glean/api_client/models/chatskill.py: + id: 8782f2a7d419 + last_write_checksum: sha1:ed271302b4cfe27bb87cfaf6806b726ffcffff09 + pristine_git_object: b6327b42549d7c3f9fee1ef961057dd0c1c59384 src/glean/api_client/models/chatstreamop.py: id: efb7f50ff6d0 - last_write_checksum: sha1:7ee59dcedbccedc1bb191d181477bc37e47a5a6c - pristine_git_object: 71a17b379b1b37442036f1e1e275cdb86c4810bb + last_write_checksum: sha1:b81b04aa413db5f339f318e85bb57ff7b6883bb1 + pristine_git_object: 6ce3ce9bca35b6fee469e40b1b99a1e8a54fa733 src/glean/api_client/models/chatsuggestion.py: id: d1672ba5a41f - last_write_checksum: sha1:af5300d40538b057749a14a5ee07e6ba9d5c69f2 - pristine_git_object: 11bec4d52ebe555fbec0423ec66badc8c516ed5c + last_write_checksum: sha1:86ffbd3413a5d8ed6b631d10d8f888f617b99ac9 + pristine_git_object: 8d24fdad03c32156f977ad28ba870e31ca40ef0b src/glean/api_client/models/chatzerostatesuggestionoptions.py: id: c2b8ed9c9949 - last_write_checksum: sha1:8e84bf00ecfd182b6b8e5560d3a0afa7c6f3efd1 - pristine_git_object: 951d6c4772ba214eba19cf196cb95d66f8174d85 + last_write_checksum: sha1:2d1b44dcd4d7b15343829548833a2e257b3106e2 + pristine_git_object: 75527af1ac3173d43991fbfba5265a832d9bf41c + src/glean/api_client/models/checkdatasourceauthresponse.py: + id: 4b92648bff66 + last_write_checksum: sha1:383e77b55a1ef1d8a4014954daacecefabb594e1 + pristine_git_object: 23a67c29ffa76ce2ab3a08554fd16045f5325512 src/glean/api_client/models/checkdocumentaccessrequest.py: id: 8ae1352111ea - last_write_checksum: sha1:b231de8b2a4485721a567d75f27fb7a20826aff4 - pristine_git_object: fca1be2f8d0e147e7652179c5dfc68c911f7f5fe + last_write_checksum: sha1:5c9a03c342cc40cf9618527f4802af3d9a4a49cd + pristine_git_object: e5985de81b6d3d8de11cc0d9a0e33db4b25bbb14 src/glean/api_client/models/checkdocumentaccessresponse.py: id: 493311f0935d - last_write_checksum: sha1:49f4c40ed55c2863939df97bead0c94528bcfd6f - pristine_git_object: 9d0522eab1efcb2f47baa6cb5afbbd023e38330c + last_write_checksum: sha1:5c989b057b2e656267e785ecff45e6b9535d2b50 + pristine_git_object: 373b93887dc03fee309a02ca7efd3a674081def0 src/glean/api_client/models/clustergroup.py: id: f84bec5b82fe - last_write_checksum: sha1:8addcc4346489b73b8c0b86f81a05bd16c466435 - pristine_git_object: 7ff2c4263ab1b78629d46f2e43c77349ff8676da + last_write_checksum: sha1:be8057f49d12a16cc4effc809f1aab20f520304a + pristine_git_object: 9805a2fa98454cc3c517a168b47e1d630fafe178 src/glean/api_client/models/clustertypeenum.py: id: 0ddd45a5d0d9 - last_write_checksum: sha1:b25da71fd0a80257766af1096929f9cdf0eb52c7 - pristine_git_object: 3e83e2efa461dd1d1e8ed06277bb1dbab8e35fcd + last_write_checksum: sha1:1f63c4b39dde561b3339908f8a9a35a6bf0f7257 + pristine_git_object: d599d8ac677a258ec0041ffc08142138b410fc2b src/glean/api_client/models/code.py: id: 11b08e43c314 - last_write_checksum: sha1:0bf498af9a3cf06c747df2515a073d220b8f1f15 - pristine_git_object: c0711ce3db5042ed50d464681a33b91f63c22048 + last_write_checksum: sha1:64058aa3ea083da1c1a9da5f7d6cdfa937e06ee4 + pristine_git_object: 140e792f4f3fbb381c998a268ddb63b214c3cd64 src/glean/api_client/models/codeline.py: id: 564bd44a480c - last_write_checksum: sha1:e9fa51305719b8d9f8112723e434928392cc8c39 - pristine_git_object: 9e89c9f0bdfadd825a1f41d1eaeed4581f92a010 + last_write_checksum: sha1:f5090a720f6119223b2a62a2d9d7acff35e77c75 + pristine_git_object: 70e471cce63e5391e096b6039c539a0cabd45592 src/glean/api_client/models/collection.py: id: 1c8d82c8f456 - last_write_checksum: sha1:8e7a4d57b6231536831ae8a690454831b198d0ca - pristine_git_object: a9855a35493503ef66c695730cd3a909395f73b8 + last_write_checksum: sha1:49e18d8fb5a4231775ea06ee9aca86c9a15fe87c + pristine_git_object: 6bb4995ea8d9675ab983f6abcd6b201918819ed2 src/glean/api_client/models/collectionerror.py: id: 12c5118f6fba - last_write_checksum: sha1:37a0afcbb5c4aeacd246697a1461eac160ed766e - pristine_git_object: d1c742d363cfadb271a43cd83265858fec2de9f2 + last_write_checksum: sha1:cf7a03f5a1bd25339fdc3b1e8c5f32c8220b7f68 + pristine_git_object: 408d04c7efb648abee3688da44dd3488d75c6a9a src/glean/api_client/models/collectionitem.py: id: 42e837b333ec - last_write_checksum: sha1:a66a5c58288cd316b43cab4d87b784b7fda8cd37 - pristine_git_object: 04a8b19ea7496d7590b2a54e226b1fa156a335a5 + last_write_checksum: sha1:0ed5cb53712a6475a259437a0f8e6c3684d87303 + pristine_git_object: 0cbe6492422c383011f3f964c79271e6bfd5b90f src/glean/api_client/models/collectionitemdescriptor.py: id: 8211e595e120 - last_write_checksum: sha1:92c879abfc2bb1074b31a2673eedd6550b77955b - pristine_git_object: 8095fab4fd03941fa19b3f35ec73706bd7cc01c8 + last_write_checksum: sha1:c9d390805c830d49e727d3556d1d20ef80c13961 + pristine_git_object: 6642f487e16e9edd2360cbe8ecd1f615d648e5bf src/glean/api_client/models/collectionpinmetadata.py: id: ff51c8a765b6 last_write_checksum: sha1:7fb4960f3ab9bfdfd3d1ae54f2b8be79ce48a4d0 pristine_git_object: fcd3edbe1c44ef3b7be0ceb77f1b3c1c137359e4 src/glean/api_client/models/collectionpinnablecategories.py: id: 319efd508d76 - last_write_checksum: sha1:79f857139cca1e295e78c3edfe755568b27f9946 - pristine_git_object: d28cd94ab7648cca4fd758055ba8ac44afe407ca + last_write_checksum: sha1:db649f26c3107b6497a9ba6cfda8a495cd35d00c + pristine_git_object: 55c467b9b6e46f86e9d82f9f86273f6215eaaece src/glean/api_client/models/collectionpinnabletargets.py: id: e4d5f87c0adc - last_write_checksum: sha1:ecde48b3ce184d46bac79212fce769a26fa89c78 - pristine_git_object: eac2d5e73e21405b25198d7925132b197482ea73 + last_write_checksum: sha1:65c20e406a0bbc95cc4d69702e71bbd8cb8c8faa + pristine_git_object: c440d47330824d6e174617b25ee22c54055f6a7e src/glean/api_client/models/collectionpinnedmetadata.py: id: 20fcaec70c41 - last_write_checksum: sha1:11d3de50dd8f9b265f57f9f8a0f45203551fc610 - pristine_git_object: 736ed853f83228bb399b8f9fcdf0e7639b3028ba + last_write_checksum: sha1:be7edb98638bc572edbbe0874467e0640d50534d + pristine_git_object: 2e54e6a4236658c73900fd253a11f87476212933 src/glean/api_client/models/collectionpintarget.py: id: 74c6f50fcb8b - last_write_checksum: sha1:4b1f196c2b73f27ff5222eca93b37aacb69ce252 - pristine_git_object: 173bcf4fb46b0164a9dbf4071304f3ffb52824a7 + last_write_checksum: sha1:e5004349241e75689545b525384e5fa74a32b01d + pristine_git_object: cd3f16f2cb0e21b872739e71eb928011a2db7174 src/glean/api_client/models/commentdefinition.py: id: 7a510d4ae16a - last_write_checksum: sha1:e87c7f595d9b19ff897b18923809b46aa13cc35c - pristine_git_object: 4baafdd65dc8f89ea4bb9dc8832eeb3731e6cfe5 + last_write_checksum: sha1:f271a75d2302080cfc3bb13f75d8b96d5aee3eab + pristine_git_object: 121b9722f9045ff05a67cffb43505721dc0d36ed src/glean/api_client/models/communicationchannel.py: id: 097ef2bc37d8 - last_write_checksum: sha1:8c36e783ae2c093098418e7a70029849cfd1021c - pristine_git_object: e315cc1daee3f0fc6a900da424f69ccbdf4707be + last_write_checksum: sha1:9240b0a6b43557df8f3d2c0db453b484162271c8 + pristine_git_object: 36d9d830a9c46f6addc6a92f828ccdab8d18885f src/glean/api_client/models/company.py: id: 3fac904660c4 - last_write_checksum: sha1:0e62491f38ba2755a42e839601caccf21911e047 - pristine_git_object: 32fdb01cf8db90ea486acc85a2e344cc778a7bf8 + last_write_checksum: sha1:def2aa60670960e10e8aa5c7565337c020134113 + pristine_git_object: acd9da9d2661cef93af2800856d5e4303b511fe9 src/glean/api_client/models/conferencedata.py: id: ca82aa4c03bd - last_write_checksum: sha1:658befbb40482aed3799f2b163762b09c0909e19 - pristine_git_object: a890a8d1221fdde21ec1d2986ab59992c9b764da + last_write_checksum: sha1:26c738d7e9a9b1274272c129797492ce2e753acd + pristine_git_object: a9f6b4b4f0770875017b146f8ad1972598d387bf + src/glean/api_client/models/configurationvalue.py: + id: 78d9bb1ab4a6 + last_write_checksum: sha1:b6cfb7404ae94095d01f3b9e570e72a3ff765451 + pristine_git_object: c7458c5dff426902019aaa8953f43e746bec5bc9 src/glean/api_client/models/connectortype.py: id: 12d50eaaf8ba - last_write_checksum: sha1:5c160e04787ed30652694e8a7ec41fb8420e1250 - pristine_git_object: 8d612d979830aba61a136b5f2992176df4490dbd + last_write_checksum: sha1:adbdd18a3d0dcab7c1a8fe9abdf49ce8a60eb8d6 + pristine_git_object: 8e99dab8e7283ea64e5dc2e7f770999ddcceaef8 src/glean/api_client/models/contentdefinition.py: id: be5d817e66bb - last_write_checksum: sha1:f880cc0a22092f6e81c64e8bf3da7c7bd97bca8c - pristine_git_object: 95031ace9690a8d881210bb6b28cc4c34756ae33 - src/glean/api_client/models/contentinsightsresponse.py: - id: 1a0aad7030f9 - last_write_checksum: sha1:396e0b54089e646965458c294e410af213472666 - pristine_git_object: b96b7701835fc2d2ed9466b70bb71a32d030c378 + last_write_checksum: sha1:2b3be2d484b398dce5a73f782b205cb2080abae4 + pristine_git_object: 03e7f7a29e5b2a95e134ffd8e77b2543e332cc77 src/glean/api_client/models/contenttype.py: id: 7a299752fd19 last_write_checksum: sha1:d9e2eaed594a998478317ec74724140c7df3c184 pristine_git_object: d2bd38375fba44565353db89de9b9740754438d7 src/glean/api_client/models/countinfo.py: id: 2ff7e2d8021d - last_write_checksum: sha1:0e1eddc376375ce78a5080233fd1ecd74d11b071 - pristine_git_object: 2d24b6f285648babfebc438532563102855b5d48 + last_write_checksum: sha1:5203cc6e6506bd574e163b2b18d879c4b19c8a99 + pristine_git_object: 83d1aa3b243827c0f27678d94a209aac0a4417b3 + src/glean/api_client/models/createagentop.py: + id: bca1b44cf62a + last_write_checksum: sha1:bc9b540e390ca872fe40d0188311660a039a3881 + pristine_git_object: 4ed4192dbb6da328182b40d002360698706b872e + src/glean/api_client/models/createannouncementop.py: + id: bf2cd073d77d + last_write_checksum: sha1:a636cc5aa94d72878446b69b6ca0e3e91482de2c + pristine_git_object: f07a4fec86ab542f0ffbbb15bbff78c713d8642e src/glean/api_client/models/createannouncementrequest.py: id: 00c8eebb1b76 - last_write_checksum: sha1:a2e2cf931ede17d65d3197dcecaefa06809d3440 - pristine_git_object: ed56298666ce51cc70609450c1ed9f1c7298f07f + last_write_checksum: sha1:115327b63baea457b53722ceed3ced22ec3faa10 + pristine_git_object: b7cbb6c5f423e129af176c18fb43bc9ccf26645f + src/glean/api_client/models/createanswerop.py: + id: b638c379e2fc + last_write_checksum: sha1:58f9ce98eaced362195574b76b2e07d15a94399e + pristine_git_object: 6e7cc76309ae26967744adc2cf0f2a872e541e3c src/glean/api_client/models/createanswerrequest.py: id: 80adf1814683 last_write_checksum: sha1:b59b546cbb77e7d99b7bc76f1785105ccba73cbd pristine_git_object: 498a9a16b34713ad68db2c58eb0e014f57c57ed9 src/glean/api_client/models/createauthtokenresponse.py: id: 50eda9e002d3 - last_write_checksum: sha1:eabeb9f380d14fc36a5193f47b20f4cf8904f093 - pristine_git_object: 50e696acb359f6185f317eabb6196429785d9bef + last_write_checksum: sha1:1114f5c11e278059442538402515bcba37b8ba0a + pristine_git_object: df588893beddadf98a24dce5a51a3d411650a937 src/glean/api_client/models/createcollectionop.py: id: 3610855a3415 - last_write_checksum: sha1:fc13deb464c8efd3cd09d44b9e56cd9e06f7e869 - pristine_git_object: 2c29395d16c72c27a5de36a1e0a3879c256665d5 + last_write_checksum: sha1:d9956fdca945a40dd4c1bed5c63135a40667dfd3 + pristine_git_object: 3b504b1b99dfc8ce348317d6a57e69105625095c src/glean/api_client/models/createcollectionrequest.py: id: e39b15f0ef35 - last_write_checksum: sha1:8932371861e88fe0f1672f687836542672958fcb - pristine_git_object: 9efa352322a16d8a8904b084811be6d69eac8e6b + last_write_checksum: sha1:560db966fd538b24ebf2b840232227a5fd3f8eff + pristine_git_object: 8ed97b034d81f04d3bbbedfd3fc16220ae260e6b src/glean/api_client/models/createdlpreportrequest.py: id: ead547f06612 - last_write_checksum: sha1:63752a92f2de6eefe96c25e8f896ec07cf4bf79f - pristine_git_object: 27c1739080f89d288e7d99e1bfedef9ad188da55 + last_write_checksum: sha1:210a43e865c34e1d7924981e78f839759c1b403e + pristine_git_object: 9de15343384fb845d5fb9899558aacc78ae87285 src/glean/api_client/models/createdlpreportresponse.py: id: 12ae9b936795 - last_write_checksum: sha1:d8bb2f7615e9c998fb1228f6512d23ec23cb669e - pristine_git_object: 7c8ceccb12da7806e3e7672749ff9b687285ee29 + last_write_checksum: sha1:05354e5f55b3b4f1ca7b4d02c193923c92229316 + pristine_git_object: 2fecf5afae99509ff096862662ce44755ca93042 + src/glean/api_client/models/createshortcutop.py: + id: 3f448216dcfa + last_write_checksum: sha1:b7a09a333e2d0631b5fe661446a3bce66ef37a5e + pristine_git_object: cd9cab879f6da0da1750e3923346e2e8c1a4c216 src/glean/api_client/models/createshortcutrequest.py: id: 8f0d2ac9fc83 last_write_checksum: sha1:84dca7fa3be62505699da379896c138737e35774 pristine_git_object: 828bb6b941a861a6ea3a0d3b8aa671d00566a4d0 src/glean/api_client/models/createshortcutresponse.py: id: 65fdd9436d15 - last_write_checksum: sha1:3486f81cc682577721ab35862f25b83155a18014 - pristine_git_object: 5e0188c159d786099e824b9c495d7e1232561861 + last_write_checksum: sha1:285ec74a6e451aa0a6698d663cf501dbd0a24bd6 + pristine_git_object: 7fd2e6eb90ed6027e2647312ca3550abc0292b74 + src/glean/api_client/models/createworkflowrequest.py: + id: d084964549e1 + last_write_checksum: sha1:8575c9df02747f481fa8723f4a985c0bded046a3 + pristine_git_object: 206d00f37547917505f9c5a54aaffe7dc6aaf224 src/glean/api_client/models/currentactiveusers.py: id: 0a092cf79074 - last_write_checksum: sha1:b7848cbca881b7240a8121969c745fa7c268a93c - pristine_git_object: 786d6e902974737381040579923caccc2770317c + last_write_checksum: sha1:989717f16473a1c661194af34f9940eb00a26e01 + pristine_git_object: 1236b65335edafb09cc59136ce8049c614a1a289 src/glean/api_client/models/customdatasourceconfig.py: id: fb9b6a1441c1 - last_write_checksum: sha1:45c30f379e789d187d70e66fa55b880fc9d626bd - pristine_git_object: b094b05e44478e2f6237caabc9799214f75073b4 + last_write_checksum: sha1:61cefdb4a183e04e426c1166056354a466c6380d + pristine_git_object: 0b728d6fc411a1f8d83643b518af6e5502ee51d0 src/glean/api_client/models/customdatavalue.py: id: 956eba94ae1a - last_write_checksum: sha1:daf8b38cfdd0f2e3cc819542a65c27f4f4d344bc - pristine_git_object: 1b7993953b8d9d8d01966c925ed3a228dc043f08 + last_write_checksum: sha1:76c80857d8b125cc75d3da0da1d2f489dc9847e4 + pristine_git_object: a07d2e8123855a0e7ee36cde832f24a5b3ce0b52 src/glean/api_client/models/customentity.py: id: 3c7bd33b38bd - last_write_checksum: sha1:90807771ff905957ec721a8f3f4106ff91041372 - pristine_git_object: f9c5518bac053cb5b7a0b183e41a4fc4529ac778 + last_write_checksum: sha1:9f9097039509e6ee5cfc81dbe56e4c6353eadd72 + pristine_git_object: 6cb844ccdf3c17c7ded504794f429fa55d0a2c2c src/glean/api_client/models/customentitymetadata.py: id: dcf591f96aae - last_write_checksum: sha1:3d553eb1274063ee265024c0ae1580e3af03161b - pristine_git_object: 083656f871e2bdfb9c85a383bc2c036c89475e54 + last_write_checksum: sha1:8bbcd0ea720d666c10f9ef03c786e367cc8814f0 + pristine_git_object: 45958c271f08ae88e33e9c29f99d8a686609ff61 src/glean/api_client/models/customer.py: id: 1fef6bc6efb8 - last_write_checksum: sha1:6d99fcdaafa5d16a5aba9257a93617b128870b69 - pristine_git_object: 59b0782ab943afbdf8932ccdc5f352133e4739fc + last_write_checksum: sha1:e89622df4b4eebfcf6d695ecd8e4bb1323df2caf + pristine_git_object: 7154cf22a51ade828a632372eef3943187a2def8 src/glean/api_client/models/customermetadata.py: id: c2d608b51a0e - last_write_checksum: sha1:8c0ff059fcee79da2d6e2bfa61a816845d668cb5 - pristine_git_object: f23fdb92089b70cec1a0bab0aed2f4465c8a5fb0 + last_write_checksum: sha1:59b2c20c2f543014a1f621828edb52fed77ea5f1 + pristine_git_object: 35adf587037b0c451cb4f860d6b47641738df086 src/glean/api_client/models/customfielddata.py: id: 0fad2537d170 - last_write_checksum: sha1:ce5f54d563b0eac575f740a57b9f05b2e2da400f - pristine_git_object: 4fa86992f67e5f5cc9809cbc90080273ebfcfb3f + last_write_checksum: sha1:dd89903e9fb786b24fe2ab83ff58b332eca9d48f + pristine_git_object: 5e85ebbf44a73b4712ff906c4f1dfd51478d0d7f src/glean/api_client/models/customfieldvalue.py: id: 1dd25f7f2a34 last_write_checksum: sha1:679f5b4ca7795d50d45ff39f44787382a42aab6c pristine_git_object: e799e19282d5658f1d473ac884ec49295659085b src/glean/api_client/models/customfieldvaluehyperlink.py: id: 7e45aa49655b - last_write_checksum: sha1:b34374f508b71cc89f64dd04d942bf6e29f1ac4a - pristine_git_object: 55228126f642efa9eefffacd911d59e3662f8310 + last_write_checksum: sha1:d8b517f05e2f6b20273606618057177d7baf276a + pristine_git_object: 44931d1280ca6b9a49d158a78efdd0b5f1c2b3df src/glean/api_client/models/customfieldvalueperson.py: id: 3a124f20f649 - last_write_checksum: sha1:158973febd582095e372677321eb5d1d12486861 - pristine_git_object: 09dc8c55ac7604c7c1149ad352d6b9830324e424 + last_write_checksum: sha1:2c9d0778dbb0f85662e8a390171128f28908718b + pristine_git_object: cb264f2b46ead516ead3d08277dfbccb85fc0790 src/glean/api_client/models/customfieldvaluestr.py: id: a3569fe0d790 - last_write_checksum: sha1:3d0469fc73f4d8ebf00718528c7a7d59f2cf641a - pristine_git_object: cae51a793a3f2cc05503bbcce6489317bb10bb6b + last_write_checksum: sha1:7b22ca993cde9d540e85b97f71afcbb1b3dcb0e1 + pristine_git_object: 68f0fa1e9afe47831a8611971f0c59435631f08e + src/glean/api_client/models/custommetadatapropertydefinition.py: + id: d18ced34a833 + last_write_checksum: sha1:8d7e752f324e5dfc065eb0cf721bf797044a6d84 + pristine_git_object: 26d09515c3d1f43a197c4b499d24bb5b4a085a66 + src/glean/api_client/models/custommetadataputrequest.py: + id: 72509bb43d50 + last_write_checksum: sha1:57c69961ff4b06e1b4bfc2fb2a87e20ece451415 + pristine_git_object: aaa5152c6c59e7e88adc69ec96c793bdfee06846 + src/glean/api_client/models/custommetadataschema.py: + id: 7dd85a399c88 + last_write_checksum: sha1:3e149a06bfe3d6f6bf828b850fe5d88e28eb1f86 + pristine_git_object: 13576c2be6dbdb1bd7e93acd7f34b31dd4c0a99e src/glean/api_client/models/customproperty.py: id: 86c08b8668b7 - last_write_checksum: sha1:e9fccd9c5c1b16a54f31b47160712b8c95e8a830 - pristine_git_object: 27b23f792c2fed8b6c7fa229b724c82b42fef2d6 + last_write_checksum: sha1:291c2842c21527001b15d0178110e67609b638c2 + pristine_git_object: 74cc710e0b93d3579db37ebb3e787d5a03a6210a src/glean/api_client/models/customsensitiveexpression.py: id: 2268022ee406 - last_write_checksum: sha1:c54f3f02d7a1861af21e3996d4803f0aa85c8a76 - pristine_git_object: 8cdf8021e2eb453afbc6048a92ce71102e439f1f + last_write_checksum: sha1:14109c3cfd41d0683caccb867ef4ff7c562931b1 + pristine_git_object: 4d5258721ff717ef3e4aa8fb2f78869a1edba5c4 src/glean/api_client/models/customsensitiverule.py: id: 80d2ba78e110 - last_write_checksum: sha1:9c21c190bbb60b58d55425a4e442b1929756506e - pristine_git_object: 65ccb9c2edddee6d0b02bdaaeb5f048e2e4834e2 + last_write_checksum: sha1:ff15cdd2af8454e5232b1b86b0313a85cc3e5c1f + pristine_git_object: c767e33d6eeb7ae8b29d69789002319a9a3d8931 src/glean/api_client/models/customsensitiveruletype.py: id: fbea8b8f6a75 - last_write_checksum: sha1:1e04a196aa25a5d4ce012e17912a7f2ae38da2ed - pristine_git_object: be887e842d3374374ba8cc71504d09fc4b72b67a + last_write_checksum: sha1:ddbdf0eb4821466cfe7d82ae3116a42da0b8f8af + pristine_git_object: b273ac9824d6a273765462dfd73483c75c4c46c8 src/glean/api_client/models/datasourcebulkmembershipdefinition.py: id: 8e48908cf200 - last_write_checksum: sha1:db694b29c2d2ab829a597505bd81f44aa5560d3e - pristine_git_object: abbd2d046a35340ead53001503eb81d687574347 + last_write_checksum: sha1:43a938decc4fa2a720552f9938bccce9eb34ff5c + pristine_git_object: 31e0065c79f1e101f367ad006a220ecd77feb8c5 + src/glean/api_client/models/datasourceconfigurationresponse.py: + id: e9a385b637e9 + last_write_checksum: sha1:69a5dd2f67380cfe0fa0bc5c37eddb5796560ffc + pristine_git_object: 15b227d993619ed946b21ec7e94a9d31b968b195 + src/glean/api_client/models/datasourcecredentialstatus.py: + id: 696bcc7a5acd + last_write_checksum: sha1:9d043a2c2388221d1dc855b49073921f21679026 + pristine_git_object: aa0eff706ec10f1be7de240201bf023fbb9ef20a + src/glean/api_client/models/datasourcecredentialstatusresponse.py: + id: 074326c64a8e + last_write_checksum: sha1:a1ad12bdaf0facaabae021755bb9890ecd06c2a4 + pristine_git_object: 150f1a4855d49f84282f7227f6e5c5b4c59a0ce1 src/glean/api_client/models/datasourcegroupdefinition.py: id: f7c84882fbcf last_write_checksum: sha1:324acffd92e4e0753b7c3238f17d41f6ea66d5d3 pristine_git_object: 745d20c30b71f9c6c0a9bfa5807373bc29b79e76 + src/glean/api_client/models/datasourceinstanceconfiguration.py: + id: 706b80a1fa59 + last_write_checksum: sha1:ea2e402287097244228eff8122c2337dc1658bee + pristine_git_object: de6cd8aaa59ff7ae08ba5535508b72229ddaba56 src/glean/api_client/models/datasourcemembershipdefinition.py: id: f881717d8c97 - last_write_checksum: sha1:99aa52d162c70189eba4ed5e5ae772769b9a816b - pristine_git_object: 1926decbb2f119fb0f93435b9ba67a202b8fd41c + last_write_checksum: sha1:55c4d00beb916ccf371479414929d8dee2a77259 + pristine_git_object: 4243bb1bdfbb0129f30faa1db9a9cfb39ad707b8 src/glean/api_client/models/datasourceobjecttypedocumentcountentry.py: id: 783986f380cb - last_write_checksum: sha1:167556037b63e059edc7a2c4b461cb8748c13efb - pristine_git_object: 9f32ff17cf2e7a807b0b119c65f03cd8d7ea1a6f + last_write_checksum: sha1:87b6cdf3e69948aab8760e557f97f3a7f89db641 + pristine_git_object: 306d5d5b95306ee95732096d976082188de779fd src/glean/api_client/models/datasourceprofile.py: id: 456012f17305 - last_write_checksum: sha1:0c12828a437ceadca8f9e301508dc63635a98ec9 - pristine_git_object: 7afeb8f92f867ec43088d515d11eeddc1e2233b2 + last_write_checksum: sha1:69eb65b9262dd4540d6d17454ec8ae20c5a1c5ec + pristine_git_object: 4a54a6d305e50cd12350ed991fcba1b7e7d17197 src/glean/api_client/models/datasourceuserdefinition.py: id: 38b5026bf17b - last_write_checksum: sha1:e09bb8244426b53410b0df5ec4f7ed791ef75fce - pristine_git_object: a542e8993d13c93823661487c33cc4d9f6a644bb + last_write_checksum: sha1:e47a04958803e2eaea2bc54aa060dbf29911e969 + pristine_git_object: af754d51335f0f6779d01dd8b9da81f01cd0d32d src/glean/api_client/models/debugdatasourcestatusidentityresponsecomponent.py: id: 8d269f54a53b - last_write_checksum: sha1:fe95eb4bead3366bd196e48f3c333776a2b581e3 - pristine_git_object: ae25799eff6c5fe451e89996b6d8ce1cffc41600 + last_write_checksum: sha1:70298c03c6c7b789198a722a022cdb99c7ed91e1 + pristine_git_object: a027cc7e75d3e2813ea488dd3d22fb06e10ff922 src/glean/api_client/models/debugdatasourcestatusresponse.py: id: 706c4bfc6802 - last_write_checksum: sha1:ec0f69a63b8f363c26266503413d51f62a14e3bb - pristine_git_object: 59087c918a707918e2c081b73f7bdfcfa96c3f70 + last_write_checksum: sha1:8f8a32dc749ea17fc47279bb015a94bdc7d844df + pristine_git_object: b77b38550bef6b1680c89edfc693fb20a17c362a + src/glean/api_client/models/debugdocumentlifecyclerequest.py: + id: 1d3a8e2b78cc + last_write_checksum: sha1:389a78814a604290be72f3706fc04d2453cbe9d0 + pristine_git_object: 97b74290423c23c0708d6f16e0b22cf97e866fb3 + src/glean/api_client/models/debugdocumentlifecycleresponse.py: + id: 4f994adda409 + last_write_checksum: sha1:c0d188e5c8c6f084fe4e1bf3095904ae8c70fbad + pristine_git_object: 5e6ded73b7c3b1cf03aba21d479d2e5c35f0a914 src/glean/api_client/models/debugdocumentrequest.py: id: c27a3d5acb34 - last_write_checksum: sha1:6fa0c595de544860951dc3600765813897a5063d - pristine_git_object: 981a59874529898f2ba77d1f2bff160dcbb2b6de + last_write_checksum: sha1:994d4388bf08f2a89c7891aeb7d98c7bf67c7215 + pristine_git_object: dc89fa28dbc67a12a81647f926e4f07bccf94a01 src/glean/api_client/models/debugdocumentresponse.py: id: 402ae6981b99 - last_write_checksum: sha1:4c9cc333c844f57f08c04db93bd15831768dbbee - pristine_git_object: 68ef57df0fc3f9c6673452ec890f4aff0fd886c0 + last_write_checksum: sha1:98e1148fdf2c7e85c766977fcf1df2a6bce8d316 + pristine_git_object: 3efc18aa3f44b3b9af44d33f4c1ffe5b9a21d971 src/glean/api_client/models/debugdocumentsrequest.py: id: c10b882fec7e - last_write_checksum: sha1:835fcce91e515b5fdc489d918c859cc9f13f38e0 - pristine_git_object: d69a6bac2a3e772baf2bbc7f6f7f7cb2b340bbb2 + last_write_checksum: sha1:7905ad4bdc31857de0dcd02466e8741efd5ac14f + pristine_git_object: dbef6d989965bd13c1bf888bdc73871fb6a822e0 src/glean/api_client/models/debugdocumentsresponse.py: id: 07f2f669954d - last_write_checksum: sha1:2e6962f06253485febf59fe031b1c73564e4f8b0 - pristine_git_object: c56329bccc5c5660b9c4645b3c92d3cdaf5aa5f8 + last_write_checksum: sha1:dbbb300623addbc206e7e0f9c85b56e1fe0753bf + pristine_git_object: 54513fca6b64242dddb8c3e49cfd2bbadba05d93 src/glean/api_client/models/debugdocumentsresponseitem.py: id: f81e17f56601 - last_write_checksum: sha1:b40649d1dd8edd320757746e9916cff5c993d391 - pristine_git_object: 1aca00ae2d45e076fa163b90f2fbbf0fd5950a03 + last_write_checksum: sha1:a6baf222ca5b27b9a5b07ccc8aad4abb50ff18d6 + pristine_git_object: 63165771269c45faaa9c26dea3845e3f0697a10a src/glean/api_client/models/debuguserrequest.py: id: 59058d67caa7 last_write_checksum: sha1:9eecafdc03b80d7cea180b4612ee80170559718c pristine_git_object: be474f543698ca7f9af69caa5f85edd475c688f1 src/glean/api_client/models/debuguserresponse.py: id: cb3193f272e8 - last_write_checksum: sha1:e22c1cb081417b2fb524370b2fd86caadacd3032 - pristine_git_object: a1ec97ce8ed98df8cab123db71569f0b40b67f13 + last_write_checksum: sha1:39d67bf5c67156a043f75be97f2f9596d07e5f1d + pristine_git_object: 43e28fa95ff536027859954f4d65b33962eeca23 + src/glean/api_client/models/delete_rest_api_index_custom_metadata_schema_groupname_op.py: + id: 9f7d08808230 + last_write_checksum: sha1:a8d7e01378c2343beedb515b67bb21487b24c543 + pristine_git_object: ca9f8dc1e07be3500fd37cc7cbe100015244de9b + src/glean/api_client/models/delete_rest_api_index_document_docid_custom_metadata_groupname_op.py: + id: 363936a32051 + last_write_checksum: sha1:1706770f4b5d2a9b3eb12af99a9d1e156907df5a + pristine_git_object: 74b5dd9e6a820b6230218d335277e1f270e3bf4a src/glean/api_client/models/deleteallchatsop.py: id: 70e1ea929ffb - last_write_checksum: sha1:bf14b741c1afd62a6f19e1a44139d01096d48b9e - pristine_git_object: 34bb7be37bf051845ddb614b9fac5afec9c7e27c + last_write_checksum: sha1:369fc0d61a4954709a19de273ca7af3b5609ed79 + pristine_git_object: cac2a62d4d9eb0a34282cec2352d0aeb9ada2114 + src/glean/api_client/models/deleteannouncementop.py: + id: 85d058f754cf + last_write_checksum: sha1:751635bf690f307b3ecffed6c060ebb4241f2594 + pristine_git_object: c7b39677713491caa626b72d5ed36e690db4c46c src/glean/api_client/models/deleteannouncementrequest.py: id: 6a5ffa31b42c last_write_checksum: sha1:b4aafccf05ae6cf9e5bc4d7687cff0de113c8fb5 pristine_git_object: 7531e633f00e150f21ffef89a0fa0edf72efe34c + src/glean/api_client/models/deleteanswerop.py: + id: 02d7a4c6a024 + last_write_checksum: sha1:4598916a9173b30bbc23e3d6c046f14778eb0539 + pristine_git_object: af7a16d7d1101d14496145832afa36bc989dbc4b src/glean/api_client/models/deleteanswerrequest.py: id: 2cacee52b8bf - last_write_checksum: sha1:9a9fee965c7ebe80a0897e526dc52523ec15ab41 - pristine_git_object: 2f5efe22536b4524c7e5aba01e7fdb76130c6df2 + last_write_checksum: sha1:f320c2a6b1551d50b75345ee71387bc8017a1668 + pristine_git_object: 5c83ec3e53e6de8d808f7ac6d380233fab5e1f5c src/glean/api_client/models/deletechatfilesop.py: id: 2e2bebfda978 - last_write_checksum: sha1:985428b727fc8ee5b16fef03790eaab4d0331829 - pristine_git_object: ca1a1f9c33cbfc581f4baa258ae0997a12fb451e + last_write_checksum: sha1:587e5fc8521761966725c6ec75c53b1b1d67a13c + pristine_git_object: 01f8e688236c44261b9811a03e8ba2ada07ac61d src/glean/api_client/models/deletechatfilesrequest.py: id: 88da4a9374bb - last_write_checksum: sha1:8654b8a84b7bb990ac47afb0cb4c91ef248af440 - pristine_git_object: fc8ea162c4969caae5b518510c61431d5224a2b8 + last_write_checksum: sha1:b810a9543d244e127ae67a849c594a6383b935ca + pristine_git_object: a6c201fa600c95a7c412dada776c98a69b3649ce src/glean/api_client/models/deletechatsop.py: id: 2e921316a955 - last_write_checksum: sha1:cf47319df31f53f3453d02b374d39dcfc268a173 - pristine_git_object: a3230e019725065ed35c0e22244476941aadfd2f + last_write_checksum: sha1:f05a6eccda7fa3c44e7eb0d27cc48553433cc103 + pristine_git_object: fc7d30831ad7679ce3d5b2de1fc517a3e03ef194 src/glean/api_client/models/deletechatsrequest.py: id: 2d0590f39c7e last_write_checksum: sha1:ea5fff9198321524287177fc1169a5a4e02d486c pristine_git_object: 7a5dcced0cbfdaa71c354942f76c8b56e06973ff + src/glean/api_client/models/deletecollectionitemop.py: + id: 503debf60d9d + last_write_checksum: sha1:122d02a8d5ad93e3702a824bfd0a6ec31de8e13f + pristine_git_object: 10966910072d0ff5d174f2fc0dc21e58ef7cbb49 src/glean/api_client/models/deletecollectionitemrequest.py: id: 396cb5c63bc1 - last_write_checksum: sha1:c1269228d0fe19750c392965c8411073749856bc - pristine_git_object: d15e5f15bc0f6d7982db0f747f548ef418fe3c53 + last_write_checksum: sha1:297e26618b55c0f5602109411590c82e45532643 + pristine_git_object: ac801e8c995b381b772c42bde8b569ed2eef17d7 src/glean/api_client/models/deletecollectionitemresponse.py: id: 719afcdd05e1 - last_write_checksum: sha1:a147310b57bac75981e185d1fcaae47ae37ed560 - pristine_git_object: 05b69dfa7ff2cec9d0bf401280514de26816c319 + last_write_checksum: sha1:b7b33418baac21d35ac06e818972e16dddb70736 + pristine_git_object: eb2315c4a6bb510cdd4fbd6ee3ca9d652f201cd8 + src/glean/api_client/models/deletecollectionop.py: + id: 1fbb23e9ab7f + last_write_checksum: sha1:fc1f5117883bd14396e4ff16f4f7f1a7ce5db3b1 + pristine_git_object: 8721ecb5719d57c1c5290dd4351eb3155c2c8db9 src/glean/api_client/models/deletecollectionrequest.py: id: 92b4c2c55a81 - last_write_checksum: sha1:e1b6bcce9c7f87368abf6fc67920eff28b1bf526 - pristine_git_object: e68cd69e8c2dc2e010029788aac424adf111ccb3 + last_write_checksum: sha1:18b903cd96816d11ae375241231d9f0853039104 + pristine_git_object: cf68ff3b3686a0e659dd9d527b967ad79cf96297 src/glean/api_client/models/deletedocumentrequest.py: id: 30a742ac49fd - last_write_checksum: sha1:b68c321321fa05e548f1f659cd4dfa2fad39d3ee - pristine_git_object: 411c14119227ba9667977bb02b124081725bb260 + last_write_checksum: sha1:a052b03bfb19b35a12dc707c11d21cfadc26573b + pristine_git_object: 3fb67bc981932021022fba62d26bc33e884f66f4 src/glean/api_client/models/deleteemployeerequest.py: id: c26f5e141c8e - last_write_checksum: sha1:4547bc60ad877b4152c98618f33751c3974d3f2e - pristine_git_object: ba420af1a6e54b9db5028216af00c5e6026e2aa4 + last_write_checksum: sha1:4dd432594034522a7391b632415666b8c149843d + pristine_git_object: b413b5163e6209c0e806ba56a92ae156a76594e8 src/glean/api_client/models/deletefindingsexportop.py: id: cb139c7f368e last_write_checksum: sha1:1236b4c0a062a8cb3a931b82a1aef3dd5cb8590b pristine_git_object: f71666c1c1f089fdeb1bf101c97ace1d6c547539 src/glean/api_client/models/deletegrouprequest.py: id: 6f2a57e8b635 - last_write_checksum: sha1:8cfadfc4dea7a5777472b43afa44765f48434602 - pristine_git_object: d70f6c91e656769d5a018bf624847dca8c6b0443 + last_write_checksum: sha1:3839469d5974ae53924f5a60a5d523009670a44d + pristine_git_object: 651551f3c1131a18e4599e822f75acc5042f8630 src/glean/api_client/models/deletemembershiprequest.py: id: 506e49c72483 - last_write_checksum: sha1:3ea89dd3d6173290a78d0a42a831cd245fb91f43 - pristine_git_object: 4d7397b8b17cffffa45204947e7484be4a72e8f2 + last_write_checksum: sha1:8d41a4313c653936ce3dd23d10ac4129d5515def + pristine_git_object: 60f59a29f726fb7c70fb5494553b6c183c9d089a + src/glean/api_client/models/deleteshortcutop.py: + id: 48c5f989a2b4 + last_write_checksum: sha1:d40c8bec32037531625e20f6b377424f7c05da8d + pristine_git_object: 5862db4795db83a0e2ac2a163c63b16dbbfa6baf src/glean/api_client/models/deleteshortcutrequest.py: id: aa4724c9617e last_write_checksum: sha1:8187e9166aab564f906ca74323a65e89956244d5 @@ -3379,128 +4717,132 @@ trackedFiles: pristine_git_object: d8150a4165d730c9a1ef335adc9459a0eb625a90 src/glean/api_client/models/deleteuserrequest.py: id: f32055902e5d - last_write_checksum: sha1:5412dd08ccc31eea8d63a8961a62a1cc457438aa - pristine_git_object: 4ed4035e311f347fb22c56eeff107716fe9319a3 + last_write_checksum: sha1:db790fffc0ba0e89bf3885f0cd62670233b8da34 + pristine_git_object: a8dd578b52a5f43839472aa334e1a4078c068b80 src/glean/api_client/models/digest.py: id: 4fac29d7abb0 - last_write_checksum: sha1:ac69ee118f677002512f5ed2c2993e0efa949c91 - pristine_git_object: b7ee377c63301d60fafb2b3252e9dced03934015 + last_write_checksum: sha1:db26bf2c5feec4127083fc67bfbd2a00fd7058a5 + pristine_git_object: 432716a8c77136901868139929fe3bed31c7891f src/glean/api_client/models/digestsection.py: id: 35356f6b6146 - last_write_checksum: sha1:f5be7d0bf35372166ee9864e9873d8fc7bdaf79d - pristine_git_object: 13069a13684dac4986db176b0afd01b654630c1d + last_write_checksum: sha1:02e35c9aac817d24447212c13a7af801da601775 + pristine_git_object: 17ac661e03911171207909c19f543d07bf8317f0 src/glean/api_client/models/digestupdate.py: id: 604c4e51476b - last_write_checksum: sha1:0581e0ba93f155f0e49918809c4fa6134cfea95a - pristine_git_object: caba0d3bfb7a521bea50accfb5dd67211398effe + last_write_checksum: sha1:62e0cba5f2cd591fa2cb864650785c4b5dc9e528 + pristine_git_object: be8228945bccff16c400c65e856b3e7d57fe3be5 src/glean/api_client/models/disambiguation.py: id: 7223d97bb07c - last_write_checksum: sha1:b7490ede0956558797ea9ee2d0f92a4fc373c49d - pristine_git_object: e4bf574ed973a568359539edc476ea085b3bcc28 + last_write_checksum: sha1:e0aa82a2c527386c86012464bb62533065c4b9fa + pristine_git_object: 68a5514fdfd10149d39bd7255cf9550fde9159ef src/glean/api_client/models/displayablelistitemuiconfig.py: id: 93c058182294 - last_write_checksum: sha1:fbd86a396149618b4a3118b637130c67575ecc07 - pristine_git_object: 0a70f09ee817b6dd3a9e353e4e84e9dcc15e8c0d + last_write_checksum: sha1:dbd7adee8f83eb2473c9142738129106f599c627 + pristine_git_object: 3e0031b797c3153b0f85b2d219b553fb6f259cf1 src/glean/api_client/models/dlpconfig.py: id: 5012b123f4c3 - last_write_checksum: sha1:cd45be8594860ab48b57f7514881ce75531778f8 - pristine_git_object: 51a14b40e41acaa50c0e2555bb58866d6ed89750 + last_write_checksum: sha1:8c4fba40b04eec26d2576f2814037bf55e130918 + pristine_git_object: 5b5700539aee6854e0d421192dc28507d7b04553 src/glean/api_client/models/dlpexportfindingsrequest.py: id: 8776242985ea - last_write_checksum: sha1:dcb87e54f725bf9f428c204159f2224d1b8db586 - pristine_git_object: be0f4013b5b5f53871c7078d2454c36fcee2c76e + last_write_checksum: sha1:12a9bc4ffea8f15dbedc67be21158106a56d6ea1 + pristine_git_object: 44fedb771abc99c4cebd9768d49051f9a9d5ce30 src/glean/api_client/models/dlpfindingfilter.py: id: 6ef2e5304df7 - last_write_checksum: sha1:a2eec16c883029525b5e679c641eccf97b0e70b3 - pristine_git_object: dec1509d63af6af207c99d4d2d9691d8aa4e1d03 + last_write_checksum: sha1:5eaf62d5d1643f5e19dee2f12a161a1077ff18df + pristine_git_object: 960d3753214824587274ab585bbf1d0b1ab860d4 src/glean/api_client/models/dlpfrequency.py: id: f6f484c2d7a4 - last_write_checksum: sha1:7c48fc297e95a40d143de6e4b81b76f7db4dbfdd - pristine_git_object: a7da3a83ac16c0fd906e64fd02f84a17b03d1396 + last_write_checksum: sha1:487ce5e7651214ea7906d0d4e74371544cc436f8 + pristine_git_object: 334f894fe2a36391f40ff6831cfdc5aeecddbf21 + src/glean/api_client/models/dlpissuefilter.py: + id: a52d7e96ee6d + last_write_checksum: sha1:2ce2a3ec2fbcb99ab24c1aa18f738e77e778187b + pristine_git_object: b3f50e5fe3d2bd66a2a74d23e17b859ca88993ae + src/glean/api_client/models/dlpissuestatus.py: + id: ef4c7e63fafc + last_write_checksum: sha1:f09d760baab7e130d011d8e27adeffdf8f4ac6bf + pristine_git_object: ee6c7d53a606382c02245c5f5e7359759e18ce80 src/glean/api_client/models/dlpperson.py: id: 15e2ffa25e1a - last_write_checksum: sha1:f79b99e32a7c3e18a36481379cbecc6d784b22e8 - pristine_git_object: 5b62c1dc076d3f2336bdd4354ba10549c296326b + last_write_checksum: sha1:27cbf3c12e4030b22aa288dee8fe7e64c5bd3a5f + pristine_git_object: ee020352948bddad54865a2ec2a07319e050c97e src/glean/api_client/models/dlppersonmetadata.py: id: 3ead76577617 - last_write_checksum: sha1:2869c9d47b1b6bc706f216ceebd8dae38bc3e140 - pristine_git_object: 32fdeb76cbc417e04b75870a12298de090329ebf + last_write_checksum: sha1:cd0b82e98251470d360c1f48b82709eaabd26b2a + pristine_git_object: b3d764a642d07433b4682663b864d93d0436be6b src/glean/api_client/models/dlpreport.py: id: 6a534cac7e31 - last_write_checksum: sha1:27a0aa010be1c9912b8b815adca1d1ca4be2514a - pristine_git_object: 10c1ef8b375ba823cbd20ef4ff4be9954f109f58 + last_write_checksum: sha1:38adf9732c5e7b0893042e971b2d6527a539c62f + pristine_git_object: ff433f126aea8fc5ad18c336f9e9370175059827 src/glean/api_client/models/dlpreportstatus.py: id: 4b288f23576f - last_write_checksum: sha1:82107288d2c55c02aa96efe668fc1be326b380b7 - pristine_git_object: 89f5b52fc7c0778a18fbf466d58872733ce85743 + last_write_checksum: sha1:9e9bbab7ec6b06d3034ea61f19208cf15be3a98b + pristine_git_object: c7768ce7bd50c02cbd7a212ab45e721e81002e54 src/glean/api_client/models/dlpseverity.py: id: 3c14229136ab - last_write_checksum: sha1:bf9f62b4c6e594bf9ea24964a1d777fad8a98ece - pristine_git_object: 625f32b87d94aaaf420f5521f3961fec9df6fdf9 + last_write_checksum: sha1:fee91a502fae9ec6f13f64d7db1568e8034f72f3 + pristine_git_object: 8f08fc8b9787f2b16785a9f552cc921d6dd07499 src/glean/api_client/models/dlpsimpleresult.py: id: b50c9a50553f - last_write_checksum: sha1:8424527d5f2924602749fc42883b7fd2789e2d5e - pristine_git_object: 83e953255d0df7f94b267511f117d10bc06957c7 + last_write_checksum: sha1:fdf7ae261c37a65ec7354426e7003934325f9efb + pristine_git_object: 212efae1a21283c3d96458029e9b64886d2100ae src/glean/api_client/models/document.py: id: f62889df4380 - last_write_checksum: sha1:3d878aa8c613d965ed56da841eddd45d074d7e03 - pristine_git_object: 493d7b159a3dcafe23db141d27425bb18db8a2b4 + last_write_checksum: sha1:a73296a815249b9e3fde674ed033d8dd56a2873e + pristine_git_object: cb56b4f3f3663839963a70c0f70b427e5fbc9933 src/glean/api_client/models/documentcontent.py: id: 5002c1dea323 - last_write_checksum: sha1:b0e91eb8a70665a50bdc0aa24b313f13d1d0b319 - pristine_git_object: 2bd1025f3ecf99c6c2c356d33630cc7ad8559e95 + last_write_checksum: sha1:7e6e56c2b204cf60eaa660ed7097aecfe3e11f76 + pristine_git_object: 7a6ea0bf0feb7bb6f13045ca67007c9b73da4dd5 src/glean/api_client/models/documentdefinition.py: id: a1d959d6d441 - last_write_checksum: sha1:1c5848ee6293c3bd6576b59e9b50d37362d08b43 - pristine_git_object: f81d6f4596c961bc80f58a6afae55af4b30229d6 - src/glean/api_client/models/documentinsight.py: - id: 685c828b4895 - last_write_checksum: sha1:fcd79ad09b86c86914d45bcf710676948eaac0b4 - pristine_git_object: ae5980b5654aaaba7b619b9ae9d6d9579c0192a7 + last_write_checksum: sha1:5a0df41c3a76aca7fc7683e9ad65ea7ccb1f73d6 + pristine_git_object: 1fa367c9949a6866dfdc4af3e9bbfbb88e308338 src/glean/api_client/models/documentinteractions.py: id: 1cbd7f0ca8c2 - last_write_checksum: sha1:cecb1e6fdad496d9a266d0d6d7be8ce51c1d9340 - pristine_git_object: 159a5dfa03fcaa581b52c3be2d822eb7b0102122 + last_write_checksum: sha1:1c43b48bba2be30ba492015b1ae3cbdd1ecba059 + pristine_git_object: 84214adbac5b07697d99ab6f0d84fde8acd6321a src/glean/api_client/models/documentinteractionsdefinition.py: id: 08e2b97a68ab - last_write_checksum: sha1:34aafc0245f74c3fd4f1468d5778d2bb5ad551d2 - pristine_git_object: 3b020730af64fcb1c7991c33c60bf2bd2a7f7cc0 + last_write_checksum: sha1:6ab5f0352e6cfcd6a1a6cb5f6a77998c7ba387e6 + pristine_git_object: 2dd25c44d762268701ebc58dff904235d05ee7a0 src/glean/api_client/models/documentmetadata.py: id: 203606bfdd41 - last_write_checksum: sha1:c9d7ff04daa2bf8abd328226a8cbe4e408f6dba0 - pristine_git_object: 66aed0ca31974a656e04f1809aacb21728d66050 + last_write_checksum: sha1:111cf76a7d9efad936ebcf85471929b2fa30c915 + pristine_git_object: 4f50069b606ace363a0d81c6a5342fb902efdf71 src/glean/api_client/models/documentorerror_union.py: id: 1851ad2d77e1 last_write_checksum: sha1:edd4bee869906b3874fd1640bd3657e9aef66292 pristine_git_object: 36b3f551c2ebc4b6cbf5347a424519798ced4cfb src/glean/api_client/models/documentpermissionsdefinition.py: id: 7a87c280a424 - last_write_checksum: sha1:a7d5f30d9701b273b19efd15a24b08326ba76fda - pristine_git_object: fca5d62c99ce4b1df04e9164fc65b844dc85a339 + last_write_checksum: sha1:b2793a322c6b31579a2f02366338392515238a2c + pristine_git_object: fd87de54c048ebef28c2b9679aa08b8b0b131937 src/glean/api_client/models/documentsection.py: id: 860858e3da34 - last_write_checksum: sha1:eb831c3934340cbab388c7d38b00142b558c5973 - pristine_git_object: 2a00129600c74f79a112dcb48c21b699c0cbc696 + last_write_checksum: sha1:d66f0bb43d34d05166ac4e1cf24c5999951dfb96 + pristine_git_object: 6825bbb05b8da91f0aca07bf2520d9862afff2c9 src/glean/api_client/models/documentspec_union.py: id: 9b7e01401389 - last_write_checksum: sha1:707c8ac4681f411a8190d888db6025499a6c3b5f - pristine_git_object: 0e8c5d620d0ba941cead28419e7c61f14a224733 + last_write_checksum: sha1:f5c1033883dda0be3207cf6d09cd72f5ed02b2a1 + pristine_git_object: 82e3e53590ac4cb4047a89dc85e04656bc5280ed src/glean/api_client/models/documentstatusresponse.py: id: 03c5597a3ee0 - last_write_checksum: sha1:b70214c043cbb1047d97f6782fa7e69dfb5b84bb - pristine_git_object: 4b29a000fab76463af6ff61be754b38a34bd14a5 + last_write_checksum: sha1:6fa0c35f03862802e908f0ff16c1b93d09b42286 + pristine_git_object: 41cc9ad2da11dd704f76ae2539a7215adb6f54c5 src/glean/api_client/models/documentvisibility.py: id: de44fa8f48da - last_write_checksum: sha1:6f4e5a80c9e554fc9e19e881f5bca1e096db10f3 - pristine_git_object: fb5813a945e04d9c777afb2a874a7b4310772905 + last_write_checksum: sha1:985c869e95a61595826842cb225d63dc3d8c4d29 + pristine_git_object: 59bfc0522f5c880450dca0184b601a0c4c6617f2 src/glean/api_client/models/documentvisibilityoverride.py: id: d5c36989b68a - last_write_checksum: sha1:979a235598f04d6024e23e0037b51a0ea5d7212d - pristine_git_object: 29600f75d7d258608e342904eaafd6569141680f + last_write_checksum: sha1:807f300f1b55dcaa2792e36be0769b81ec3b8e4d + pristine_git_object: e5d6ad033ea29dd1347c5d944ceef5c3ac35e8a8 src/glean/api_client/models/documentvisibilityupdateresult.py: id: 499e53f55b75 - last_write_checksum: sha1:6bf096512f9387d8c2c6e9d3e9545b33d418a440 - pristine_git_object: d3332d9583ac9a85f58ee4020e43f188940673e7 + last_write_checksum: sha1:201bec37f9d6deb5c2184787c189f9b69caa306d + pristine_git_object: c48a36b1b1287dbea4c6311e849a38528c5c419a src/glean/api_client/models/downloadfindingsexportop.py: id: 2694d3597292 last_write_checksum: sha1:272810d856c01cc1fe68b55286be0092fd5ddc06 @@ -3513,614 +4855,1290 @@ trackedFiles: id: d5bf581bbb4d last_write_checksum: sha1:89e5828b1007a5fe600c74a50af1228298573a4d pristine_git_object: d6059a8fa23d3cc41298d1cfb331d266d793b53c + src/glean/api_client/models/editagentop.py: + id: d7e933668f76 + last_write_checksum: sha1:b578b8b9652f10f3f6f042436b512a7b2f255f24 + pristine_git_object: 5d66503e891f7a708186245ca0d5b901890ca013 + src/glean/api_client/models/editanswerop.py: + id: 7236676e3bd0 + last_write_checksum: sha1:a8358d6fdf546ffc6e39b043feb9d5cb37af5106 + pristine_git_object: 8aef450a39d487fb49ec3cb7ae7d75d6b995e584 src/glean/api_client/models/editanswerrequest.py: id: fe09a7824140 - last_write_checksum: sha1:79add1da6ce8185da5309973f5a5f0612cd027a6 - pristine_git_object: 607ce8f449da94de66bd309fb1c2803045edd9ab + last_write_checksum: sha1:9d7fca50a693408e520274948d466e03ddb5cdb9 + pristine_git_object: 42fbf75e12622697133e2299821da9d17883e6f2 + src/glean/api_client/models/editcollectionitemop.py: + id: 1384524a3498 + last_write_checksum: sha1:865dfe05a5b6c8ed22163f74d6eee818174b3a1a + pristine_git_object: ec47c58541a4e621037751f5dacce3bbaad8f13d src/glean/api_client/models/editcollectionitemrequest.py: id: bc22cf6084f5 - last_write_checksum: sha1:41520b9e5735d1c89a457eebe78640d5be55eaaf - pristine_git_object: 287991508abfc26ad7b15f724c8d9512227ee80d + last_write_checksum: sha1:ef0c68dff9f30c0267ad153f86280b89df7b5e23 + pristine_git_object: d263fa2ebee6e474dcf4a69f004c075ece4d491f src/glean/api_client/models/editcollectionitemresponse.py: id: 1932a6ee55dc - last_write_checksum: sha1:a70c5c0f863d675568f714759f792b0f4d15f5bc - pristine_git_object: 447740a0843cf4cfad48920b7f92e938adb8591d + last_write_checksum: sha1:35202968456ac47ec2d53903bcf930dad879aa6f + pristine_git_object: 0803aa97a25fb8fef4fee326f9e774bd8700389e + src/glean/api_client/models/editcollectionop.py: + id: 6bbb39f451cb + last_write_checksum: sha1:4e26166deda0974b97350d77d0cf0f0a6f11ef45 + pristine_git_object: 89876fc83292098da540fe0a4593ebcd22bc0776 src/glean/api_client/models/editcollectionrequest.py: id: fb314a816369 - last_write_checksum: sha1:d352f8d6d8b4a08be93b03f946351a4b353af9ec - pristine_git_object: c2495b01f06ba8e756a182c50b69621f83ca8325 + last_write_checksum: sha1:e0873a34e4ea4e5b86c942f40b7a6416caaddb9e + pristine_git_object: 7a4edd70390dec12ae19ebdd044da70cc945f836 src/glean/api_client/models/editcollectionresponse.py: id: d5021e1e02ea - last_write_checksum: sha1:50246665e5d9a00e96b1eb28cbfb0b11b2a54f83 - pristine_git_object: 23cc370a5c1ba0ad761baa0505da04fc7875c7d2 + last_write_checksum: sha1:c23281223b1e8f44aabe2c8933b16de348a9acc5 + pristine_git_object: cf72a321fd7243e64730402a2773eecc1d8a3554 + src/glean/api_client/models/editpinop.py: + id: ccf2c7c31a0e + last_write_checksum: sha1:4283c5ec511a7e85a96bfab308fc38974421eade + pristine_git_object: 608f79b9fafda26b5330d562955b6e971d8f2aff src/glean/api_client/models/editpinrequest.py: id: 394a855b5f16 - last_write_checksum: sha1:6b53c9b4e319d8b7143b5360cac31453e3c712a5 - pristine_git_object: 4cfdc9181e9e176a81fd541fc5a95d2567ee6964 + last_write_checksum: sha1:2ab581efcb31ece5d80adac97fdba88727fc9da5 + pristine_git_object: d19c91a1f64bbbed70c05885945ea5a5d95146e7 + src/glean/api_client/models/editworkflowrequest.py: + id: b4e7d6c2b721 + last_write_checksum: sha1:af89744481a4a1b07c0a2b1e56267647d7f9a84a + pristine_git_object: 5d3ba4f1039c79d087bc34f8a2e85f979060c290 src/glean/api_client/models/employeeinfodefinition.py: id: e16fd44a957b - last_write_checksum: sha1:73b66697adca3691e76c61128a6445c90f24fcbc - pristine_git_object: a713eb7d630a422ca28de56b7864cfc2247b5bdf + last_write_checksum: sha1:18735a28300d55395d99334d622495f4e70897c8 + pristine_git_object: 0dff10f097d92e57d2e962895aab04d58ee9371a src/glean/api_client/models/employeeteaminfo.py: id: f50b29739646 - last_write_checksum: sha1:c59551913dfc3511d5f5725b0e3597702c15dedc - pristine_git_object: 1505b40dc6cc6318fa0bb146a79c5608c7d05607 + last_write_checksum: sha1:c5c1a5c9397fc297e5b724a203ec7eedd43d9dad + pristine_git_object: 91d78b8d4a7c6b7298689c189a03963746dae920 src/glean/api_client/models/entitiessortorder.py: id: cd626c042435 - last_write_checksum: sha1:3748f760b70c5a78b1b001073c1d0b8e862d1a6e - pristine_git_object: 76d80c681674fbf494dd0205499e21275377b13f + last_write_checksum: sha1:606f29ffe3a88b92c0c916b49c5bc1a290b9637f + pristine_git_object: f3e5ae63a7927d043a525616b22e8e9a5540df69 src/glean/api_client/models/entityrelationship.py: id: 0494cdf060ff last_write_checksum: sha1:ca39e9ad5a91d34509e8d55401df9d0e77f7ce84 pristine_git_object: 0c2c8e5c3c921f30cf17ca89339d192d9d102323 src/glean/api_client/models/entitytype.py: id: 22a4370b1380 - last_write_checksum: sha1:10dd0f78d620747d60368e5d2f874dfa200647ef - pristine_git_object: 43e538599309d65615c83de006b63d6ba9131b9a + last_write_checksum: sha1:b091bec335fef2262c725afa624f188a92ba4b10 + pristine_git_object: af479617f97e668b22634dd88373471ceea7c7a6 src/glean/api_client/models/errormessage.py: id: b2d0a949c567 - last_write_checksum: sha1:f921c0f1c22f8938d7209c9c347a4afed639c1bd - pristine_git_object: 40e0e61c4e9b5f031c9d70ff480b93838ca228f4 + last_write_checksum: sha1:333dcf5a80490f22926497048e1ff8c19423375e + pristine_git_object: 5979617bcbe5d35a2b952ec6ffb10c23455987e7 src/glean/api_client/models/eventclassification.py: id: 6430165e5712 - last_write_checksum: sha1:bb217709c0a06f5c32100f9a1c35e979d5a00758 - pristine_git_object: 2a2dc56b23204cb87362b9e250e57152bfca53d8 + last_write_checksum: sha1:5fe02ee5694772d7b2d508f1eb5e457e1a85d72c + pristine_git_object: 7ed6e3fc0abf297b40dfe43a3f8f0bb3b7335e6c src/glean/api_client/models/eventclassificationname.py: id: "00e500099220" last_write_checksum: sha1:a6474e7214348deab1e02765dc1f6281d8fb3802 pristine_git_object: 01bf73544b870d294c46010643e8bbb21c98765d src/glean/api_client/models/eventstrategyname.py: id: 72f93cc36b77 - last_write_checksum: sha1:5de70362e2a1252dd712ed013460c7ba4e5a3887 - pristine_git_object: 5ede7c8c9cad35bbf68587ce4247ee51cf74b55e + last_write_checksum: sha1:f359da6c05742c564e50b84faba2ea0652cd59a1 + pristine_git_object: 2fc0a34fb83cf361d4167e22685f67eaa1cd269c src/glean/api_client/models/exportinfo.py: id: 7039fdf82b53 - last_write_checksum: sha1:771fac73c9e953cfbf379c40f7321eb63dc0fa02 - pristine_git_object: 18f728506a4799f99b31ee4e41ea60314a9ee56f + last_write_checksum: sha1:ac8f1a1b597ec1a6dd301410f4a8012d63d9c860 + pristine_git_object: 859689a25f6322e75e7acaa50dbed2843bd885dc src/glean/api_client/models/externalsharingoptions.py: id: 0df611382e60 - last_write_checksum: sha1:d8a9b254054418fae9bd56b83537faccb4e213b2 - pristine_git_object: a3e22fcbceb236919eaad7f7ba65d9473ab53fe9 + last_write_checksum: sha1:ff79f9f97203c88bc89c051e73e9082c3861b6c5 + pristine_git_object: 0a42520db5f584280bc1edaabec655c38be65c4d src/glean/api_client/models/externalshortcut.py: id: b9c91219a7e1 - last_write_checksum: sha1:60748106b1229996d7af143ca2e0b3be42af293c - pristine_git_object: a006b8d1feabdb3f6494b5eedab053a67d7c0bfc + last_write_checksum: sha1:2f36eb751587c541581934c644e77bd08d922392 + pristine_git_object: 33344b4108708a0eaab4a47d04bb9f9923efa29d src/glean/api_client/models/extractedqna.py: id: e4498c224e1e - last_write_checksum: sha1:fe91879ed5d062226ab72529c9798d49a3265108 - pristine_git_object: b083623bc0e9be574f82570fe1f4cad24cf54022 + last_write_checksum: sha1:02c76af5edabda94ce2f4d95914cefec7f050f53 + pristine_git_object: 6a255674fde15bd601bdd6ef074de6187971410a src/glean/api_client/models/facetbucket.py: id: 3dabbd5bcfb4 - last_write_checksum: sha1:d89a28a53042df94de80e564bc2dae6662881d66 - pristine_git_object: 262dc80ff996c9177179a4ffd9c88025861116eb + last_write_checksum: sha1:af84cbf7988dca4f7d998bafbdd41eae2ee90e36 + pristine_git_object: f8d356f73ba7ab657d3955f6435a94a6b700981f src/glean/api_client/models/facetbucketfilter.py: id: d1e4435eff08 - last_write_checksum: sha1:8cbf01df3ca65f6a3be16650562da1852e7ff9db - pristine_git_object: 771de45452020af4a9dbc8a697ca79ad68d0d556 + last_write_checksum: sha1:3fd7e6b2f08b1c29c9999eab2d12406c156012d2 + pristine_git_object: 19df5a17e69c63bd0355021b687b4598189172d8 src/glean/api_client/models/facetfilter.py: id: 0092f5488ed7 - last_write_checksum: sha1:c2ca2ce4d30cc95b4d1f7b58fa9d19c38d8a985e - pristine_git_object: 8c2aeb7d0384c0554e57530f73ecf6a5586479f4 + last_write_checksum: sha1:71945c896dd40a6072a619d0226ff79b626e5e41 + pristine_git_object: d882c35ba28f7be55ddc5b5f4a47bee27f01fb01 src/glean/api_client/models/facetfilterset.py: id: 24a068134424 - last_write_checksum: sha1:daf3623fe44a748c145e7f4cfbf8eb57f752b659 - pristine_git_object: 660a4cfd2bd0c88bcd0b9fbebf1817ad380d3524 + last_write_checksum: sha1:cac7cc417665fe2d95c4a9de2a4b7095d0abb0a5 + pristine_git_object: b1f689e7cbe160b1191780f88c1b66db4666fcf4 src/glean/api_client/models/facetfiltervalue.py: id: 2538d6322ce2 - last_write_checksum: sha1:2ddb82f66f90ee06b00ba6329653f7f5fc71fe95 - pristine_git_object: b1f4c89eff8bc8b379e260d2361f14b7c6a8f9d3 + last_write_checksum: sha1:c794c9a21b0d1154d00df89d4808c7b7739e3d02 + pristine_git_object: 3df021969492d908928d8f3680a60b4261a65c39 src/glean/api_client/models/facetresult.py: id: 0b08040192a1 - last_write_checksum: sha1:b82c0a556cbb5ba351ff2d269c77232bfe16d115 - pristine_git_object: 7f92de541e7d78fd5c2c55290c51645fbcd9d86f + last_write_checksum: sha1:9c5b4fff2ca3c99cfc7921b95cd40fdecace8192 + pristine_git_object: 6cea2b89790635cadb5afbe94e4b6a409933dbb6 src/glean/api_client/models/facetvalue.py: id: 37b332e83210 - last_write_checksum: sha1:662f43e066cc3193f0caa355faa2ebd07be63126 - pristine_git_object: 4e4274063ac1501c49b0670a75f394d7b483a5b6 + last_write_checksum: sha1:4dd701b69d4079c4f068d692e02cd4a87903f7f4 + pristine_git_object: fdf378c8dc7f45bf2e638cd1e4900f4464d5d938 src/glean/api_client/models/favoriteinfo.py: id: c8966a607f00 - last_write_checksum: sha1:a86201e06fe3586b5487a63f7a5ecf088d023159 - pristine_git_object: df6efe65c2e13b52f7e031908e3de404059b14fe + last_write_checksum: sha1:6c5eed7096282ad3c4444bd15a43bd7c55ab5d68 + pristine_git_object: 17359e01fa84c77c0074e5d321ae7ac50451a48d src/glean/api_client/models/feedback.py: id: 511140b14aff - last_write_checksum: sha1:937812f67ad43763cdd2edf25113c049be42c2fa - pristine_git_object: faaeefd68d0b35a87eb43c609c01f73919258f54 + last_write_checksum: sha1:6b121c6d4b112fe8271598735390319195558228 + pristine_git_object: 1dfc5693f596424df85a279938470af2da752f1d src/glean/api_client/models/feedbackchatexchange.py: id: 8a8e469394a1 - last_write_checksum: sha1:9c274382e72e5a599629454ab0435f69ca1b6bc7 - pristine_git_object: e89bdd57755787466e0444c91b1075220b2f5282 + last_write_checksum: sha1:fd19bb89b532bb5ee4c798e352a83af00e03d118 + pristine_git_object: 291794c5d27686fed3c85ef0f9212fde461cf0a2 src/glean/api_client/models/feedbackop.py: id: d74abf6b0a42 - last_write_checksum: sha1:faa425b4ba84b3d7d7c7569950fd09e037ae9989 - pristine_git_object: 43338d24117a2b2f4dd568237be9403bf09dfcac + last_write_checksum: sha1:fa5e1e58653c2ab36c5f6c50cfe32541eaf65a3b + pristine_git_object: 44041cb376d89949c815ea1e7813505940605855 src/glean/api_client/models/feedentry.py: id: 023eb6c10ae1 - last_write_checksum: sha1:49a02f7f13d0bd0a86252522cce6fd418e0de10f - pristine_git_object: dc49f9c3eb536014748bcf2ee4957a5aa957709f + last_write_checksum: sha1:f6d1b010b7385dfb8fe27387f27b302af4f5a815 + pristine_git_object: 56a778d29a38d9c9e753021ab0d0a7660a3a7186 + 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:2d67c0ab5b84104f276942c3083bed5b8add2e61 - pristine_git_object: ac2cf205b2e6dafda6c1b4ffdcb2efce51be909d + last_write_checksum: sha1:8171043e578b64f580741b320c2b33e5d78dbf34 + pristine_git_object: 10c493bb3fc1ff5a4261e2592e44ed2e9baf9a1c src/glean/api_client/models/feedrequestoptions.py: id: b99003fbf522 - last_write_checksum: sha1:f2eb94e7d7ecb0fdf2dea72cd5ea0e8d072cb8cd - pristine_git_object: 7125ec44c518315612752bf2f26b0a71546cc60d + last_write_checksum: sha1:d5ffee29242075cbe6d2dd5ec916b0c3d40acf54 + pristine_git_object: b0d65380ac5f1bbfcc8b3bdcf8b44bd22b760a31 src/glean/api_client/models/feedresponse.py: id: 4a48e189e0c4 - last_write_checksum: sha1:5fcd315c21a6aefe71cc048e42cd05523d381a65 - pristine_git_object: 2a46e2b5dd8585582bc395f7e7f97bf715296a56 + last_write_checksum: sha1:84c63b88f2f6fea64ea6f15d41e776bd57e95181 + pristine_git_object: 683438c837601f483526ec18756fadc7222edb24 src/glean/api_client/models/feedresult.py: id: ae187332b37a - last_write_checksum: sha1:6f4e71621e5eab8e8d1b546300eef83f3946e369 - pristine_git_object: 35ae756814b725df4e485218eb134aae81863a7d + last_write_checksum: sha1:84f219646018516fc326af51a1c14d50a52b2b27 + pristine_git_object: 6646f94da4b4e0dbf0615943d691ad96339832d7 src/glean/api_client/models/followupaction.py: id: e2de5c4c8524 - last_write_checksum: sha1:d631ccc528947c256be3f31e7ead2871d9ed68de - pristine_git_object: 65cfd1f60ca8cff4c58e94778494183dbc4c4746 + last_write_checksum: sha1:49e1a826449081fecfcd828c940604db949a8533 + pristine_git_object: 5a44621581bf4944e7e56a5964a655d7bc081d5c src/glean/api_client/models/generatedattachment.py: id: 257c5ef9996e - last_write_checksum: sha1:196e356e5224c9481024b74d45bf69ddcb157fe2 - pristine_git_object: 2cb5458c98938164ecb6d1f98e831c8d2928695e + last_write_checksum: sha1:8e29bc6b5a6ef39fc90852c801e10bda5e2ef8cf + pristine_git_object: f431eeded29a29c46d37e0f6977f8aca5e3d1261 src/glean/api_client/models/generatedattachmentcontent.py: id: cd6ddc3356e2 - last_write_checksum: sha1:fef5292dbacf87ce9073f1ee277799641fa8b1f6 - pristine_git_object: 7e723c3a32a90dbbe478d522c83021b66a09e8b4 + last_write_checksum: sha1:121cd44820c25f12d1e8290dc9c195661e7f25ad + pristine_git_object: cc022b56eeb282ea4f508c9cd87f28f81b0f51fe src/glean/api_client/models/generatedqna.py: id: c505fd0d1ece - last_write_checksum: sha1:002cbef4cb1c32217e4a16ff034891e9e64d8057 - pristine_git_object: fba05b9b962911115a9e2ad1c586a9a782c33ce0 + last_write_checksum: sha1:977cfe47cea6e8bba465d0a96897d7ca2b964286 + pristine_git_object: f1fbf6355ef61a62a6b005133879be71fb3a775f + src/glean/api_client/models/get_rest_api_index_custom_metadata_schema_groupname_op.py: + id: cee009e61198 + last_write_checksum: sha1:892d386f5c31ce84be5656afa0e9c78b47128b71 + pristine_git_object: af2ec64b10156b7098dc0c21b7d63d0cae1cc64a src/glean/api_client/models/get_rest_api_v1_tools_listop.py: id: 34cf81e82af3 - last_write_checksum: sha1:9e5027f9774624385e72bb6bac456369860b6fa4 - pristine_git_object: abdaafee6ba2b082cd94635c0470c0b2c22e27f8 + last_write_checksum: sha1:4f84149547bee459f0a7f05a9b37c7d9d256af7e + pristine_git_object: b5265a6086412a71445036330b444d889e033cf7 + src/glean/api_client/models/getactionpackauthstatusop.py: + id: 3901c2d16ed0 + last_write_checksum: sha1:af917b3d2da7081a76dc5225a11ca3ce033aff5b + pristine_git_object: 596234eab9affb498754b9606ead92d7a006fe98 src/glean/api_client/models/getagentop.py: id: 40981170ded0 - last_write_checksum: sha1:301eec2a392c26fa8a3c61b0573b459649578d24 - pristine_git_object: fe5de6e24e7b1f1cb56eaeacbd1fc65220b0f851 + last_write_checksum: sha1:69acb6eb3a47aa7033c5661c241c8467e9f806a7 + pristine_git_object: 9cb3838322708bd13002d26f6970c663fb989105 src/glean/api_client/models/getagentschemasop.py: id: 21bfced8e2bc - last_write_checksum: sha1:43c5bfb8367c7b5f4645c035a2d9a3a91d45231f - pristine_git_object: 17537af72df5186d8b72c54116da2cc3152f17b2 + last_write_checksum: sha1:c6c9064deb5103dad3bbb21e008ee089ec7ac0d6 + pristine_git_object: c381cdaea97ca53818651803a51a2dd133e4f9dd src/glean/api_client/models/getanswererror.py: id: 7d4df3bf2bfc - last_write_checksum: sha1:bf62dc25b8fa8621a2fca40f436d0f52d7dc6d4d - pristine_git_object: c95c45ab1e388f9f7ab0bf7a920c32cad7f17d5f + last_write_checksum: sha1:e8dd4317871d0643b9156c5110f0757113e2f820 + pristine_git_object: 102fadd9bf967b99a1fee20027e4be5ed6902943 + src/glean/api_client/models/getanswerop.py: + id: d02c69702982 + last_write_checksum: sha1:169959016e00ee8aab88f0378e3e6ced394575ad + pristine_git_object: 3a64977851c11a39ff5f3ca5f82b3eaf71f922fe src/glean/api_client/models/getanswerrequest.py: id: 51b52ca6bdd1 - last_write_checksum: sha1:57d204d90fa7d91df4a88d7a6df1a6990a0e91c0 - pristine_git_object: af67e965754af5dd7d74396e75c17c2dc9516eb5 + last_write_checksum: sha1:49ba892a13c8c344e0ec4417a8793461db0ac6d3 + pristine_git_object: 5a1648a161b019200d53e5aea51c2f9504fec1bb src/glean/api_client/models/getanswerresponse.py: id: 29a80a8d4d70 - last_write_checksum: sha1:fefd9274b17141194e5b5e7b8db092ab548b439f - pristine_git_object: 8c01ba88bb24d79be0395424107d0f043a38cec7 + last_write_checksum: sha1:5ddb79ddd6acd5b78f2ae5d761e5eda34949ef65 + pristine_git_object: 6bb54cef2ccde6c095fd17214c783da77dbd6037 src/glean/api_client/models/getchatapplicationop.py: id: 320af39d31c3 - last_write_checksum: sha1:06d490d4573cc94e5a8deaaf82b22c988ce309f7 - pristine_git_object: 08af371619ab4d38d081d1281c9adc994ace3335 + last_write_checksum: sha1:838ee71b14a211d21ff189a2962c02cb0825dd42 + pristine_git_object: 8431fc2efa1b8e3f6e5ff275696e68935e67c979 src/glean/api_client/models/getchatapplicationrequest.py: id: 6e15de2008bd last_write_checksum: sha1:9788428769ee01fbe7bc39b4281ce952d2a8e052 pristine_git_object: 5406833371cf8145c2c245108bce7a7f5b4424fb src/glean/api_client/models/getchatapplicationresponse.py: id: 8147c65ec269 - last_write_checksum: sha1:75622b3d172193701e60ed987268c4d16ee8e806 - pristine_git_object: c2b617f85539f18828c74d80b94cba268545c410 + last_write_checksum: sha1:513e7c852c94bc4f2e2009825fc0c5c72190daf0 + pristine_git_object: c4b388714d4ecbfbb9476a055d4c950128c72007 + src/glean/api_client/models/getchatfileop.py: + id: 6dc641c60a78 + last_write_checksum: sha1:0a8a9755c7ed12d7cc8f4a1844d8619ed8d08ded + pristine_git_object: 60bbf3271ae420b5b5b6f0ed44419242aeafdf93 src/glean/api_client/models/getchatfilesop.py: id: 48b9a5c63e2c - last_write_checksum: sha1:1ddf070dbbb2781d2c1a9d46e0bc61fcd4a9f016 - pristine_git_object: 709997e27ff932135b7a2b4572ab7f53c668aa83 + last_write_checksum: sha1:b3584731846f91629eb30a5e44ac46f7306d9e08 + pristine_git_object: d0ba2bef4154af18be6b5eda11d225b6ef987b70 src/glean/api_client/models/getchatfilesrequest.py: id: 86e8fe781667 - last_write_checksum: sha1:d86f6114edfc8f2a3058b7d171fe6256ee7e8bc0 - pristine_git_object: 86c92b64fb7bd2fa81928e16f91751435b744b9d + last_write_checksum: sha1:6b76bab1d15ffaee5754f5045b0701ebc994a26f + pristine_git_object: d29ef1be18c9bec94ab9b207159a0b729ea6e9b9 src/glean/api_client/models/getchatfilesresponse.py: id: af6a057b156e - last_write_checksum: sha1:1edac41c43ab3f93380bad3b79e4cd1b890570ee - pristine_git_object: 626f22cdb2b7ff24b61e5d329b6e08966b4eb369 + last_write_checksum: sha1:f28d5c86c08e69aad88cd5c1d10ca499e4324395 + pristine_git_object: c3d8e2e9a736ecbd9edf70d415e8a2ee79263d21 src/glean/api_client/models/getchatop.py: id: 2b157d86e810 - last_write_checksum: sha1:a01783d7f4099eb3211657320de12694f811ae7f - pristine_git_object: a233f7089afdc87bd6f4fe0d3eb449969538b01b + last_write_checksum: sha1:7fba50ab316f12a352e22aadd1066aace9bfe2ed + pristine_git_object: c4155fe3abc66d93dfa10efbc84aec804425a1d1 src/glean/api_client/models/getchatrequest.py: id: 408479eb0833 last_write_checksum: sha1:7d4a3169cb0ab0954471eca8f5066cbb0f265e93 pristine_git_object: ddc9479885a8be6494fdf7840b269983e715b138 src/glean/api_client/models/getchatresponse.py: id: 0ed1381b51b7 - last_write_checksum: sha1:e2389903c1f83276f8621a16bce0370c6e549e97 - pristine_git_object: 88effaa3cc0f22782a2c7753d832e8dbe8062cd0 + last_write_checksum: sha1:c26dfa56429195e39101c679451ec27039318052 + pristine_git_object: 7dfadab71ab57286727d953366b23b7a78e4d476 + src/glean/api_client/models/getcollectionop.py: + id: e46c77b755f4 + last_write_checksum: sha1:6f9ac4feda4a8d879faaaf64ce7dabb47c3d73c6 + pristine_git_object: 92fdcda500ba4cce82ccf9ecff86bacf17f717b1 src/glean/api_client/models/getcollectionrequest.py: id: e133223930a2 - last_write_checksum: sha1:750189b561ffca8860e1c3ac5c4a70a0ffb2bda2 - pristine_git_object: 1ddbe284a48d3f5451711c5675d7f8bd8601d447 + last_write_checksum: sha1:d1747dcafee4b85381dd7652232d618a0d3be960 + pristine_git_object: 36d10443a188e97aff3ba27f54a4481805e21c56 src/glean/api_client/models/getcollectionresponse.py: id: 458c44d7b658 - last_write_checksum: sha1:fac6dd141f7e6fa7bb2554ef04348fb106fb6b40 - pristine_git_object: 0eb2a92ce5c233c867c074c77a84ebec610b96a4 + last_write_checksum: sha1:cb8b6a2bd5ae9230bfde9537cfdd7e2ef178a3d8 + pristine_git_object: 10123b3a3b0f987d0f603afcf374fa3e27a815c4 src/glean/api_client/models/getdatasourceconfigrequest.py: id: 42b2eeea0fdc last_write_checksum: sha1:72e44bdd713ea77abbd991bd01e7f433cd2443ea pristine_git_object: 0fa42a25ca61cb0ca2430b59780801adc55c754b + src/glean/api_client/models/getdatasourcecredentialstatusop.py: + id: 64da1ac902da + last_write_checksum: sha1:a7cfa1bf95b035c19e26f4625a554b56245135bc + pristine_git_object: d693ed5408ae3fe6182b1f7aaa640d40e33439ca + src/glean/api_client/models/getdatasourceinstanceconfigurationop.py: + id: 2d3c120f1d97 + last_write_checksum: sha1:18081db02ec047f57c1ca29fb90201fa33d69cd2 + pristine_git_object: 25a21bd1a03a9e6966f1e979e2be8830d4f93243 src/glean/api_client/models/getdlpreportresponse.py: id: 0e0111b5d484 - last_write_checksum: sha1:ac2b5a4bd5bb5a72c9b33abbb37295193e8e3927 - pristine_git_object: 6b2c3478577c9b00fe97bc6b1bf0404ce30929d0 + last_write_checksum: sha1:0f3a4d3aad6cfe33e17c54e2c39175007354df39 + pristine_git_object: 7af2ec3d8f6dfcb26f20db7f043345ca83fb1069 + src/glean/api_client/models/getdocpermissionsop.py: + id: 085293ca24a4 + last_write_checksum: sha1:84df043245e69ed11b0e459e814df92f1f6d48b7 + pristine_git_object: bc562e4133d5f22e83ff3724de9846808e3bf7f7 src/glean/api_client/models/getdocpermissionsrequest.py: id: 9e472fc389dd - last_write_checksum: sha1:4f7769a9132fecccb7d1450945379826aa8cd4e0 - pristine_git_object: 6c2088c72ba54178fe36a4cc760ba292c3b72bf9 + last_write_checksum: sha1:ca6532cef63e26ebe9c30c6c5014a738853c9b63 + pristine_git_object: 4c4a4e5b966c56189c9e4deee8230829ab67329c src/glean/api_client/models/getdocpermissionsresponse.py: id: 44cd7997b6a0 - last_write_checksum: sha1:9245b0fc552ba274b6880f2337f32685af093ecc - pristine_git_object: ea7a3e383b6ad1ef301747d83e7f54e592d27472 + last_write_checksum: sha1:161c380681479f837ebde8e21e94d941747971cc + pristine_git_object: 061e8975f7dd87e8eac8bff34990e8ee47205c56 src/glean/api_client/models/getdocumentcountrequest.py: id: 46fd4fe893f8 last_write_checksum: sha1:2de1cfa7ec68a49963d911e61b230a6475c73c72 pristine_git_object: 4fd7db81273bb4929fea350bbba1cacb659cdea8 src/glean/api_client/models/getdocumentcountresponse.py: id: 872d5066d91b - last_write_checksum: sha1:f1abe1ca098701fe46a3bd8b59ef6f6e1c66f366 - pristine_git_object: 9c084ea9d3955b4a52add00d56e34301468dd884 + last_write_checksum: sha1:f8e81b4b74396f7942acd3b0c6f4e90c68c1ed7d + pristine_git_object: c3400b20d46c97ec22f85c21e187fed51e2d1834 + src/glean/api_client/models/getdocumentsbyfacetsop.py: + id: ca5343a63eff + last_write_checksum: sha1:1ba5ede62829dd92ba085fad3bb369b1a91d1e16 + pristine_git_object: a6bd1531c8e9cb22cd78f1cd81f3ab1ff0a48027 src/glean/api_client/models/getdocumentsbyfacetsrequest.py: id: 095fa51d67ed - last_write_checksum: sha1:10272be737cdb2aa442a5c3445e39c7c5dbff35e - pristine_git_object: acd7f01bbe7a05b44f99c1288f96e89c8ccd4ce6 + last_write_checksum: sha1:35e96ab17f29008bf4200233dc35bcfc6b13395f + pristine_git_object: fe741831ac78eff9313f2a4d2429d234a6cb05af src/glean/api_client/models/getdocumentsbyfacetsresponse.py: id: ffcd52e8e229 - last_write_checksum: sha1:8b94af9c874dc482d72ee3c4198ad67f8980a16e - pristine_git_object: 5d8d080e40557f9ff2642d774c4bc2fce5a13b37 + last_write_checksum: sha1:fcd96ad7ac48bbdf88f97599f6de011034fb4cdf + pristine_git_object: e7e0337a8366b17eb417470ccd229183be4d6181 + src/glean/api_client/models/getdocumentsop.py: + id: 957b85b955b7 + last_write_checksum: sha1:0b3377188c15091c04de3190bc0f4dd76e60435d + pristine_git_object: fd29b3ef55a3ab4fa940ccd8a5bf93bfae99568f src/glean/api_client/models/getdocumentsrequest.py: id: 35b06c70131e - last_write_checksum: sha1:f5e5d476b6c3b09e08464de5a3586be95c4e35b2 - pristine_git_object: c7682b86148ea51762cafa8d6567b5b23c173d3f + last_write_checksum: sha1:62bb272f1ca7b3b9a6cff8a8bcb5d0e58cb817aa + pristine_git_object: 8e64be35de3202a3d86992ed79c006b294c04deb src/glean/api_client/models/getdocumentsresponse.py: id: b2062b96f07c - last_write_checksum: sha1:3c6d2d48007da09fcc6de7d5412706733bc9ff30 - pristine_git_object: 5c9db4d4c8c580112b995f5857bcba8116d4d56f + last_write_checksum: sha1:fef5c4b3503684eb5b1d2c0616f3b221fc429901 + pristine_git_object: 6448b8887248c18fa48e24ddc30967aa287c0328 src/glean/api_client/models/getdocumentstatusrequest.py: id: c1363f61d9b3 - last_write_checksum: sha1:e52838e283eb8a29fe9c38454eebe05c82331423 - pristine_git_object: 47266d926d64336139172d1e404f1e4be5a06a5c + last_write_checksum: sha1:2fdf84dbe3fbca26a2d63d9fff578eae218bc0a1 + pristine_git_object: 1a4b391ee1398d7592461f9bc5bc03f62cc36bae src/glean/api_client/models/getdocumentstatusresponse.py: id: bf15cdc33856 - last_write_checksum: sha1:9e85d7926e99d4bc3fb28517b83a9bf31c361d9b - pristine_git_object: 0d0bfde79cad558c50b529bdccb95ad33ba05a6e + last_write_checksum: sha1:e1437df5bd1e3b8d165e95a75bee4761f6a16ab7 + pristine_git_object: 5bd4fd926abe4057a27fb4bcc0c74f1da0c67e48 src/glean/api_client/models/getdocumentvisibilityoverridesresponse.py: id: 4fcb987e34c9 - last_write_checksum: sha1:a0e717db5d31feb23d9afc9fbf4352f926a7368f - pristine_git_object: 0cceecba27093fccaa9a341cb788f1fbcbc0cd3b + last_write_checksum: sha1:7960ab3d4485c54864c3eee76fd2192f01156b54 + pristine_git_object: cd81ecd7cd1918e4c482cd012a9806640b160fee src/glean/api_client/models/getdocvisibilityop.py: id: 0f3847de9013 - last_write_checksum: sha1:c1a156df91e4a8c8d62eac9165eff49b822641c8 - pristine_git_object: 682cb48fad24a16f4724ede2de371ccfcf696f0b + last_write_checksum: sha1:e424ef68054082c29c96f19f973babe17c62009c + pristine_git_object: 198ee640c908f13a53a84f7939e6ca704c99e684 + src/glean/api_client/models/getpersonphotoop.py: + id: 52871feebe6b + last_write_checksum: sha1:10e6a543cab6b99a77ad87c794d36f0c977e6e92 + pristine_git_object: 7d3d9948d1d527f27b88441934301a449aca639f + src/glean/api_client/models/getpinop.py: + id: ead822eb0da7 + last_write_checksum: sha1:7f09359a7f5bf28b8713a604d99fd867e20ef8c4 + pristine_git_object: 7c1467b483924b32030847362d876c06d9392d73 src/glean/api_client/models/getpinrequest.py: id: cd845a071792 - last_write_checksum: sha1:08f98be6d86e5ff7dfd4552f28142b3ce960fb48 - pristine_git_object: 758669c95046dd75071956cf63df538bb60e53c0 + last_write_checksum: sha1:abdf087dcbb9eb9d07653a621ede460ffc6da8a2 + pristine_git_object: c11fbc5cec96be3d49fef79a8c781ee1c5537adb src/glean/api_client/models/getpinresponse.py: id: bceff8932b22 - last_write_checksum: sha1:e66dfe7d16eb8caf0e9696139d8c1c58fe2d255b - pristine_git_object: bc1e6e9d25a3a2f4e74a2e1c557ba297b3f1261b + last_write_checksum: sha1:e041099339214bbb075517d340bff8a631821a80 + pristine_git_object: a45629314fc8a15640430e588e61d92b6953fdfd src/glean/api_client/models/getpolicyop.py: id: 58d603f46a48 - last_write_checksum: sha1:cdad80cc390d66ab0cb960ce9d762255f1d7ffe3 - pristine_git_object: 22ff00bb314687bde26d04590c19ecb6dce74f09 + last_write_checksum: sha1:560594f5d11e53df0bba0a74a369d9538b1a98ee + pristine_git_object: 95b3502e755a161a68ab37661de93509664bc9bb src/glean/api_client/models/getreportstatusop.py: id: 109bc89ef9e7 last_write_checksum: sha1:d6b857528734b75999673d80dff04999994fb2e1 pristine_git_object: 17fc561771d65ffe3d3c15fec7099aedaf8f3341 - src/glean/api_client/models/getshortcutrequest_union.py: - id: 8a7c3d7d425f - last_write_checksum: sha1:451dc6887ca2a706bfe34fe19bf986f88100f1ac - pristine_git_object: 6f031d6dccf18a8e07a8e7c3d9289881ded834f7 + src/glean/api_client/models/getshortcutop.py: + id: 441211afbd50 + last_write_checksum: sha1:788d31f5eddae3579775a820b5b495fa6da0f1ee + pristine_git_object: 3ca7f668d58fc3288f4623c10342c7314e718953 + src/glean/api_client/models/getshortcutrequest.py: + id: 0c01b7f76574 + last_write_checksum: sha1:18d613e1443809e7142560cb14db3b987c91af6c + pristine_git_object: 6efe832b0a6facfb137cac38c0ff8db1d4d03302 src/glean/api_client/models/getshortcutresponse.py: id: 2d10a576bd7c - last_write_checksum: sha1:d5d5d0d52375a859083e7e58500196817f5350cb - pristine_git_object: 865ad0427959cec24de5cf884d20a80377462389 + last_write_checksum: sha1:d8df32d525b0631a0261f888b89ef14b54dc03fe + pristine_git_object: b20fa7417eb5341f53bdc78ecdf42db7a1488678 + src/glean/api_client/models/gettoolserverauthstatusop.py: + id: caa449cca979 + last_write_checksum: sha1:bf1850bce3e5468612e5e067cd8c6098b7a9d5ff + pristine_git_object: 91b8c13d4ebf6f1fc2e1f5eda73490db39906025 + src/glean/api_client/models/gettoolservertoolsop.py: + id: a9350950f7e5 + last_write_checksum: sha1:9c0f9999cdd5d32332a9abd7da148e2ccb2b29c5 + pristine_git_object: afb417b0df172039b755c2e887324adeeb2e28fb src/glean/api_client/models/getusercountrequest.py: id: f313059beab2 last_write_checksum: sha1:f2a54a902e9dfa08b5ed7ccf4e542b9b8b24e4a5 pristine_git_object: 093c81b4a2331f5bdbedd95dbf68f5310eabc3f3 src/glean/api_client/models/getusercountresponse.py: id: 9cefa2386bed - last_write_checksum: sha1:51229b4ec3e85a14ae0c36e44a62df87434731c7 - pristine_git_object: 1d880a8162f8ffa3c9b5e473684da438979e4dc2 + last_write_checksum: sha1:1df6f1867005284d418a4f3e1e833424e41cd4b8 + pristine_git_object: 9a042fa5adc978c6210d795e56e6b1ba576c2b05 src/glean/api_client/models/gleanassistinsightsresponse.py: id: 10a2648cbcf1 - last_write_checksum: sha1:783085ff01d558a34996a41ef368ae4237a77336 - pristine_git_object: 9bd865818900f5e18df747e941b941d023d9cd92 + last_write_checksum: sha1:ed5864db022cd7c00d2f1f97961eeb575e79c599 + pristine_git_object: e6c29553c9be312eb50df7f0035c8c1485494891 src/glean/api_client/models/gleandataerror.py: id: 86e8dc6c1eb5 - last_write_checksum: sha1:e6f673d62bb9e46c48d64bc562439a86192d2f58 - pristine_git_object: 49567e8d31ff0e8224f5bf2da0e0cd615f209c80 + last_write_checksum: sha1:43fa5675b38cc9bd175f8fd22e9d39756025bc5b + pristine_git_object: 7672589b96aa71f8d3a290a4e5770f9a2b104683 src/glean/api_client/models/grantpermission.py: id: 0cfd67112b08 - last_write_checksum: sha1:55769b361ff0127e010631f8523cffdf20e47fd2 - pristine_git_object: f2c051cf10cebd1c47e61f18076f06589435d4b8 + last_write_checksum: sha1:4de0791ab2cfedc646dfc39264e1c0ab08899ec1 + pristine_git_object: a1bb68065a5470dd33a3f1a9f19ca773d26af20f src/glean/api_client/models/greenlistusersrequest.py: id: cc54677a6916 last_write_checksum: sha1:a96583391fcfa804c899066bac902344bc5b22bc pristine_git_object: 85f19cbf2b8e66d45efdd067db1a9d98227edb4d src/glean/api_client/models/group.py: id: 5387fa5912b5 - last_write_checksum: sha1:d959aae4388776af7947208bb40be5bb79b07eba - pristine_git_object: 23a09b465a3b196f7896762f03e613a515ca4200 + last_write_checksum: sha1:4fc88663c2502f55e2d742818c0c11864d089781 + pristine_git_object: f1b4a7e932c2605014da90f15aca4546c4f0a68d src/glean/api_client/models/grouptype.py: id: 64925e34480c - last_write_checksum: sha1:6c8d73f709e074154923b8eb682544df19b0398f - pristine_git_object: 30e949feec9063c0aae4e55a98a9a664ce4254bf + last_write_checksum: sha1:8b69c4bf7a96fe5ea89e05741eab3b542061b207 + pristine_git_object: 88a980fb7f1e533c63641e3d9c445d233f751fcd src/glean/api_client/models/hotword.py: id: 0a4b0a179e14 - last_write_checksum: sha1:366562e7db6998836b47b70df9ec0c4c3b12191a - pristine_git_object: 2f606c0285b17a546ec506e4fb8b5e2dae0e0e8a + last_write_checksum: sha1:8852104f422c25d298bbc9d2975e820ef744a5a2 + pristine_git_object: 51dcb03045ca4ab19de12896f64de549c895b168 src/glean/api_client/models/hotwordproximity.py: id: c4440dabacaf - last_write_checksum: sha1:e685f7ff6fad883b902dc595fd9522230fed01c6 - pristine_git_object: 158b63d44d6497fe8ee9f6be1844c9248660ec06 + last_write_checksum: sha1:dcf5fd4dfecef6347eefe3e5b7fe26b7a6e9cc10 + pristine_git_object: ebc0ed38777b6f9204728ae0966181514d98815e src/glean/api_client/models/iconconfig.py: id: fec761319e41 - last_write_checksum: sha1:df93d9e5cb965a636db41693d5cc493ffad45788 - pristine_git_object: 079ce64d97515fdb39f798841753a3657a9b0017 + last_write_checksum: sha1:40a570ee41fa86918ceb63a79b5b358d70ce07f8 + pristine_git_object: b7109f6b54dd975c977f0a13e3221c036c9c4cdf + src/glean/api_client/models/importagentop.py: + id: c36a782fb6f7 + last_write_checksum: sha1:0238245a8e38883796f8b4a6ae079d1447a7cefb + pristine_git_object: d30f537ead3a77557adbd3b857cf4b2fbc9a4bf3 + src/glean/api_client/models/importagentrequest.py: + id: e548b6034e1c + last_write_checksum: sha1:9fd1a71f0c294cffa3edf687d5d668f4974b065c + pristine_git_object: 92ac1ff0289fba3af470ec676a2f357ee651795f + src/glean/api_client/models/importagentresponse.py: + id: 22a3fa434b8b + last_write_checksum: sha1:a3e9cc2d8684fe175adf720d8094ad1a0759cca8 + pristine_git_object: 19b134efa10635ae8e18763c90b8e602eb5e009c + src/glean/api_client/models/importagentstatus.py: + id: 11d6671e6bc2 + last_write_checksum: sha1:4aa73c9e6bc9877cc8655bf9ca02007bf9e3ec1b + pristine_git_object: fb11e89e6fd7cec6e3c8a964a4e7869174399940 + src/glean/api_client/models/importagentsyncmode.py: + id: 822430a8259c + last_write_checksum: sha1:5f1a113d047fb9bf53cd80408aa1282d91453e04 + pristine_git_object: 3f93c95cf3b3537fef05ec3ce5a2f7588231ad69 src/glean/api_client/models/indexdocumentrequest.py: id: 39de79505ed8 - last_write_checksum: sha1:1948967b77f2d0d0f23a2da8484d3c25c69faa7a - pristine_git_object: 6e9ba14c0c46a01632655594301676e3b5eff0d0 + last_write_checksum: sha1:f1e607bb1939b44c99540a787ca0d10fec8d62b6 + pristine_git_object: e49af0a9479f0c90dd6291525fea63063a9e7f27 src/glean/api_client/models/indexdocumentsrequest.py: id: 937c4ecc3c74 - last_write_checksum: sha1:231d18cba988a3eb3f7546d456d53f8557ddf913 - pristine_git_object: c5380d64f9ed70bd2055d8d38d44fdd66b65797c + last_write_checksum: sha1:044953c271e765a9d5658589877ab6d2ebb79f33 + pristine_git_object: df0dc41e64413f34c866522afce394c1d68e2f91 src/glean/api_client/models/indexemployeerequest.py: id: 3d41098a24df - last_write_checksum: sha1:e6d001c3a2580fb30afa4b54dd757f20b7f3af81 - pristine_git_object: b058f4731ef8fe7429faaa560fa0f96e2006a0b7 + last_write_checksum: sha1:09b003dd744dd993e99f3abf4e03ed0c42cefa0a + pristine_git_object: c37c66ac44a15692b83c7bc8fde36d4646a140c2 src/glean/api_client/models/indexgrouprequest.py: id: 46b3cc16858a - last_write_checksum: sha1:38bdc806da9a77668316168880a468b635447e71 - pristine_git_object: 06043c3044699909c2eef48b787bae868ed8ab43 + last_write_checksum: sha1:1e1a7f0953a25540b46850a1f0add8f5b62ae717 + pristine_git_object: f0b242fdb93194ecfc77237eea3d106b4218af15 src/glean/api_client/models/indexingshortcut.py: id: b2089569a74d - last_write_checksum: sha1:1a5bc87faa2c2fee98926a0bffd1820cbaca90a5 - pristine_git_object: 2e605990c09934e89f2c122319d9190acfd95b09 + last_write_checksum: sha1:dce40fe8a0919c9cf65c41f6326309cfa414b834 + pristine_git_object: 82edda463beb607dba65ef99a478f35282652e00 src/glean/api_client/models/indexmembershiprequest.py: id: d3abc4681996 - last_write_checksum: sha1:f83f7feb47d596db4652e42ac36e5676c8d2d423 - pristine_git_object: e6acb4c69dd0bcb546496da7744c30b1c3fa0992 + last_write_checksum: sha1:7c5ee232a8646b4c930561a7f74106dea63ddb66 + pristine_git_object: 471ea84bd5fa471cc2e36fa9ab03469145f2726f src/glean/api_client/models/indexstatus.py: id: 1b79f41f207a - last_write_checksum: sha1:1b03fe4f4f4c17933f50a20846ec90184d3e4d83 - pristine_git_object: 917406383c8c2bdd36f6b412c9bce552700682be + last_write_checksum: sha1:28ac8a8e2040156b23c3e72aad289c63afc8ebe1 + pristine_git_object: 51863783f2e02d6e1d3bacf72285c04ac742119f src/glean/api_client/models/indexteamrequest.py: id: 7b27fe5b6d69 - last_write_checksum: sha1:3c24bd9b92c85d7e135238ccaf34bfae2e08f67b - pristine_git_object: 2f0be026439e357cfe49c1c5cdfa39f3ad2f9e83 + last_write_checksum: sha1:1eb31cbb1f1626a5c3cc0b64e8c69156449b628a + pristine_git_object: e524f95153e6223216a49dced56da167c4c33560 src/glean/api_client/models/indexuserrequest.py: id: ff0180ed9f7a - last_write_checksum: sha1:13c467c30367bba9c776c6e7577c58ef76897c08 - pristine_git_object: 21e0654e94d799c3f1841da75c14ba31501a6cd0 + last_write_checksum: sha1:703d8aba1460cf9a2a1a6cdc392aa8015e2871f8 + pristine_git_object: 7acd43d1583cc67dc4f370b9a3b981aea698b75a src/glean/api_client/models/inputoptions.py: id: 29608097f74b - last_write_checksum: sha1:126cd6e87de31f54d52c0b1951d1f91ddda96946 - pristine_git_object: 4b14eb02ac24a4557a08f30a26635787bd4ca5b3 - src/glean/api_client/models/insightsagentsrequestoptions.py: - id: e10172e8323e - last_write_checksum: sha1:b966938195ee3c703471d0b0c05bfd8fcd93710f - pristine_git_object: 9df6e9f767b54c63b3f66df8f1480fd0d0ea9447 - src/glean/api_client/models/insightsaiapprequestoptions.py: - id: 941990ffd60f - last_write_checksum: sha1:beda821a1067a96d6b563e78c929d41f038ba454 - pristine_git_object: e1bdb0b2bece1c34fdece6ec26d66f1164e59c55 + last_write_checksum: sha1:bbf99f7a5e44866c614da7679d0a259e5b722a05 + pristine_git_object: 63d2569b2da5fe7881df3f25db4db70425c6e7c4 src/glean/api_client/models/insightsassistantrequest.py: id: ff69cec68e31 - last_write_checksum: sha1:93719b0271af9a52e032756a2f80337ada631e7a - pristine_git_object: bfc055732df4a338b0730ecf5fdc8ed7f652d163 + last_write_checksum: sha1:e6f74c316007cb309c2de8050630a85b3918d138 + pristine_git_object: 806dc671c0e0d8855ff39c17451507b63a178217 src/glean/api_client/models/insightschatsummary.py: id: 06b2f68e597d - last_write_checksum: sha1:9dcd3a327a221e4a29453f564b1674c521023710 - pristine_git_object: 60f6ef3dd8544dfc142d6eea22c7a5ee79f02ba7 + last_write_checksum: sha1:8373f3ae3e4e5397c33dd77dd4217cd7995f5a13 + pristine_git_object: 44b76c5ac9d5a612baa304d4cae9fbb08f0afece + src/glean/api_client/models/insightsop.py: + id: ded0a3337a07 + last_write_checksum: sha1:c88dc9426f3a524eab216f55c273173413447622 + pristine_git_object: c0de2bef0cfda6986cec13f9a02557f3b3bf02fb src/glean/api_client/models/insightsoverviewrequest.py: id: ba00a51c6496 - last_write_checksum: sha1:6e8a165ac8b1940f1b132a8d3137cd9f3654ede9 - pristine_git_object: 5598c8ce402de6f0335b684cd57ed446a6d4a211 + last_write_checksum: sha1:5194f1bd25326c6e1535697851930c6761961311 + pristine_git_object: eda4a606dd0a29d6d5e253e0b35a8bfacfb582ee src/glean/api_client/models/insightsoverviewresponse.py: id: 9f278319d18c - last_write_checksum: sha1:0c41cf4c880c90c9e1c1019a00b2abaf17d1bd26 - pristine_git_object: dea1bde5a31896864988b8122db4bf874f852077 + last_write_checksum: sha1:ce3633f5ef738321cd368553bf78c0787e5191c4 + pristine_git_object: 27313ce1cfa024efa9fcbe79cf77ef99914bf1cc src/glean/api_client/models/insightsrequest.py: id: 72fbc9d1c47b - last_write_checksum: sha1:9301114217b1c50300ca3092fb163555e17c4705 - pristine_git_object: 6b0d940cc35b17ae0b9622649b7da531ae6486af + last_write_checksum: sha1:215c400cd29d4cdf97e01d582822c241495eb8d3 + pristine_git_object: 8ec76f9c1748a93cd4156cea8a388bd8c8f5e6f9 src/glean/api_client/models/insightsresponse.py: id: 8d5ce8feb796 - last_write_checksum: sha1:42fb2d6ce16fec95586da3fbdd9b7e981bea2139 - pristine_git_object: fe2ea34b3fb63a1ea876ff6fe4f5898cc22d63b2 + last_write_checksum: sha1:0ef2da23ce302022e5f8b6f2dab73c034f369431 + pristine_git_object: aa95f0f43936336805f02b14adac648bc2a9e5b4 src/glean/api_client/models/insightssearchsummary.py: id: 876b12a69ab5 - last_write_checksum: sha1:8f8d51a0458548cdeb811ef7e9f5870154d21faf - pristine_git_object: 7d44c43986b09877469c7b27fc8e60a68e5c848f + last_write_checksum: sha1:9cdac95b786fa9bbca712524e7b7c90a2f09d9ea + pristine_git_object: 481ba43c8129461b1795345febf811541a8827ec src/glean/api_client/models/invalidoperatorvalueerror.py: id: 92783a6d0aff - last_write_checksum: sha1:fc3b2265568327539ac547466f17be35c92e0941 - pristine_git_object: 4ed84420941dca5ebf2f05246fff5047d4265a3a + last_write_checksum: sha1:5903d231e24afb30c1bdf5c7dcdece23271b23e0 + pristine_git_object: e9e0ee2bfce4031bf643d9ce963b10b03b435ca2 src/glean/api_client/models/inviteinfo.py: id: ba829cd6990e - last_write_checksum: sha1:b898f6c43301f1a29341d0772bc6894abd169cf3 - pristine_git_object: 4b77213ced833030e4a56e3a14e7bea0c1d26ee4 + last_write_checksum: sha1:856c72279e4df25f89c2d438af2e958a2f576ccc + pristine_git_object: 34094c53eae9098b7a5795cd13f4fde67b409072 src/glean/api_client/models/labeledcountinfo.py: id: 35eebfd45449 - last_write_checksum: sha1:184579f4fdf58560227c8b1e673b196df952236b - pristine_git_object: ea1325bc07aa74dd5dacc581f4d473edfb1a5a12 + last_write_checksum: sha1:a4ac8cd329658fd70eb890b21fb7f9cd16c9077d + pristine_git_object: c123fd88245ed5d782c2ae83e275530c3d85add2 + src/glean/api_client/models/lifecycleevent.py: + id: cf06bd7d4f19 + last_write_checksum: sha1:486a3d0e056296ea0f81144afffdf05f007e2c8e + pristine_git_object: d30704e647640863576d70025f28fd4a1f28ef0e + src/glean/api_client/models/listanswersop.py: + id: 6df22dfa5611 + last_write_checksum: sha1:b7bc88a7995081c1a37c2bb1588037c25f050fd8 + pristine_git_object: eb99f4463abf15d7c14b276968b9df9c18d3d6b5 src/glean/api_client/models/listanswersrequest.py: id: 182308b967ae - last_write_checksum: sha1:1c27b491f15db22ed07559c4dcaabad06c88dd94 - pristine_git_object: a5479c89a2780ed1df85e491c25b8a0373af26f9 + last_write_checksum: sha1:824fcc94dd21b633c4464e9139b65035fb2c11c5 + pristine_git_object: 6868a5387ab04cc1ae7b697d90790ca3ce5476d6 src/glean/api_client/models/listanswersresponse.py: id: b7fd2c05b83d - last_write_checksum: sha1:153f4e0e1929da2d2b53c4a978dfbbcba7cb03a6 - pristine_git_object: 6afb7851f5d434a734d6bdc243d6da54bde71395 + last_write_checksum: sha1:abc77f90517a39866282b1bbebdb9cb0ff0ad1db + pristine_git_object: e92608b140a8de3049806f599fa8fe54e4961e2d src/glean/api_client/models/listchatsop.py: id: 94b86456aeb7 - last_write_checksum: sha1:0343270f16b90a8ed37728122058e7bebdad757c - pristine_git_object: 44da871239ec48a00dcd69c78f2083a5d7ab9545 + last_write_checksum: sha1:23b209b16d154e0f3bd78f85c33f7239c85eddf1 + pristine_git_object: cdd71758afcdf9af89db81c0028d65538d2f5f14 src/glean/api_client/models/listchatsresponse.py: id: 50a66bb0b05c - last_write_checksum: sha1:b368446c3b8b76bc1410340e4b0972062e4d54c7 - pristine_git_object: e10bf1f140c266ac4523d1d2fa90c81a51087da1 + last_write_checksum: sha1:eb129db5e5cf7b921fdac6359b9143b7808b0791 + pristine_git_object: 4c33ac6b11e411093153cfcdf04054b59352979e + src/glean/api_client/models/listcollectionsop.py: + id: e09e0878038d + last_write_checksum: sha1:342b62a14338d35b99b933f0002ce823b29ea17b + pristine_git_object: ad00f15cbffb1933b2dbec0fe497ff4a1062e956 src/glean/api_client/models/listcollectionsrequest.py: id: 1a996c119c07 - last_write_checksum: sha1:5b7efa6631b00e71da8ace0229327506d4194ad3 - pristine_git_object: c3b4c8365497959ed4860d0efcaaf4c42734719c + last_write_checksum: sha1:9129200407446b5ee984d4736b5f288fa85760b5 + pristine_git_object: 88e267e26f6d0adc5e6ee81b10c24d3a74de752c src/glean/api_client/models/listcollectionsresponse.py: id: cedec0f42961 last_write_checksum: sha1:2c5a2d4a11b94edcc23ae4083a4c3db6d0f1a8b3 pristine_git_object: fcca4d58be24bae30d9081726ac639c1c99e0153 src/glean/api_client/models/listdlpfindingsexportsresponse.py: id: 880bcb62cf12 - last_write_checksum: sha1:b6467c6eeade32481f87a13e73f6616d3363ec01 - pristine_git_object: c1d089b03491b7d8fca8ad2b00e43adbe07ce2e5 + last_write_checksum: sha1:d878c47568278cf5ed0b549f846c07d6e0c88b1b + pristine_git_object: 4920345fcc4ad3a006dd32b032d713c61926f46f src/glean/api_client/models/listdlpreportsresponse.py: id: c300fd0a9a6c - last_write_checksum: sha1:45d83bf83ed6b5febf4a3ced2bcb7a861502bedf - pristine_git_object: 67cf82427664b4f8de0cb2d3e357084206c74245 + last_write_checksum: sha1:1ca2655030b725401fc82df4bf6d131294f5424d + pristine_git_object: df22a92d646bca5d72ca874462ef4e46cd245f43 + src/glean/api_client/models/listentitiesop.py: + id: 06a2c7e16783 + last_write_checksum: sha1:f0940efc625659323ca06e0c1bbfa2a6649237b0 + pristine_git_object: c64939c3d9029fbd5ef6d06a1fd63341cbbc3e37 src/glean/api_client/models/listentitiesrequest.py: id: 80b3dc9dfe99 - last_write_checksum: sha1:db9cdfca73bec37221cbbc81bd9e2e85e166e2b4 - pristine_git_object: e73d1c3db0dea9dadf59fc85c6988f603e1a6142 + last_write_checksum: sha1:1001bb54755827104cbc2c94e795dad4d0538b83 + pristine_git_object: 74911f035ccc4cf3e2995f00a66200b3c13bc8ca src/glean/api_client/models/listentitiesresponse.py: id: 8cbc0b717442 - last_write_checksum: sha1:7905cb05fc0535902590f7a31323697ce8636649 - pristine_git_object: 60103f2b60949ae7749e7f5664cd39a29214f98b + last_write_checksum: sha1:5e7e8d4251e63106adcdf4bf256d55ed7b9d8ecb + pristine_git_object: 6f8be48a370fceec00ce87133f9e6d286e70bae1 src/glean/api_client/models/listpinsop.py: id: 3d0b32b3a1ef - last_write_checksum: sha1:be848b1c6be778f062ac89360bdd1df3da6c78b3 - pristine_git_object: c31a5c29dd3016f8d19f67107b8f5bd2614ba0f9 + last_write_checksum: sha1:f125f2e4c0f68f7c74225c4c6cc9f85d8eec1240 + pristine_git_object: 147e4bd94d72c9a31df92a7fd1687ce6abc34069 src/glean/api_client/models/listpinsresponse.py: id: d8ffc5ecc72d last_write_checksum: sha1:de24dc3fec981597fb7db5b5712b017857a3743c pristine_git_object: aa39d3adc17c52d5463923aa02405af36c4ccbf2 src/glean/api_client/models/listpoliciesop.py: id: be81e93eab44 - last_write_checksum: sha1:df800c729c506814967caaa17acb1e6e0d3467c8 - pristine_git_object: 02965a79b16c97d50181b0f791f4771645575ca3 + last_write_checksum: sha1:4ec9c87f64d63c1eb4e28855d516beca829af78e + pristine_git_object: d0b1cc73635af1b6d993cf26841329f04dbb852f + src/glean/api_client/models/listshortcutsop.py: + id: 299c0fa933c2 + last_write_checksum: sha1:cade0e2fc55c9774df6c3af1ca083ad252a8d655 + pristine_git_object: 8b99ab97753c080ce3ae1d09b38a9f932d138dff src/glean/api_client/models/listshortcutspaginatedrequest.py: id: 4a13f02487cd - last_write_checksum: sha1:d3ac44fbafa0b85b4c9b72b3cebfb95041c44c95 - pristine_git_object: 15ef226453eddb8c2c5c1e996b590328dca7a619 + last_write_checksum: sha1:62f506af550b18168f473a2a4df79f6ec39cd97f + pristine_git_object: 30b1e2d7c8bb25c1ff0b8ef87fb5705e32433de4 src/glean/api_client/models/listshortcutspaginatedresponse.py: id: 5ea70beb7323 - last_write_checksum: sha1:b3518eb9ee85baa796c718c23a3498381c914af4 - pristine_git_object: da0fd32a15a6a1eaea813b0f351bb400f6e4c82a + last_write_checksum: sha1:15867a78d0e32fa85137acd522e541d4e9fe0f07 + pristine_git_object: d8359a2f30439e9e813bbc38d6406177f5f50260 src/glean/api_client/models/listverificationsop.py: id: c0fd4141bc31 - last_write_checksum: sha1:46933e555a4abe0b5e8940d8775ad484e0b0d3c8 - pristine_git_object: f42c46a3c4c025edaed1f8a078fe5d78d1f08df0 + last_write_checksum: sha1:e31b71c4265848b8af683a87062c10034cf6c7dc + pristine_git_object: 16e9645ac5ecfebe78e1d640f885c2ac6ed0c8e3 src/glean/api_client/models/manualfeedbackinfo.py: id: b7e93f70592f - last_write_checksum: sha1:5e6ea5d88609eefb7a94de2de3ac54b621611f22 - pristine_git_object: 0c367d001b4dee30c0aea5877be213981485acee + last_write_checksum: sha1:7c25693c56f51c4a9789fed37caa77874f3c8a19 + pristine_git_object: 5d4bb51527f08455c22de97a0b6b23ab1bd466ee src/glean/api_client/models/manualfeedbacksidebysideinfo.py: id: 5cd6cc3b46ca - last_write_checksum: sha1:ca3094e335d0b917a8eb6064b40aa9b7e603a964 - pristine_git_object: 8b915ed7e548654a918fb36e916491e355f9fb16 + last_write_checksum: sha1:b2717bc4112725c29f9d41376e51fc1212ab844f + pristine_git_object: f0f511048d7e6766eddca8222503bfa475ae120a + src/glean/api_client/models/mcpbreakdowninsightsrequest.py: + id: 332e57fe91b4 + last_write_checksum: sha1:1b302a4ab4ac5f6c4d7f23aa00c213984b44e340 + pristine_git_object: 2893dadf9907c3784a93a86adbff8918aebf62e6 + src/glean/api_client/models/mcpbreakdowninsightsresponse.py: + id: 8d4c4b79318f + last_write_checksum: sha1:4fecec20445ede1663c33a02bbbf199f8abb71f5 + pristine_git_object: 5afd6a5c6f4462d2e2dc8fdd3500253fb820c54a + src/glean/api_client/models/mcphostapplicationbreakdown.py: + id: 1781ca7f416c + last_write_checksum: sha1:d745fe25cc993a40ccee8fad5b7f754c4f839ddc + pristine_git_object: 687302acb43204b46a446bb96d39e413e6bd674f + src/glean/api_client/models/mcpinsightsrequest.py: + id: f0987b48f7ad + last_write_checksum: sha1:d19e1383c5440b23f73e25309f41b76a648d0520 + pristine_git_object: 270fed0d6feb6dea41904c37fd9fb7ff32e2f668 + src/glean/api_client/models/mcpinsightsresponse.py: + id: bc582556e2e6 + last_write_checksum: sha1:08ba2360e6cc0330ced4adeb4198a12dbbd9f2fb + pristine_git_object: e4dd8004941b749d595393ac80f7b0e281482f5a + src/glean/api_client/models/mcpserverbreakdown.py: + id: e18a24a43b3b + last_write_checksum: sha1:128cb65d763be38b59449381cb8dc0f56d80d5a3 + pristine_git_object: aad32563131a8847abe584ca301725dbd6b99253 + src/glean/api_client/models/mcptoolbreakdown.py: + id: c4d0cf268469 + last_write_checksum: sha1:79418ead682d099a3e535fd7c5f9ccccc0ce27ba + pristine_git_object: 5fcb1924ca16d5dad4fe73daaf5465584387fd9b + src/glean/api_client/models/mcpuserbreakdown.py: + id: 1dab2bbf7d27 + last_write_checksum: sha1:d10980a038d4d7e3384c46d0ddbaf2b6b1a0e93c + pristine_git_object: ec4587ff6a16cb153f3de2a43edc1bf9ee7eec53 src/glean/api_client/models/meeting.py: id: 0b1f0fdee050 - last_write_checksum: sha1:b6428eb14f2ca49452746bfeef66d08b6f09c0ee - pristine_git_object: 6652f7670d8706a1d0660a5bed518f66dd4ffadd + last_write_checksum: sha1:d727361f35d0138e09cfd1bc1e8480afd0996795 + pristine_git_object: c3c75325b3963366f30722e868b0a315df3f6557 src/glean/api_client/models/message.py: id: d2e44a188d40 - last_write_checksum: sha1:385e3f64c58bb8746f31fb8992c5868dc343de16 - pristine_git_object: e23c15b2fc5eeb63657599d99e8d1400a4c7d1ee + last_write_checksum: sha1:2e4eb38d13b95be09550527ce132fa4fac53a8af + pristine_git_object: 9af1fc143591bce1f25e5bb02c8987d0c28f43f1 + src/glean/api_client/models/messagesop.py: + id: 60537c3f3449 + last_write_checksum: sha1:0c6da7e005f1115eb21821ae94fad6fbc1bdc2ab + pristine_git_object: 8e1735a0ecd72434644c9fd7025a168acfc735b7 src/glean/api_client/models/messagesrequest.py: id: 5664726a791d - last_write_checksum: sha1:c949aad5db81d9ccfc1030d5aa48c9b8f948ad9e - pristine_git_object: d308cf7a0b78e7beab9a4078fe3d62e6105cd44d + last_write_checksum: sha1:8c056897df7ee00748de5c8e7f580e77a620afe8 + pristine_git_object: 2076bc4f4b990f248b210ed495f793bee5be8ca0 src/glean/api_client/models/messagesresponse.py: id: 1c7a6e4dd845 - last_write_checksum: sha1:bb50a75999f42becd51f9feb466c869c63b654dc - pristine_git_object: 70385ecef6bee553fde0ac515b41cca3a1e110a4 + last_write_checksum: sha1:1d0fcd8f638347b2c5a09b544ae9b350bab23416 + pristine_git_object: d68228bc28c443824b2b73ff1c899053769a56b9 src/glean/api_client/models/objectdefinition.py: id: 96d425234754 - last_write_checksum: sha1:58659e9f1a55badd40dced7f26f838b1714b9f7d - pristine_git_object: 32a2e714df835e11fc5ed487af064a87c85c9e1c + last_write_checksum: sha1:b63817fa6c300a10905043a49f23466ff583ff98 + pristine_git_object: 65f80f05226193a90eda813741acac28ba772f90 src/glean/api_client/models/objectpermissions.py: id: 6a2561118579 - last_write_checksum: sha1:a8e544a6845dba4a08654a0bc42e4a2582b332f8 - pristine_git_object: 5515fd875a11a126043bca0e95cc7097b9448fa8 + last_write_checksum: sha1:e3d51c6afdf467afe6559222130ac627a2331625 + pristine_git_object: efe9cecc59c9206139c445c77a279b2f711d3e81 src/glean/api_client/models/operatormetadata.py: id: 820aa2772189 - last_write_checksum: sha1:a81a38638806192874a04d6e74a7b838e068c0d6 - pristine_git_object: 15308072a5809fd5f9ae5cda13755eeab60c8c62 + last_write_checksum: sha1:b172fe562b7c47bd30f87b81549863fe7740c2b2 + pristine_git_object: 09ba687a03f46086f068df7e719aaa2ba202cf74 src/glean/api_client/models/operatorscope.py: id: 143660b5a54b - last_write_checksum: sha1:dae43dc38d1554002cb9786c8440631a700202ac - pristine_git_object: 054d20054753060f029a4dc433ddbd539fff4dc4 + last_write_checksum: sha1:6848b985c4fb11d0cddf528125d95e3bb26014a0 + pristine_git_object: ebb5f578619d9698b2afab352bd015fb1192fe44 + src/glean/api_client/models/peopleop.py: + id: 0701e843e962 + last_write_checksum: sha1:b75a218c54e4ac93510c44f19dc99fa5803447b7 + pristine_git_object: ab286401ed0296450b2ba4751cdb51ccff6f5a5c src/glean/api_client/models/peoplerequest.py: id: a7dcc3001149 - last_write_checksum: sha1:d98cb6cd12b2320881e8527004c68708a4ab6d9c - pristine_git_object: 03d510fdf9794d79cc426bc2d4bede5ba4d5542c + last_write_checksum: sha1:3d45a0ac68de0c33d9e040aa3e263653808803bf + pristine_git_object: 520c04d8b03a50d6c062827eb9dde4f67057f46a src/glean/api_client/models/peopleresponse.py: id: 85f4d95884f9 - last_write_checksum: sha1:3f488c08d0f8220c4060f51349e711f426c739d5 - pristine_git_object: 27a8ebfc1984994bcbd2b8fc94bb3f3dad854046 + last_write_checksum: sha1:ed99cd7a6f88c2b90a020d44ca984544e9693cb6 + pristine_git_object: d882d545defeaa06530c915d56890293ccef94c7 src/glean/api_client/models/peragentinsight.py: id: 4b4b57287b69 - last_write_checksum: sha1:5964df36c96888119583b67317f3b41b97543927 - pristine_git_object: 85823366c0a683f5f65300f4990da02768abe2d8 + last_write_checksum: sha1:0fd438e75024952d04620122ce331e0d86aaf383 + pristine_git_object: 6b711e39954fbda467c3b1197903b777398676c6 src/glean/api_client/models/period.py: id: 41a45b1daeb1 - last_write_checksum: sha1:a982f93c7ff92d736c597217cd380fdb682216af - pristine_git_object: 0ce1cba35179a54c5cfea871e9b272d8a977461c + last_write_checksum: sha1:a90f23fbb4cd6574f0e53b39f28653fa796d7140 + pristine_git_object: 5e03da4d0ebb1324cbb67b470e6b2884abee7efd src/glean/api_client/models/permissions.py: id: f123070d7860 - last_write_checksum: sha1:e7518be97f485ff8bcc86551c1d87b3b8a63f10c - pristine_git_object: f2b2be6b0df2da3fbd236837cd11546079e348ff + last_write_checksum: sha1:3b0334bad215f8d510541690dd14c118146547a6 + pristine_git_object: 51f12fd45d92bddf1e7324b8ad76136fbbe8e440 src/glean/api_client/models/permissionsgroupintersectiondefinition.py: id: bd15f722101b - last_write_checksum: sha1:68b7bc935c2ab6939328edb640c1862a08c8314e - pristine_git_object: ef8f9d8c4c7b101f9be79b651d50c2128ffb7525 + last_write_checksum: sha1:d70645b20533b35240e169281bfc04361c8942ab + pristine_git_object: 52b20386d1215ca9d5ddf1510c569954ae510c38 src/glean/api_client/models/person.py: id: 486c8c3db123 - last_write_checksum: sha1:d0dea1f2887724c0619da4106c363692ef81fb59 - pristine_git_object: 3bca06b6718aa76af100e4d5b13ae80d1c1c0200 + last_write_checksum: sha1:277538c34f3024a5aa55ea6476e84268555c3eb5 + pristine_git_object: 24355a993c1e2b4e370eac468508ccf90242ac1c src/glean/api_client/models/persondistance.py: id: 307f87d6cd91 - last_write_checksum: sha1:11982c5da83c3f365c065d5b9016e40a82e0e85b - pristine_git_object: 8a4af8da7ced00fadc892fee9084449362fb6a68 + last_write_checksum: sha1:90c27054198a8779074839f5226724e81271b462 + pristine_git_object: e9511127696034578efc1cc3b778b87564be531e src/glean/api_client/models/personmetadata.py: id: c3af6f3d50a4 - last_write_checksum: sha1:a147004f006efa928fc97cae0f780aabcc1ab61a - pristine_git_object: 1983eaf43c4c2528b2a545d1adfc74d9eafe0562 + last_write_checksum: sha1:6a87a924b1f4c0b27b9d4f502fd339d407212da7 + pristine_git_object: 5290ba806f6e199b07b5e24ec9d8a6f88e92bc58 src/glean/api_client/models/personobject.py: id: 59af9c1e1c5f - last_write_checksum: sha1:a4827dab698dbda0b7b04da64cfb3b9aa8c9e779 - pristine_git_object: af5a73184a2e8f11aba163e65c7ee0e470fe05fb + last_write_checksum: sha1:8e37069549deee32a725de213e86c704bf1352ab + pristine_git_object: ab476930b20a2aafb05dc45a84edc2abf666a128 src/glean/api_client/models/personteam.py: id: af542996b2bc - last_write_checksum: sha1:2ae23ad0ed7fec26c20e7452ad94f888cefceb91 - pristine_git_object: 424b77bc30038fd528a9186cd7846248f26b1f72 + last_write_checksum: sha1:6e79f1a13d0e41ac17f90d0647cee212fb566d93 + pristine_git_object: f0b080d9fb622465ea1e63cb9a7df477f74525ad src/glean/api_client/models/persontoteamrelationship.py: id: d81f4d7f9bd8 - last_write_checksum: sha1:59627342985e6fd8104fb1449e8e3e3f98b3cf2a - pristine_git_object: 80b2e76cc6d7314a99063ff94db982f003a513e1 + last_write_checksum: sha1:c1dba4b3a689988ff60346d0e29e9217aeeed6e5 + pristine_git_object: e2f3055250a808a9ae22bf8732b7027c7a9c36b6 src/glean/api_client/models/peruserassistantinsight.py: id: aad2213c6217 - last_write_checksum: sha1:e1f842a81154d6600ae0a8724ff4fd326cf88d54 - pristine_git_object: db382a334c70f24e80dee0f495b47c11a733b8fc + last_write_checksum: sha1:d873cd304aa0cbe532deb0d41142b61cf993dff3 + pristine_git_object: a24e6f5d004a03a816e2e4eb13594aa3229f20bc src/glean/api_client/models/peruserinsight.py: id: a243b1a405fc - last_write_checksum: sha1:5c21169289401f60357164767600b69450e5d3f7 - pristine_git_object: dd799c08e8c717106a1f5c6aab0ff35c2f3bf80a + last_write_checksum: sha1:c36aa68a3c7ff2ba978814cec4e8b52506b21a54 + pristine_git_object: 37af149f5746dce29d909a3fb5d65b40348ed10f src/glean/api_client/models/pindocument.py: id: 77cd94d61387 - last_write_checksum: sha1:c803c5b0bb639196ae8d88ede5594b7184a8c80f - pristine_git_object: c7d9416aa21cdd10f5533212f32f2cab9f6e88e8 + last_write_checksum: sha1:7c4513c41b8d511327bc32a89750fbd48bc08c18 + pristine_git_object: 7373e05b6b268b24e1b5d91fbfa7466e3a2a2430 + src/glean/api_client/models/pinop.py: + id: 9bccdd6255f1 + last_write_checksum: sha1:d3fdbceeda27177a9c8f8b5bcffe8857a07ac1f6 + pristine_git_object: fb63cdf7183848a077fec7d668b6b4cfc544e796 src/glean/api_client/models/pinrequest.py: id: 5b14b683421a - last_write_checksum: sha1:d224bc1c6d6de1b15d87bd036d02fbb62247e1c5 - pristine_git_object: 9222f826ecc7377460c8330d8ba5b6839e8d04dd + last_write_checksum: sha1:73484002a7a37df4baaf05fd282bf904acf54cc9 + pristine_git_object: 1e291af2ba4ec81b33d9b03faad6cb8365c8ab55 + src/glean/api_client/models/platform_agents_create_runop.py: + id: f17d1b61b15b + last_write_checksum: sha1:6792547db343d9d6f264962866cadb1ae3338d52 + pristine_git_object: e99e8d10f23df59ac1a044369784acf521c747ab + src/glean/api_client/models/platform_agents_get_schemasop.py: + id: 54795e674f69 + last_write_checksum: sha1:2179f25a466baab76de315e6e736876ba97b60f1 + pristine_git_object: dbe9a0361971bfec84cba04e3c44ba7e72cd1a22 + src/glean/api_client/models/platform_agents_getop.py: + id: 606568a4c8fc + last_write_checksum: sha1:58370e345df87a242670e2cfdb26800caa6a00ce + pristine_git_object: 880c65c1e74dd49543d650516f29141c6cdd486d + src/glean/api_client/models/platform_chat_createop.py: + id: 6f911817c878 + last_write_checksum: sha1:77624faa54aaec5c18eba3d8cbe2a1f71bfa0b1c + pristine_git_object: 03ee7209ccbcf73a99bdc0123f0b86b0488df9a2 + src/glean/api_client/models/platform_search_filtersop.py: + id: 3876ec8f6e5b + last_write_checksum: sha1:0551a1836339a7b0f5dea4cf8946e001384d3146 + pristine_git_object: 2120898eda5b77bff898692d2bff7c90a74513ae + src/glean/api_client/models/platform_skills_create_versionop.py: + id: c107217b99a3 + last_write_checksum: sha1:03372f5d66b5644281f59d46b1e34f414ba75da9 + pristine_git_object: 456c48f44ff26048a0201f6bb95322b8e8422077 + src/glean/api_client/models/platform_skills_deleteop.py: + id: 1e6e56eab3ff + last_write_checksum: sha1:4d643563b5a941383e7c20853594ef5b83533f30 + pristine_git_object: de20ef64c2cd3a3e35a97e67af79d09f77e90b62 + src/glean/api_client/models/platform_skills_get_contentop.py: + id: 900c80fb95aa + last_write_checksum: sha1:74cdbdc164fd84a3e67c8bc7c5120fa792c8032b + pristine_git_object: 0ab5f56ccb9a614cd6668133e656d21933cf6eaa + src/glean/api_client/models/platform_skills_get_version_contentop.py: + id: c4dcb14a97a9 + last_write_checksum: sha1:a20b660d312781a9f0692993a412974af89587d1 + pristine_git_object: b572c850aae95fda4360194c5a93f418b661e74f + src/glean/api_client/models/platform_skills_get_versionop.py: + id: 7bdabe5943df + last_write_checksum: sha1:52c20ee7824a2e95ba651a0b161a77327d07e0db + pristine_git_object: 44312a983f333fde0d9f4694d397d6f957ae8f20 + src/glean/api_client/models/platform_skills_getop.py: + id: 6eef4158cd52 + last_write_checksum: sha1:65871de7d2ce9e19c8604336215288d3c7edf96d + 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 + src/glean/api_client/models/platform_skills_listop.py: + id: 2172706b6858 + last_write_checksum: sha1:7e9d92bd23b8072d38fc787c08d2c1d11afee1dd + pristine_git_object: 3f77419309047da04a558921ae77b447bf465d40 + src/glean/api_client/models/platform_skills_preview_sourceop.py: + id: b7afa7764cef + last_write_checksum: sha1:cc21b3ead6075cb3db6426c2329b070648cdf32b + pristine_git_object: 30dcdd72bccb0fbfafd8c74a556654fd98da0b04 + src/glean/api_client/models/platform_skills_syncop.py: + id: c6a29bedca20 + last_write_checksum: sha1:90811712776457d85a5abe880857d1aef55f0197 + pristine_git_object: 9bb229b4a6a083a4a34a0128ef0ae8b6de69caa7 + src/glean/api_client/models/platform_skills_updateop.py: + id: 48967688f399 + last_write_checksum: sha1:f68e7c13d27210e6b53530e94b24408540d4314c + pristine_git_object: 42e0aca116a2efe4c5677df642857a6d87ea33b8 + src/glean/api_client/models/platform_trigger_presets_events_searchop.py: + id: b0f92c9e51c0 + last_write_checksum: sha1:43a982dfeb43611dd5f6a8eb030d6b1471666c8c + pristine_git_object: 79b57ae0802b2276f29106841cd3f30220302bda + src/glean/api_client/models/platform_trigger_presets_getop.py: + id: d35c8c1f7979 + last_write_checksum: sha1:f74824ae6cdbd2ea35317694fbd534c20de879fb + pristine_git_object: 3003dbdfed61fc7b1721e64c0067f799643cf135 + src/glean/api_client/models/platform_trigger_presets_input_values_listop.py: + id: 7951dfdf15f3 + last_write_checksum: sha1:96dda20479e6342ac1255e6e849ae875a8dea470 + pristine_git_object: 6579af39c9914ac78cac95acd516765e11c1b07c + src/glean/api_client/models/platform_trigger_presets_listop.py: + id: 45db1bf0d71a + last_write_checksum: sha1:c0cb25954c13f3c2d00795112192102731c513bf + pristine_git_object: 5b040fdcd13d1c1df02d7fce7ab52b21644542d1 + src/glean/api_client/models/platform_triggers_createop.py: + id: c89b2acac97f + last_write_checksum: sha1:b5ecf9194888ec6b2761507bee941377a1784438 + pristine_git_object: bcea934ce9297a83f9c2dea64b85a7028d79090f + src/glean/api_client/models/platform_triggers_deleteop.py: + id: 4cc5fa5f610c + last_write_checksum: sha1:8e488be9541b1f55ff63ba02e5ce8a8bf6164965 + pristine_git_object: e3caabe56a5f10774d467da23ef58db3a7185906 + src/glean/api_client/models/platform_triggers_events_searchop.py: + id: 57bde8d65d6d + last_write_checksum: sha1:cc953a4c764d32db794cd0ee010263146936dfdd + pristine_git_object: 6ac07ec2a687d87dfe87a467de5d5fb959b6ed5c + src/glean/api_client/models/platform_triggers_getop.py: + id: 6e5e83bd3585 + last_write_checksum: sha1:4ade6bd1e582d818f8ee1fc2f0693f1b47a7316f + pristine_git_object: 892ee9941f53cbaa38221871219e4d59b80be0c1 + src/glean/api_client/models/platform_triggers_listop.py: + id: 855dd1c60f61 + last_write_checksum: sha1:9b7f95121a02bdc5c4c8775bde84f4beb6d80507 + pristine_git_object: 4eb3df404a9993d2f39df37bfb20afcdbfb6bb5e + src/glean/api_client/models/platform_triggers_updateop.py: + id: ee2002799c52 + last_write_checksum: sha1:b4e89947c50873b2b74a283fdd1bbfa852134c6b + pristine_git_object: c57697e4999df306ed30b910fd2e1d0e5007663b + src/glean/api_client/models/platformactionsummary.py: + id: 00069b22d246 + last_write_checksum: sha1:f714e076c3e0c86ded17dd732ba304dfc7d5526e + pristine_git_object: 66c767a0e78c47a85c72fbf6ee8b13d2183cefdb + src/glean/api_client/models/platformagent.py: + id: edd82e5a258f + last_write_checksum: sha1:328c481368021207acf8a57a2193415e2afd4f9c + pristine_git_object: 84a399b6340586d32288c770d5a586668c16f9b5 + src/glean/api_client/models/platformagentcapabilities.py: + id: 16d4984052e6 + last_write_checksum: sha1:69717c61750d0ce8bbc07832053a06b59f17eab9 + pristine_git_object: 099c35b707245056fc4fff0b297dc8c8c894318c + src/glean/api_client/models/platformagentexecutionstatus.py: + id: 2c3e0bdc97dd + last_write_checksum: sha1:26f14b0b81c18b0aaca73f4ac27c6fcc657d90a6 + pristine_git_object: cab8cafce2525a2626220db78c8f023a36c98df5 + src/glean/api_client/models/platformagentgetresponse.py: + id: de08c9cd1f7e + last_write_checksum: sha1:4b5e5e9fd0a8016e12954e78c56db177af5ab002 + pristine_git_object: dff409304169026967f63b216afa4cad4e72d215 + src/glean/api_client/models/platformagentrun.py: + id: 6a27f28ec4bf + last_write_checksum: sha1:04e126eefa9aa91ff20eae6156e1737fb9210774 + pristine_git_object: 26bf40035054db162a6577ff5ca9354a56bcea84 + src/glean/api_client/models/platformagentruncreaterequest.py: + id: fc8dc50abaee + last_write_checksum: sha1:3b693d6de688989dd8039d22220f21ddb277b809 + pristine_git_object: 8d669029c5a70527554b398446c7ebf444ec3258 + src/glean/api_client/models/platformagentrunwaitresponse.py: + id: 3498df9c1961 + last_write_checksum: sha1:3f8f7707d02ded94a0021b99c00e3df4223b772b + pristine_git_object: f2454eb001143fcfd5e47276ec7f9a5d7211a411 + src/glean/api_client/models/platformagentschemasresponse.py: + id: bc725034e9b9 + last_write_checksum: sha1:2f5f83536b604f36b3042b59725615a03432ef5e + pristine_git_object: 9bd08605cf43b2414f8ddd0f6cb444cf1c72df8a + src/glean/api_client/models/platformagentssearchrequest.py: + id: eb40369d333e + last_write_checksum: sha1:e3995ce3be21d708199fe323356e2d9a1d8ad716 + pristine_git_object: 0ddc45d29a02c82a54f12ef6ceec8f19761c36c7 + src/glean/api_client/models/platformagentssearchresponse.py: + id: 2c3bddef7679 + last_write_checksum: sha1:23dd758cffab6db76a051eb029776a64613a38f6 + pristine_git_object: c9f820b8a8edc25853156cf3f9a6c0b43feb1865 + src/glean/api_client/models/platformauthenticationsuggestion.py: + id: e99ec01300d2 + last_write_checksum: sha1:bac4d353a350bfed0361d6668c56efca232bd782 + pristine_git_object: 04be56b8972f39419fc27c325e9f4824a09f96f2 + src/glean/api_client/models/platformchatcitationannotation.py: + id: 50f8f46928e1 + last_write_checksum: sha1:205801bf117b3d26c686c529d0d8cb28e30a6100 + pristine_git_object: 5dd276ba7ca775a7c7f0a50e3fa7ad1228c39924 + src/glean/api_client/models/platformchatcitationsnippet.py: + id: 99f1e0941ff0 + last_write_checksum: sha1:97c26e2f2d9196f5bb6514b90248c920278eb9b0 + pristine_git_object: c679f40a98eeeaf640d6aad4584c7f48dd4f1e7d + src/glean/api_client/models/platformchatcitationsource.py: + id: c6040b8a28ad + last_write_checksum: sha1:c528f717ba81dee45b381f78e3afc7c4ef414604 + pristine_git_object: b44f4b97a5553ceb98d4651a39abbd753e03e960 + src/glean/api_client/models/platformchatcompletedresponse.py: + id: ed59f46e73df + last_write_checksum: sha1:0dd038141a88aec0d7a5838053ac167f894ffc53 + pristine_git_object: 4b32c84bd902a79b2e55da4f0e602a485a0fdff1 + src/glean/api_client/models/platformchatcreaterequest.py: + id: d6d4fc59e049 + last_write_checksum: sha1:aa28b7ef6c55c105e95ee31604f5c060b968abd6 + pristine_git_object: b596efc574a30fc43c9780d9b19dc2c6bfeac6ce + src/glean/api_client/models/platformchatcustomentitysource.py: + id: 385a56c07858 + last_write_checksum: sha1:219f6e5baa20d6954839bfc16a00a9f424fbb96e + pristine_git_object: f2ec133b16adcf53ecb88e3c1aa69ecd112b5dcd + src/glean/api_client/models/platformchatdocumentsource.py: + id: 1cd8111e3b4c + last_write_checksum: sha1:43c63d69794b3897ce38c321806a719e7957f36b + pristine_git_object: 73aad8d2edf3d1d6880e9cff3a0057b368d84543 + src/glean/api_client/models/platformchatfilesource.py: + id: 1a9d4653c065 + last_write_checksum: sha1:d995e1a8bf690e316793f4916fbca81f0a279e47 + pristine_git_object: 228194cbc7650afc2858cb8d66ee469d388fb543 + src/glean/api_client/models/platformchatinputmessage.py: + id: e32871fda394 + last_write_checksum: sha1:1ddb82a8dcac6a1943b99fb2cdfb2c464e8eab07 + pristine_git_object: 9d21d2a18e6de246b38312c05fafc8698635ac6a + src/glean/api_client/models/platformchatoutputmessage.py: + id: 15c8512d3810 + last_write_checksum: sha1:1f0846a6e9bf7c2a1b9f5ea870cb0c4f6896c449 + pristine_git_object: 9082277a0bb6b75d23c5fef7eead2aa13d8147cf + src/glean/api_client/models/platformchatoutputtextcontent.py: + id: 91b9987e8b98 + last_write_checksum: sha1:a24b36ff3c3d310f82183fd5d0c39a0182bef73a + pristine_git_object: d37425276eb8efbdd22c199f76b5448f8c9cb0b4 + src/glean/api_client/models/platformchatpersonsource.py: + id: 617b816c747b + last_write_checksum: sha1:1068fde6d156f689d9f93b799dd8b5a2fa399315 + pristine_git_object: a2e120b176b2a3d8f8d5060f5717290ffb07eda4 + src/glean/api_client/models/platformcontentschedulewebhookevent.py: + id: 9967e953a04e + last_write_checksum: sha1:c4967523e69ff60285e770e785059a415498409f + pristine_git_object: 0b1d4cff05ff8c5e659537e4510b572f763e2855 + src/glean/api_client/models/platformcontenttype.py: + id: 87e6bc168e08 + last_write_checksum: sha1:97548628abf68b0b2727ba126ce363000e8d2882 + pristine_git_object: c327d0ce5243c8fce910468c09d681a8d254ae1a + src/glean/api_client/models/platformdatasourcefilterinfo.py: + id: 30d2d116afc7 + last_write_checksum: sha1:fe1bb6ad44d39ce794c56869d659333ac4fe5ade + pristine_git_object: cd2ba67fa39dab5eb8b2490daa3872fcff56719e + src/glean/api_client/models/platformdocumentchangewebhookevent.py: + id: 9fcc235e9237 + last_write_checksum: sha1:b3b267d4ea3fcd6b46dc447e2e0dae3fda859ff7 + pristine_git_object: a1eb453df5bc9f744651211e88c82dc25a7037d6 + src/glean/api_client/models/platformfilter.py: + id: e0719ea40cc5 + last_write_checksum: sha1:a56bda496c9eb473d9aaa08426e077e2694216d9 + pristine_git_object: 2243c5535a3e7a8a76c0e7845a496dea1d97ad81 + src/glean/api_client/models/platformfilterfieldinfo.py: + id: 5be6062efbd8 + last_write_checksum: sha1:ad8f52a53b9839f63ac0f4eabc4e3cffcd6a5790 + pristine_git_object: 755b03c792d7ef713fb86ef6d119e19c8b27f116 + src/glean/api_client/models/platformfilteroperator.py: + id: f7d7bf136596 + last_write_checksum: sha1:542dab71eb37501311f1457ef804f2486cc12d69 + pristine_git_object: f0185fb9ecc077306220bae51217c1eb86018aec + src/glean/api_client/models/platformmessage.py: + id: 5124dae40c5d + last_write_checksum: sha1:e86beb4e210ed500ab72011ef90bb97b909a39e8 + pristine_git_object: 7be2c4dcb18341cfe572b18ff9f78655fb7064db + src/glean/api_client/models/platformmessagerole.py: + id: 23b3de16c716 + last_write_checksum: sha1:1c40eefcf4055e49b037d066fb1f2c9daf9afe84 + pristine_git_object: 9d7939bdf32bd515ba72c0271a3c89ece1dcb429 + src/glean/api_client/models/platformmessagetextblock.py: + id: e631f7c5ce6b + last_write_checksum: sha1:fd5a2100de1d3c81a1b455d417995da5cacdd606 + pristine_git_object: 35266bb62875116cdc79897dcf1ebb7ab600d2fe + src/glean/api_client/models/platformpersonreference.py: + id: 2ff9ab749423 + last_write_checksum: sha1:a366e67090ccf5a9754576467db2043a33e8a8e2 + pristine_git_object: 3f68797935412add6a9cbe28335641064352c8c5 + src/glean/api_client/models/platformproblemdetailcode.py: + id: 3aa0b8193255 + last_write_checksum: sha1:7f0f9bc67cdaa742e4cf4494bf2a3c29f8b58a16 + pristine_git_object: 38faf64fa45b9b6eab44800fef032e7802e33c33 + src/glean/api_client/models/platformproblemdetailerror.py: + id: ea67cf68f170 + last_write_checksum: sha1:c2f31d78abfaf8e63bd7ab62ff9e0fb281caa5a6 + pristine_git_object: 336efdc33bfb762c3b0ddfc706b8d089da3cc23f + src/glean/api_client/models/platformresult.py: + id: 65de4ed5c1b3 + last_write_checksum: sha1:b4b820992eaa454f9ac072e152204c6289e2a314 + pristine_git_object: 167efcae3bc5bd648b92288a284109f367803d2d + src/glean/api_client/models/platformsearchfiltersresponse.py: + id: 743edd99f7aa + last_write_checksum: sha1:9c6e81390c3f1665bc2d26c2e3c5face283f759d + pristine_git_object: 1d8aa68908c3e182cbc926542d39bfc45d585be3 + src/glean/api_client/models/platformsearchrequest.py: + id: f2376466383f + last_write_checksum: sha1:0255eb2414fa128be1d2369af61a6f9b9aa0fa53 + pristine_git_object: 8a3cd9bc7053b60f71b536f9f8e3593355bf5579 + src/glean/api_client/models/platformsearchresponse.py: + id: 7ee9ec06e00c + last_write_checksum: sha1:ffcd075eb5fc0308760c1ac2065ad4915cc94642 + pristine_git_object: ff13d204ece88b150c32fb69c65e266c7756b1af + src/glean/api_client/models/platformskill.py: + id: 10e1f311015c + last_write_checksum: sha1:c0225f37738625dbb6cab763be77cf5e40beafeb + pristine_git_object: 4b7e21a7eff4002f44ca69cc00ea080b152db720 + src/glean/api_client/models/platformskillcreaterequest.py: + id: 9d75227d70d1 + last_write_checksum: sha1:f6dadfcbab4b2800dd99abb6807b82b27c8c288e + pristine_git_object: 51a4dfa457c8d586441855b6d998e1cacaa4f127 + src/glean/api_client/models/platformskillcreateresponse.py: + id: f11878ab49a8 + last_write_checksum: sha1:868d0362a2eda01f274b0f478db180dc98e87f3d + pristine_git_object: 377237f5ff60dadb6f7fc705935c6ca8ae7c7edd + src/glean/api_client/models/platformskillgetresponse.py: + id: 912811bc01fd + last_write_checksum: sha1:6c3940b6104fbc71b0f37350f237a37f5af2eade + pristine_git_object: 2cc2863657b9be3256b5c40482cb492bf200f95f + src/glean/api_client/models/platformskillimportrequest.py: + id: 7edd8d2dc221 + last_write_checksum: sha1:bf8501da2bdc4a777417905a7b04de81fe2e432e + pristine_git_object: 00ca6da543a5ad48d248e87c5199b36a415e8f2d + src/glean/api_client/models/platformskillimportresponse.py: + id: 5c641d8380aa + last_write_checksum: sha1:12aceeb94df10e62efcf8438f8db1b14cf92a5d2 + pristine_git_object: 4e8827e598b98f0f70a1a8fa6d132d56e421ed6c + src/glean/api_client/models/platformskillorigin.py: + id: ac7dd2421a25 + last_write_checksum: sha1:d3373713ce852bfc79d180d5a9cb6d27d5bdd0e3 + pristine_git_object: 320c60ec3c2d46cef59742d40c6de29c43425776 + src/glean/api_client/models/platformskillslistresponse.py: + id: b031da1d2783 + last_write_checksum: sha1:45e8d141fb11032f3fd143d1818845a7eb750c3c + pristine_git_object: 7303b0519deea755bd54b5f5a42e5e0908c5c92f + src/glean/api_client/models/platformskillsourcepreview.py: + id: aeb8f137962d + last_write_checksum: sha1:2e2fd40151aff7cd3f0cb08997d66ffce8bfc314 + pristine_git_object: 084954d9baf77f4d2fe897342c116773259cee52 + src/glean/api_client/models/platformskillsourcepreviewfailure.py: + id: d825f0e64417 + last_write_checksum: sha1:89a2754dc66b98cf4e0de90cf4086d68ac014abd + pristine_git_object: e190c122137826427ae594e10c99b3bef7406e77 + src/glean/api_client/models/platformskillsourcepreviewfailurecode.py: + id: d067d38bf000 + last_write_checksum: sha1:6aa3352b520fc7e758dd238ead52f56d18facf75 + pristine_git_object: 627495d306bdf1a7cbcd446551c37a894bdd9a4e + src/glean/api_client/models/platformskillsourcepreviewfile.py: + 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/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 + 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 + 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 + 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 + src/glean/api_client/models/platformskillvalidationfile.py: + id: 840ce4c25e59 + last_write_checksum: sha1:a179e1a787bba71733234145ad88e9dd3350cd5a + pristine_git_object: 803332c18b0df9a52131e52c5004f26d53fb13e1 + src/glean/api_client/models/platformskillvalidationmetadata.py: + id: 4ad3f4ec4625 + last_write_checksum: sha1:8d1e9b5634184ba39ac109a889d35112499dfbe6 + pristine_git_object: 332170623ef54b4b09220a020f9b4d03112e77e5 + src/glean/api_client/models/platformskillvalidationrequest.py: + id: 2dc8e5ebed86 + last_write_checksum: sha1:f9b7d85dddd5e9be5055cfab81cdc3a218d2a923 + pristine_git_object: d0a3a2b4d53d722ee63fde843f4e83b695f0ba62 + src/glean/api_client/models/platformskillvalidationresponse.py: + id: 9ce3b88a9cc1 + last_write_checksum: sha1:40595cbd0cb6e9e4ea8621266432b8a99967e865 + pristine_git_object: 76af15759b1cf333367ba3f25496adae56ab0fdc + src/glean/api_client/models/platformskillversion.py: + id: a9b3f54c0ef8 + last_write_checksum: sha1:507ac67246f4d360aef9c77bc6eed79d11d82e9a + pristine_git_object: 44bae12500c45e8d2ad592f13c64cad643c9ea5e + src/glean/api_client/models/platformskillversioncreaterequest.py: + id: 1c6238ada8d8 + last_write_checksum: sha1:bac2536e701bed1e26401613f7459a6641522233 + pristine_git_object: dc1d6f9ef353396c4e525b7f62c55f14ed517c38 + src/glean/api_client/models/platformskillversioncreateresponse.py: + id: c24768d28605 + last_write_checksum: sha1:d624736af0d491420b3c7be54e7d51f117bf82d7 + pristine_git_object: 65fdfc4a456d4a73818e66a05a3fbabb28b56191 + src/glean/api_client/models/platformskillversiongetresponse.py: + id: 0adf8e67be2e + last_write_checksum: sha1:6c34d2f1102598909beecf1e17f98bd5e07f419d + pristine_git_object: 828ce5457e0a36292852e503244f1af9a23429e7 + src/glean/api_client/models/platformskillversionslistresponse.py: + id: 6ffeabf770b5 + last_write_checksum: sha1:0a3bd8c4cccd599f3fea52d575eefd59d83c7e0f + pristine_git_object: 2ae04090bb81ff38aeed222fbb2330e20d169eff + src/glean/api_client/models/platformtimerange.py: + id: bf2b03e84949 + last_write_checksum: sha1:645217a3827cd2a7455b88277f1ba2dcd4a5daf1 + pristine_git_object: 0a5acb2a9110e33b96db4e36aa09c1bf36ab1cbf + src/glean/api_client/models/platformtrigger.py: + id: 5c3b071bd50e + last_write_checksum: sha1:741572e81b11b6088c4764bd5d4e2008e0c612a8 + pristine_git_object: c354235905c7d7dedba4138e92ff2da100fd9964 + src/glean/api_client/models/platformtriggerauth_output.py: + id: afb2090fc73a + last_write_checksum: sha1:3f5774a5446a8e72ce52ef899151cd734f3eba57 + pristine_git_object: 0288980e445de6bfd6c19f98d62c63e4a4bb0a9d + src/glean/api_client/models/platformtriggercreaterequest.py: + id: d11a4c9a8272 + last_write_checksum: sha1:77412e6a290a4926ac2a1b1cc70ddd064c074e54 + pristine_git_object: d70686f2babf5c986d36ea0577a39d1ba0f614c4 + src/glean/api_client/models/platformtriggercreateresponse.py: + id: "632392221518" + last_write_checksum: sha1:0159ee031fb0d52920a5ee996fc802c8f994dae8 + pristine_git_object: f0f1a850dd346eb83826e18d131d8e571ac7fcc4 + src/glean/api_client/models/platformtriggerdelivery.py: + id: 90a60a468b73 + last_write_checksum: sha1:7101828ee6e750ae16350234e8972ec27d267378 + pristine_git_object: 84e4fb283dc8a9fc998f19e8751e9af46fb7647d + src/glean/api_client/models/platformtriggerdelivery_output.py: + id: d3848fcf9e21 + last_write_checksum: sha1:bd2442a31eb90c9bad87fd19fa4f0e31a71df14c + pristine_git_object: 5ba108c1651a0a7c257c467b9ba189076343a9ac + src/glean/api_client/models/platformtriggerevent.py: + id: 9da9f24676df + last_write_checksum: sha1:407d67c37846f17d827efd14e2b54bb112dc4e74 + pristine_git_object: 816d5babd8dff44296255e09ef674223e6cab07e + src/glean/api_client/models/platformtriggereventreason.py: + id: 1fa4b52d7d21 + last_write_checksum: sha1:2069eddfbc2916258b08488dac62d93d34df0799 + pristine_git_object: 984437d89b22051adf813bced10ad8b407b015c7 + src/glean/api_client/models/platformtriggereventsearchrequest.py: + id: a12d9a25b03f + last_write_checksum: sha1:ef2cb01810db71399032e363a7b3ce2e83ddb803 + pristine_git_object: a8f990c26aa733629f3b4d383b354bdb76a48134 + src/glean/api_client/models/platformtriggereventsearchresponse.py: + id: e64d420cabe2 + last_write_checksum: sha1:9c8ce1282d7df5d5fc91dcfc48b883a14ce0cc7f + pristine_git_object: 11179d5bdc0e4047ad89230c0b5d6318b4e33353 + src/glean/api_client/models/platformtriggereventtype.py: + id: 81de03948651 + last_write_checksum: sha1:0a60b18c68c8e992dca5807929baae8809e6d1e1 + pristine_git_object: cef1d084ad80b0c0bd5ee39971fcceb18e5ad2b5 + src/glean/api_client/models/platformtriggergetresponse.py: + id: 932df858954f + last_write_checksum: sha1:b57d9c962f0e3e1a18a913ecf5e9c3765c22f665 + pristine_git_object: ca171e8de7e7eea3a11b3b7702f408bb2896fcf3 + src/glean/api_client/models/platformtriggerlistresponse.py: + id: 0e42c35449ae + last_write_checksum: sha1:8991a1b3fb50b336d7ac62ea62a92b7118765e7d + pristine_git_object: 16bdf27f18c3ac5eada3adbfd80508096704eeb2 + src/glean/api_client/models/platformtriggerpreset.py: + id: c6916e8c8b88 + last_write_checksum: sha1:c0a09c7a33620e1975162d53cdbd2e719293e94d + pristine_git_object: a7c372a895acf96f964ca1727dda09eb9792380e + src/glean/api_client/models/platformtriggerpreseteventsearchrequest.py: + id: 9ba241010b73 + last_write_checksum: sha1:b4befaefcf96dee59741252944510be840fabeac + pristine_git_object: ac214e062927c1a0c080d5d4274e24230899731a + src/glean/api_client/models/platformtriggerpresetgetresponse.py: + id: c7c32a376aaa + last_write_checksum: sha1:52985b19b8be2adc1bedbe14deeee8c8d6f7d0c0 + pristine_git_object: a5b185f33bd4d68228b6904fd1868a5a9e0d954c + src/glean/api_client/models/platformtriggerpresetinput.py: + id: 05ad6ccb0653 + last_write_checksum: sha1:69b3c9306c65b037e5cd5c58cd443eb3ba3e1565 + pristine_git_object: ebe2f2240d97ad6b416268c4bd5df602a824ae63 + src/glean/api_client/models/platformtriggerpresetinputtype.py: + id: a49815e9d095 + last_write_checksum: sha1:50bba9278f596b1700f74881b8d6a6c4f267305b + pristine_git_object: 2697c7d54e58d37f48b1633f0ec1c9a5996cca26 + src/glean/api_client/models/platformtriggerpresetinputvalue.py: + id: 5345564e839c + last_write_checksum: sha1:655d2fd769bab34e13669b58b5c73fb956d9f3ec + pristine_git_object: 0e3bedde7b0c8283b546ce4b4ad8717427bbb8ca + src/glean/api_client/models/platformtriggerpresetinputvaluelistresponse.py: + id: b1cef62c38a8 + last_write_checksum: sha1:ae83380b43c871c2d13e7faf165778ec5333204f + pristine_git_object: d3a2336f945a1f5e9ad0be5622960425c4a94238 + src/glean/api_client/models/platformtriggerpresetlistresponse.py: + id: af06a9ea071d + last_write_checksum: sha1:e2f8f394fc704ffdf8ee91507b2120f83da24b0b + pristine_git_object: 60c4d72bc4382f3a95396e971584a25c7c528610 + src/glean/api_client/models/platformtriggerpresetsummary.py: + id: 3ea0384dca13 + last_write_checksum: sha1:e536d737c0b5493b1db48616119348b957ae1d66 + pristine_git_object: 64917154f171a2b1c4a617599d8e0cb220f0a8de + src/glean/api_client/models/platformtriggerstatus.py: + id: b50f5721d508 + last_write_checksum: sha1:d96648687316249472f6d1417db1a0a941df04ce + pristine_git_object: 0c789c9a5c0bd295a19cf12d8dd3f929bb3042b8 + src/glean/api_client/models/platformtriggerupdaterequest.py: + id: 91dbd3e53881 + last_write_checksum: sha1:22d575e744eff6e20cefcd3c0dc4e84437331c43 + pristine_git_object: 7dcbd6a275b49e1ab02477079becfa9474622bb4 + src/glean/api_client/models/platformtriggerwebhookevent.py: + id: 54052878b616 + last_write_checksum: sha1:f2741b9f076567225c44a6e78963c682ed076b96 + pristine_git_object: 70e79cb4a4f378290fbf377ae7f18b78e5183f56 + src/glean/api_client/models/platformtriggerwithsecret.py: + id: e0f28c4af07a + last_write_checksum: sha1:e1035b1e52647d0cba1a2d784e92e70ac9ecd425 + pristine_git_object: 43b0b789a24961eaf150cd49ac1fc4aedeff3281 + src/glean/api_client/models/platformwarning.py: + id: b99ca6ee1c74 + last_write_checksum: sha1:4e82a608e924c72338481e61b2e51fec9e447605 + pristine_git_object: 3f5ea79c0debd518f17935277fe3e3bd3e6870b1 src/glean/api_client/models/possiblevalue.py: id: 6046129b9c7d - last_write_checksum: sha1:e9c4cf04a8f5bb461479d013e2a1abc40067fa5b - pristine_git_object: 8ce8997e646edf9dddc15cfc5928604da5014b49 + last_write_checksum: sha1:4495a1288f312de877f9bcaa547f35178119ca59 + pristine_git_object: 1881d2039a7b9e4f08c6af33c908a78f051033c1 + src/glean/api_client/models/post_api_index_v1_debug_datasource_document_eventsop.py: + id: abd99421d713 + last_write_checksum: sha1:4f1a7e19b1e2f176074443316570065706fe7cbe + pristine_git_object: e9d136d3d5ad8d8b3ab9b40b9e9761577fc2023b src/glean/api_client/models/post_api_index_v1_debug_datasource_documentop.py: id: 9259c6838b6c last_write_checksum: sha1:dbf680ef7ef2bd63047e7c641dada0fbaeedb4a3 @@ -4137,586 +6155,674 @@ trackedFiles: id: cca19ec9ccbc last_write_checksum: sha1:162556173141c864ffe20c43d34fa1f359f4f646 pristine_git_object: 79c5a3b12381321be26a7d703e00aec02583a2e3 + src/glean/api_client/models/post_rest_api_index_submissions_datasourceinstance_type_op.py: + id: 1c42ebcd3904 + last_write_checksum: sha1:119f73ac5d71f0bcaacc57249826996244d8122a + pristine_git_object: 93bcbc0b2495f59d24b9f75a8e68c47fcd69e55d src/glean/api_client/models/processalldocumentsrequest.py: id: eca970f6b17d - last_write_checksum: sha1:f2f32126910b26ffe57c48fa2d2004b23e1f49e3 - pristine_git_object: b06f9338b7b1d1283ff8e7642490bc2f67267cd5 + last_write_checksum: sha1:1f8d977cd86106f1205fccbd6f7c8898a6276217 + pristine_git_object: aa29557c7b29a299b1d195dbd21d60b60672f2e4 src/glean/api_client/models/processallmembershipsrequest.py: id: 237c53ded9e1 - last_write_checksum: sha1:d7ed9c8c1ba72e2167603b32eb2c61433785fd3f - pristine_git_object: 30d55883d462e012a4b0b7032820aa6291462357 + last_write_checksum: sha1:1d520decc6fa8c1bc8960a6b3443fa4d8c33232e + pristine_git_object: f1bba49df88d0d730d9ecf83257dff950d6acf8e src/glean/api_client/models/processinghistoryevent.py: id: 87811e111132 - last_write_checksum: sha1:214caa1d9a44958404a849156ab4f941e3744dab - pristine_git_object: d8939795bebc089cea1cb0fd5479e452bac19385 + last_write_checksum: sha1:c7dd17b990ab3f56b5f817e397e672f639ad5920 + pristine_git_object: 61b4c04786eee4c0f2e8a864f6eae2564444236c src/glean/api_client/models/prompttemplate.py: id: 349206a29c89 - last_write_checksum: sha1:2b662b590915dcec7ac367106c516e56bbf7db86 - pristine_git_object: baf554b97b0f8119a8b59ece42d2e3e9c7a8d74f + last_write_checksum: sha1:2845d4ff5af26c13353fcbd8060e37bfca043195 + pristine_git_object: 90327467d4d0d687879f460836a2a714abf3f071 src/glean/api_client/models/prompttemplateresult.py: id: f4c9cc06db98 - last_write_checksum: sha1:efd1f96ae1725f49f2f3ed26c404c69e8adf1f74 - pristine_git_object: aa0dac52a686d97d1b8dbde75fed0c5981012989 + last_write_checksum: sha1:f177b5c594718d1f96f33c8dc4b38f6ead291ff9 + pristine_git_object: efd9ff4700d2bcf26b3593bb40b1d34f6ce6e4fb src/glean/api_client/models/propertydefinition.py: id: a5640d2ddbc8 - last_write_checksum: sha1:cf8cc5cca828667f2768d2d670487186295a8d09 - pristine_git_object: e7270834333609853bf3e21b0df9ba9a4bd23b9e + last_write_checksum: sha1:670a6b36041422f5f8223026c11d665dd3b838eb + pristine_git_object: 6ec503a239bc42d07faceb158b6b8fc2dd665a70 src/glean/api_client/models/propertygroup.py: id: f592edab23dd - last_write_checksum: sha1:ee9126829cc3acd7e8af7c118d04d26ac12d5573 - pristine_git_object: 8feac9642ee2bca2fed413755f141c6dc385459f - src/glean/api_client/models/queryinsight.py: - id: 6d820a6a97eb - last_write_checksum: sha1:583fccf26b241bbd1155ab7d0ed8fa04f08b2856 - pristine_git_object: 9f3f0adc894d602d5d95db9748ea42f9bc6dc615 - src/glean/api_client/models/queryinsightsresponse.py: - id: 3b974bed9a92 - last_write_checksum: sha1:e3e2a417626c7cecf151ee72ab46ea59213e0075 - pristine_git_object: 42d2d68cfa573ec02ff347cbdc5ecd811686652b + last_write_checksum: sha1:7a2c704e758bd2703ea9dab202cb663e2784429f + pristine_git_object: f3ed0cfdf6036135f807e6a2d882b2aace08cbde + src/glean/api_client/models/put_rest_api_index_custom_metadata_schema_groupname_op.py: + id: 0a4f9b623706 + last_write_checksum: sha1:651bddf0bd127dbcf32ef23fe556ccb9fa4c8820 + pristine_git_object: 8f79bfe0d3fdb950317b227ebb5384b92487c236 + src/glean/api_client/models/put_rest_api_index_document_docid_custom_metadata_groupname_op.py: + id: 17d516f20862 + last_write_checksum: sha1:fe372f873fcdeb87af1acaebeb499c0d204f1eb5 + pristine_git_object: b8da6cec25c11e6b49e475e53fce749418710563 src/glean/api_client/models/querysuggestion.py: id: d999a3a9d983 - last_write_checksum: sha1:da0418895211c2e828e53471708c5c51b72e01b0 - pristine_git_object: 6d86ded6094ccf1180f767caa37060632496b457 + last_write_checksum: sha1:d43fb0420b33b016822529d740992d7a5d8274be + pristine_git_object: 39b6d5e513142fa23df9103d52e52a1b2df3632b src/glean/api_client/models/querysuggestionlist.py: id: a0b2d6cd9e8d - last_write_checksum: sha1:6f14742e4c4d4ba2893938762bbf48867ec8520b - pristine_git_object: 8d5b0fedd461aa35cb427bd96d989accb305401b + last_write_checksum: sha1:9579a516d26837e13e185e9e996391d9f8e8ed55 + pristine_git_object: 8723c878c36f42f2c72654b5c752c0b366b5b50e src/glean/api_client/models/quicklink.py: id: 0304461c2f90 - last_write_checksum: sha1:73a95d53165429d3ae1fbe1d277508c5ed9ff94b - pristine_git_object: c09aa6902d2d9e6b3ee445d94603119b95ef144b + last_write_checksum: sha1:80359422d1067bb6718c30c71c371929cb2d85b9 + pristine_git_object: 75045a1ff55daf62bf893cbbb5a52a4287942806 src/glean/api_client/models/reaction.py: id: 076b69450df3 - last_write_checksum: sha1:2bd284435e0682453900e4e469d46fd35e3206a6 - pristine_git_object: b007a2c3814facaf269acf13dc389951f2a5e800 + last_write_checksum: sha1:d4a5a1c380a3b4caf64ad3377817376a21071ef6 + pristine_git_object: 40dd0af419479f13e301768f57172ba163037a49 src/glean/api_client/models/readpermission.py: id: 13410259df92 - last_write_checksum: sha1:69f14e4c3ffb661db72ee3f42bbcae8226fbe8bc - pristine_git_object: d7f46af0205d999fa3f81b53b4952579c788be68 + last_write_checksum: sha1:0f5edfe09499050d43d1e50357025eb98516e251 + pristine_git_object: b82781fdc48bac49fc6adcede9a821d4d0874a59 + src/glean/api_client/models/recommendationsop.py: + id: ee5dd14cd496 + last_write_checksum: sha1:4bb0c267213c83cd9fbe74dd460ff03d1373a3d7 + pristine_git_object: 02f83b74189ebfdf73c92a7f45ad619b87cb4df8 src/glean/api_client/models/recommendationsrequest.py: id: a520b92b656f - last_write_checksum: sha1:8b506a1bc41e78204e66aaec006ea8e090dc0b9c - pristine_git_object: b402c15e8636b1380201f0fe64ebb0e52fa774ed + last_write_checksum: sha1:d6d5b9faae629d5a6112b9e3da7cd4d6552d7953 + pristine_git_object: 507d92fa93023593dca8dc8bd3bfe3796f20af5d src/glean/api_client/models/recommendationsrequestoptions.py: id: f4240d7e4353 - last_write_checksum: sha1:7495a32baa2fb2a45952dea7a11cdbe71117334f - pristine_git_object: 1411a418e984b98e78374d3250770f0687707861 + last_write_checksum: sha1:ac1ad1caf79117cb8c5b742731a05bd185711c11 + pristine_git_object: 162c9f7685718a17f9aa40e0bcd289551b34750d src/glean/api_client/models/referencerange.py: id: 99d8cc67073d - last_write_checksum: sha1:4ea5ab0c43ca7bbce54dabd823801d8b8eb05f48 - pristine_git_object: 453716364f6c5e16e5978989b587a594230a309f + last_write_checksum: sha1:51fe4767defc867fcce553a39cccef816a6e0e0a + pristine_git_object: 851c90fafd1ed4ceda5edc31cb61157608a4ebd1 src/glean/api_client/models/relateddocuments.py: id: "956195080413" - last_write_checksum: sha1:5ec870b562eba40c1f643eb7a2a540e7dcbb75d8 - pristine_git_object: d19b3c35c254f253699b038024afbb0c60bc01b1 + last_write_checksum: sha1:6b452cc2d10c4c7981a46c4c398a84dd08d12bc7 + pristine_git_object: dd59157988a53eb0383142ced28ee17d30ec78a9 src/glean/api_client/models/relatedobject.py: id: c8937c435039 - last_write_checksum: sha1:420e9303bf60fc927a99d5efda0174d8565d1464 - pristine_git_object: 621be80f72da95beb1dcb591a1f77df0cf90c30e + last_write_checksum: sha1:af8f0e69f54b6dae715a0ec62eb1faf21f931856 + pristine_git_object: 94a1515c39e6ab1ff3120dab4576195df637d2cb src/glean/api_client/models/relatedobjectedge.py: id: 73ab27238170 - last_write_checksum: sha1:d4c219fcaccba36bc7238dc91cc4ce1aa9ec80f0 - pristine_git_object: 06d322ec14b613cc6820fe932a9b402a8c5d748c + last_write_checksum: sha1:4291bddffff01dd38c0509314714fd6b483fe935 + pristine_git_object: 6a5b09725efd25c6ca0684b4db6b962790d12d74 src/glean/api_client/models/relatedquestion.py: id: 7a4bcc49206c - last_write_checksum: sha1:74212dc6ea2f7aad6ee41dae6239fc1065cd0c0b - pristine_git_object: 2985a98da9ec63bd43e438031b09eb85758f7447 + last_write_checksum: sha1:46f1235014e4f384daaefeb1b398c572ade0f00a + pristine_git_object: 0bd513ec01b8dd34acdf5d6c82baab1e7150edde src/glean/api_client/models/reminder.py: id: fa39219753da - last_write_checksum: sha1:2067ecd08245b58ab90b3df36353ff52dd9b75d3 - pristine_git_object: 1e17c7f38e7c82f9e28495bcdc5b6dfcd722f4f8 + last_write_checksum: sha1:9c771e2bf1f3187443201deb26161e3ce30f42b6 + pristine_git_object: 8a084dd759778243af1f96f3980d9c46fa228a0e src/glean/api_client/models/reminderrequest.py: id: b74a3f389e9a - last_write_checksum: sha1:33cba2df513b4f5bbacc8c2d4e4eb9d84b929157 - pristine_git_object: 855c5d797dccc26941b6c1324cbf04a7784fd2d0 + last_write_checksum: sha1:fd9a85afc919d58e42c3a0dabb32c75f13a56576 + pristine_git_object: 5f4e8c646b852f53287e854716e5ddf76e60f7e0 src/glean/api_client/models/reportstatusresponse.py: id: 772284b8ed0e - last_write_checksum: sha1:5139c334ad8074d6c40bb0d1b16d8c993eabd3d5 - pristine_git_object: d98e5ce24c8695a846bbe528e781564c23219736 + last_write_checksum: sha1:6bbd579bf04952878b62702c53ac089940b09314 + pristine_git_object: ea27cecbdfb8bf2dff2b4062579aa3fd70d9c580 src/glean/api_client/models/restrictionfilters.py: id: 2fb7b9c3c114 - last_write_checksum: sha1:9bbc9f24e9f3bfe43c86468548eaef947a8463f9 - pristine_git_object: e52edc96e90bf7eb692b62a832cdc0dd40b7b139 + last_write_checksum: sha1:0c2fb811b3872765eb43b50354d5134c63d31bda + pristine_git_object: 2e649d73bb1a3382337ae1f2f0be2ca96cabe839 src/glean/api_client/models/resultsdescription.py: id: 15c668146af5 - last_write_checksum: sha1:5c35497d188bfa7e92d4226426d1e4989f1c848b - pristine_git_object: 4d75b71eeddd3da2121bd91becc170f6d372e17f + last_write_checksum: sha1:9b06335149d9880a28c945e60ebecf497b3e78d3 + pristine_git_object: 7c8140e5c18542cb5b7b13c7f4cf734013d13ac5 src/glean/api_client/models/resultsresponse.py: id: 64338eec2f88 - last_write_checksum: sha1:97dfcf0c09c6cc73eca83d1c186091a64376cf12 - pristine_git_object: a2cd00c025289d05f187a57da16cb85c00436d60 + last_write_checksum: sha1:9de171e1987517e200acfb2f98d957ddbe939631 + pristine_git_object: b6ea890230d3c9255ca137b3e671f70f07c672d4 src/glean/api_client/models/resulttab.py: id: ab5996a4e338 - last_write_checksum: sha1:aeadd7d25632241dc15344b654ea5426a29a00de - pristine_git_object: 89afabda922baf7d513077fd86fcd5e35a650b5b + last_write_checksum: sha1:47e64ce6b2f42edcd5e311218791fb375f9752e8 + pristine_git_object: 3683f422ddd5b3065454a5a14ccb9639d96dbc9e + src/glean/api_client/models/rotatedatasourcecredentialsop.py: + id: 52c9d892f054 + last_write_checksum: sha1:73f9c6365b506b3c22a7c1c46765a950c7481abc + pristine_git_object: cb55450183516763266b676d597abbd729355f15 + src/glean/api_client/models/rotatedatasourcecredentialsrequest.py: + id: a574c4265375 + last_write_checksum: sha1:62d98c94a9e66f4b4bcd6f3ba2e6b7ef0e5b553a + pristine_git_object: e9dfdd442b5dd8e6a0caecf9079dfaecf1f05d2e src/glean/api_client/models/rotatetokenresponse.py: id: 77a67fdbdad9 - last_write_checksum: sha1:ecfdbb9cdd7ad61114bf2afed5fa52eb18e6e09c - pristine_git_object: ac4281c00dd419f958975520a748817e0af6ae4b + last_write_checksum: sha1:70fa60be71c4eb8e04999ca6d84b9e72cea19540 + pristine_git_object: 723b5b9c9e2e7ba03737eee2f019a3547385f027 src/glean/api_client/models/scopetype.py: id: 2f48507a9410 - last_write_checksum: sha1:d460ea7e8d17a038e43c2eb26ce16ac276140d87 - pristine_git_object: 3f3b0004bc5152c445ae5e6b2a52e3a2d416d9fe + last_write_checksum: sha1:4245fb548034949fad3ffea8f6afa5ddea1ffde0 + pristine_git_object: e45814ba47a94bde527ff4fe6f216224211eb3af src/glean/api_client/models/searchagentsrequest.py: id: e4777828bb53 - last_write_checksum: sha1:304fec4d49f1ea5033de379d68809ee463e569d2 - pristine_git_object: 4d307075f24e37f45f12a45ba8e4b7efaf7701fe + last_write_checksum: sha1:49a2951cc53859434c49bfd408bfb8f20be732a3 + pristine_git_object: a66f7d033ec65907f16edeafe241698a99ef93f9 src/glean/api_client/models/searchagentsresponse.py: id: ab538c03a9e7 - last_write_checksum: sha1:78cb08b2b8368185e15e940502493264d58bb8c9 - pristine_git_object: bd830265ca4c50f5ae03d63862fe17860b3214f9 + last_write_checksum: sha1:966d23f457caf948ccb9c3146c896cec9aeee922 + pristine_git_object: 9e6b9852b797e99e0b0fdacddc14e29c0a9b733c + src/glean/api_client/models/searchop.py: + id: bf0e9fa90f9f + last_write_checksum: sha1:ceb0ac07f9ef9da3f864de222967630d84295626 + pristine_git_object: d1dd1a5c5cd0cbdbfec3d1b71a11e1c5172eef20 src/glean/api_client/models/searchproviderinfo.py: id: b68ee1b0b172 - last_write_checksum: sha1:dbdb233b30d1d36cd5f3d5a57c7861d3db906162 - pristine_git_object: 2fb5dba9f63deea194bdad0e7316e11b861fb20c + last_write_checksum: sha1:7eb4317de4570eac02a377fcd3f6d15533390667 + pristine_git_object: 84921983d237d16b44dd1746590d7a78dafc818a src/glean/api_client/models/searchrequest.py: id: 719f98a441ea - last_write_checksum: sha1:82b7a94ec19cda53d43dbc608448b66a8fa2c0d5 - pristine_git_object: c4bb5a38a24f9751eeb4724f4603911dc525b40c + last_write_checksum: sha1:0b58de889fe0fa092d1457860a54e3a377ab22c5 + pristine_git_object: 535df87596e62767f1f8499a01547f754786078f src/glean/api_client/models/searchrequestinputdetails.py: id: f9016fc47ba7 - last_write_checksum: sha1:4307b048644c0283269d083dae98ac974624f1d3 - pristine_git_object: 5428f95188afe9bd410d2185aad46baed7df1d74 + last_write_checksum: sha1:9590af880bb1d81811808c2f319899523e12fabd + pristine_git_object: 900e4ff23c51d2f7b4182a92cf04782761914c3d src/glean/api_client/models/searchrequestoptions.py: id: c7963bd59328 - last_write_checksum: sha1:3c0a2551155f092373e51330747ea6c802a2b1e7 - pristine_git_object: b56111c5f1236081feb5140abb4cf5d427ff89aa + last_write_checksum: sha1:fc025a6e49aaef42f90f7287592799e53d479ab1 + pristine_git_object: f5006c08f5f60180cb4c99ef4c37855f4d4a0893 src/glean/api_client/models/searchresponse.py: id: d705ad40d03c - last_write_checksum: sha1:c298651709f7cd062f3811cc5759071fe07a8a69 - pristine_git_object: 1e585bed4ca045a3a5c5d0378adaea626b6ebe17 + last_write_checksum: sha1:6cc100f27205541e4ed49ea7046c303fe13b2963 + pristine_git_object: 0135246be23f25b95e11d3d167095e9707730cf1 src/glean/api_client/models/searchresponsemetadata.py: id: a10bad5e36b4 - last_write_checksum: sha1:2a2f2b4846bb8bd7b536ebe55a56972ce8b32ccc - pristine_git_object: 5cc7eb2eedfe3c9bf8d28174768ffd81d8dacd4d + last_write_checksum: sha1:ee67e32b1b616e61867bcc09e81346be64296054 + pristine_git_object: 0d4c2a385af0f5da372d8a647d591ccb6e9468a2 src/glean/api_client/models/searchresult.py: id: 80390a0977b7 - last_write_checksum: sha1:e696f9c9aced216b6946d96b7415b723c1509695 - pristine_git_object: 7f657c68a352f349d93083503d1f85d66cc7c348 + last_write_checksum: sha1:8ef2dd214f3e8c975ae28bfd7432e871f2b6d449 + pristine_git_object: 9bcd86392b024ba6a7c5b4727cc5b88198fe860d src/glean/api_client/models/searchresultprominenceenum.py: id: 611302793a36 - last_write_checksum: sha1:4225ab438686c0ad0beb7c0f11bcb523a01e3e67 - pristine_git_object: ddf2e8f1cfe9e3860a5753d118bbde9bbb3ed34c + last_write_checksum: sha1:75da9f35ae33d71515f58654134b6d614f453ecf + pristine_git_object: 27ef471f64a9f280f3142d2f9b825c0058b2c365 src/glean/api_client/models/searchresultsnippet.py: id: 70ba81075b57 - last_write_checksum: sha1:a7450e720c6d1626bff0032ac8255d2cad10b94e - pristine_git_object: 4b7adb5c895ec700d0579f5b8cfc202add790152 + last_write_checksum: sha1:cc85a1cd95b1f93826fc1d45d0e6f555ca17ecb2 + pristine_git_object: aff7d94f9b899037827b4af40b273915ca8c99ce src/glean/api_client/models/searchwarning.py: id: c2eca228f00f - last_write_checksum: sha1:0a4ad320487dfb2abeec5e3a4c0a8d7de36b752a - pristine_git_object: decead16f80d8cc5f592ebda8a6eac47f9013888 + last_write_checksum: sha1:0a2bcceeceee257d807202e5def6d83dfc85e05e + pristine_git_object: 79a0826de8a9db054081f8b9cdcc3831b1735dbb src/glean/api_client/models/sectiontype.py: id: 9b5de392015d - last_write_checksum: sha1:6bfac99bee31c88303dbda27576b7f283eb0eabf - pristine_git_object: 2dbb489e5e57896b6bac27ee2e7aa6d9b6acc986 + last_write_checksum: sha1:130b8a1f543787e1f3f63915036bcf448ec52ceb + pristine_git_object: 59fe1bb6ae5db2711599be0bb64971a8a8aa4c9f src/glean/api_client/models/security.py: id: 79159407101e - last_write_checksum: sha1:d6eec3a1ca1d3a71d6c2ba5d89d45b6ed644bb9e - pristine_git_object: 1a757df267f6cc75b67c61b244732b463e3c9429 + last_write_checksum: sha1:8969db847e8b331204e2b1eaf5e1bc16c54048bc + pristine_git_object: c248ffd0c4139a8d90f3d9e90af34490f940f7c7 src/glean/api_client/models/seenfeedbackinfo.py: id: 6a7a196ed797 - last_write_checksum: sha1:66724e29beecbc3d9f6c95af06e44e9078cb5d93 - pristine_git_object: 8293814e93f7aa55389d15b9925e0a422ed3d4bb + last_write_checksum: sha1:31b5cbaf866e30162e40c35ec7701fb8e0045e5c + pristine_git_object: a5ebcfaa179fba1405e7aad53f24fcf9acb58110 src/glean/api_client/models/sensitivecontentoptions.py: id: 156ff45324dc - last_write_checksum: sha1:20b3a59a886ec8658ed0c6824b74d30a04a958ea - pristine_git_object: a049695467ab8ce15eae79f87934960e3a39cd95 + last_write_checksum: sha1:54cefb7a0c7833fe1047b9f2dd1320ed3dc059f5 + pristine_git_object: 9c337af1b714eb5f38a87ab7f67baa8cbfd3edd9 src/glean/api_client/models/sensitiveexpression.py: id: f2d93e2a2977 - last_write_checksum: sha1:ff579b2754d2ea3f9e8fbbc8e35c47e929bf09ae - pristine_git_object: ddc4bf2e43c37f93aead49b02339dd7780d077cb + last_write_checksum: sha1:8b4146543b62a90884a429e0b8c1fab6f04b2b11 + pristine_git_object: 4f4970c317e5e47b92aecb2b35e6d6976807a2d4 src/glean/api_client/models/sensitiveinfotype.py: id: 6d9d1a461507 - last_write_checksum: sha1:43f6a4428b0b09f7c49b25b87bdba269eee48dba - pristine_git_object: c1469c0047ba844b2c221db547f5f041b2d72ea9 + last_write_checksum: sha1:46bfc2535d5d097c56a89af5e3c7e966d4760d45 + pristine_git_object: 61ec44733bdc5ae0deb7b9c710f42b67246990d8 + src/glean/api_client/models/servertoolrequest.py: + id: 68e8f4700c18 + last_write_checksum: sha1:b5e17e1e4bfaa80ea7d67de11eeb9a330ef2134a + pristine_git_object: 2e1f8e5351447ffec48f4f640f0c4fe0637f58fb + src/glean/api_client/models/servertoolresponse.py: + id: 48123cc8f7a6 + last_write_checksum: sha1:b4df3fbbf54189a5896bd50a4001050d3263d236 + pristine_git_object: 90ec004987f466c63a193d05eade090fa4f90dc1 src/glean/api_client/models/sessioninfo.py: id: 4127a11bdfbc - last_write_checksum: sha1:0145413faf4c697540b04e263415f174ca9aff6a - pristine_git_object: 02af4fd3109869d615ba87f9162501bf333a6460 + last_write_checksum: sha1:109e98c476f5bf747e35b7051e2702961c518167 + pristine_git_object: 0a0ab5212d819022274b18bbd66874850c679af3 src/glean/api_client/models/share.py: id: 39287bae7e7f - last_write_checksum: sha1:39f4c3a0ce53ad0937ba7a5a2dbbfe74e95fda1d - pristine_git_object: e3e68d45117a23918e298ba50674ae8b0e48a324 + last_write_checksum: sha1:7baf7314be3c109a90756455cd32f420ca2ea823 + pristine_git_object: 3356d1fb50d14a4d11fe4f7495add5cd422cf7ea src/glean/api_client/models/sharingoptions.py: id: c757da755d4e - last_write_checksum: sha1:1627aa7cacd0ce4b4a1bf00de0dda2473391f3e6 - pristine_git_object: 9942a50481812391e8e762e17dbff86925c5793d + last_write_checksum: sha1:83b965766c7df4a7b84c3eb9a535bae2c7207819 + pristine_git_object: c6ffe6942fcc6f6cbb8aaaa146c5871f8f4d7ddf src/glean/api_client/models/shortcut.py: id: b40331355c7b - last_write_checksum: sha1:0b0ef90b117f909fb613e7b480e362132dc29b2c - pristine_git_object: 629d64b1a166c3eff6d60f4d4a02a0472af438ce + last_write_checksum: sha1:bd116933fde8e359b21dae6184e29f63841c775c + pristine_git_object: 6038fd52a4bcb3f9c1f26460bf09ceb7e247be3d src/glean/api_client/models/shortcuterror.py: id: 2f86c1d02a49 - last_write_checksum: sha1:5e30ab33349c52da1993f56ad901d15936734c18 - pristine_git_object: d7bb10baa2dbe8953603ee35629f22f958889505 - src/glean/api_client/models/shortcutinsight.py: - id: 19ab98d2f825 - last_write_checksum: sha1:1bbd63fb1d383af862902c2134807011fccc9a05 - pristine_git_object: c22aee3c26ad6bfd3c91ee87f51d79bfc2d66fca - src/glean/api_client/models/shortcutinsightsresponse.py: - id: 0c48ea372058 - last_write_checksum: sha1:e0147ea76f97ca3cd13ee355d25cfcfd4cf16be8 - pristine_git_object: 6371ed3f70a1c56d651d2f8d15a0b00acd3dc494 + last_write_checksum: sha1:9fe0fd6f8ccde62c2d2eb8eb01e0c56cbfe5a1df + pristine_git_object: b4922a4c5c1d6f564bab4ecdf3ff0823225aafd3 src/glean/api_client/models/shortcutmutableproperties.py: id: 16671c35b7ba - last_write_checksum: sha1:6754a78cdc08b00288aa246c8a109dc099ce7e2e - pristine_git_object: 0e78fc48b9898bdc0c672603253694b8343c88d9 + last_write_checksum: sha1:2fd1fe7e2d31469e380ae47fd7fc62213c9e24de + pristine_git_object: a70757ead51012662c34111b312c65df755b7990 src/glean/api_client/models/shortcutspaginationmetadata.py: id: 84d3ffe2fd5f - last_write_checksum: sha1:ceac504ab0c1931763da74b25d9c74b826307523 - pristine_git_object: 4e7ce4a45dac756a89cf603feda0c0c5e2ccaa18 + last_write_checksum: sha1:ec6b065434c14409bfab5041e0ab7b062f672b17 + pristine_git_object: dd14f76d91c1c9ae65d19d617726b5f2fc4837a8 src/glean/api_client/models/sidebysideimplementation.py: id: 76cfd351a2aa - last_write_checksum: sha1:6267db263fc4f8785363c08e8bf52c23986fe9ff - pristine_git_object: e10986c3395796889b19307e54703c9363939eb3 + last_write_checksum: sha1:f829edc84b796610597ed5497f7b670517ee9f0e + pristine_git_object: 2df5ff06886601073ff704d1af1176ab8bb8d9a3 src/glean/api_client/models/socialnetwork.py: id: 7d186cb460af - last_write_checksum: sha1:fa2b37de68aaadb64b37204084e2a1bf5efc708e - pristine_git_object: f2e3e570d456a905f5d9b625b508644aa286f432 + last_write_checksum: sha1:009db644209b7aa50fce2b7b061442d74364d0d8 + pristine_git_object: 6540572a0892130ab3ef3210d038663d93f68000 src/glean/api_client/models/socialnetworkdefinition.py: id: ff972e9d65be - last_write_checksum: sha1:2897c778e353cccb05897086431aff16bb9f4dbd - pristine_git_object: b7c8aff3f3be10ade0fdf40afbe84e68a74d578a + last_write_checksum: sha1:7b593b4870d2aeb2536629e1be9b750b8f7db385 + pristine_git_object: be8259cd81a246b9a1bbc371d1b0eb6c6682ba3b src/glean/api_client/models/sortoptions.py: id: 7e730ebbc35c - last_write_checksum: sha1:0985f987672a06d260d4510bb71fdb76dae72bbf - pristine_git_object: 29b0f4c89496153113bca2b1e7547cfbe2ca02e6 + last_write_checksum: sha1:7a69b99ac2d064cb8364579fbf2ab7eefb7d591c + pristine_git_object: b47e3975573c6b4fa41b97a1ee74c06d76040a2e src/glean/api_client/models/structuredlink.py: id: d619bb983c4a - last_write_checksum: sha1:77725b989bfc7643d6d88b3c2555f665193acd3a - pristine_git_object: f32650d181929589b3ea80dd7a539be424ea0ae5 + last_write_checksum: sha1:253c8b08c395c4d5354d84dd4303a6a7cf6f4df8 + pristine_git_object: 64e4e5b9503c69a7fab950d8e05d25dfab543be4 src/glean/api_client/models/structuredlocation.py: id: c0c11256d82f - last_write_checksum: sha1:ac3317881ebfa2130f3980a48420669ea2d2c02a - pristine_git_object: 589d66e43622223e775b27cdff825c1da5faecdf + last_write_checksum: sha1:7d0283180442f7c282f013b05df46aade77b1381 + pristine_git_object: 8fc2a7f5653b37df6ce2250dfcaec28d14ec6f89 src/glean/api_client/models/structuredresult.py: id: 1777b707d24b - last_write_checksum: sha1:b5ec4f215190735c8745586c3cdf2eb85ae378ab - pristine_git_object: 0ae104738a46da6fd84fd7721c40a750ccdc8a30 + last_write_checksum: sha1:f25435006d961e8157f1788d55b019ac2e98798a + pristine_git_object: ead2bdf1a52968bce716d6fce3519b69fde650d9 src/glean/api_client/models/structuredtext.py: id: 5a5980e70744 - last_write_checksum: sha1:bbcf5bf65ea363786529315043c7cfe3f00835e9 - pristine_git_object: 32f08d18a174dd0c0484092ab2ba00d4d7b3486f + last_write_checksum: sha1:cc017d001d800043a1069074138676d128fa6814 + pristine_git_object: dcf058b2fde6c92bd6f0b8ab893e4d53c137da3e src/glean/api_client/models/structuredtextitem.py: id: 283dcc948aaf - last_write_checksum: sha1:7f9442eda7788a8ceb2b95ff03ee25d05921af5b - pristine_git_object: c63c6ba7242b9547215d2f21130385ed2f404458 + last_write_checksum: sha1:4d4bf0925e74117d7e739bf5d70b7e06e64c6153 + pristine_git_object: 6eeb60a01e6fa04e8f2baa9a0914ce62b1661962 src/glean/api_client/models/structuredtextmutableproperties.py: id: 04eeabe42124 last_write_checksum: sha1:ff30b684a5689d343ba2f8e4ae6b60228a5e3767 pristine_git_object: 4a55f087a9b19d542b32dd8064185b090e76b787 + src/glean/api_client/models/successresponse.py: + id: ccb94bace869 + last_write_checksum: sha1:526d0e027fa8a066081c0ad2950b0161724c5c18 + pristine_git_object: c48ec8644af3efd5bb4e17a0d7b421499f0f879e + src/glean/api_client/models/summarizeop.py: + id: 2b87b3e6aa4c + last_write_checksum: sha1:47eb38ea7bdfd516866d08dc9214bbc215022f94 + pristine_git_object: 1211d870deb4159e03665024bdd728e40f3adf81 src/glean/api_client/models/summarizerequest.py: id: 368175eae49b - last_write_checksum: sha1:13085b7ec22deb534564e6c47d9c8794208e14dc - pristine_git_object: f40056ef30dd7d143eb5aac254c5f37cfffeccad + last_write_checksum: sha1:860fbd11f01580645fbfa605f8e522b121be9eb2 + pristine_git_object: 2ee5dfa9b22efeb68b34df86294dc9e0bc03c7c4 src/glean/api_client/models/summarizeresponse.py: id: f49fb35062e3 - last_write_checksum: sha1:8aaf7178d192dc8c53e13271617944790e61ec0e - pristine_git_object: f631464519c446b2b60764a041de0c64827f98ef + last_write_checksum: sha1:6095fad01602ee9d8810920aafee22caead3b35a + pristine_git_object: ca5dc1b69bd269c493e2a3ee40f1a151b2a3056a src/glean/api_client/models/summary.py: id: ec310b5768ac - last_write_checksum: sha1:93fe7ae3453d7d617c382472f30ca11ea1c77fb2 - pristine_git_object: dffc88b51eff237e1309e8aa433a8ed9ef189965 + last_write_checksum: sha1:2512e7b07e429ee63d5066edb6b30ad7209f11fc + pristine_git_object: 35573db75a59c75e36529c5d7885760cd0b68390 src/glean/api_client/models/team.py: id: 8899a02080f7 - last_write_checksum: sha1:57d5832c80da33837b779983356b92366ab86abe - pristine_git_object: de3d33ac8c267edf6f060d09f2c4264ba4556a5c + last_write_checksum: sha1:87f9abc7173690f5eab49c3668e542f4f07aefcb + pristine_git_object: 7fa4e16213e567c637369a357d9f87e34d2f59d6 src/glean/api_client/models/teamemail.py: id: e0dd0042405b - last_write_checksum: sha1:132b7d70088f21bb60f3d6837637bce513498c0a - pristine_git_object: 429737173b5a0f3ad1c86b16ff619927ffc9f8ef + last_write_checksum: sha1:42e472b5890b4b0c1c0ae31c078a4b4d9e0f5f7b + pristine_git_object: 73f5b4cdd89f726432ee186f5ab19098daff70ae src/glean/api_client/models/teaminfodefinition.py: id: eba67dbd2ba5 - last_write_checksum: sha1:73f1a9fc68cea76fe44317ebb4d5739192f5fbab - pristine_git_object: 1d32e73cbb80394bb97eb03a8a78d9e88f9f2af7 + last_write_checksum: sha1:15ffb877c242c1cc3402afde5609e763242d5491 + pristine_git_object: d5e57583e32aab947759344d5f9689d108c4b462 src/glean/api_client/models/teammember.py: id: 6c0e36f8a165 - last_write_checksum: sha1:23383328303a5f8b50fad83c2fdca984c1937b43 - pristine_git_object: d6cece46d1ce6bf24e0233b882eb5060218b535d + last_write_checksum: sha1:a2881555a6e38ef335aae7523962b4310e028609 + pristine_git_object: 9b534f8c969ecea239d10d528cd1c85de8284151 src/glean/api_client/models/textrange.py: id: fd0971fbe1a2 - last_write_checksum: sha1:1fd5eae1c5055f7ec80aed3cb3e3c6dcd12751ae - pristine_git_object: 5f2bc0153264f1f5f5522dce242bc92aa538dd50 + last_write_checksum: sha1:0d1f2487aa4c25d5511e9028e63aad0ef356ac93 + pristine_git_object: 9cd52eba35b4e1580aae1f49c905fd22dd493267 src/glean/api_client/models/thumbnail.py: id: f1c4780867a9 - last_write_checksum: sha1:f6af5612a57d26e5f0a791fd995c75e892a694d7 - pristine_git_object: c7a4f3b2de8c2ad60d97331ebfa437d1cdab6c61 + last_write_checksum: sha1:73a1890db32d564451fa4fb369b79221f5604c1b + pristine_git_object: decf9c1fb4bff8b96d6727dd46b90ae6de12f5cc src/glean/api_client/models/timeinterval.py: id: 391f82a52f47 last_write_checksum: sha1:c9259a0abf0a4076b3b112c648b1106f07d145d4 pristine_git_object: b9dc81f9a345f2d2bb564847a37c1df49df5ad5c src/glean/api_client/models/timepoint.py: id: a7733c748aad - last_write_checksum: sha1:93f1621b54c7afce5433c22d5c26be483f1e8679 - pristine_git_object: 6ef8aaa3455b1c58eb210a07dc466247559270eb + last_write_checksum: sha1:c20944d39d4f0e62eb1026c6763c1851d91735db + pristine_git_object: 64b09feaa92b4b0829e9c5a27567ae7936f98c49 src/glean/api_client/models/timerange.py: id: 781aa895d3c7 - last_write_checksum: sha1:a200dcd771df168413eda0afafac5a01fc4f3300 - pristine_git_object: a4aa5dae20e4f53e3e103be642b5a0668d401db7 + last_write_checksum: sha1:01b81d6451d3f463730d7e5bd2ffaa9c4abb08f8 + pristine_git_object: 7ac2cf3c5844baaccbf4a8aabdc54289a653c46e src/glean/api_client/models/timerangefilter.py: id: 0eead7612909 - last_write_checksum: sha1:eb9f0bc7c0966c83eabcc62a2b8b16a2f737a9d1 - pristine_git_object: 6beaa1ef96d918c76ff69e22ddd76fbc737a6ab8 + last_write_checksum: sha1:ba3eb8497c8bd60817be9067eda04a28caff34cf + pristine_git_object: b8ad317806ded0ecdc42bd4d923de199881e4922 src/glean/api_client/models/tool.py: id: acaa76f0ab87 - last_write_checksum: sha1:39757eff9248f0508bf1dd6b49a12bb3d7c86568 - pristine_git_object: fd199921c9102bda405365440c0973348e8db037 + last_write_checksum: sha1:d6eefafc0dbe06ada923be3af630ca6c40cbd45d + pristine_git_object: 86839d1b3a9942ee9890d1bbcb29d4326ea63685 + src/glean/api_client/models/toolannotations.py: + id: 2b8a8339730f + last_write_checksum: sha1:7bedaba236594e70feb3f20d902be83d725dd978 + pristine_git_object: fa00357c76e2d4458aa23bf45175d6f354a6b18d + src/glean/api_client/models/tooldefinition.py: + id: be1be88fb89c + last_write_checksum: sha1:53fa688bf149f3eae975894ce765fd098cd00875 + pristine_git_object: 805617b1ffc5776af15895148c0c9c841fa6299a + src/glean/api_client/models/tooldefinitionsresponse.py: + id: 40fc72a511c0 + last_write_checksum: sha1:4a42b7cccfb3522ca62cd8072c18929ebf085365 + pristine_git_object: a0fa1e092f2587591c0143ac67c6443217a7d31a src/glean/api_client/models/toolinfo.py: id: f210c6276023 - last_write_checksum: sha1:641917d251dda9d4be07e214d2b4d1e9671fcd91 - pristine_git_object: a83308e92b4f42f49bb53e8b81ae6af103f296f7 + last_write_checksum: sha1:0fb5a9601b9e8ecd9cd71c2f82624fbac8a592f7 + pristine_git_object: 9bbfdf3278d0a840ffbd7de03fa1cd3927bee8b6 src/glean/api_client/models/toolmetadata.py: id: 7ed199e1f217 - last_write_checksum: sha1:c1717097133211a7d3f0b9864e9673d8932c6876 - pristine_git_object: 7f458148c4eb9c7992badade4f4c59ba625fbd74 + last_write_checksum: sha1:d54d796d1a94a56690f2de3671cb2061b011ba2b + pristine_git_object: d7928cf2abdb80a78cda4d4ac95eb7972f833cc1 src/glean/api_client/models/toolparameter.py: id: 630b822ac98b - last_write_checksum: sha1:152d89792cc8cfd7b04fd1ab4da663b0ad2fa6e8 - pristine_git_object: e8ac88d343b251838518bb358ccb77ff444e242b + last_write_checksum: sha1:f74e8f9a8b2c6b6e33f203a47ce22b726956b4b4 + pristine_git_object: 2e00547de68060483eb4c0bd03776f98448ad333 src/glean/api_client/models/toolscallparameter.py: id: 983b41ea115b - last_write_checksum: sha1:1dde2fd7bfd393a253f0303f067362deebe8ba44 - pristine_git_object: 461023ac4486c92e40ea832405b576b63eec53e4 + last_write_checksum: sha1:38a941f1f6839953e84f6f197ce17bf47e84481d + pristine_git_object: 43b68c3eb55f56e8fc1eb10358fa78dc7acca56e src/glean/api_client/models/toolscallrequest.py: id: 9af3249fec36 last_write_checksum: sha1:a0e99244668fb57980063d3ec7ac932580116ee1 pristine_git_object: 235e9ae1251be7b423ffc8acf100eea5a02af808 src/glean/api_client/models/toolscallresponse.py: id: fe536f511452 - last_write_checksum: sha1:ed1b6b7fa22cab8d1db0d25a3a9c813c5038014c - pristine_git_object: d2d3ad95543366778dffc51f9037eeafba6ef659 + last_write_checksum: sha1:cfbece61e77a75264b9969fe7197135393087b29 + pristine_git_object: 9949402b2ffc01f5070ca7153d7269151ea1e3b2 + src/glean/api_client/models/toolserverauthstatus.py: + id: 82f4cd9ac482 + last_write_checksum: sha1:76f2229bcd262a4cc24610fc778247aa9530a439 + pristine_git_object: 3a96ab186ed724155a9ff8743cad28248a21dce2 + src/glean/api_client/models/toolserverauthstatusresponse.py: + id: c6b7976340b5 + last_write_checksum: sha1:4ff21869aaecf7e045b9915ae866a21f54879296 + pristine_git_object: 8af7af9ce7802ca78089f6020e54998783b6ec48 src/glean/api_client/models/toolsets.py: id: 72b778695427 - last_write_checksum: sha1:3efe87183b2affe1f8a19f875f86be7fbc30aeee - pristine_git_object: 1accc57cdcd709ebb2d9a58dd3e75950b1a793c0 + last_write_checksum: sha1:769b67c2c1f91052572476e4815eb7c86df25703 + pristine_git_object: c1ecb2c2d2fc66f7f60a63730124c56fae49ce95 src/glean/api_client/models/toolslistresponse.py: id: 80ee602f49c0 - last_write_checksum: sha1:41d36332e5f5b1dd11bfa2a24c4e3beddc451251 - pristine_git_object: d20d237b50f1ee24740e67aeaee522b0999d5fb1 + last_write_checksum: sha1:fcb7dcb2d397e61affaee277952ad255b1f3a947 + pristine_git_object: 8b5a32ccf25fcfb0fb904e8046bf1b36110a3880 src/glean/api_client/models/ugctype.py: id: 9afda9fb9dd7 - last_write_checksum: sha1:df62f173fa4bf673fd035924b6fe98b05beeed0f - pristine_git_object: 383b3994cbeb3faf026e12366a964186b6181e63 + last_write_checksum: sha1:de5bd700977491b8c70af26d6ecd89a46a19944c + pristine_git_object: 7775bf5a69464558210caaf38fe31633c8a7d134 + src/glean/api_client/models/unauthorizeddatasourceinstance.py: + id: d3507c78b8df + last_write_checksum: sha1:e86e33256eecf3766c2cc9fedeab56e34e0f129c + pristine_git_object: 526f77245423fa7bdea4fd79611568ce7d1ab604 src/glean/api_client/models/unpin.py: id: fd3f7ecf7a4f - last_write_checksum: sha1:38b097cc87897b932f2f52ecc1e8cebc9a7833a8 - pristine_git_object: f8feebc7d73e688fc756430e6471e408c8f3ca66 + last_write_checksum: sha1:4a6c085a7adc9e096bf94eaa44c10385f1b67e17 + pristine_git_object: 406ddefe413ec39dd66dd60c2a85e87be9343881 + src/glean/api_client/models/unpinop.py: + id: 37bd03782f09 + last_write_checksum: sha1:c5e5144c2a07f606228a79f9cbc582b8d0c98477 + pristine_git_object: 788b1fdb04944cb32b07461c5a0ecdc5a9f24e16 + src/glean/api_client/models/updateannouncementop.py: + id: d409429a77e2 + last_write_checksum: sha1:ade4910fc7b004a312259f9c4b6aa7fd036fd292 + pristine_git_object: 8ccce4d02d629fff50652a4174c6f54999946173 src/glean/api_client/models/updateannouncementrequest.py: id: 4e395ad26b24 - last_write_checksum: sha1:e4c5ef85bcdd1eda8ac818abfefe80c793974766 - pristine_git_object: 7107314e8c02d0bf3de2a67f4901bf8970f39710 + last_write_checksum: sha1:3070d15dab71d888ec5e8d7cc4fd513fceac4946 + pristine_git_object: 04efd10306f68210dc6f0af333ca4794d1f7ac77 + src/glean/api_client/models/updatedatasourceconfigurationrequest.py: + id: 2d2985d17d84 + last_write_checksum: sha1:e08a352d5d8c680c7d07e762f8eacefbb5122bc8 + pristine_git_object: e1a2c5a3409aaa0d3dc3a187d2a2c294064771ab + src/glean/api_client/models/updatedatasourceinstanceconfigurationop.py: + id: 8678b3d30355 + last_write_checksum: sha1:64a508426d218a72ef740a0d5aa0bd2924b421f8 + pristine_git_object: 1f77deeb8fb6a8a875f49e590e9a98381e5fce41 src/glean/api_client/models/updatedlpconfigrequest.py: id: a3d254d01c5f - last_write_checksum: sha1:34623e584ba9a2816d236628d4b0c7a8b2d3649d - pristine_git_object: 9111f9594e279c16a0f3b4cddb401a2f00a56a7e + last_write_checksum: sha1:a7e3e3ac77f9d12bf18f4ae19eff7efe1cea597d + pristine_git_object: dfa51cedbbfd90f614d4081984c46e7a1f3784ac src/glean/api_client/models/updatedlpconfigresponse.py: id: ebdba2bf5b4f - last_write_checksum: sha1:6b98a022422b0fb39d11f2e7c5eae375c855ff7b - pristine_git_object: e776c48f5db21500f9e2f859da4463254647b6b9 + last_write_checksum: sha1:90fd4a8d4128ea8868bffa008e820edf789f7187 + pristine_git_object: 216e80d9c8139898c93a80490dba41386e952ad5 src/glean/api_client/models/updatedlpreportrequest.py: id: 955dc0f697ca - last_write_checksum: sha1:5fc6defa198bb8c0d3b33b75ad850e71de406620 - pristine_git_object: 20dcac321bb6c8469fc9532ad094f5ab30f9202b + last_write_checksum: sha1:fee504071f3fdd7137f1f6a48ff4d02a5a1a0c60 + pristine_git_object: 8fdd3dd17dcf39232d8ca3d595cbcfd3289f95ef src/glean/api_client/models/updatedlpreportresponse.py: id: 4d603da790ea - last_write_checksum: sha1:2ac8aba5b1984b62064116ac115c4841e799a173 - pristine_git_object: c65474b8476df87408a80b0504e69c2238ac7981 + last_write_checksum: sha1:4721c153bcb2ffaabfa9586d5277567d7a48029a + pristine_git_object: ecb9e43f2342345855f4ae68c761086209ce119d src/glean/api_client/models/updatedocumentvisibilityoverridesrequest.py: id: 90d244edbd6e - last_write_checksum: sha1:4d4305c9ccfb6b0d15949f47e9379e4f8efa60e0 - pristine_git_object: 1ba68c41a24a586270144d5bd6f9657e6686fda0 + last_write_checksum: sha1:2bbfff791dcfbb383b15a1988cc33a2d634cb895 + pristine_git_object: 94e18dacb0a992d93450e5ac41d11a16ba0af086 src/glean/api_client/models/updatedocumentvisibilityoverridesresponse.py: id: dbb7fcf4b9d4 - last_write_checksum: sha1:eb89683defb43f64128e48b927838226fde298f6 - pristine_git_object: 1dacc41065ed2bdc0862b32727ae1979a78496a2 + last_write_checksum: sha1:b9a064834b34f180499be5782d836c94fce64cb0 + pristine_git_object: 480787419c72aada57f0bdaa35c13910392d5af7 src/glean/api_client/models/updatepermissionsrequest.py: id: ba573c50cb8e - last_write_checksum: sha1:094a7ad798580c5c7c8b522d077f9928d1db2714 - pristine_git_object: e7f6ae6e9128295571741af0eb4688428a6019e1 + last_write_checksum: sha1:f27ed068709eeec81b4b0bfb9fdf9308055e8824 + pristine_git_object: 0c622986c397c5307162b457e7b4f42c0eae5f14 src/glean/api_client/models/updatepolicyop.py: id: 2ba2a5f2e331 last_write_checksum: sha1:1d85a868469b55eeda4ca98ad2ced3865d00705f pristine_git_object: b34f7fd4589842113a042c9991b5dd58a82b411f + src/glean/api_client/models/updateshortcutop.py: + id: fca201b21308 + last_write_checksum: sha1:212766f3c8400107ec76808b0ad9c696949e4100 + pristine_git_object: f047f8ac73141a5daf60adffa1a7b02556747d57 src/glean/api_client/models/updateshortcutrequest.py: id: b8914e398f61 - last_write_checksum: sha1:58d53c1117469f0b351f9ad1b654044a77e06022 - pristine_git_object: 650b32fb43661b869abb4ff8c14aecfc7e970b57 + last_write_checksum: sha1:e150c110b1a22d17f7d3890f7641b9259c105fe4 + pristine_git_object: 4b89b63afb6be07639b415aa1e966e25fb0a649c src/glean/api_client/models/updateshortcutresponse.py: id: 0080d0c4a831 - last_write_checksum: sha1:1278222ba09cbe424d45094f2193078c71979ccb - pristine_git_object: ed28c5ae287b6c83e83cae488702f3a7046ee6d6 + last_write_checksum: sha1:d663c9a98c3a61ec5d1c5cfc7e91d5463c9a4938 + pristine_git_object: 9c51a9a413af75272894448766fac05e234923d5 src/glean/api_client/models/updatetype.py: id: bdade91a9b2b - last_write_checksum: sha1:e4958a4a45413b8e471a5311068792ab8c6adb96 - pristine_git_object: 687544d47bd9c1e71f933ec6fb4e5a33f197b49b + last_write_checksum: sha1:7b185f14a24c29e8b53ce58533971828af23f4ef + pristine_git_object: 6a51a4bbf41b92eae18eeca9df409b52522ab70d src/glean/api_client/models/uploadchatfilesop.py: id: 29eaccdd7727 - last_write_checksum: sha1:6936454ca6f99d423c2f1e4b6942bfbec48a65c8 - pristine_git_object: 59b0c7d062a9463d9de5ac8ab3ec5608ebdf2c90 + last_write_checksum: sha1:49c7eecd495fafef3262c61a38cca3ca16c057ef + pristine_git_object: 4aafc91088fbdc1fe88f61ea577e131b6bbea769 src/glean/api_client/models/uploadchatfilesrequest.py: id: c648ec79e147 - last_write_checksum: sha1:01c19e13e954a4b2aea2896007d555e94bbf74cb - pristine_git_object: 898603b055f0c682056919b906d8dc80e9159c64 + last_write_checksum: sha1:5e29579aa4b79f9ab7b66136bac2367df16f5175 + pristine_git_object: 23c3ccd7d585e5611f624aabb29ac26d2bc3d6e9 src/glean/api_client/models/uploadchatfilesresponse.py: id: 73c5f35b8280 - last_write_checksum: sha1:c4f0cb7fb4d5c57cddbfc1c712e9f45b4036f9be - pristine_git_object: 123f81d5fb8ac5a1e2c54dca98e39165528bee1c + last_write_checksum: sha1:8876a4b054e7099e4ab7be02969b945f19618a92 + pristine_git_object: a707d722e5da141e451a2c017a9e56ce292f01ef src/glean/api_client/models/uploadshortcutsrequest.py: id: 4f829de3d1cc - last_write_checksum: sha1:e59e93caa412ad48b588baeacfc3981fee47c040 - pristine_git_object: 47126dad727664acd5f2d99869d9c1ffdbb880e3 + last_write_checksum: sha1:fd127151466f2fb034ed5039fdfb9a2ccd0440d0 + pristine_git_object: e73b9c17d98242d041111ad18c5d0c8a9b35d4dd src/glean/api_client/models/uploadstatusenum.py: id: a93d3718abcc - last_write_checksum: sha1:867bb71590ac5c8188a6123232f168bbdecbdd43 - pristine_git_object: c7ca19e2a45578fa30dc8ca998f2e4197149cd17 + last_write_checksum: sha1:3de738be3c16545f46bc3a05ba903e5cab17a216 + pristine_git_object: 950f6a404fa4ea4f8667a58817fd471f0b000b7a src/glean/api_client/models/user.py: id: 4a3ebe791009 - last_write_checksum: sha1:1ef5e3484aaa9405556cf7443029fcfef49e69cf - pristine_git_object: 82151492cd8a2b0d92bd25b490aefc18588e489e + last_write_checksum: sha1:6d89823e90d4e93add8c251f1acb02b62a032963 + pristine_git_object: 3a8ab795961f4f19f29a41c1dfc4572fef3613d1 src/glean/api_client/models/useractivity.py: id: 7ed02b8eeead - last_write_checksum: sha1:34fb150fc1385123954c86b06f2d8a7bd51d76fb - pristine_git_object: 1320675babdecd43951edfde64f2d347bdf40396 + last_write_checksum: sha1:d66376c26f1c30cbaf8accd738bb678b53687ac3 + pristine_git_object: 17d6333ec93d40cdc66a0c34905b8448fa950298 src/glean/api_client/models/useractivityinsight.py: id: 07ac5bf2e903 - last_write_checksum: sha1:2ae63370041875259ad89e6c26e648a645f3aac8 - pristine_git_object: c5485fa67bce4b87e826e884f7b0dbdfef1bb2c1 + last_write_checksum: sha1:98d6ae5191726e765f8eb4f39fdcebf3fa9ae5be + pristine_git_object: 692a10352b2b48ca8c2f24a65fd5b18b35a2abac src/glean/api_client/models/usergeneratedcontentid.py: id: e51bf3d3e0b3 - last_write_checksum: sha1:59eca6f26e30abfb8589fd5d3edb6e1231b2be65 - pristine_git_object: 04553f56c25dbe69a3d7c321915b1bba87069920 - src/glean/api_client/models/userinsightsresponse.py: - id: 6d224adc1c1f - last_write_checksum: sha1:60d41b044481f5f121343fe9c26516897b1a8dac - pristine_git_object: 835b21b3375cbcd054f8a94002266860e5529b26 + last_write_checksum: sha1:70c041ff5c91f2778fd6e516cea33e04dfe684ac + pristine_git_object: cd30606c9a481635c29b032b245e8759d82516f9 src/glean/api_client/models/userreferencedefinition.py: id: b094f30ebd7e - last_write_checksum: sha1:749be73905605b1aabf389a9c93b77cd4a2da85c - pristine_git_object: 60cbbb12eb3bfe8ad8e0e7b5f442d129bd9ea7e3 + last_write_checksum: sha1:21b47a5c10ca61f02a14f58ab0c8c23ea5da1fc9 + pristine_git_object: ae7ab2967f8de4d7dac2cf03053d528a91bee43e src/glean/api_client/models/userrole.py: id: 63599e4c3216 - last_write_checksum: sha1:d4af1e99c1ee0fbb990b5b7e6c12eaa5f6a1c1fb - pristine_git_object: f4aa28fa6fb4bd2effb97fa28569a9fba7271800 + last_write_checksum: sha1:4ec82f0c733b59d7b8de27a5d655e8edba17e88b + pristine_git_object: 2768603fd77e16d9f82da184d9e236a9e2a8fde2 src/glean/api_client/models/userrolespecification.py: id: c746dd831aa4 - last_write_checksum: sha1:0b5fb912e56f13898cc381631c1bd3e1f5bb5d06 - pristine_git_object: 9691a23967a14d15af43e6cc28e0a3ca47f1ae64 + last_write_checksum: sha1:63e66be2502d6fc53e1ef2000c81f727c7c7be93 + pristine_git_object: 485de693b31d4e66a0f97fdb883c71695deddce2 src/glean/api_client/models/userstatusresponse.py: id: 30477cf9a61f - last_write_checksum: sha1:b0ff8977884d7d70c4e8df6815321bf22ec2983e - pristine_git_object: d22d67a355b3c9a8d7bf333769e08a88697108f0 + last_write_checksum: sha1:96b0eba205dac7e1729d80f36b1ec83445f6e391 + pristine_git_object: 0ee6f353859f22c0772d82b3d187779a9bc05e88 src/glean/api_client/models/userviewinfo.py: id: d03415292af5 - last_write_checksum: sha1:b736d5f67c80c04943cb6899d9d167a53ad36ef5 - pristine_git_object: e44b54452cb4d5989264483d6664767f5b28f424 + last_write_checksum: sha1:48f8ae7205dbb6bf549d0ca7d0ac646c7ce92b9e + pristine_git_object: 9dfde209095574f6bdd7f8a580635fd06971ddde src/glean/api_client/models/verification.py: id: f20b858aacfe - last_write_checksum: sha1:b5a6f0075cc0ed99893b1c25f392b3c733d76432 - pristine_git_object: 4aa8837dbf80e8e486795e1377812f49b4b3d5f4 + last_write_checksum: sha1:3255ba06f7cc4851886e5849ecb08c8974b7d8ff + pristine_git_object: 014203d0d0fc8e884c28db44fb6b8aa0f4887213 src/glean/api_client/models/verificationfeed.py: id: a4d305725b8f - last_write_checksum: sha1:c5c5ccdc36871293a8a9982b62c9afac19fd93a9 - pristine_git_object: 00a88599419d459f1f870f66f35e7a59c4c8bcc0 + last_write_checksum: sha1:9113b50bf3349d304e489ce838fdd6f98d2ed8e7 + pristine_git_object: 46752ed82d3dd5a89347be26cfe8fd15c3defca1 src/glean/api_client/models/verificationmetadata.py: id: 16a575323484 - last_write_checksum: sha1:c07b1c306b1df76652df13d4d43dfc48558f1f5e - pristine_git_object: 6f4e916e0eb74a4a88870fb895c4b95d9f865606 + last_write_checksum: sha1:9188962a6d01167cb9a043929edcd73117d6f7f6 + pristine_git_object: a04d6ea398204a7d84b37756759e24ffb100a5e1 + src/glean/api_client/models/verifyop.py: + id: 99ea97ea1819 + last_write_checksum: sha1:fd1ab5a3d7882ed9a2a08bb88621d918eaae7c9e + pristine_git_object: c4c3e68112f54b31a11cbb442f021fdbedc0a29c src/glean/api_client/models/verifyrequest.py: id: 7a0d65d316c5 - last_write_checksum: sha1:4fc907edb82a7a35f53e9176cfa385821b37f4af - pristine_git_object: 564b1844c0126dae8decdf50260d514963ba32bb + last_write_checksum: sha1:3ecb78e68f8c63b8dd9211638062de15a91b69fa + pristine_git_object: 7c93b46f83ad101dd6862f42f7bda2e7e8e12399 src/glean/api_client/models/viewerinfo.py: id: dc44fac102b9 - last_write_checksum: sha1:8979842e6c80b43b1fb25b49be3b668cdf68fa0b - pristine_git_object: dffc8d946c0fa745a976a9d74377614ed9e22eca + last_write_checksum: sha1:837324bbcbbbe04f23eb9ff4f895d168e333fb4f + pristine_git_object: 32b116e774f59bbb14e607ce7ed523e98b9dfa35 src/glean/api_client/models/workflow.py: id: e59e0fe5f663 - last_write_checksum: sha1:abebed551d71fbfa6d89e46154da2e5119fc4d59 - pristine_git_object: 2161dd8a38ae6dfdd79b16935c5324338a6696e6 + last_write_checksum: sha1:9c517b8d64b88fc358e3d2f6efd36e0e3ddee2ff + pristine_git_object: 063e8acfa8ad0cd0740c3b178877b7828e45d7f5 src/glean/api_client/models/workflowfeedbackinfo.py: id: 720e747620b1 - last_write_checksum: sha1:76c2be5bfb84637f8028e7ac64d9bd942cb7f2db - pristine_git_object: 3c8abf0e46c8ab2f9aa8cf67748ba2d2e8576b06 + last_write_checksum: sha1:fea4b83ec5656ae417c8bd061e84da594170ce32 + pristine_git_object: a0d06dbc26ecfd2d925cbbd9cc428cc857ab2c1a src/glean/api_client/models/workflowresult.py: id: 9e8c0e8e72ce last_write_checksum: sha1:2fc30549bf6d27cec977b7ec878b0dfca15f21b0 pristine_git_object: b3e81a84fad5595cccb410baafe741420914243c src/glean/api_client/models/writeactionparameter.py: id: 3a7daceaf3fc - last_write_checksum: sha1:fb412d3a88d8830a2704fdbd6c772ed48c9b84bb - pristine_git_object: 599f24278faea4c30223030da9edb367c118df0e + last_write_checksum: sha1:3df741b5e9c69a1889b8135b1c7baaf7a2131ca6 + pristine_git_object: 65b3d94cc5cf6a65bc909386d5c5ffaea6e3092a src/glean/api_client/models/writepermission.py: id: e15ed09cb123 - last_write_checksum: sha1:df01535ca0ce29665c50220173dfab56bfce0321 - pristine_git_object: 76eac4b790a5c02c389454abad5fcf7dfd05e422 + last_write_checksum: sha1:fe32a275a30e01eeb69c059cbdbbb9d7318c71ad + pristine_git_object: 85e816dc7cea2c95b4e067d756e428be2696d0a4 src/glean/api_client/people.py: id: e32c03723ded - last_write_checksum: sha1:02560fa5e7b4358ec6c3677c27e7ee575f241d7f - pristine_git_object: 984073db79503d8bde3a58f8cddc54ddfc2ee331 + last_write_checksum: sha1:0bd6e6c6688847e26416f740fe2ab6712038d0b8 + pristine_git_object: a1cca36e4375ef148cff9448fce1ca8e73ed5f89 src/glean/api_client/pins.py: id: 4a37ead65f8a - last_write_checksum: sha1:3a2a2e67b88381ed38f9b4a4553f66ba6d00a337 - pristine_git_object: 80d29702200a5b87416508d7633563589571a275 + last_write_checksum: sha1:127d0abf8b7631fa2cd9ed20e4f3a8c93f082e77 + pristine_git_object: fbba9b16426c4243075554b6824f7ba2de3ef8f5 src/glean/api_client/policies.py: id: 680f941e0620 - last_write_checksum: sha1:e5797a03f6e6c29083253e7c4cc51e9e28a36f61 - pristine_git_object: b2349e2e40906aee4b8bfb4b71a045c68e4b58b4 + last_write_checksum: sha1:3b748f12e450aef5ead84d0e84fe17126a1b9f4c + pristine_git_object: ce81e8efb14de8a142c9e93ab30bbf21f4454287 src/glean/api_client/py.typed: id: 85a37d5088f9 last_write_checksum: sha1:8efc425ffe830805ffcc0f3055871bdcdc542c60 pristine_git_object: 3e38f1a929f7d6b1d6de74604aa87e3d8f010544 src/glean/api_client/reports.py: id: 5e6fdf55dd93 - last_write_checksum: sha1:572287909edd2307c13631f1f381d0f75b6b7256 - pristine_git_object: fc7fbb02488d301c6bdfcfe1430d61e35efd4e6f + last_write_checksum: sha1:c3208e2ea3a1455340f15e4c6563cd0e3c4990cf + pristine_git_object: 3a4c3e6eee14c25616dbc8cbec206d9a74070d80 src/glean/api_client/sdk.py: id: e2de37b3ce92 - last_write_checksum: sha1:57e601d2bfc7337b46fe32feb9e67cd2e4a78bb2 - pristine_git_object: 0055ec5d4dfdfb3962f5a7323478f6489867881f + last_write_checksum: sha1:5d8613780a840ea8e2a3981406cd7d6c6064ea41 + pristine_git_object: 4efe2dd7071b0043e18c04b36398978c357f8255 src/glean/api_client/sdkconfiguration.py: id: f356ce00b5b7 last_write_checksum: sha1:1ae43e08ae57ae277b3ab5e66b52d020149ebe00 pristine_git_object: 22e0a4eab0ef8e54dcfd986084d01c14a56f47a6 src/glean/api_client/search.py: id: a3b404a8b402 - last_write_checksum: sha1:eda8fda10d60fd6d567cbd0ccd62b146fee034a2 - pristine_git_object: 4ea44b0ded2d1d2114a7aa743df784e7e2ac0091 + last_write_checksum: sha1:a46e1a0aca2fcf75971fdb1f6eb3b72529394c25 + pristine_git_object: 91ea57d2012c5dda71fb1a4b5d420173d7c357b5 + src/glean/api_client/skills.py: + id: 79f3c37e1b5a + last_write_checksum: sha1:aebe5c9b6e2b24a13332ca13160d3994e008e477 + pristine_git_object: 89e97e10c092905a2b012a8f05f8fc986d018c6e src/glean/api_client/tools.py: id: 3ea40147c1cc - last_write_checksum: sha1:102b41106443bb035323985a0fcb39d55d8ddba0 - pristine_git_object: ee415b62db1cae413f40f1d3e07385b9a0473d21 + last_write_checksum: sha1:83c2360844995f2f83170f8e8c8388ffe5800758 + pristine_git_object: a9a8b1001149141922966a721ceed7660f21796c + src/glean/api_client/triggers.py: + id: 9fac703b5844 + last_write_checksum: sha1:d69e3d7a3d4cc92b7ee4a37e61c976bf6b36351b + pristine_git_object: d05463361ba35042adb30f476181c9eb36ad4d5c src/glean/api_client/types/__init__.py: id: f63c790831ee - last_write_checksum: sha1:140ebdd01a46f92ffc710c52c958c4eba3cf68ed - pristine_git_object: fc76fe0c5505e29859b5d2bb707d48fd27661b8c + last_write_checksum: sha1:f9ad14217f832e74f594285960125add50324be9 + pristine_git_object: faa268137bc01c9d08cfadc4797017db48747a96 + src/glean/api_client/types/base64fileinput.py: + id: 83c3e0b80185 + last_write_checksum: sha1:1522687ae3398374c35710cad993a6e82b5ab99d + pristine_git_object: 862566fe2b1db830276b390e136e65090e5963d2 src/glean/api_client/types/basemodel.py: id: 436a12e02484 last_write_checksum: sha1:10d84aedeb9d35edfdadf2c3020caa1d24d8b584 pristine_git_object: a9a640a1a7048736383f96c67c6290c86bf536ee src/glean/api_client/utils/__init__.py: id: d681dc4f06b3 - last_write_checksum: sha1:ffaf69e6877a274b08066215f5a31a1b344f5402 - pristine_git_object: f4525b2057c3d54fb3b9eff6248fd172478ce94c + last_write_checksum: sha1:527db7a6c93948ecdec6a33f56b6551ae44f0180 + pristine_git_object: c48a36ca3d6e47e384b133bc0bcb482c6d8589b9 src/glean/api_client/utils/annotations.py: id: 8431a3a9fc4f last_write_checksum: sha1:a4824ad65f730303e4e1e3ec1febf87b4eb46dbc pristine_git_object: 12e0aa4f1151bb52474cc02e88397329b90703f6 src/glean/api_client/utils/datetimes.py: id: cc5f732df6a7 - last_write_checksum: sha1:c721e4123000e7dc61ec52b28a739439d9e17341 - pristine_git_object: a6c52cd61bbe2d459046c940ce5e8c469f2f0664 + last_write_checksum: sha1:fa47d54c549ff9b95496ce91930fadfb04a36be9 + pristine_git_object: adad24762cf452d137abe94fda0fd26224cef593 + src/glean/api_client/utils/dynamic_imports.py: + id: cc87d9ea2304 + last_write_checksum: sha1:a1940c63feb8eddfd8026de53384baf5056d5dcc + pristine_git_object: 673edf82a97d0fea7295625d3e092ea369a36b79 src/glean/api_client/utils/enums.py: id: f52630e8819a last_write_checksum: sha1:bc8c3c1285ae09ba8a094ee5c3d9c7f41fa1284d pristine_git_object: 3324e1bc2668c54c4d5f5a1a845675319757a828 src/glean/api_client/utils/eventstreaming.py: id: fdc3230ebb0e - last_write_checksum: sha1:bababae5d54b7efc360db701daa49e18a92c2f3b - pristine_git_object: 0969899bfc491e5e408d05643525f347ea95e4fc + last_write_checksum: sha1:7d1dc68f8b48486ab646653aa05cc38752e1f912 + pristine_git_object: a8d4fe5cc88d3c7337339e1b36a61bbf7ca8c4eb src/glean/api_client/utils/forms.py: id: 00f73e14b0f0 - last_write_checksum: sha1:0ca31459b99f761fcc6d0557a0a38daac4ad50f4 - pristine_git_object: 1e550bd5c2c35d977ddc10f49d77c23cb12c158d + last_write_checksum: sha1:dcf527960992b8baef3b21937c7e6c4e652630c0 + pristine_git_object: 193f264960f3014c81d41543b9023c14c44c12e6 src/glean/api_client/utils/headers.py: id: 1510f7a21a4e last_write_checksum: sha1:7c6df233ee006332b566a8afa9ce9a245941d935 @@ -4727,28 +6833,28 @@ trackedFiles: pristine_git_object: 6a16fe3e1046ea9ed0ddd098f8d67cd5084f5bb0 src/glean/api_client/utils/metadata.py: id: 3fc71f405e83 - last_write_checksum: sha1:c6a560bd0c63ab158582f34dadb69433ea73b3d4 - pristine_git_object: 173b3e5ce658675c2f504222a56b3daaaa68107d + last_write_checksum: sha1:e703e5cbb5255144aacf86898d1420529afaaff8 + pristine_git_object: 5abddd588837ac297050ca3b543627faadb350a9 src/glean/api_client/utils/queryparams.py: id: 481cbc2ea6b0 last_write_checksum: sha1:b94c3f314fd3da0d1d215afc2731f48748e2aa59 pristine_git_object: c04e0db82b68eca041f2cb2614d748fbac80fd41 src/glean/api_client/utils/requestbodies.py: id: 2191ba4efe4a - last_write_checksum: sha1:41e2d2d2d3ecc394c8122ca4d4b85e1c3e03f054 - pristine_git_object: 1de32b6d26f46590232f398fdba6ce0072f1659c + last_write_checksum: sha1:e1fef575283b7fe7fe2ad392dbbb3fb105309124 + pristine_git_object: 591415af8e64baa410627b507d2740afb5387d13 src/glean/api_client/utils/retries.py: id: 36d4cce6fbf6 - last_write_checksum: sha1:5b97ac4f59357d70c2529975d50364c88bcad607 - pristine_git_object: 88a91b10cd2076b4a2c6cff2ac6bfaa5e3c5ad13 + last_write_checksum: sha1:481dfc7cd6a07a3987f0f443e91bee72888ae41d + pristine_git_object: c7418a62826fc73990a52e70df0d54093c5e2a57 src/glean/api_client/utils/security.py: id: 5c4255995c2c - last_write_checksum: sha1:61b5eab8e97fdb03b7d847f927164da70a610760 - pristine_git_object: 9a8b701e4e0cb7415576fd6fac3c3509c403bef7 + last_write_checksum: sha1:355ba142fd72ec019e46b9aadb1da7172c17a312 + pristine_git_object: 4a272f16c2af33f6364bd9aec9cdc33b91f228d2 src/glean/api_client/utils/serializers.py: id: c499367f56e9 - last_write_checksum: sha1:ce1d8d7f500a9ccba0aeca5057cee9c271f4dfd7 - pristine_git_object: 14321eb479de81d0d9580ec8291e0ff91bf29e57 + last_write_checksum: sha1:7485f1425b0661fd84836186570df90207eec6af + pristine_git_object: 1031ed930bad5ece220cf7416a56c29f40f0588b src/glean/api_client/utils/unmarshal_json_response.py: id: 10872f2f336a last_write_checksum: sha1:8bea26e2247cd1c5b8dc60c70725ad0aed487c6d @@ -4759,12 +6865,12 @@ trackedFiles: pristine_git_object: c78ccbae426ce6d385709d97ce0b1c2813ea2418 src/glean/api_client/utils/values.py: id: 3c2d5aa49b0e - last_write_checksum: sha1:acaa178a7c41ddd000f58cc691e4632d925b2553 - pristine_git_object: dae01a44384ac3bc13ae07453a053bf6c898ebe3 + last_write_checksum: sha1:65e1ee8607767a4fc1ae7a55c74d77a23ab3cef1 + pristine_git_object: ac217f473c5d52a454a2979b3eb35e66175d365c src/glean/api_client/visibilityoverrides.py: id: 85e53a1c5de5 - last_write_checksum: sha1:ab6a49d70ccd5d6020d7b785a0df230d2b314dac - pristine_git_object: 96f9e5d3151fdcb6da599b4b3b6d43399a71b2a2 + last_write_checksum: sha1:633cf3b5b0f1f2e4359d271a3a678a229e95f20a + pristine_git_object: 7c608e8c2ed1a4a62d01b601d1c0a435e5c710f9 tests/__init__.py: id: 8e911f6351f3 last_write_checksum: sha1:cffdfca8e87b9acc39f414eddf64d233ba5fe450 @@ -4774,1375 +6880,3769 @@ trackedFiles: last_write_checksum: sha1:491c49c033b7c43cb406e4c5b1ffffebb41713f3 pristine_git_object: 8929d317282b341546a6dd5d78365aa062ff41f9 tests/mockserver/.gitignore: + id: 7705eb663274 last_write_checksum: sha1:228e1b05712a973948fd771323a2140a3b355ff4 + pristine_git_object: 9544318b09f3a2a6b6ac2a9d7830a08d850fac0e tests/mockserver/Dockerfile: + id: 509a8fa60119 last_write_checksum: sha1:72b74bf83cc79b4436ffe1a33211198ea447f06a + pristine_git_object: efdea18c5a25f2e1aef374286c28bc8df9f31c5d tests/mockserver/Makefile: + id: 87b9a2076cc9 last_write_checksum: sha1:f2619d7634d211c3c01dd68668635b0ebdbfc1ea + pristine_git_object: 2ae6a36c4542ec0511c8959bdaed46fa5c8c8603 tests/mockserver/README.md: + id: 0f381af25776 last_write_checksum: sha1:aa2bb9124570a1c12a3c81d728100c305a59220c + pristine_git_object: c8424fd3262b8c686a698dd14b9c4accd4024f43 tests/mockserver/go.mod: - last_write_checksum: sha1:44fa2062991ca9acb37a7ade5fb75d0b7731154a + id: 3c047699246d + last_write_checksum: sha1:e60cd88b747c397c0032d108a4e099e8b365721e + pristine_git_object: 8b92440779e9983727f1affaa2135e2da12aba28 tests/mockserver/go.sum: - last_write_checksum: sha1:d487c9e78318f86734588c530c3dfd01d02dd044 + id: ae54f5148e56 + last_write_checksum: sha1:cdeb52f5f4c63d07ba612730867a95b0ddb14b2d + pristine_git_object: 37327eda789a77df465ab478074ffcb1fc3729cf tests/mockserver/internal/handler/assert/contenttype.go: + id: bacbdd6bf4df last_write_checksum: sha1:2d059a68e53e70b269ddf897f8c6017f94434e18 + pristine_git_object: 42afbd06ec813272247c6ed3850eb09c86c4d0ae tests/mockserver/internal/handler/assert/header.go: + id: 21ca515afb79 last_write_checksum: sha1:a0866dfd740d218b5b94741ac92db4cdf5a2acd9 + pristine_git_object: 50f910d96ab053137ef54de0499d859863e7d171 tests/mockserver/internal/handler/assert/parameter.go: + id: efc035843170 last_write_checksum: sha1:0df39c0981a929c99ae767201b628d8c9e31f288 + pristine_git_object: f8a5e45a1de19f1d21d4cda5183c0113b7519e2a tests/mockserver/internal/handler/assert/pointer.go: + id: 068d29151cd4 last_write_checksum: sha1:48714196fb47649be28e8df031761038a9e10ee6 + pristine_git_object: fa03e4c854a3c4669e610805250cff96cb8cc583 tests/mockserver/internal/handler/assert/security.go: + id: 63140ec08b9c last_write_checksum: sha1:3cee6e3d2babea02486fd2df08eb00840f5ddea9 + pristine_git_object: 7d0a714a691ec21201de23089cfea85bf89ca017 tests/mockserver/internal/handler/doc.go: + id: 0b5fbf2792c6 last_write_checksum: sha1:a49b83f9fc775d3cc6f558b0f52b2fc9cf04f863 + pristine_git_object: a4e60c89d0f5fda085e691f8a5670b1ecb4d1dd1 tests/mockserver/internal/handler/generated_handler.go: + id: a30122c36456 last_write_checksum: sha1:32101ddff940c59f43a805af303cf645a2bcca0d + pristine_git_object: 929558ef2e1165f7e09da6d0a64f016c90971655 tests/mockserver/internal/handler/generated_handlers.go: - last_write_checksum: sha1:76cd04100088457139ecd6643cfd7494ebda9fa6 + id: 61ac4f7cce9e + last_write_checksum: sha1:6b77f36c3b3dc12b960b49941ee55263a0a6c05f + pristine_git_object: 8e541a71eba67ec8fd003759038b2b1ec43d6ab9 + tests/mockserver/internal/handler/pathdeleterestapiindexcustommetadataschemagroupname.go: + id: 979e4583765b + last_write_checksum: sha1:b1d4edb259d907c7a88b634bf16f0cf152321693 + pristine_git_object: 1aa2e9f6cdcad19be818e7f01506b118689691c7 + tests/mockserver/internal/handler/pathdeleterestapiindexdocumentdocidcustommetadatagroupname.go: + id: 502db61f4b70 + last_write_checksum: sha1:4ac03fda8cf26645eda1638b75f8c187ae7cf500 + pristine_git_object: ff7097f855b75a46f88c437dfba247c1a1c17e52 + tests/mockserver/internal/handler/pathgetapiagentsagentid.go: + id: 118e0c46ba00 + last_write_checksum: sha1:8ad0cc0ad413e34c3d950ee07ccd13ce861a261b + pristine_git_object: 821cdaf9e7e105e44baf2fb6c2352df5c5bd20f7 + tests/mockserver/internal/handler/pathgetapiagentsagentidschemas.go: + id: a3a921765081 + last_write_checksum: sha1:41dfbc3d70153e24cc2a898336d7d2a9c6e3d3df + pristine_git_object: a9212f1d5de9d8b40e73ea4b410feb26921c35cb + tests/mockserver/internal/handler/pathgetapisearchfilters.go: + id: 2a805587fc23 + last_write_checksum: sha1:9579545a91c3b5e5a204ede2f630f1e0e738b872 + pristine_git_object: 61dfb292ca694340fd9796a891113cfb07aa8a32 + tests/mockserver/internal/handler/pathgetapiskills.go: + id: a1697453079c + last_write_checksum: sha1:1608120c2f9ce748fdd2d373e576b6a0758092c1 + pristine_git_object: 7baa51e79fd4c8ed0f5c9ebadf5030c74e966973 + tests/mockserver/internal/handler/pathgetapiskillsskillid.go: + id: 97a0dcaf8ddf + last_write_checksum: sha1:d939db8a7f6d6e5b3e09402246efd0d1b53c44eb + pristine_git_object: 4f097d8448491dc032cba2fdbb1f9aae85f80600 + 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 + tests/mockserver/internal/handler/pathgetapiskillsskillidversionsversion.go: + id: 6b886ba93965 + last_write_checksum: sha1:66539864b0089984ac709c946711d854bc4a1930 + pristine_git_object: 48e1aa9402cac1fa2d775857aa6700bc1a2d18af + tests/mockserver/internal/handler/pathgetapiskillsskillidversionsversioncontent.go: + id: c6ac26c4873f + last_write_checksum: sha1:77b816a0cb7f4ac54d9b73b5da6d6dbceadff6e6 + pristine_git_object: ccccbef049419482a201b8a73aca33d632120e2f + tests/mockserver/internal/handler/pathgetapitriggerpresets.go: + id: 8cbf477f0939 + last_write_checksum: sha1:d1508970c69b2c338ebd88f1f474ef851d2b026e + pristine_git_object: ef94fda9e99ee96829abc36b3973ba6bd208e8a9 + tests/mockserver/internal/handler/pathgetapitriggerpresetspresetid.go: + id: a571f52cc5d7 + last_write_checksum: sha1:9abf84a6696f4d8677df48c4f3d88169285a19cf + pristine_git_object: d7ae3c3545243b585b280e4db808ac0882387666 + tests/mockserver/internal/handler/pathgetapitriggerpresetspresetidinputvalues.go: + id: "352313839387" + last_write_checksum: sha1:b11f22dc25535e0b230d96b0cb951fab9997ddf0 + pristine_git_object: 78b89ebbe2b2919ebadb4f752c0d431dd3c03cda + tests/mockserver/internal/handler/pathgetapitriggers.go: + id: 38c98b6efaf3 + last_write_checksum: sha1:52382d934f67c64dc20ae112848a5e36d3f2ac80 + pristine_git_object: 04c4bdc1dd177b742f724b6b16af9190ecd7280d + tests/mockserver/internal/handler/pathgetapitriggerstriggerid.go: + id: 024861a723c9 + last_write_checksum: sha1:d0a4340ac6287dd0ffc9e84723ee95f72f2f661d + pristine_git_object: 0ad3c036c63130546598a4ed5a6c497d980eccaf + tests/mockserver/internal/handler/pathgetrestapiindexcustommetadataschemagroupname.go: + id: a14a30d0e377 + last_write_checksum: sha1:83a992c70c3b7d010928d89a52f70db1042dd186 + pristine_git_object: 2c4b02fd1ef40990278fb1a2cd2173744cc508bc + tests/mockserver/internal/handler/pathgetrestapiv1actionsactionpackactionpackidauth.go: + id: 8af939b81cf6 + last_write_checksum: sha1:29914fc3785eaf9980aad75324ebece95ad62e10 + pristine_git_object: 97d3b63e28c6523d51222993ac6fa150cbd77000 tests/mockserver/internal/handler/pathgetrestapiv1agentsagentid.go: + id: d72b20162abe last_write_checksum: sha1:5210b43a5c1c7157ff57f7140449d82dc622931f + pristine_git_object: 416153625af26f14e98df5957fabb0f2c73eb900 tests/mockserver/internal/handler/pathgetrestapiv1agentsagentidschemas.go: + id: 82bfcf01432b last_write_checksum: sha1:a70fc628d284a0c11701c7d69a5d22dfdf118706 + pristine_git_object: c10d567f7e22ee3757b5b705e10f768ef5cb3bbd + tests/mockserver/internal/handler/pathgetrestapiv1chatfilesfileid.go: + id: a8a397bcd6b6 + last_write_checksum: sha1:887b475c2bb4766471ef5c168ed08b9333d8cad9 + pristine_git_object: 17e141f6577ca042122915970e39e001fa3b81e9 + tests/mockserver/internal/handler/pathgetrestapiv1configuredatasourcesdatasourceidinstancesinstanceid.go: + id: 89346cda44eb + last_write_checksum: sha1:be1ef6d303273236aa6b9797453a04bb778cdd62 + pristine_git_object: 9344b896fbe47d98a67ce164d994224352a161df + tests/mockserver/internal/handler/pathgetrestapiv1datasourcedatasourceinstanceidcredentialstatus.go: + id: 9c56c022fa2e + last_write_checksum: sha1:6738c2aab3e1125b511f4eed18ac16c51be2c001 + pristine_git_object: 92d8c1fa857c6776020144e37a705d298ff9859e tests/mockserver/internal/handler/pathgetrestapiv1governancedatafindingsexports.go: + id: b566408e9207 last_write_checksum: sha1:06b13f04c06621c32cd5d4664612a3804ffc49c2 + pristine_git_object: 777d476b2ef6d21b27ebfd13d2103319f5bcb831 tests/mockserver/internal/handler/pathgetrestapiv1governancedatapolicies.go: + id: a870b49b06e8 last_write_checksum: sha1:6089d4b8e771bd03d202691f0be1c3a7ed9fb6e8 + pristine_git_object: bbf888e6be13ab7f94b85fb9c1189ca2fc2854ee tests/mockserver/internal/handler/pathgetrestapiv1governancedatapoliciesid.go: + id: 783f8a29cf35 last_write_checksum: sha1:08b8057f91f2a800304987937336f033580406df + pristine_git_object: 102ff17bf163cfc31891f3d944eaefea89f84009 + tests/mockserver/internal/handler/pathgetrestapiv1peoplepersonidphoto.go: + id: ab4b35f72782 + last_write_checksum: sha1:086d9b020ab7cd0e78ed6d28933e95c09b82e498 + pristine_git_object: 253b4d87e6614dac4673d9387be09f0bd3258062 + tests/mockserver/internal/handler/pathgetrestapiv1toolserversserveridauth.go: + id: 6c9f22f1b9d6 + last_write_checksum: sha1:abe99a9d9076d3c0d944630fa94f3a83fdc10ceb + pristine_git_object: 53c86d01a47aa5d7802b7b20da09d44ab1ce0907 + tests/mockserver/internal/handler/pathgetrestapiv1toolserversserveridtools.go: + id: 1aef0e7406ac + last_write_checksum: sha1:91c52f9cda63058c8cac1992d7e3223c96dd7a2b + pristine_git_object: 71a41e80d04ea48366004b7babbf02aace219794 tests/mockserver/internal/handler/pathgetrestapiv1toolslist.go: + id: 1598fa297cf6 last_write_checksum: sha1:8b0d26cd221009e78396ed0c573e78c0ac719e36 + pristine_git_object: 163466cb44aa1a16439b3bd65ab52f00aeeff427 + tests/mockserver/internal/handler/pathpatchapiskillsskillid.go: + id: e09721a8879b + last_write_checksum: sha1:90c425f15814afd0ac42817b7ad6a056b6efc278 + pristine_git_object: 2b4d9db548fd58503a768732db17aca59d354d25 + tests/mockserver/internal/handler/pathpatchapitriggerstriggerid.go: + id: 76c9eb373567 + last_write_checksum: sha1:e444fbfab92b77e23c98fd0e33531018450185ed + pristine_git_object: 8f7f27440e39e082d0fbaba7428bbc0d714fbdf8 + tests/mockserver/internal/handler/pathpatchrestapiv1configuredatasourcesdatasourceidinstancesinstanceid.go: + id: 24dd79d2c474 + last_write_checksum: sha1:14d3e93a3f37b61145188a9e6544398fcfc200e4 + pristine_git_object: 40105d8daeb4ec2dd77c36244a4db0e63b847ee1 + tests/mockserver/internal/handler/pathpostapiagentsagentidruns.go: + id: b038130eb997 + last_write_checksum: sha1:badf21e13cd2f0afdc5fd5f325c1a34de39d0107 + pristine_git_object: 93595d14fd8eaa0af01a52bc6ce2cbfccaa479fb + tests/mockserver/internal/handler/pathpostapiagentssearch.go: + id: 7e4a6cf9ab84 + last_write_checksum: sha1:e0dffbdb295b7d71a0c9b405839947fabb50b9d6 + pristine_git_object: da7d08b0de7af705b535b8c40d172a3db3ba05cf + tests/mockserver/internal/handler/pathpostapichat.go: + id: 87a434352b0b + last_write_checksum: sha1:b09ce4ea80663c0fbf6e93e6abf9e0aa50bb28f0 + pristine_git_object: 7a5ec745c7b1c58e41225f7a280774e6ade6c017 tests/mockserver/internal/handler/pathpostapiindexv1adddatasource.go: + id: 549adf61c832 last_write_checksum: sha1:f1c92a8b8e4db16ee9334d7e28f8abec8c52d50e + pristine_git_object: 34e56c051a1de4db54b39cd3ff8f53fa892721b9 tests/mockserver/internal/handler/pathpostapiindexv1betausers.go: + id: d357c89e97da last_write_checksum: sha1:a651d2172a1cc47aea2feb8f9b4af37fa0d6fb67 + pristine_git_object: 3df89e08d36a4a79a3f5af39e494f5167012402f tests/mockserver/internal/handler/pathpostapiindexv1bulkindexdocuments.go: + id: 29888ed04ce3 last_write_checksum: sha1:68ea2acc41ce39cfd8b11aed122ca17d75575736 + pristine_git_object: 8801ff3b4ee68d9d8ecffcc8ea0c760f80c743c4 tests/mockserver/internal/handler/pathpostapiindexv1bulkindexgroups.go: + id: 2928641ed522 last_write_checksum: sha1:ecaf8d8097a13ad901c096ec276d3644085e01f4 + pristine_git_object: 8d3011e37966e045fae5bff361fb3e1b91868b20 tests/mockserver/internal/handler/pathpostapiindexv1bulkindexmemberships.go: + id: 407a33d1a94d last_write_checksum: sha1:9f735c241cf4ba6a0bbad18729573318ac18d414 + pristine_git_object: 5ba85f7408347e41b1abf3f0016b60260484f17d tests/mockserver/internal/handler/pathpostapiindexv1bulkindexusers.go: + id: 7ccba88b3749 last_write_checksum: sha1:c546b06949f735701f4c6c106c39edb947a63d4b + pristine_git_object: 7839fcf32fa3f8fdec15a1316b71ad0043e762aa tests/mockserver/internal/handler/pathpostapiindexv1checkdocumentaccess.go: + id: f5c15e5c9550 last_write_checksum: sha1:083cc0fd184fe85e11732efeaf655a94766e485e + pristine_git_object: 694a298e6520dec7101952083a840cd6433ae820 + tests/mockserver/internal/handler/pathpostapiindexv1debugdatasourcedocument.go: + id: e5fb3b0fe485 + last_write_checksum: sha1:3f823b5f20928a736835fb83712b243098ad921c + pristine_git_object: bc55c2aa0f57b571836275d8e32b9f5cf80656a6 + tests/mockserver/internal/handler/pathpostapiindexv1debugdatasourcedocumentevents.go: + id: d2751178eb71 + last_write_checksum: sha1:a300a1332a8b26c5f6fb87be09622312f77cab05 + pristine_git_object: 84c2b224b67e65bd2ea3d2efe4870db51d0056eb + tests/mockserver/internal/handler/pathpostapiindexv1debugdatasourcedocuments.go: + id: f2052430806a + last_write_checksum: sha1:7b9c63438bf45771a923e3e6a9f4d188316a42f0 + pristine_git_object: 93cd18807f5be62334087cb3847684631367bf2b + tests/mockserver/internal/handler/pathpostapiindexv1debugdatasourceuser.go: + id: 19bb77874107 + last_write_checksum: sha1:bb85cced5df50d507ee123275a0f7d3e50e10a05 + pristine_git_object: d7b771b1eb8cfd407170382c51cebe37f9fecf61 tests/mockserver/internal/handler/pathpostapiindexv1deletedocument.go: + id: fae713eb6713 last_write_checksum: sha1:f89b4868c7de24296485b340a550c1bccfe2d2b8 + pristine_git_object: 34beba465288c142d7363ab0e91372b410f6a9bc tests/mockserver/internal/handler/pathpostapiindexv1deletegroup.go: + id: bee02d25ba83 last_write_checksum: sha1:9d5ad5647139a434081c0288ff0c577d961a5016 + pristine_git_object: b4ae2858a87d53266a4eec24db61403c0b5678f5 tests/mockserver/internal/handler/pathpostapiindexv1deletemembership.go: + id: 906e9d03cf68 last_write_checksum: sha1:200533ffaaba0dd8ca43b72a78b98473d4e52b47 + pristine_git_object: 99968cf2a4f0428a16886cd8ae25de76c0f9f470 tests/mockserver/internal/handler/pathpostapiindexv1deleteuser.go: + id: cc66dc7cd1c0 last_write_checksum: sha1:4583198cf9e535af6d0c3decd7e87675b34e48a0 + pristine_git_object: c837223790f5b1a796925e9d0c722b105e951327 tests/mockserver/internal/handler/pathpostapiindexv1getdatasourceconfig.go: + id: 74a829f18d1e last_write_checksum: sha1:d7ec1d3a2b07ee43932e477ab1df5670c941a06e + pristine_git_object: c7b4ab25e8ac6a0e502986dedd345fcd8798872f tests/mockserver/internal/handler/pathpostapiindexv1getdocumentcount.go: + id: 1c90ed77e53b last_write_checksum: sha1:f0a6f49cd1d5a9d3a6f3f9e1f7bc2629c62f4d24 + pristine_git_object: dbc8be6a27700c61d94f81db39f3c4c585a48313 tests/mockserver/internal/handler/pathpostapiindexv1getdocumentstatus.go: + id: f04ef794dc36 last_write_checksum: sha1:49b89d80eb4cc689c91f4b36d08788a314d34003 + pristine_git_object: d7afbcdcb696d3645d32eabd90bbf755bf0f857d tests/mockserver/internal/handler/pathpostapiindexv1getusercount.go: + id: 6a5569fa5a39 last_write_checksum: sha1:2dda97b8d3e7eb8fb02166b9a4183af3fe721431 + pristine_git_object: 4fcb5e77d62799c2018aaa8a4307bfcdb60a36ce tests/mockserver/internal/handler/pathpostapiindexv1indexdocument.go: + id: 537d442278e6 last_write_checksum: sha1:d2ab55b61378b69cdd3ae5a619034378ea038b89 + pristine_git_object: e6d4878ce926851b8ff65307416b705e238c3056 tests/mockserver/internal/handler/pathpostapiindexv1indexdocuments.go: + id: 88802c915022 last_write_checksum: sha1:45f34e554558420d01149ba1f56d95c3b05744e1 + pristine_git_object: d51b3b79352601fd095ae96029381ac9302b309d tests/mockserver/internal/handler/pathpostapiindexv1indexgroup.go: + id: 8e574ae53170 last_write_checksum: sha1:5f7421344266fc96b5f30ef499d1fedcc0c1f77b + pristine_git_object: f95be6a83f65c4da9ae68eaa452de7a62d3d3798 tests/mockserver/internal/handler/pathpostapiindexv1indexmembership.go: + id: 1020ff976b95 last_write_checksum: sha1:42fa2cd16d6c616d8fc02e3a176a21fde19a1276 + pristine_git_object: 237c6ab1b29b3b1cd07be944f3dc0225bd66f060 tests/mockserver/internal/handler/pathpostapiindexv1indexuser.go: + id: 929289f76625 last_write_checksum: sha1:9818d8db1eaf622c005e454c0052ea1ca9078499 + pristine_git_object: 995587c332f9a5673d64c5acc91e8d252a4faddb tests/mockserver/internal/handler/pathpostapiindexv1processalldocuments.go: + id: 694303e0877b last_write_checksum: sha1:2731a2099c9b5ad896decddca98532ca04bc373c + pristine_git_object: 11e345683da87e333758efb62b980838b6b1ba4f tests/mockserver/internal/handler/pathpostapiindexv1processallemployeesandteams.go: + id: 575b91627278 last_write_checksum: sha1:2cb1a359ebac44a0638a7fb82eb4a1872a961416 + pristine_git_object: 8bc7960b8f39936032eaddf652121ebe599bd137 tests/mockserver/internal/handler/pathpostapiindexv1processallmemberships.go: + id: 3ffe78dd3270 last_write_checksum: sha1:342df3a7c0a13211e8341964ec70e8d5f8d02d2c + pristine_git_object: dfe7762d3eb3a25cf25207eef13c7125629cb8da tests/mockserver/internal/handler/pathpostapiindexv1rotatetoken.go: + id: 1d31bb22a359 last_write_checksum: sha1:d663a6564269f2894bb75a0b7bb0a98421d25d07 + pristine_git_object: 23d1db7adf0f606fc4aaeed427d3abf4ecc1b19e tests/mockserver/internal/handler/pathpostapiindexv1updatepermissions.go: + id: 3a513f7feb0f last_write_checksum: sha1:30d3d3c8d634fa56d0510224f26e4538ba76dc89 + pristine_git_object: 9bb5d5769dfb3a4e78676950e8a2706f119bfc5c + tests/mockserver/internal/handler/pathpostapisearch.go: + id: 53e6a34b5b4b + last_write_checksum: sha1:5c878b42ee0ffe08f9ad98c3e1f1c9c20ce4d21a + pristine_git_object: 1e3fe6a9bed655ba32d7c59fe577f41beac69da8 + tests/mockserver/internal/handler/pathpostapiskills.go: + id: 8ed490cc6d95 + last_write_checksum: sha1:5749c3cbb8d3cc90c75ead5cd6547775e97d1ef4 + pristine_git_object: dfe54aafb86188b641df7d3f4ab98fba364b68c7 + tests/mockserver/internal/handler/pathpostapiskillsimport.go: + id: 07a47818c029 + last_write_checksum: sha1:41bc34387c843be0cbccb2bae4af32a7112e76f7 + pristine_git_object: cdcc73daba6ec8b34a04797674ce757cfce51e6b + tests/mockserver/internal/handler/pathpostapiskillsskillidsync.go: + id: efdd0a8f2a3d + last_write_checksum: sha1:39cdf62ad6655c214bb0e38092b0464862e0a039 + pristine_git_object: 0cab544fc9c247c4b5f8d19a1e83d47996c7501f + tests/mockserver/internal/handler/pathpostapiskillsskillidversions.go: + id: f6e6dcee5ffa + last_write_checksum: sha1:5a244bc3c1b083e78d22e3358ac4691ece188428 + pristine_git_object: 1f3d1fde1c6e5db9a85a116b88255e61a451fab4 + tests/mockserver/internal/handler/pathpostapiskillssourcespreview.go: + id: 58d10f72cfe6 + last_write_checksum: sha1:f648c8848f17daa6b1777d48cddfa881ff0a6d2f + pristine_git_object: 11e0efcabee999d01568917c5497ea70e3804e62 + tests/mockserver/internal/handler/pathpostapiskillsvalidation.go: + id: eaa6c1478b34 + last_write_checksum: sha1:cc8f959924866fdf5febe729b5d5819ff7e53173 + pristine_git_object: 2048ae91e6f81a6ecb4bb9281ef60ce287330724 + tests/mockserver/internal/handler/pathpostapitriggerpresetspresetideventssearch.go: + id: e3d540cdeac5 + last_write_checksum: sha1:ea8dacd262eea49ea165e976a53c541f95d1e4a6 + pristine_git_object: 83a0e25f7929c89d20f8acc0b44e4060a4d0abc0 + tests/mockserver/internal/handler/pathpostapitriggers.go: + id: 85f970d314eb + last_write_checksum: sha1:2a52d5045d727e7b181decdc82315f9656900203 + pristine_git_object: 7a0ab74b9f4d357c051e2ea5138111c83359ae0a + tests/mockserver/internal/handler/pathpostapitriggerstriggerideventssearch.go: + id: e27c1d4cb373 + last_write_checksum: sha1:0af9ebb63a29cdd0b59d7ebb82a02f6bf24f3a20 + pristine_git_object: f356922816acb43e8b460878976b761b424fea2f + tests/mockserver/internal/handler/pathpostrestapiindexsubmissionsdatasourceinstancetype.go: + id: 1a5daf7874ce + last_write_checksum: sha1:b5b37f0b5a7b4d9a4c69ab523e831f1702301118 + pristine_git_object: d4978bcc8073b6491879e4a27b30ccefbcb89272 + tests/mockserver/internal/handler/pathpostrestapiv1actionsactionpackactionpackidauth.go: + id: 9aaa5b8c2f43 + last_write_checksum: sha1:6e74488c94c9f19f95861e6b5940457c55078190 + pristine_git_object: 5ae4ea1285a00a2343bb5b79a02b827b62230fe9 tests/mockserver/internal/handler/pathpostrestapiv1activity.go: + id: fc2da8a2438e last_write_checksum: sha1:740b590218da942539e85a585bec78c0777ae934 + pristine_git_object: cf821af601b02d653278f9f079fad38eadb37b78 tests/mockserver/internal/handler/pathpostrestapiv1addcollectionitems.go: - last_write_checksum: sha1:a1e78caa1e86ea292ff66e059c407fb0f276b337 + id: 453597f808da + last_write_checksum: sha1:bd9aa6512282c2641b398d1166dc17d7dc3576ab + pristine_git_object: 363e98968712d8ac0d1eeb6c924ba685f5d2690e tests/mockserver/internal/handler/pathpostrestapiv1addverificationreminder.go: - last_write_checksum: sha1:c84407a2fea61f697db312567614db6b63718d19 + id: d6f7902f9883 + last_write_checksum: sha1:2a7596e25accc1641c76ae54ab8cfa440d7418ab + pristine_git_object: 238a63f7607f10826012443f447ef4ebc579661d tests/mockserver/internal/handler/pathpostrestapiv1adminsearch.go: - last_write_checksum: sha1:eca93b5859c110232d3d2235976ea5d4681fc2e1 + id: 3c3d5555c20b + last_write_checksum: sha1:8ef1b12ee725ee32fb6a0a1e0e812594df97e06f + pristine_git_object: 26fdfdd7e2d2fdffa6ecc736b7a70d6eb1aa5327 + tests/mockserver/internal/handler/pathpostrestapiv1agents.go: + id: b5d188f39094 + last_write_checksum: sha1:b625a3bbaf0748388febcf87d2b92782167c2c63 + pristine_git_object: 6c1367d61758e68e6cb415247e7473355d17c03a + tests/mockserver/internal/handler/pathpostrestapiv1agentsagentidimport.go: + id: 952368aa0826 + last_write_checksum: sha1:57809e3bcbb89a39aad40c468f93cf1a94d18c4a + pristine_git_object: 1b96791e00ada54d8f07f36a7e743718687287b2 tests/mockserver/internal/handler/pathpostrestapiv1autocomplete.go: + id: 9830ef01b25b last_write_checksum: sha1:094d64ddc73a91d38e64e3be18690ebb9d4ef3d3 + pristine_git_object: f5022d6d984936d775ac67f58351dd65db04bc02 tests/mockserver/internal/handler/pathpostrestapiv1chat.go: + id: 72aaa913f0bb last_write_checksum: sha1:0e62b904cb8354c1da5300d5f5b5b5a996c31716 + pristine_git_object: 24ba560b8daa0e125d418a139c2e851403be2845 + tests/mockserver/internal/handler/pathpostrestapiv1checkdatasourceauth.go: + id: a2799924e03d + last_write_checksum: sha1:bfd126dda7eb1a68c0edd1403c89770a4907aec9 + pristine_git_object: 41731f5cf158d0388c5652735c6f2623d545e8ba tests/mockserver/internal/handler/pathpostrestapiv1createannouncement.go: - last_write_checksum: sha1:fe9097d90fc9db0248506b6d1d27a5551dda73c4 + id: f799135d9b38 + last_write_checksum: sha1:0b93fd5d83fbe115c126538e632ea7a1710d8c9b + pristine_git_object: 1efad5a31faf0e65b8f3d2a5ffce23cc5529e7f3 tests/mockserver/internal/handler/pathpostrestapiv1createanswer.go: - last_write_checksum: sha1:6a6b05425a6494a71f8a08d279543f65823900c6 + id: c48b6ed78315 + last_write_checksum: sha1:34a049bd08ca459694f08c0aef6c69105e48fdd0 + pristine_git_object: 31b8c1ca314968a815709c8fc4271c4876c247de tests/mockserver/internal/handler/pathpostrestapiv1createauthtoken.go: + id: c8a479263c3b last_write_checksum: sha1:6ce83ba03066acb436796c018d19715615f548c1 + pristine_git_object: ab9263d43404e8e6f07af222a3e785aca2fbf35f tests/mockserver/internal/handler/pathpostrestapiv1createcollection.go: - last_write_checksum: sha1:14b4a1d98dd55ce2b487ae1aaab4a7dece08df25 + id: 3fb93a419933 + last_write_checksum: sha1:09a57acc1d004a2fff76290b6c25e24471ad333e + pristine_git_object: 469bd6e6ee30bb11661f2a596a4504b75fa07da0 tests/mockserver/internal/handler/pathpostrestapiv1createshortcut.go: + id: 8d9d3abb0c34 last_write_checksum: sha1:dcdf684a85e20db1aee571db9a54a3ee259d71d5 + pristine_git_object: 8056ecc1f96b383b689aee9fb2b78b1ff76973da + tests/mockserver/internal/handler/pathpostrestapiv1datasourcedatasourceinstanceidcredentials.go: + id: e53dab9ae3bf + last_write_checksum: sha1:d037020783a24705c0efd9f83310746517d032d5 + pristine_git_object: af37421f2eaf45b5f98807f2e69a2ff0a0425068 tests/mockserver/internal/handler/pathpostrestapiv1deleteallchats.go: + id: 659965a5beb5 last_write_checksum: sha1:7342efa7a55bf0d83da3680c9504c5b582c738e4 + pristine_git_object: a83262028ac84a63cc872bdae96fc1303f60285c tests/mockserver/internal/handler/pathpostrestapiv1deleteannouncement.go: + id: 24a74b4ebdda last_write_checksum: sha1:6f931416507ed9d9875143f82bc50d3beac8b1da + pristine_git_object: 8a58ed5cea74767acb351f1993239f7036550a6a tests/mockserver/internal/handler/pathpostrestapiv1deleteanswer.go: + id: 14209d0ab8eb last_write_checksum: sha1:690b91bbf6f0618bad729b9111942523912b86a4 + pristine_git_object: 0b853e55c1552291ef7f12f9f0872b84daeefb33 tests/mockserver/internal/handler/pathpostrestapiv1deletechatfiles.go: + id: 2eac25b5e397 last_write_checksum: sha1:5a426cea74ad83810db60ec7042dd306590e0662 + pristine_git_object: 9e26a1a0122e09ce76fe1911c3143515119adfb3 tests/mockserver/internal/handler/pathpostrestapiv1deletechats.go: + id: e43f12506f8e last_write_checksum: sha1:640bd99cdfc344506387c7ab716d5294ef7111bb + pristine_git_object: d1b1369304389a79e475cab6cf1afb3af0b0fb2a tests/mockserver/internal/handler/pathpostrestapiv1deletecollection.go: + id: a8d711f41054 last_write_checksum: sha1:9c5945878376ea9aa9a5131b1b84a3fbb767fbd8 + pristine_git_object: 1089baf05a0161fc1353240b9e267d2bb046f5f7 tests/mockserver/internal/handler/pathpostrestapiv1deletecollectionitem.go: - last_write_checksum: sha1:79f243475eebf77737d10bbc989f245b2ff3309a + id: c44ca720f6d9 + last_write_checksum: sha1:251679b6e156fcc46098b00632d785b836b4e9ed + pristine_git_object: 592a00dfecab35c044aa40540280d8b7aca7f693 tests/mockserver/internal/handler/pathpostrestapiv1deleteshortcut.go: + id: 215198be2cae last_write_checksum: sha1:7a7a40095e3b2fd22ecc7652e63ce0e298543f96 + pristine_git_object: 0c4dc328740204a54634c0f01fb0f6f5f0b8c0ce tests/mockserver/internal/handler/pathpostrestapiv1editanswer.go: - last_write_checksum: sha1:016651547e2d9c780c1d75c9593bedba2600046e + id: ac78c5f77070 + last_write_checksum: sha1:a900ffe60028d458e86eee644a23eac954fea183 + pristine_git_object: c4e632d1fd4f90de42752e1a4facb697d210b4ac tests/mockserver/internal/handler/pathpostrestapiv1editcollection.go: + id: 2f60cb88f757 last_write_checksum: sha1:c1fde968092c33335e16fe7358978e581301163e + pristine_git_object: 85052c8d4fd14189668bc138777030d7839fd1ee tests/mockserver/internal/handler/pathpostrestapiv1editcollectionitem.go: - last_write_checksum: sha1:cd1260ecb88413845c61b637050fe97f56c51487 + id: 0a3149ca9f75 + last_write_checksum: sha1:bccda39ad0b6d11e247c2723b67cbf40fe3f4d7e + pristine_git_object: 54ec38a45e130fa42e1f149ae35726237f687c05 tests/mockserver/internal/handler/pathpostrestapiv1editpin.go: - last_write_checksum: sha1:0b1a1c2907efbe01f3c32bbc893f6217be0f2f5e + id: 785ac52f9271 + last_write_checksum: sha1:331563c80356e895a84ab898df7c359da3c70b45 + pristine_git_object: b127949568b5ba821846489ce317747562100576 tests/mockserver/internal/handler/pathpostrestapiv1feed.go: + id: 7e1246bc65e0 last_write_checksum: sha1:c102414f84ee6adb3c314425a2c6d051c4501b2e + pristine_git_object: 950ad3db61530ae01f94aee133c5e9e2d35e4151 tests/mockserver/internal/handler/pathpostrestapiv1feedback.go: + id: 9c6e064091bf last_write_checksum: sha1:2ba56c655e63e01a5c46fbd7beb087077a6deaea + pristine_git_object: 372a01f2bf460eaba695400be33a14f2608eb917 tests/mockserver/internal/handler/pathpostrestapiv1getanswer.go: - last_write_checksum: sha1:3bec6f7cd190f9394bebac2407f9d7f1e606e479 + id: 6dad542fc9ef + last_write_checksum: sha1:80bc08894cebfd78f82d3d80f93fd85a11b55d45 + pristine_git_object: abb763ddc8504b28c0cb6fdf8d25237d46e21bab tests/mockserver/internal/handler/pathpostrestapiv1getchat.go: - last_write_checksum: sha1:089475adb3686c656bd0eb52940285a7e037ab83 + id: a0ec7bafa599 + last_write_checksum: sha1:2267292ba8173cf8df70ddbc6ac02ff3439cb879 + pristine_git_object: 8740195860b6c08e036caae19aab8e7374350960 tests/mockserver/internal/handler/pathpostrestapiv1getchatapplication.go: + id: 7d101c69d4bc last_write_checksum: sha1:7b81898137fdb3a89b4dcfa318b9b5b92e8860c0 + pristine_git_object: c7983c60d6269f825a8dbd2577015ecb24064f72 tests/mockserver/internal/handler/pathpostrestapiv1getchatfiles.go: + id: 21d7f14a966a last_write_checksum: sha1:3ce17b01cd64de13a1b737a3326c320ad3603b1a + pristine_git_object: 73feb6db8e282c99b859fb6545e5d463eaab3585 tests/mockserver/internal/handler/pathpostrestapiv1getcollection.go: - last_write_checksum: sha1:0554ff04a21f99f7e86320236d761715fc4d1e52 + id: 952d7b6f017e + last_write_checksum: sha1:da0e722fbe604ac4d80e9796901ef5783c793911 + pristine_git_object: 5d34142ea27af523b9182d6cbc16d5a9c837dd30 tests/mockserver/internal/handler/pathpostrestapiv1getdocpermissions.go: + id: 1387c9e44fb5 last_write_checksum: sha1:b2d67531e58089109953dc3ed416bd6b4e7a8373 + pristine_git_object: 3d7e842f17e249c5dd61f1923956c9363920e3ff tests/mockserver/internal/handler/pathpostrestapiv1getdocuments.go: + id: 303c4f3228c9 last_write_checksum: sha1:7225fe43412ee32fe701c5fa9ed76440f693d649 + pristine_git_object: 453834abe2c46ad73d0797646d3f2c506fc2b10f tests/mockserver/internal/handler/pathpostrestapiv1getdocumentsbyfacets.go: - last_write_checksum: sha1:158e213985342eebc839b90b0d7f779c6bb3d147 + id: 9913813e1577 + last_write_checksum: sha1:eeeef0766d261c473bfa892639abdade30da9dfa + pristine_git_object: 4952b77e999cbfe41c254e19ac5db0e407a9c7f0 tests/mockserver/internal/handler/pathpostrestapiv1getpin.go: - last_write_checksum: sha1:e01833096990defa11712dc6654cea7e9ab2f417 + id: 729d046e63ac + last_write_checksum: sha1:4d9561275f57cf77b9f52b99bc21b1d27712a38c + pristine_git_object: fe2aa28374123d8171c7954a1f739a6e0ab4f2c8 tests/mockserver/internal/handler/pathpostrestapiv1getshortcut.go: + id: ce5afc1f1e34 last_write_checksum: sha1:327c7d7c4e53607f8912156c8997b1713d7590d2 + pristine_git_object: 97cd66fe5f67a990226817321a4b5bfec272e774 tests/mockserver/internal/handler/pathpostrestapiv1insights.go: - last_write_checksum: sha1:e30a0312a80b6060a6aa60f4c2668412422d7a7c + id: 97eddeabde4c + last_write_checksum: sha1:4648f4b752507c33020b12f301dd5a48aa95e839 + pristine_git_object: 6e9737ca0402981a793c79c1174dfb99a89e517e tests/mockserver/internal/handler/pathpostrestapiv1listanswers.go: - last_write_checksum: sha1:e77c9140ef08683b112e16a0cb45370c1f912564 + id: 37b954838893 + last_write_checksum: sha1:b31b0eb64b63a103d3bf4b682bd865a185698054 + pristine_git_object: ca9c40ec604aa643c9d3bfbb09f205d553bc1e0e tests/mockserver/internal/handler/pathpostrestapiv1listchats.go: - last_write_checksum: sha1:422bc0247c489677f9c84114dcd7116852fef1e6 + id: 7ae5e49d6dce + last_write_checksum: sha1:b6ffb2a9c5fc46d1737657cefc57b8a4804ee92d + pristine_git_object: 572a0c4e92545114d397aaf99426e00bfe632bdb tests/mockserver/internal/handler/pathpostrestapiv1listcollections.go: - last_write_checksum: sha1:65e94db468d4c523ed9beab0c3a6e022849e64b0 + id: 02663724888e + last_write_checksum: sha1:501f7d4bd03e2c28aa7a7d12a78ff6eec0efcc24 + pristine_git_object: bf011d223ec0d63207e791edd7415143a7a2016b tests/mockserver/internal/handler/pathpostrestapiv1listentities.go: - last_write_checksum: sha1:e8d8ffeab6c0ebb370de40c852f4af059610da69 + id: 9052f7de943d + last_write_checksum: sha1:950062481cce0b74dd0d936947eba20fd7168ace + pristine_git_object: 1c5901748048d94fdc03dbc0d7111cd883927d80 tests/mockserver/internal/handler/pathpostrestapiv1listpins.go: - last_write_checksum: sha1:c5b8661376acf14fb45c94786a73407e3ccfce7a + id: 77d7cb841d0e + last_write_checksum: sha1:647bbd8e35c0b3ec4b2aae304c6eb1fd2a6aa7ea + pristine_git_object: b23d7ae8fe5e0db17568b327a58d1c558f709fb6 tests/mockserver/internal/handler/pathpostrestapiv1listshortcuts.go: + id: 5ea10fed652c last_write_checksum: sha1:23ba4c891bdf622f8520cfcb2982eb8033051c4f + pristine_git_object: 6591d82abf632a39abd6e928ed98ff7858c63d5f tests/mockserver/internal/handler/pathpostrestapiv1listverifications.go: - last_write_checksum: sha1:7b99f010057f6b98a1221d36c4eb56c1db2b0024 + id: f60e29570dbb + last_write_checksum: sha1:572e81aac862f264f9c369e33e439493e3a9a9f1 + pristine_git_object: 243e4b83d639ceaa4b7f6e4741e52fd5d05b68cc tests/mockserver/internal/handler/pathpostrestapiv1messages.go: - last_write_checksum: sha1:410a1891eccae89371ea0a5ad56e1a8e929d08c4 + id: 9b8c904cf45e + last_write_checksum: sha1:9d687b6f21535528f0a4157fa4900a14d8cd84d7 + pristine_git_object: bbd8a470d311307afff9eb485159964e09fc44a2 tests/mockserver/internal/handler/pathpostrestapiv1people.go: - last_write_checksum: sha1:7a2c7c4195547c84ad45b183e8f3ad0992d531fc + id: 18588f42240a + last_write_checksum: sha1:e5404d64a70fa90dee7adde105d617b6f6ffc15b + pristine_git_object: ac833cc810acb5754e38144842d583fce8d64483 tests/mockserver/internal/handler/pathpostrestapiv1pin.go: - last_write_checksum: sha1:db295f34ab138d1140b72af4a2351823405d5dc1 + id: 827778f37a66 + last_write_checksum: sha1:478cbba00e1b9fdce1c7293f77ae45c61fe6afab + pristine_git_object: b137a0a80189806f9e937b0ad89559ad899728b3 tests/mockserver/internal/handler/pathpostrestapiv1recommendations.go: - last_write_checksum: sha1:1fd737e7116aee5777f6805e5687923531d171b0 + id: 14a4083134b7 + last_write_checksum: sha1:86179e1f769213b4d293746b68dea637e9bf50e2 + pristine_git_object: e9f511ab3dda56dfd8cdb500c7206ca944c4aeca tests/mockserver/internal/handler/pathpostrestapiv1search.go: - last_write_checksum: sha1:936fe2abfb7a02c61f1fd7fc399938da801cc744 + id: ee7df329ebee + last_write_checksum: sha1:a71a7f68fe9c25edd70364a49d4631f60999af67 + pristine_git_object: f3b2ae98bce24a1391b2191cd38d1294cccdeddc tests/mockserver/internal/handler/pathpostrestapiv1summarize.go: + id: 4ffce09060b0 last_write_checksum: sha1:eafbc420f54c1395f41af4735d74af6105c8d50d + pristine_git_object: 2184efd63a6f3d7f1b570e5ebdbbcffe1330e0a2 tests/mockserver/internal/handler/pathpostrestapiv1toolscall.go: + id: ad6776df2ba3 last_write_checksum: sha1:97d094dbdeba08fc395322c0048c259ecf0035fc + pristine_git_object: 1676df61ea2406ad36a967ea58ff4022922d133c + tests/mockserver/internal/handler/pathpostrestapiv1toolserversserveridauth.go: + id: ec9262467bda + last_write_checksum: sha1:d9ae76d001db8e14db7bbc7e88edff85f2355350 + pristine_git_object: 93aadc88bb832e4d0d91ce711f39e18cf3ebf3f4 tests/mockserver/internal/handler/pathpostrestapiv1unpin.go: + id: 08da240877b4 last_write_checksum: sha1:4ad6d409b1f7c8e66b8e3ec423016f5bc7e94605 + pristine_git_object: c1a7228b3369bb431ed24857ed794a7ab48339d8 tests/mockserver/internal/handler/pathpostrestapiv1updateannouncement.go: - last_write_checksum: sha1:42784b2ebcaca0fd7f555940c78bfcba20622237 + id: faea247d7d6b + last_write_checksum: sha1:3758a38536ab57e88e20157a7d92d9c88575ce66 + pristine_git_object: 883465118636d7e72243c0425829427b6eafebba tests/mockserver/internal/handler/pathpostrestapiv1updateshortcut.go: + id: 4b673857b971 last_write_checksum: sha1:a77e29c3d560d8c77687dea16a48c82d18d16746 + pristine_git_object: caf44acba206d965ae722994b355c01d8dec5708 tests/mockserver/internal/handler/pathpostrestapiv1verify.go: - last_write_checksum: sha1:d0c25ff992ff9b089ec906c3f8c0a38b1fade91c + id: 39d1104b87dd + last_write_checksum: sha1:81e23075ee7fa39fa4c5feaf617483fe4b366b1c + pristine_git_object: ab0824f9439225877f223f1ad2ddbbf29e6dcfcd + tests/mockserver/internal/handler/pathputrestapiindexcustommetadataschemagroupname.go: + id: 308cdf6fc94d + last_write_checksum: sha1:e451ed556d221180f382198554cb9c48ebe6cdc9 + pristine_git_object: b9aa8f5d68454a0d480303e51d36f835bad5c264 + tests/mockserver/internal/handler/pathputrestapiindexdocumentdocidcustommetadatagroupname.go: + id: 1c1bf391d8e3 + last_write_checksum: sha1:149f22f18bc46e075c2b0d8e78c45fcb850d57af + pristine_git_object: acee8819ecca0e48cb7988a724f28207f06fee7b tests/mockserver/internal/handler/values/files.go: + id: b4edaa743a70 last_write_checksum: sha1:e1e9d78c165e2a35d165f120bd8dcd7b42c33a33 + pristine_git_object: 6eca8858dac804123836663005d937372686b708 tests/mockserver/internal/logging/doc.go: + id: aed3c4840e49 last_write_checksum: sha1:63a119620f179826356304b8205756248caa370e + pristine_git_object: 8835f1cc9cf31b2610c56ec385a1b477f80052ba tests/mockserver/internal/logging/formats.go: + id: 40d173aa5b43 last_write_checksum: sha1:e84e84e6e62a4dc3b9ad3a7f2a95eb77374f2fcd + pristine_git_object: d6ab53c8fb08198c51bbb732ee4bfa66af181044 tests/mockserver/internal/logging/http_file.go: + id: 3a9caf78d317 last_write_checksum: sha1:e948142b98821c23bd21c128e007e79a193114a2 + pristine_git_object: d690d9153a532ecb2a6e798f7fd12734c7ecc167 tests/mockserver/internal/logging/http_logger.go: + id: 18e34362bb8f last_write_checksum: sha1:7a2267a61cb1282405ed7f406f9bd95fbf796b5b + pristine_git_object: fdd5d058aaacbe840a9d687f1e385a84d2b5f066 tests/mockserver/internal/logging/levels.go: + id: 38a926bd953a last_write_checksum: sha1:164f3aee47030d3534e4ef2df31192304e9ea97b + pristine_git_object: d2a8e93c3ddc5c06285f791a4d1cfcafa2affbaf tests/mockserver/internal/logging/logger.go: + id: 0a6ab6e2cc12 last_write_checksum: sha1:92027a7d11dd84831bc444aa2d018cbb7195542f + pristine_git_object: bfd6dc786676c296f36c8dedc6cd443b3f317c5b tests/mockserver/internal/logging/oas_operation.go: + id: ac7b824c59a6 last_write_checksum: sha1:af9187f31972ef308fb4bc82de73d6dd71b9fb64 + pristine_git_object: d4f2af7b4d2df6aa2821ead488033f3fbbc38f2c tests/mockserver/internal/logging/oas_operation_call.go: + id: f49866e79383 last_write_checksum: sha1:1ec2244b5fc171dfe7e4e339420b2b17f0df48c9 + pristine_git_object: beb05908cf58a7b8b46d739ee51a5aba54c5bf7c + tests/mockserver/internal/sdk/models/callbacks/platformtriggerscreate.go: + id: ec899b2c8ce2 + last_write_checksum: sha1:3015bae65f0ed0920603a0f64c450b372470dcb4 + pristine_git_object: e3e68dc831a305ea069cbf811920d7535117f2eb + tests/mockserver/internal/sdk/models/components/accessrequestpermissiondeniedresponseerror.go: + id: bfda76349972 + last_write_checksum: sha1:e32d7171635a47a47a09980f63a968d8d3c67499 + pristine_git_object: bd5d24e4229ac2c9b013cdcc1124b4cbe6c5f82a + tests/mockserver/internal/sdk/models/components/actionauthtype.go: + id: 4ff9feaab0f7 + last_write_checksum: sha1:bd904943895ea34005f594e13f12481f96c11286 + pristine_git_object: 4547fc36c08113276fbd2e9834bc6db93efa2052 + tests/mockserver/internal/sdk/models/components/actionpackauthstatus.go: + id: 0635e409814b + last_write_checksum: sha1:3782e2b34ee497143dea41e1cfee8e516f2a80eb + pristine_git_object: fb8e700a43a37a5f1d843ae8adbb19f0b3a050ca + tests/mockserver/internal/sdk/models/components/actionpackauthstatusresponse.go: + id: ad34672435c4 + last_write_checksum: sha1:578df01f6d9f140122c63b6b9b2b01cda1ad6280 + pristine_git_object: b5d719827a698757158580e277482bb8a7a00238 + tests/mockserver/internal/sdk/models/components/actionpreview.go: + id: b59786e4fa6d + last_write_checksum: sha1:89544c34cccc3a130fc95b1981eacb57a9c2772a + pristine_git_object: facf42ad976803e2f4299f89902efc5ec3bd8bef + tests/mockserver/internal/sdk/models/components/actionsummary.go: + id: f7930cfbea89 + last_write_checksum: sha1:32cfaf32c20b96fe223b11c6150435d39c9be8da + pristine_git_object: b2ab488484bf36734dd6f5be8f788a99661703b2 tests/mockserver/internal/sdk/models/components/activity.go: + id: e9c217cc89fa last_write_checksum: sha1:62ed2988de11a8af0b36342f9e557621d32cb6d4 + pristine_git_object: 495599c840e3398493df081d442af08d180b63fa tests/mockserver/internal/sdk/models/components/activityevent.go: + id: fd3bb2702950 last_write_checksum: sha1:4fd0a03c36baba07da9afae72a0e274bc4aaa667 + pristine_git_object: 59aa0168bff831a106905d72c682c0223c7f0bbf tests/mockserver/internal/sdk/models/components/activityeventparams.go: + id: ec855a8460ee last_write_checksum: sha1:a1b15541d7959aede9843cb777a2fd8b610e70bb + pristine_git_object: eae5f03e3a5104e4b448d8b4b9e4d74b18ffedbc tests/mockserver/internal/sdk/models/components/addcollectionitemserror.go: - last_write_checksum: sha1:d3b9af4f6e64c36285dfade93354289a4b38ecd6 + id: c07d22145d90 + last_write_checksum: sha1:869fdf5cca8dcac2989f9dae882b9e8d7da3c4f3 + pristine_git_object: 43f9319597e845325caaa9346a4a378a27350cc7 tests/mockserver/internal/sdk/models/components/addcollectionitemsrequest.go: + id: 23643ed3a8a3 last_write_checksum: sha1:072fa8f9fcb499a52eaa1eedabe52790b255d7cf + pristine_git_object: 3a1ab6f65dcc6f6d76f9899ac76628888664498c tests/mockserver/internal/sdk/models/components/addcollectionitemsresponse.go: + id: a357e82e1ce0 last_write_checksum: sha1:4c7925c730e3b306c78aaed58d475a893e9aefcb + pristine_git_object: dcb6950379fbd3e9d8c6d9d34430ba79451429af tests/mockserver/internal/sdk/models/components/additionalfielddefinition.go: + id: 129f9e10d0b0 last_write_checksum: sha1:e5275ce8bd7d05723612608eff87821ab738ccec + pristine_git_object: 65166a2a869e41b15da2c28e471da628d815d1a4 tests/mockserver/internal/sdk/models/components/agent.go: + id: 272d30f7db71 last_write_checksum: sha1:a2976ece5b814f553cd7d724369dbdf054b10d70 + pristine_git_object: f7b3b13119f56eb58b399290ea4fa65e83b3e490 tests/mockserver/internal/sdk/models/components/agentconfig.go: - last_write_checksum: sha1:00ad949208a1d61b2840c79051993be30b158163 + id: fa742da941da + last_write_checksum: sha1:cd839d5368cb6f41495a5fc8ef333ab5d4f102cb + pristine_git_object: 679f7f3270226aee52d4ade229b20b723d13c29a tests/mockserver/internal/sdk/models/components/agentexecutionstatus.go: + id: eb0b8cff2bf6 last_write_checksum: sha1:ef904e3fd25fd902d355e88115d0721dfecab4f8 + pristine_git_object: 7a8ba8400503c9144b4ea819c434e2f03eaa2085 tests/mockserver/internal/sdk/models/components/agentrun.go: - last_write_checksum: sha1:87a03588cdf4095a565a7e1bcb47f5772bb66588 + id: 7c661247b7d0 + last_write_checksum: sha1:a69cc58ceadc947b1e9dd587f9d936ef9aa266eb + pristine_git_object: dcff6d12e0c3def31984e4a134c46ed1d4704c53 tests/mockserver/internal/sdk/models/components/agentruncreate.go: - last_write_checksum: sha1:ef0c3d64cb27df6aec71357de2952a2f5ad373f2 + id: 68e7aadd2c7f + last_write_checksum: sha1:b6d18d560f9137f1603b59692f73da586eaed80d + pristine_git_object: e0f2b034406b69f6beecc2328c713102dc9fb013 tests/mockserver/internal/sdk/models/components/agentrunwaitresponse.go: + id: 8e31e5609691 last_write_checksum: sha1:75b0a516ab1c183abeeb9e27abc8a00f265f32ad + pristine_git_object: b5aa1e8ebde878a05eee8afb6a57b4b8d74ba24f tests/mockserver/internal/sdk/models/components/agentschemas.go: - last_write_checksum: sha1:ba9fa6589e1aaf087991f798c495b4a113bdb928 + id: 4925ad5cac23 + last_write_checksum: sha1:d0cbb79eee354dff93838a2d6525538d440b7ffc + pristine_git_object: 262d88134ce4f17c1bce1fa4a0f4da159142720d tests/mockserver/internal/sdk/models/components/agentsinsightsv2request.go: - last_write_checksum: sha1:5bbebc8109a68e2b22dc0ca044b009a4ff491d1f + id: 18948a1145bd + last_write_checksum: sha1:7759601379c524537409b44daa7a7a3f36c142b6 + pristine_git_object: 83467d6a3b1944a4e49d1fc7af5097d9d7d88b95 tests/mockserver/internal/sdk/models/components/agentsinsightsv2response.go: - last_write_checksum: sha1:cb0063cb35cebc0ef00ce928c06e4b723f3ce9fb + id: 8313bd7d3a39 + last_write_checksum: sha1:2bf27d5c4fa4ed8db97d93e983abede54affd688 + pristine_git_object: 25139a603d57f983770a80e5d0b7ab62117a63b2 + tests/mockserver/internal/sdk/models/components/agentstimesavedinsight.go: + id: eeb8af7ff015 + last_write_checksum: sha1:1c07a7a8e8de690de25bddba511878bc5d40a515 + pristine_git_object: 2a8e31d94b9f2f9fe7a6b72dfadcd9cd6223c040 tests/mockserver/internal/sdk/models/components/agentsusagebydepartmentinsight.go: + id: 46e77cf33a2f last_write_checksum: sha1:21c46d3f5363b157c2e4ee70451c7d0b3e8d77df + pristine_git_object: 2433dfc6f017b03604afc1438bf606a1b57099d1 + tests/mockserver/internal/sdk/models/components/agentusecaseinsight.go: + id: 7532f3f4e4be + last_write_checksum: sha1:e7d3ef7ff9b2b85433c788603548074ca5d6233a + pristine_git_object: 3caa18364e54985cab452cf0f731d220e691585c tests/mockserver/internal/sdk/models/components/agentusersinsight.go: + id: 25bd2b7b006e last_write_checksum: sha1:2f737cbf66693fdffffc4d9f30a3f26b09d35eb6 - tests/mockserver/internal/sdk/models/components/aiappactioncounts.go: - last_write_checksum: sha1:21c32418aab053e83bc126e0933c3ad2126b50eb - tests/mockserver/internal/sdk/models/components/aiappsinsightsresponse.go: - last_write_checksum: sha1:661f0e1a18ec1e9fdcf10a81a5c73cf08f80a8a2 - tests/mockserver/internal/sdk/models/components/aiinsightsresponse.go: - last_write_checksum: sha1:93094917d1468f25f3e20dded184a00a3afbbab7 + pristine_git_object: edfaaac094589522ad1ad4094131887b43780c92 tests/mockserver/internal/sdk/models/components/allowlistoptions.go: - last_write_checksum: sha1:db278a11846646ca8794392f2846087d1fba114f + id: 5dd666458357 + last_write_checksum: sha1:dfd379408d88c7eb8de7c86d2c58e084faaa45bc + pristine_git_object: 05ea9fc7fd13d94c67f49984a1a73648a807689b tests/mockserver/internal/sdk/models/components/announcement.go: - last_write_checksum: sha1:73643c448e9758eca5d2ef21e89e61f81e922d76 + id: 657490dccd71 + last_write_checksum: sha1:a96ff7c6a1612a5e243c2d9fca68e81cd88c362f + pristine_git_object: 89d299dc3ca6c936692f39d21e3f8bfe8c02da58 tests/mockserver/internal/sdk/models/components/anonymousevent.go: + id: cdc4fbaaf2eb last_write_checksum: sha1:0b48a4942a454618f0b0f16047396d8354b1b90e + pristine_git_object: 9486c7b30408660fdff7359ada116c45c62256ae tests/mockserver/internal/sdk/models/components/answer.go: - last_write_checksum: sha1:9f32354dc543e4c5b62a15d825eef011b9e23882 + id: a2bc6a3d2f9f + last_write_checksum: sha1:5bde5e290cf6af6e0f9d82d0ba053f0f2bd35e7e + pristine_git_object: 69609f521939bcdf1d9e81a14324f606d2b32f2f tests/mockserver/internal/sdk/models/components/answercreationdata.go: - last_write_checksum: sha1:8d592048b7d9d053b17d9c180a27b1050edb2987 + id: 442ad470f93f + last_write_checksum: sha1:249e06425fd059c0b7d11078f1fabb9a66fe0e8c + pristine_git_object: 529ec6128232479fefd685a271b44801065d1490 tests/mockserver/internal/sdk/models/components/answerlike.go: + id: d9d13b8d402b last_write_checksum: sha1:1859e2a2f2f8960cd83ad3d83fe4e1d0207189d5 + pristine_git_object: b6fe5246846a5ae91cd64c704bba117cd284c9f6 tests/mockserver/internal/sdk/models/components/answerlikes.go: + id: 961c94d04f32 last_write_checksum: sha1:512d5f73f8d017b70e9f799a9aaafabf5e40bf1c + pristine_git_object: 7adddc86acd77e7a08909d504826871e269ea1c2 tests/mockserver/internal/sdk/models/components/answerresult.go: - last_write_checksum: sha1:f865dd4aa0c0e51c8c0676fff89bfbfe76c355db + id: 6a4c238bbef0 + last_write_checksum: sha1:1d3c24c2f35adb2854539d336d020f99063b6cb9 + pristine_git_object: d23fef57686956a962e173c4d3f64b1021b6cd87 tests/mockserver/internal/sdk/models/components/appresult.go: + id: f5c8280eeff5 last_write_checksum: sha1:5d7841e6270918e5e1b59873c394d8a0b2eb1bc9 + pristine_git_object: 13c623198b89959d69b58e6ccc7c73a0a022d4d0 tests/mockserver/internal/sdk/models/components/assistantinsightsresponse.go: - last_write_checksum: sha1:1646bc05ef8352596a60c567dd6c437008d79e31 + id: 8ca7fffccbde + last_write_checksum: sha1:cf4bf37d272fba27bfe92b0f3e39f073550a4fb0 + pristine_git_object: 34f0d2d2c20aafadf823810520d67558e3ccb386 tests/mockserver/internal/sdk/models/components/authconfig.go: - last_write_checksum: sha1:8578900fdd9b3a60beb101207991b697b701169a + id: 450c27df20a3 + last_write_checksum: sha1:693162a9107db4ad3f6cee81f339345cda19002d + pristine_git_object: 6e47ddcab12850bddfa43ea2a4358c5ffd8666d3 + tests/mockserver/internal/sdk/models/components/authcontext.go: + id: 563a8dbb8e8c + last_write_checksum: sha1:72fc3805afb81247d0f04899dcec35e9e3710803 + pristine_git_object: 1b2c97ab3035a7f4dc344a387243d9152a5f409a + tests/mockserver/internal/sdk/models/components/authorizeactionpackrequest.go: + id: 6aa135032c9b + last_write_checksum: sha1:4c85e9cc50180f07d2857be440bae9f465f5f468 + pristine_git_object: dc682969903da4b847141f46f54443a7b19fb41a + tests/mockserver/internal/sdk/models/components/authorizeactionpackresponse.go: + id: 84cdf6495063 + last_write_checksum: sha1:2a458d0fb35074c83cd5dc41543c300942f5b7e5 + pristine_git_object: de205e6fb6d56ead5c64014571a336b54f0136d5 + tests/mockserver/internal/sdk/models/components/authorizetoolserverrequest.go: + id: c0e58fdb688e + last_write_checksum: sha1:762a4926f6c3004e70d5d6e0205b58874f9e37bc + pristine_git_object: 2af86c39938b0cd67e47222d67a9be860d657467 + tests/mockserver/internal/sdk/models/components/authorizetoolserverresponse.go: + id: 9adc5ed4f113 + last_write_checksum: sha1:acadba9fc6b8e09ccd520bd634c2a7f05181502f + pristine_git_object: c5202d3ba84a4eb474e02ffa74e32a6f8f468bab + tests/mockserver/internal/sdk/models/components/authstatus.go: + id: c12f2870beb7 + last_write_checksum: sha1:ca2727d0dcddf2ee072f3b26529d2952d7e72a21 + pristine_git_object: ea2c6627ed46ab3635fdfc37459aab9d71c5ff1c tests/mockserver/internal/sdk/models/components/authtoken.go: + id: 5e4c97e8520c last_write_checksum: sha1:5537829634cde892a99188915beb38e460d2f2ad + pristine_git_object: 774930f21f6761e703d10082d6fd42bd5d7c5c32 tests/mockserver/internal/sdk/models/components/autocompleterequest.go: + id: 56aa024b9118 last_write_checksum: sha1:1afcc6580c049f904d96944dcbf6f96dc9ba0b5a + pristine_git_object: dd9b56771c608f8f4e98215078d3df63096c0419 tests/mockserver/internal/sdk/models/components/autocompleteresponse.go: - last_write_checksum: sha1:cb095d71f723f218f37e5846e06708f2c62831c2 + id: 66cd6764f2df + last_write_checksum: sha1:ac7d26f25b2828f520494f4fbe7cd7c2beb9f44a + pristine_git_object: b5b93358134162c354cd17b7f02d3c268ed1ee8d tests/mockserver/internal/sdk/models/components/autocompleteresult.go: + id: b9d35c1302fa last_write_checksum: sha1:8438ff71f398ed3de8208f2f2c8b2d63819c83f2 + pristine_git_object: 01edf62659432bd750f8c109f6773c05adede9b2 tests/mockserver/internal/sdk/models/components/autocompleteresultgroup.go: + id: 37b04686e61d last_write_checksum: sha1:7ef163b02d59c2889529b21e4eaf2c8c03ae08c4 + pristine_git_object: fbf4682f006106d667bb523a85bcc1c987bd00f2 tests/mockserver/internal/sdk/models/components/badge.go: + id: 7210b2a9bdfc last_write_checksum: sha1:b210638bdb4f72e82ad7076cb06c283e389485d4 + pristine_git_object: 5069934040fcdacd6dc7ea018aca5dc3da2962a5 tests/mockserver/internal/sdk/models/components/bulkindexdocumentsrequest.go: + id: 8a98ef1eee61 last_write_checksum: sha1:9e2ba7d86e5be43918c7fa13fa21d0848e43d516 + pristine_git_object: 66aa01e55e2d2670757c2a15a9e829ff49ee593a tests/mockserver/internal/sdk/models/components/bulkindexemployeesrequest.go: + id: 1007fb479f97 last_write_checksum: sha1:9b18ad1444da55e2120fe3a81c3cf72d00af7c7c + pristine_git_object: 84b2d85ae3e90cf898fcc31c4d7e3fdce301a57a tests/mockserver/internal/sdk/models/components/bulkindexgroupsrequest.go: + id: 94d4e7786c14 last_write_checksum: sha1:24099f2918f9f9c049ba036acf49fe3031f61f1a + pristine_git_object: b528cd39010d8b0d6be48af7c28c17b7c606496c tests/mockserver/internal/sdk/models/components/bulkindexmembershipsrequest.go: + id: 8e97edd3a3bf last_write_checksum: sha1:120d02e4046058bdfa31ad1ae1efa6b0e6b77063 + pristine_git_object: 3132cb23717e77246626dc3a66f317b129b59271 tests/mockserver/internal/sdk/models/components/bulkindexshortcutsrequest.go: + id: a72173fcee69 last_write_checksum: sha1:5cfc33803792ab9d3f4f76b7e88fa6c900f6b6ef + pristine_git_object: 6a4ab205116cc62ade0890d39cc7f8cc9fe3e181 tests/mockserver/internal/sdk/models/components/bulkindexteamsrequest.go: + id: 098519f4f669 last_write_checksum: sha1:bb0791cb7986875b32b1c03f66f24d8d39f92a12 + pristine_git_object: 0acb6475b615c19bf20a699464be8683ac6c4a0b tests/mockserver/internal/sdk/models/components/bulkindexusersrequest.go: + id: 6c7aa436364b last_write_checksum: sha1:8bca357333604be0a5c1143ae8c7e045ab0c7757 + pristine_git_object: c94ddd90d3d259926876fd5b85d9d6a7139fd1fb tests/mockserver/internal/sdk/models/components/bulkuploadhistoryevent.go: + id: 047a8bcc6473 last_write_checksum: sha1:bcb154f82745d343ced1b76b1e5dd0c86945f3d4 + pristine_git_object: 9f7711f3552b3b033ca5c7f5d4169c2e68bf73ed tests/mockserver/internal/sdk/models/components/calendarattendee.go: + id: d816e3b2f971 last_write_checksum: sha1:9397890775c4933a7b93831aa77935edb65188a5 + pristine_git_object: 4ecffd3595bc8f8a4f8c6b8afdf6f3c1a40dcf6e tests/mockserver/internal/sdk/models/components/calendarattendees.go: + id: 1e747016ded6 last_write_checksum: sha1:7aada62955593beddf450e320b31d1ce56495862 + pristine_git_object: c237f6fdfc76002db00450dcc1c0f833ab83d8e8 tests/mockserver/internal/sdk/models/components/calendarevent.go: - last_write_checksum: sha1:8b37f864d04425db3f5370c63a2a01c3e9e66e94 + id: 8266e43a77b2 + last_write_checksum: sha1:0d0d354c949de0fb7c2bbde2fd7d5a53012b9511 + pristine_git_object: 9086716f92a2039aa7bd53c25bd50a064f828695 + tests/mockserver/internal/sdk/models/components/calendarroombookingstatus.go: + id: 3c93f43fc5be + last_write_checksum: sha1:3ed3979dbce33877b55551bdd465e73d797ddc86 + pristine_git_object: 1f0d78191d5a37b2b88e524aacdaf870f0e72c21 tests/mockserver/internal/sdk/models/components/canonicalizingregextype.go: + id: 7df117f09631 last_write_checksum: sha1:2d0c192b2b7d99262441a1ee0cbd670bf7970746 + pristine_git_object: 76692d3833374687b3dda368de9aa7178ff91c11 tests/mockserver/internal/sdk/models/components/channelinviteinfo.go: + id: 8bd7a1767410 last_write_checksum: sha1:6687d3c4cc24f62e6ed37cc8abc1835ff31f3f11 + pristine_git_object: 9e3252d41a35c178e2559eef1789d335d5296805 tests/mockserver/internal/sdk/models/components/chat.go: + id: 267212a046da last_write_checksum: sha1:5f73994939b88d70f6d9a6cd56c6a5c701ed2712 + pristine_git_object: 6d99873d506d21d2ffed0e6f51675d82be9e8e7d tests/mockserver/internal/sdk/models/components/chatfile.go: + id: ad0d00764036 last_write_checksum: sha1:2d220b166f37523e64aa0965e237872532f4ccfe + pristine_git_object: 7ea76ec3fb4a8f4e9052efb80db4c0b452ddac88 tests/mockserver/internal/sdk/models/components/chatfilefailurereason.go: + id: be1b1d0332ca last_write_checksum: sha1:21b914bf1323b19bede96d1e8a4e56494c2f7a4f + pristine_git_object: b77365d9d37845c84bffb31d4b5820ea5cb804f0 tests/mockserver/internal/sdk/models/components/chatfilemetadata.go: + id: f4269e82a2a4 last_write_checksum: sha1:4e608b0813ad32b7a981f73a511952b6459979e0 + pristine_git_object: 55c746ecdb0de1f37ffcf3bd21cefca8472f6cdf tests/mockserver/internal/sdk/models/components/chatfilestatus.go: - last_write_checksum: sha1:4f1e95ea4c1f64cfb9daab23820e907fe24f4efe + id: e34ec1fe6a71 + last_write_checksum: sha1:382dc2973696c71b36481555cc1eeed0379b3f2a + pristine_git_object: 95c737865f29c05a823d2782d5a6f0d3560e7565 tests/mockserver/internal/sdk/models/components/chatmessage.go: - last_write_checksum: sha1:1ee0ca5662402074d2303aa74531f433a288c82e + id: 8b35dd6dfbfc + last_write_checksum: sha1:b813b4301b77532bbbc60fa85f3b44e21d7a740d + pristine_git_object: 3ab0cd3981476b7446d064b432537eb1f996e87b tests/mockserver/internal/sdk/models/components/chatmessagecitation.go: - last_write_checksum: sha1:c6225814e79eac17f90ebb8d86a98bb0038c20b6 + id: 3986d745a603 + last_write_checksum: sha1:2977808f539d14cd2e4505f126a3438bf0511254 + pristine_git_object: f06157bccfa3a63727745952da0cfa5d323c3d23 tests/mockserver/internal/sdk/models/components/chatmessagefragment.go: - last_write_checksum: sha1:1834d9a43544e8cca44d147a1e2f99e120fb09ae + id: 8d14e05d6934 + last_write_checksum: sha1:d41f5568b67d2f41291d7fc880ef28fad6d59a72 + pristine_git_object: 632727b0852cefdc9b6ce1267faeddd4b164a1d0 tests/mockserver/internal/sdk/models/components/chatmetadata.go: + id: 53881e1500d3 last_write_checksum: sha1:2069155b9191362259f87a10f5eb7426b3bad1b8 + pristine_git_object: 9bba09a9f3a7cd53ffdaf5d1a07c5eb2e430373f tests/mockserver/internal/sdk/models/components/chatmetadataresult.go: + id: 0829f3ffdd80 last_write_checksum: sha1:caa7890f13d410e4bde2bcb9f3e3db1f5b0d6c90 + pristine_git_object: 74a433050f298fa6c1151cfc1d7bb324dc9c4e0c tests/mockserver/internal/sdk/models/components/chatrequest.go: + id: 7667ebf5d58e last_write_checksum: sha1:7d090933c080d356c3716f23a13b2b92cdc93ee9 + pristine_git_object: af53448a653ee9067d01dbaa06b0826dd2d4a68e tests/mockserver/internal/sdk/models/components/chatresponse.go: - last_write_checksum: sha1:4c8a0d78656e7d6d5f68b5c13734c4c8de76a815 + id: 2d1971ebf0c2 + last_write_checksum: sha1:404f52f589a51a5a29671be352af2f5c41f0f844 + pristine_git_object: 2638334db56253d15c97c9df05eca730739b0e94 tests/mockserver/internal/sdk/models/components/chatrestrictionfilters.go: + id: 9f5f5c6569a9 last_write_checksum: sha1:528172b6e5a087f2f516ee7e192a7772bc1ee373 + pristine_git_object: 0be4fc510f4693a6202720bc55de76a176a593a6 tests/mockserver/internal/sdk/models/components/chatresult.go: + id: 5e9dc490a355 last_write_checksum: sha1:cd9517ac3d8399698a36005329f2cb4c8ecda78e + pristine_git_object: ca043f8a6dc214fcee2eb1cec662a41e27cdd0c8 + tests/mockserver/internal/sdk/models/components/chatskill.go: + id: 75a386be3f6b + last_write_checksum: sha1:9ef16fc9f91e2cd4b3705a0ffe2196e628c1b6fa + pristine_git_object: 33e8680da35e1cedaaa8ca6a0d98c1a564f6b7a1 tests/mockserver/internal/sdk/models/components/chatsuggestion.go: - last_write_checksum: sha1:7fdeb40ae9549e1c24317776d28aa65cb311d7ce + id: 33e4338b5b24 + last_write_checksum: sha1:40e54396ba6c59a5a6e92c49fd2c1a62af9d0dab + pristine_git_object: b8269ceb3de0ce38bec7ff3626ae677546e8a646 tests/mockserver/internal/sdk/models/components/chatzerostatesuggestionoptions.go: + id: a6d088eab1c2 last_write_checksum: sha1:da633547681ec1c8ef5df79cc1d2919fb3714d13 + pristine_git_object: 9c7c788a8643ed61315385b444e8f5200b632f3f + tests/mockserver/internal/sdk/models/components/checkdatasourceauthresponse.go: + id: 7a4d99d005e1 + last_write_checksum: sha1:e99e71069a2dee200904ebf2457ee9853b1777b4 + pristine_git_object: 978854e6f7530f628cb97471e6cde30675401c63 tests/mockserver/internal/sdk/models/components/checkdocumentaccessrequest.go: + id: 532b92facd89 last_write_checksum: sha1:4b403181de5f24bde26d022703e625a832f685c8 + pristine_git_object: 29131d83ee4a8ab4dc52b4fc0b3d936fd5a4b01c tests/mockserver/internal/sdk/models/components/checkdocumentaccessresponse.go: + id: 89f79b5dd2bf last_write_checksum: sha1:6b8aa79da2987f2e8ff4d09c2c2647956ac0f4b2 + pristine_git_object: 26a4aa74414e18df34dc540015a2492a2cded98f tests/mockserver/internal/sdk/models/components/clustergroup.go: + id: 7cf5f354c622 last_write_checksum: sha1:06d2784d37baeed45c6390b1cad197153b506116 + pristine_git_object: 4cde0d620188eb0e497ce77807a3520935472de3 tests/mockserver/internal/sdk/models/components/clustertypeenum.go: + id: 035250b9a0bc last_write_checksum: sha1:254aa5e22c9f858de509b66967c78653593c44a4 + pristine_git_object: 49fd9e3b920e05a879ffc3eb4a732932be3263bf tests/mockserver/internal/sdk/models/components/code.go: + id: c8b96967ba12 last_write_checksum: sha1:755fe66d01ea2646e3678dc99e7ce4bec00c09cc + pristine_git_object: d15f7dee56df18a1abf79a2146d0f87ba8256579 tests/mockserver/internal/sdk/models/components/codeline.go: + id: 6d84b2fc80a8 last_write_checksum: sha1:408c1ae5131cd47cd23e5d000f09b6e5abb37490 + pristine_git_object: a21a60f1d8bbd6b82dc6f023d78c475b163ce7f7 tests/mockserver/internal/sdk/models/components/collection.go: - last_write_checksum: sha1:12056f9bd68eae6ff3f19b5d3c62d03d853e9f7d + id: 1b1300b634cc + last_write_checksum: sha1:0211b10e84561282577384f506a0ca9643ecdbce + pristine_git_object: 74425a9605a3f6ff57aadb99cc8a096825364a95 tests/mockserver/internal/sdk/models/components/collectionerror.go: - last_write_checksum: sha1:41ffdb13b05cb13821d7c16e10d5cce4d207e533 + id: bf4ad8f69294 + last_write_checksum: sha1:af5d0f2a4ae7be15beee13a00917ea8b5fd616a9 + pristine_git_object: 2524a204688b2b3fa446f154b424e7fbb9390e8c tests/mockserver/internal/sdk/models/components/collectionitem.go: + id: 7ddb4d0b95be last_write_checksum: sha1:ad1782147347847dd4703268d9bcaeb3c2aa201b + pristine_git_object: 311aac3451af2b29814c75f090e680150d6c35ca tests/mockserver/internal/sdk/models/components/collectionitemdescriptor.go: + id: 1677e27783cc last_write_checksum: sha1:071207a5430ae8b60998225695bc4a54ac05c3dd + pristine_git_object: c52451d3b28d60ecca9151929af87f23db5facd0 tests/mockserver/internal/sdk/models/components/collectionpinmetadata.go: + id: 75a7a4577e28 last_write_checksum: sha1:f95a93c2781532a37bdd213ebbe7f302edb38355 + pristine_git_object: fee1304d55cd8ee7cd10130a706ce3faae9ff208 tests/mockserver/internal/sdk/models/components/collectionpinnablecategories.go: + id: 2a222ac31adf last_write_checksum: sha1:4f4fc15297b64b04e8fa6a7c984902054237c6b8 + pristine_git_object: 8679fde6c21c45a5196da755dc0e6dc3444663e2 tests/mockserver/internal/sdk/models/components/collectionpinnabletargets.go: + id: 02d3fcda5993 last_write_checksum: sha1:06199cde57dd43710af6ef3d23473117314ae5d6 + pristine_git_object: fdcec773b29c4a1a83936f6ac197247a2461994b tests/mockserver/internal/sdk/models/components/collectionpinnedmetadata.go: + id: aa32fb7f9c88 last_write_checksum: sha1:d120afe983d971a3c9c2199986b4b6a48298ecd0 + pristine_git_object: d0857718ac21a959b81ff1344dd562d81feac333 tests/mockserver/internal/sdk/models/components/collectionpintarget.go: + id: 56c4e501e812 last_write_checksum: sha1:54e89fe8018191f4b48fc8e248ee6f9d48575464 + pristine_git_object: 64ea09b2076af1a9dcd7eba9dab8f28d4d2d1df9 tests/mockserver/internal/sdk/models/components/commentdefinition.go: + id: 5b28603a7cad last_write_checksum: sha1:1895affb14094181113f6173464f503a3006e16c + pristine_git_object: ecdc8f1174807da65da269647e9e73a69d92ee4b tests/mockserver/internal/sdk/models/components/communicationchannel.go: + id: 3fead5e5913f last_write_checksum: sha1:fcf60c80b7a302d78a21b2c797e08dd885662f37 + pristine_git_object: 63f9dfdbba12767fa4096d2caef156ff621aabf3 tests/mockserver/internal/sdk/models/components/company.go: + id: 759814b2e499 last_write_checksum: sha1:26417a78d66849ecd21f05bf40899c5db373f39b + pristine_git_object: e92400cbaca3e7af5a183eaedb10e999abb110ff tests/mockserver/internal/sdk/models/components/conferencedata.go: + id: df397d5194fa last_write_checksum: sha1:64eabce460dc274803c7fb0b7bb45cc9d58d8463 + pristine_git_object: 04b08de564ea565f50fd0aaad778fb6f5a1e1641 + tests/mockserver/internal/sdk/models/components/configurationvalue.go: + id: c907711eef41 + last_write_checksum: sha1:ddbf742f0df37badaee68310779ed24a2895bc72 + pristine_git_object: f6fc21610a06a17c2db181cd32c964a2f03e1187 tests/mockserver/internal/sdk/models/components/connectortype.go: + id: aeaa1bfc3438 last_write_checksum: sha1:0e2f6006ffa974b582362f1d259dd55fdb02a00e + pristine_git_object: fcf165bb2e976e13dfa2a64900f180424434b71c tests/mockserver/internal/sdk/models/components/contentdefinition.go: + id: 38de4a2547dc last_write_checksum: sha1:b4cf0765dff149db135c123778042f2822932378 - tests/mockserver/internal/sdk/models/components/contentinsightsresponse.go: - last_write_checksum: sha1:61ae0d3b9d574af4864d36df2ade801d2be55230 + pristine_git_object: 7be15567dbb075493369acc7d2cacfd37b28edff tests/mockserver/internal/sdk/models/components/contenttype.go: + id: 83191d8bcf2e last_write_checksum: sha1:5fd634f52b3a914081b6b39d49c5709929478756 + pristine_git_object: 6740b4e6a0daddf336ddb71a68b2cd807e7eb01a tests/mockserver/internal/sdk/models/components/countinfo.go: + id: 01d4967bffb2 last_write_checksum: sha1:3dabc59f84a7edffd5bf4b481899abeb78efeeca + pristine_git_object: 6126f60c54c9613e4ef499ac93bd2c650a719363 tests/mockserver/internal/sdk/models/components/createannouncementrequest.go: + id: e5560c1c1599 last_write_checksum: sha1:2859bd34551c6d5e8efd00bf0ea1062690be2ebb + pristine_git_object: 9a67d030bb1e376a691598e6036e5e4c9418d24c tests/mockserver/internal/sdk/models/components/createanswerrequest.go: + id: 2ae6ea7b98cc last_write_checksum: sha1:ab4f51f3c137475087c01287585f4d03eb7c7eba + pristine_git_object: e15c5837ad4f71851a1a9742036b3e50c8804bf3 tests/mockserver/internal/sdk/models/components/createauthtokenresponse.go: + id: 1bb66a64b1c5 last_write_checksum: sha1:50f97365c2a9ab267159c30868eda3212598b5f9 + pristine_git_object: eaf8d51531020f55857430e3b7c4dbd04d493411 tests/mockserver/internal/sdk/models/components/createcollectionrequest.go: + id: 3a15c1e5e019 last_write_checksum: sha1:b92eb02bc04b00980c0f7799ff0835195e1fb00b + pristine_git_object: 0c58401fe1d9f7581bf4d905c38ce43baf1565cb tests/mockserver/internal/sdk/models/components/createdlpreportrequest.go: + id: 79eb26e6c495 last_write_checksum: sha1:64659489dc959f338a10df80fb4966da0381b424 + pristine_git_object: 099d075e513d86ce811554264934669a1e51af92 tests/mockserver/internal/sdk/models/components/createdlpreportresponse.go: + id: 543d819c0148 last_write_checksum: sha1:37877a931cdf5d2b22dc4f914cc8ac9716839d0c + pristine_git_object: 9c9030bd69e578e72387502c2b7716129a30e51a tests/mockserver/internal/sdk/models/components/createshortcutrequest.go: + id: fa906172acbe last_write_checksum: sha1:b81c127e964cd3ce74ec7476fb1878d931b0d6a0 + pristine_git_object: f2502a18105f6e786c77c476c7324e42d4041f24 tests/mockserver/internal/sdk/models/components/createshortcutresponse.go: + id: c5f526844132 last_write_checksum: sha1:aa8fbfc7682edb55f79cd9e241d9795d4c8579ea + pristine_git_object: df363e8a9dfca1f872da7b286ab2cf7505b2c127 + tests/mockserver/internal/sdk/models/components/createworkflowrequest.go: + id: 92b0c1ccd3f0 + last_write_checksum: sha1:8febb494a066873172f0229af2880901e5f44ef5 + pristine_git_object: 277dd8b7d18f4aa926904cdf892e3475e6e998a6 tests/mockserver/internal/sdk/models/components/currentactiveusers.go: - last_write_checksum: sha1:17848a68125b3da6593d232146557b0dc6ae144a + id: 220e7dbe04c9 + last_write_checksum: sha1:4c876d24b835be3c5975308c132a4599bc11a71a + pristine_git_object: c1398b9642555e881ef73a4fa8fe66d01ee9e8d1 tests/mockserver/internal/sdk/models/components/customdatasourceconfig.go: - last_write_checksum: sha1:5cb7123d955c9782fec8f8c70570d77a0712d08d + id: 67f505cc5524 + last_write_checksum: sha1:4885800f11a0bed0b0d97459193fe50aed95cdb2 + pristine_git_object: 4316d060b299a480cc59608a812458defd2b0229 tests/mockserver/internal/sdk/models/components/customdatavalue.go: + id: 37ac657fead8 last_write_checksum: sha1:e2d63d9372dd1858f8d3524ca247d0f5a0e5db3a + pristine_git_object: a039a04fce7826be26bb8143271951f99d086cbd tests/mockserver/internal/sdk/models/components/customentity.go: + id: 4b03dc0cff05 last_write_checksum: sha1:499a0c73a5c262932eada0fb7c60abf73cac687b + pristine_git_object: d00954498ba73ab0eac0e6eca751a18314d93caa tests/mockserver/internal/sdk/models/components/customentitymetadata.go: + id: ffff7ea871a7 last_write_checksum: sha1:ceb02c640cd307663bc79a01b108d1e33cd3f29d + pristine_git_object: 53b7e48ff3c2a40780ff58ce844b3fc2d90eb2f6 tests/mockserver/internal/sdk/models/components/customer.go: + id: d4aa6b2db080 last_write_checksum: sha1:e48ee4737748b1230ad8fbc0a1b36dc1db76e3b9 + pristine_git_object: ddea90efc53c7a52a0f396f308d19ab9f9c7776e tests/mockserver/internal/sdk/models/components/customermetadata.go: + id: d199f493ee26 last_write_checksum: sha1:27aa354f35ce6797db356e6ba931a34ddedb4781 + pristine_git_object: 3171f8597a5c442ee45f1e336d3d6c4b8b8dba7c tests/mockserver/internal/sdk/models/components/customfielddata.go: + id: 87f84ee03b71 last_write_checksum: sha1:25a88f6fa490d962e517f0a7a50aa8a9a470ea33 + pristine_git_object: af92ce305dd8f77f21877bfa25e20b510a2acd2b tests/mockserver/internal/sdk/models/components/customfieldvalue.go: + id: 07e22f6b469b last_write_checksum: sha1:f3b6f65886342a9aa6971cf45aafd41af422c67a + pristine_git_object: cd2510188a282e92cc23c2f5c778210535bf03d7 tests/mockserver/internal/sdk/models/components/customfieldvaluehyperlink.go: + id: bcf2b4c82672 last_write_checksum: sha1:2fd1a6c172c9a0d1b594f5d52b80d1ceeda4cf0e + pristine_git_object: 4771e963d4385bedce6f2c568c5204e3e9729f90 tests/mockserver/internal/sdk/models/components/customfieldvalueperson.go: + id: 24f564ba1987 last_write_checksum: sha1:9475ac764cdc23a26e5f09fce60819f6700c7bae + pristine_git_object: c912739ad80e333f413aaace2e54f4de73298684 tests/mockserver/internal/sdk/models/components/customfieldvaluestr.go: + id: 72fb56c52b3c last_write_checksum: sha1:53652361319d7950efb17524252d2d0957b89df3 + pristine_git_object: e0b1416d7c363f6e26b66a75ba9fdd3a2daeefbf + tests/mockserver/internal/sdk/models/components/custommetadatapropertydefinition.go: + id: 5e8ce6fa4f47 + last_write_checksum: sha1:f88145b696024611226270dfa7026a131cc0ddf6 + pristine_git_object: e3351e45d1850b96d18ba207c081e4402e19bca7 + tests/mockserver/internal/sdk/models/components/custommetadataputrequest.go: + id: 4b064e1090fe + last_write_checksum: sha1:5b768bcc8098fc7f9f69d4ce4cf2824bdf37aa86 + pristine_git_object: fe2262c3cf4cc95fcb3211bb9651a62afd8177ed + tests/mockserver/internal/sdk/models/components/custommetadataschema.go: + id: a6e98862dea4 + last_write_checksum: sha1:44d00740a66c2203dc68a2ea3db77b0dfd1a6725 + pristine_git_object: 8f4e09bf8da911f878d402f5d818a3a5c3c5f273 tests/mockserver/internal/sdk/models/components/customproperty.go: - last_write_checksum: sha1:8766ad24a8498cd586be06976363e82c6f9e6c35 + id: af162b871d27 + last_write_checksum: sha1:09684d83735ed8c795769dd865450587db945d16 + pristine_git_object: 8dc67a970cd3e12982c85b394d6c5f3fe435ed8e tests/mockserver/internal/sdk/models/components/customsensitiveexpression.go: + id: 865e0e546bf2 last_write_checksum: sha1:734702e350fe5a9a0eccf1ebe23fe5ba88de3de5 + pristine_git_object: 4dd1f11ec826133df3c7d2a18583540d3f70b9a0 tests/mockserver/internal/sdk/models/components/customsensitiverule.go: + id: ce1826be09a6 last_write_checksum: sha1:8853db853b0b17cbdc765b9e5c6130237667d0a7 + pristine_git_object: 56e26f158a315cbf0ff505a7c914a8655cc1e1d0 tests/mockserver/internal/sdk/models/components/customsensitiveruletype.go: + id: 9296c83ea02c last_write_checksum: sha1:f30c464c189f3ca3bd09a64e0949add64287ed40 + pristine_git_object: 12b37ae02264735a29b707343536959f84043662 tests/mockserver/internal/sdk/models/components/datasourcebulkmembershipdefinition.go: + id: 8d1de8f26388 last_write_checksum: sha1:7461564626030cdc092d351d101243469e0cf16a + pristine_git_object: e7ccc6fd1f5d1afbe3d367ef657786490a1f204a + tests/mockserver/internal/sdk/models/components/datasourceconfigurationresponse.go: + id: 03f72b0a23c9 + last_write_checksum: sha1:0e571c4aab6d7ed0f03e2d834369353cdf4b82d3 + pristine_git_object: 0453f9ea105cf6b736d08ab4e539174518b43cc1 + tests/mockserver/internal/sdk/models/components/datasourcecredentialstatus.go: + id: 8a23c92b3ca3 + last_write_checksum: sha1:90d1b895e332bd5c6ff3c7b40ac56cb3a8bba56f + pristine_git_object: 1a8b125a7da3635da348a34669fb82232dcd10a2 + tests/mockserver/internal/sdk/models/components/datasourcecredentialstatusresponse.go: + id: f01ed4088747 + last_write_checksum: sha1:b1a2021160824873379267afaf77f2b1097e9b6f + pristine_git_object: 3195e113cabed1233cc5b0a129b2fffee959c6fd tests/mockserver/internal/sdk/models/components/datasourcegroupdefinition.go: + id: acffcce16c96 last_write_checksum: sha1:7901f25f2a1b52801631df10246ed50357d37837 + pristine_git_object: cb959e6ef61ff760efe16faf967122e1e0b6a0d6 + tests/mockserver/internal/sdk/models/components/datasourceinstanceconfiguration.go: + id: f5040e556af3 + last_write_checksum: sha1:f4022b1e8bf17fcaeaaf52f4cdcf1763749389c3 + pristine_git_object: 695fba51aa7dbfe6a93c78b7a72eb67c191d8c0e tests/mockserver/internal/sdk/models/components/datasourcemembershipdefinition.go: + id: b1380adbc1ca last_write_checksum: sha1:b2671c4d71318bb6c61f5c7a8b374ef7a5c3f544 + pristine_git_object: 9965fe61a0694d682f775d7a043617aa2589baf1 tests/mockserver/internal/sdk/models/components/datasourceobjecttypedocumentcountentry.go: + id: 18eea71253a5 last_write_checksum: sha1:97d644e8e267d30f40635a3f456b2d991a7f0a8a + pristine_git_object: 19bdf977e7fb5cacceba6735ce41b4c0472257e9 tests/mockserver/internal/sdk/models/components/datasourceprofile.go: + id: 9466e5b7e6a1 last_write_checksum: sha1:b5ec47931823ed13cf1dfc00ca0ace94f6830c9c + pristine_git_object: bbc72cbc1aff922b3ca175fed0636da5de38431b tests/mockserver/internal/sdk/models/components/datasourceuserdefinition.go: + id: cd2548564bad last_write_checksum: sha1:b78b44709c03e35ac0448926c417f7c8c90cf296 + pristine_git_object: d1431db74efa331f93ce3418f183389383647efb tests/mockserver/internal/sdk/models/components/debugdatasourcestatusidentityresponsecomponent.go: + id: 9f9758373d27 last_write_checksum: sha1:f6f3c52b7b1a6be8ee1c0ca86ebd6f97ba4f136a + pristine_git_object: 1eeda8b600613d729201021a64796aec9d5f0a24 tests/mockserver/internal/sdk/models/components/debugdatasourcestatusresponse.go: + id: 970f8d3b95cf last_write_checksum: sha1:0a49cda4545fbe83a365f0d35e47fe3f4aa86247 + pristine_git_object: 2b4c0aa4018697a3f857c54865e6ba06bdd195b1 + tests/mockserver/internal/sdk/models/components/debugdocumentlifecyclerequest.go: + id: 4c80e9a2ff60 + last_write_checksum: sha1:af5b062925d5b00f4e54c32f3634b4ba2ac8cb47 + pristine_git_object: 93255bb0197267ec61bf7f6ed588b916cb47f1a5 + tests/mockserver/internal/sdk/models/components/debugdocumentlifecycleresponse.go: + id: f7f756c77570 + last_write_checksum: sha1:d8c90e229ff15d6e0f26890d80d2cb40473405ba + pristine_git_object: 343802ed97f96c5a9fa42fcfa821ba61e9bb2b22 tests/mockserver/internal/sdk/models/components/debugdocumentrequest.go: + id: 5243523a710f last_write_checksum: sha1:5b299213bc4d94dcdbc7d20bd106eeb11b127f4c + pristine_git_object: 2ccad29a3009ff00fe777702a23f2bcb4dd741db tests/mockserver/internal/sdk/models/components/debugdocumentresponse.go: + id: 9cbbd1e75275 last_write_checksum: sha1:b3ad2fc81ba9ef47cc599d712303cbe5de9621df + pristine_git_object: 12fcd5cdfb498bb75347c15abf40c475df45580a tests/mockserver/internal/sdk/models/components/debugdocumentsrequest.go: + id: 9f03c01931e0 last_write_checksum: sha1:f92ee30ec11e9f29fe19aa01171073d6c5225432 + pristine_git_object: 545ba853cb059a86b232eb086313d9c8723ecabf tests/mockserver/internal/sdk/models/components/debugdocumentsresponse.go: + id: 9b471d742907 last_write_checksum: sha1:37d96de42a3f2af807904681b821314ddf4190d5 + pristine_git_object: b813fdd33ec1ab2b8e7d674242ff4321995a6301 tests/mockserver/internal/sdk/models/components/debugdocumentsresponseitem.go: + id: 3ca87f52b128 last_write_checksum: sha1:4c666925801fd3dd3eade7ff1675dd86196aeb82 + pristine_git_object: 47e26f9436ae958efb835fd6f68e117c14552369 tests/mockserver/internal/sdk/models/components/debuguserrequest.go: + id: 4ff83091dcc0 last_write_checksum: sha1:32c6a165ab1ad3c737e57375269f5bd3d079b30c + pristine_git_object: fe3f914ae8536ee75cf5aa278bb5c5ec59bf05fe tests/mockserver/internal/sdk/models/components/debuguserresponse.go: + id: e9fb6a371a9b last_write_checksum: sha1:148dfbed73ee981236cebddd846a191673c8d5ee + pristine_git_object: 3f6cca7c29ac6af60e41557ea5ae07e232b46011 tests/mockserver/internal/sdk/models/components/deleteannouncementrequest.go: + id: 94d40088dd66 last_write_checksum: sha1:780ce18a53f1e123f357f4fda539b61a3cb61c81 + pristine_git_object: 15d931ea8ce07d1914deda58341e7757be9a662d tests/mockserver/internal/sdk/models/components/deleteanswerrequest.go: + id: c92b38c5cefd last_write_checksum: sha1:d267f3c4d58569da713281590ace9c15eab05908 + pristine_git_object: 0ee5ee6974273a03ca41e2c5fe9fa8b9ebaaac93 tests/mockserver/internal/sdk/models/components/deletechatfilesrequest.go: + id: 05c4630ca547 last_write_checksum: sha1:59d57ebef07b958df322dfeb409555a8c5d6b858 + pristine_git_object: e955ca766573eb94195c825b3651df2820646e52 tests/mockserver/internal/sdk/models/components/deletechatsrequest.go: + id: 66e1afc7de8e last_write_checksum: sha1:ebf1d94f5a7e6a346b76b411cc9090126a83393e + pristine_git_object: 2f0acbf368b1bf40507e4bda5d65593c94527576 tests/mockserver/internal/sdk/models/components/deletecollectionitemrequest.go: + id: 95c2d2b7083d last_write_checksum: sha1:16ddeb870f9e59d4d5c216278f91ea2971972eea + pristine_git_object: 768919fce01a41c1f8c59f421b3fee98acea0969 tests/mockserver/internal/sdk/models/components/deletecollectionitemresponse.go: + id: 7aff6cfc2256 last_write_checksum: sha1:2718796251b9a64d8d5895cb081845779e2a6499 + pristine_git_object: 94f10397eb0eb50c17e543dceacfd4f81a7e8d9c tests/mockserver/internal/sdk/models/components/deletecollectionrequest.go: + id: f76b1b052276 last_write_checksum: sha1:f840c7f00fae799c649f55e4a073f3885ad26901 + pristine_git_object: a3460a0a36e32f31d504be8526c17626b5183bbb tests/mockserver/internal/sdk/models/components/deletedocumentrequest.go: + id: ef0eddb1a111 last_write_checksum: sha1:9fde9bd0cc1f039ef4cab2c8273c8b912f1ea7ad + pristine_git_object: e103c1c4fbff5fbfd025a66060fecdf8c8bb66a1 tests/mockserver/internal/sdk/models/components/deleteemployeerequest.go: + id: cfb52607f421 last_write_checksum: sha1:21b362c6000f63ed78141fe5dc1035dc68ab523d + pristine_git_object: 0e582507ce3fb06ce271d16341b1c37fb1c7ec7c tests/mockserver/internal/sdk/models/components/deletegrouprequest.go: + id: 5f48bf9b3d13 last_write_checksum: sha1:8dffc9e1d3a59e33856045fb9ce650c1a359122f + pristine_git_object: 4c6a7310becb5642c05df582f973232cbbe0aa68 tests/mockserver/internal/sdk/models/components/deletemembershiprequest.go: + id: f3d6f38c28e0 last_write_checksum: sha1:002e68995698fc4147692d600f273595bbe6f841 + pristine_git_object: ed2ab708baf4353a4dd20e09e9480dcd4a3ed559 tests/mockserver/internal/sdk/models/components/deleteshortcutrequest.go: + id: e0573a376193 last_write_checksum: sha1:fe08c76f01ddb8054bd31265f326b82e58900719 + pristine_git_object: 440f2958119871590f4efa655587a4a8ec9e3a25 tests/mockserver/internal/sdk/models/components/deleteteamrequest.go: + id: a6592ec6c53b last_write_checksum: sha1:ea149687e6cee100c4463ef1ec50f89433d86027 + pristine_git_object: 7d877567a2c98532e94985e2d64cf9977e6c34f5 tests/mockserver/internal/sdk/models/components/deleteuserrequest.go: + id: e2d5f97616cb last_write_checksum: sha1:f3b9191bee3cc9e8ccf5aca3058e6426213977a7 + pristine_git_object: 9e4340136b3e13590d96409a5269184a8f53c428 tests/mockserver/internal/sdk/models/components/digest.go: + id: b99e7835ab47 last_write_checksum: sha1:db77f02c205817d89f694b94d89a9073dac79f05 + pristine_git_object: 5cbcb5608dabeee367814be9fa33dab8a4ae6353 tests/mockserver/internal/sdk/models/components/digestsection.go: + id: e5f6a11004bf last_write_checksum: sha1:96eb31c72cfd99fd7523e299e18106f6c94aaa01 + pristine_git_object: e316597e5b965518444082654dd2607cfc825d0c tests/mockserver/internal/sdk/models/components/digestupdate.go: + id: ec8318cb77ed last_write_checksum: sha1:3191c55acf305d1eb99495b4bab2cf041ed9ab18 + pristine_git_object: e024d4cf4184a36421b50c3d56c2def72739bb66 tests/mockserver/internal/sdk/models/components/disambiguation.go: + id: 4bcd8b12a7f9 last_write_checksum: sha1:f7e4592e67d8f64c9ce48bc9b05114e4a7132acf + pristine_git_object: 200e9abb61c1b43627985387fb01a24d9c47613d tests/mockserver/internal/sdk/models/components/displayablelistitemuiconfig.go: + id: 15ca976c04d7 last_write_checksum: sha1:5baf3601041f5f2983878313b65994996440f4e5 + pristine_git_object: a0e605281d1c6bfa56c6ee88f2dfceff7b144e93 tests/mockserver/internal/sdk/models/components/dlpconfig.go: - last_write_checksum: sha1:00344585d0d2843f521243f5756454ac034acd5d + id: dd310c689385 + last_write_checksum: sha1:62e4f2e5e4a611f7b3eae8479f5bb3d97831b9cc + pristine_git_object: 23a965fc8709811e91e4f40756137761239f6af7 tests/mockserver/internal/sdk/models/components/dlpexportfindingsrequest.go: - last_write_checksum: sha1:0bc22bf0ef0c29a307616c120f898544e81660f7 + id: 5edd4787e726 + last_write_checksum: sha1:a6fa9927945d74ba513e8299c8102f5f4545c2ab + pristine_git_object: 77fdbe9636ede5978c6c82e5a54e2d0c062a99b0 tests/mockserver/internal/sdk/models/components/dlpfindingfilter.go: - last_write_checksum: sha1:c71dd3ed02678385eda72478f6497fc342ad18a8 + id: a7d6016908e6 + last_write_checksum: sha1:6e04b0a334b6e59d6065a786ca40d540ed53debe + pristine_git_object: f3b7f96f3bda79e3fa8c1d480a62ebabd76cf4c7 tests/mockserver/internal/sdk/models/components/dlpfrequency.go: + id: 0e58077c7ce5 last_write_checksum: sha1:a43530a5536fc8d7e9e059f9256acb659e57f636 + pristine_git_object: 7c8f72b35ad02260a6a8740db8595cd4cf69edaf + tests/mockserver/internal/sdk/models/components/dlpissuefilter.go: + id: 8533f64d6a9f + last_write_checksum: sha1:c44a9303216c68a8c56752beac92084a40e042f2 + pristine_git_object: 600b982d78d58934b854675d94b9bd7bedf98b0a + tests/mockserver/internal/sdk/models/components/dlpissuestatus.go: + id: 2ebd743825ad + last_write_checksum: sha1:f1df49753a10f9d160ba746f973a2b37f0c32dc6 + pristine_git_object: 24c291ec230b006ece1d2c28db85b31d68d5f2e6 tests/mockserver/internal/sdk/models/components/dlpperson.go: + id: 9cebf9b832af last_write_checksum: sha1:1785c4783dc2b945ce8e03dc64650e7b69a7ea89 + pristine_git_object: 1bcd022f985b4ab84666d9638ca7357bddc3aa34 tests/mockserver/internal/sdk/models/components/dlppersonmetadata.go: + id: f736630cd4eb last_write_checksum: sha1:f095e27f42403ff319f5a83f6a65e7ae723d54a9 + pristine_git_object: 5baf03bbbb6411c516eccbbe02e432f19d72ba65 tests/mockserver/internal/sdk/models/components/dlpreport.go: + id: 09072c04f05d last_write_checksum: sha1:5d99fcf5ed5cc0d0dd50f166c2a5b80d52c70b12 + pristine_git_object: 8e6ccffcb89a4d48defc5d68d6a8f6f74dcc0a1d tests/mockserver/internal/sdk/models/components/dlpreportstatus.go: + id: 637580c9d3b7 last_write_checksum: sha1:e6d909d5c50c95004c7068caaef92554c2976af9 + pristine_git_object: 6c4ea46f5822a3783a2349fc90b37b0659a0a647 tests/mockserver/internal/sdk/models/components/dlpseverity.go: - last_write_checksum: sha1:e04497e3bb7699f8686daee91fd4a37f9a646ceb + id: 6226aa236cbd + last_write_checksum: sha1:6794db59c95551021133f24bd0ce1dd52050c0f5 + pristine_git_object: aac78928c01f6a9a1d468e181c8fd585e53ab42f tests/mockserver/internal/sdk/models/components/dlpsimpleresult.go: + id: 9c8ef716150c last_write_checksum: sha1:7e58ca80e00935371b714da76574b40b5502660e + pristine_git_object: f75e74547d443e3935bcad1e400597e917c6b226 tests/mockserver/internal/sdk/models/components/document.go: + id: c26c1064cced last_write_checksum: sha1:68f52179e0510e8cdb6430b6acb085daf861c066 + pristine_git_object: e72ffed1aa466689e27a59293a3c7094482d2832 tests/mockserver/internal/sdk/models/components/documentcontent.go: + id: 9717a5e42d61 last_write_checksum: sha1:17906e5b05e5396940805846f250c7c4b91a1bb9 + pristine_git_object: e2a735c94c6155d8c70c8f5cdc5ee02bfe2c1bc5 tests/mockserver/internal/sdk/models/components/documentdefinition.go: - last_write_checksum: sha1:04dc959087a57790f99f0b47e6fe2359603b48ff - tests/mockserver/internal/sdk/models/components/documentinsight.go: - last_write_checksum: sha1:38454ab2dc47418adfba9ba6294fbb8e78ea1069 + id: 04583e985c05 + last_write_checksum: sha1:93c3d873dc6abfe6635cc10f544126aa75ff5a27 + pristine_git_object: 41db731fbfef55fd7064754a57bd6bc881e20e5b tests/mockserver/internal/sdk/models/components/documentinteractions.go: - last_write_checksum: sha1:16f1d08ae52ecf4b5f8110bb1f3ba88810dd9a50 + id: c30c722fc3f1 + last_write_checksum: sha1:5e29169410c2971f57b96b24ea4fad8b6437b79e + pristine_git_object: 5b5e215d349d0d0df694f960e610949227d1a38b tests/mockserver/internal/sdk/models/components/documentinteractionsdefinition.go: + id: fb72ffa96d85 last_write_checksum: sha1:b34825743a5a76d8b6a521b6bcbaf37a5ef18d44 + pristine_git_object: f49af72287011fb4cd8b775715db47c8b564c45a tests/mockserver/internal/sdk/models/components/documentmetadata.go: + id: 1b351424b44f last_write_checksum: sha1:9a87a468e565ac6e140a2ea62ba94c64f3f9189e + pristine_git_object: b4e0fd2e5c2a0dd356332522e93ff7c47b18cfef tests/mockserver/internal/sdk/models/components/documentorerrorunion.go: + id: 0e42a8f964b2 last_write_checksum: sha1:77be00f650cba6ffe9e11fcefc1d260a1c8abad9 + pristine_git_object: 55824d3df8134b04451a4b85898a6f3ac4e5c9a6 tests/mockserver/internal/sdk/models/components/documentpermissionsdefinition.go: + id: d6093d2a21d0 last_write_checksum: sha1:a13ae34b46d3968eab57cb6bba41b5423dbef5ff + pristine_git_object: 75459197a5cf5b0a8c1f4b6e8aee1ec00a104327 tests/mockserver/internal/sdk/models/components/documentsection.go: + id: c27979e0fb9a last_write_checksum: sha1:a783c3824736e1d092b4d05621470c1c9b19c115 + pristine_git_object: ef97fcb46524355a764ed6fe1df8c25361505bb2 tests/mockserver/internal/sdk/models/components/documentspecunion.go: - last_write_checksum: sha1:b95d60f0479005511b0b69c914f62ee208332a3d + id: 398b265d077e + last_write_checksum: sha1:9133128f54aef85e913a9a4dfd2b49d8630b9b3b + pristine_git_object: 87e6ac591c9b1de998437a0ed0f68c29e7c201b6 tests/mockserver/internal/sdk/models/components/documentstatusresponse.go: + id: 6fd1515e4332 last_write_checksum: sha1:a2ff6be811eb7e72cf0b690192d94472f4d6a6ca + pristine_git_object: 72007844b6da5c9ac63e9c313e161120346112e8 tests/mockserver/internal/sdk/models/components/documentvisibility.go: + id: ddacde028f51 last_write_checksum: sha1:e23271efe678e0cedec27c3525d6bfa8239a83d2 + pristine_git_object: 3d7e72b7ce0dfaebe14616a9c4ec5fd130031bef tests/mockserver/internal/sdk/models/components/documentvisibilityoverride.go: + id: b75ca408e895 last_write_checksum: sha1:d0bfe777b8bc55ce52eeb52b3837339b853635d1 + pristine_git_object: 5d424357f8bf8349f48612ebefb3158f501306e5 tests/mockserver/internal/sdk/models/components/documentvisibilityupdateresult.go: + id: 617a9e11c523 last_write_checksum: sha1:07c2a1b865161fa6e8ab0766f1c71096c4de3c31 + pristine_git_object: 5b76ae892935453375a5e85e9169f0ab334e45b7 tests/mockserver/internal/sdk/models/components/editanswerrequest.go: - last_write_checksum: sha1:5d61a744e6ad0a2fff5e26b4dc6628f9a5e09617 + id: ef593ce11a15 + last_write_checksum: sha1:ac6f489fb01360867c1dbd9f23094c9727d4e8b6 + pristine_git_object: c11ee20339dc1ced7050fb7de4400050630f7660 tests/mockserver/internal/sdk/models/components/editcollectionitemrequest.go: + id: 89566231dc02 last_write_checksum: sha1:2e8f54fc9dab1089b7ee8d2187650e7ff143e655 + pristine_git_object: d43b56a759b7d1d4d2cfb99fec4eade71651f60c tests/mockserver/internal/sdk/models/components/editcollectionitemresponse.go: + id: a14bd3096b96 last_write_checksum: sha1:66e4c98106692f44edaaeb3d012613bb3f47edef + pristine_git_object: 2d6a42bf1ee333a7799ce9d436bd45d1816264f6 tests/mockserver/internal/sdk/models/components/editcollectionrequest.go: + id: 52b22058e8b8 last_write_checksum: sha1:f201e2c36501bd5765225de622e8be83bb73296a + pristine_git_object: ed60e37353a7e55eaf3e7bfb124f7221a9f575e3 tests/mockserver/internal/sdk/models/components/editcollectionresponse.go: - last_write_checksum: sha1:5be12d63cd7d11c81ebe23f7bf1a43d41bfc7e38 + id: e293dec7d21e + last_write_checksum: sha1:8f5ebd07562cb33111c92bac184e2cea19aa59ac + pristine_git_object: 46b8497b49939ec6f50359f27eef323124598b05 tests/mockserver/internal/sdk/models/components/editpinrequest.go: + id: ea4364f07630 last_write_checksum: sha1:fb86074a6869523e05e6e3ac02f08da3ee21dc5b + pristine_git_object: ab648e15b9b9ee0d2128b090ea0df231034513ba + tests/mockserver/internal/sdk/models/components/editworkflowrequest.go: + id: 881495edddc9 + last_write_checksum: sha1:619a1ec45aaf5de635c7e5b8c5afe3feb50c1940 + pristine_git_object: 4c803a250c6e5a5afaa139ebc5b1b8fd37daadde tests/mockserver/internal/sdk/models/components/employeeinfodefinition.go: - last_write_checksum: sha1:eb2b10da6635d6e2c6f98c85274d8376d8bc080d + id: fbaa8ee8c119 + last_write_checksum: sha1:f1eeb77d277fe939ed396f91341bed042c3e07e5 + pristine_git_object: 7af253a72c82f5a320d0f61ff1615e202f10f335 tests/mockserver/internal/sdk/models/components/employeeteaminfo.go: + id: 2fe19184bfda last_write_checksum: sha1:acbee379004f40aa60888bc81edc9d416d1baffe + pristine_git_object: dd50fe0e6a560db563544364a64dc1325074c092 tests/mockserver/internal/sdk/models/components/entitiessortorder.go: + id: 2eeebdbe620a last_write_checksum: sha1:990a1f3c9b87bc94767226bc60439e53358cebf3 + pristine_git_object: 6888c12957210c824f5c21f88054d5645000dea9 tests/mockserver/internal/sdk/models/components/entityrelationship.go: + id: 4de4ac65359b last_write_checksum: sha1:ee82d5742816958c738513bbbcd1423f90bdfb48 + pristine_git_object: fee77670a8402d718faabd3017b5ecb9fa1715b7 tests/mockserver/internal/sdk/models/components/entitytype.go: + id: 9060f3b7caa7 last_write_checksum: sha1:35d9e50d9e3ae6cc0606336c4111ee2069841b16 + pristine_git_object: 18fae8c8580fd0dd5275dcc236f4785a789eed48 tests/mockserver/internal/sdk/models/components/errormessage.go: + id: 7022277f8964 last_write_checksum: sha1:90a517fa4644b2e21c6e6988f8b0f8b9bb1258ad + pristine_git_object: 053c085ddb70d9c44eb0aa6eaa858cf664ce1929 tests/mockserver/internal/sdk/models/components/eventclassification.go: + id: 8e1096478966 last_write_checksum: sha1:e6ca7a7dc493bd2aff48e5bea5a7c6b05f7b8d72 + pristine_git_object: 99367087743943272c027c05175f8bfb7dfda1f7 tests/mockserver/internal/sdk/models/components/eventclassificationname.go: + id: 7c7fe93fd5c3 last_write_checksum: sha1:d633b455eeec4ce27e9768cd2359bfea86c9ca54 + pristine_git_object: 2971f669bfe49be78d840c3582918fcfd1800ae9 tests/mockserver/internal/sdk/models/components/eventstrategyname.go: + id: 229a30571f27 last_write_checksum: sha1:acecfa3fb469871561d21b30275631ced4a4a11c + pristine_git_object: fbbce772f49968e62aa68d8f08892b07ec562d09 tests/mockserver/internal/sdk/models/components/exportinfo.go: - last_write_checksum: sha1:a211dd685d03fa0b8d7e0186d15abf9756d1bf4e + id: 51e766b5fff0 + last_write_checksum: sha1:aa247f4086aa7f07a7342a5478116adea95ad8a2 + pristine_git_object: 74fb0752d264528a1dc73a79aaae50c3aa1e4c1b tests/mockserver/internal/sdk/models/components/externalsharingoptions.go: - last_write_checksum: sha1:82c4ead1f0d347a66103a3c44c8232b1a6f78243 + id: f29dbf8904d7 + last_write_checksum: sha1:129d60a6464700de75963f0f71ce88c5cde095f2 + pristine_git_object: ef958664c532332d25e40edd6ca9268f7b17f9ac tests/mockserver/internal/sdk/models/components/externalshortcut.go: + id: b57c5d5ada81 last_write_checksum: sha1:27091d0f8a0eae838f932ebf44cd0d5eedf9acd2 + pristine_git_object: 24eee6191112929c5d7ef8e50177ca3890643791 tests/mockserver/internal/sdk/models/components/extractedqna.go: + id: 63893d64b799 last_write_checksum: sha1:97534c9bce555c42979be48fa92b7916dc9a35d9 + pristine_git_object: 6de2c2b322e5c71c4c039e2f2132470cbe3f2e84 tests/mockserver/internal/sdk/models/components/facetbucket.go: + id: fd8945826f26 last_write_checksum: sha1:587d68bdbb82adaafb7be60c18e65aa428f49818 + pristine_git_object: bc1861d260dd9f54864be0b29e2643c18809fe5a tests/mockserver/internal/sdk/models/components/facetbucketfilter.go: + id: 4c63af1c98a7 last_write_checksum: sha1:c2455048f1c574f6c33ba86110f78fbae7a11a7f + pristine_git_object: eafb07db80d0741afeb708ec66ab6f15544536f4 tests/mockserver/internal/sdk/models/components/facetfilter.go: + id: 89bf8563aaa3 last_write_checksum: sha1:b387ab4950abe21a246b5d4f36f126147fefa6bb + pristine_git_object: 2d9764bf2f8aaae39ac6728c220e423dfa63cca0 tests/mockserver/internal/sdk/models/components/facetfilterset.go: + id: 4d4dcd36986a last_write_checksum: sha1:6a7c1068dca4aa32c440398c5755f94834859c40 + pristine_git_object: d643343537ab5a63ba4ceeafebac55307c10af24 tests/mockserver/internal/sdk/models/components/facetfiltervalue.go: - last_write_checksum: sha1:4b1731d2b08e2e1e4bb0e4665d8577cda514da44 + id: cdd19bf9c98f + last_write_checksum: sha1:d59e535246c7d9b5d43ef7542bfc9c599c9322d8 + pristine_git_object: 6fa0e3a32601787c6ed3abd7ada628f46b76b7d2 tests/mockserver/internal/sdk/models/components/facetresult.go: + id: a68fb0fafcc4 last_write_checksum: sha1:700eafec2b5b7a550913114c69dc43fa1acf6826 + pristine_git_object: a9ad79baf30d1b8133013a89dfe63cab292eb0bc tests/mockserver/internal/sdk/models/components/facetvalue.go: + id: 3439da3de729 last_write_checksum: sha1:80fefa2d8bf74a81c1fa8aadd8065a00784a169d + pristine_git_object: e720e4a745d910bac28dce39071eca3bbc0e4a82 tests/mockserver/internal/sdk/models/components/favoriteinfo.go: - last_write_checksum: sha1:64a199091535bec155fa46cd3022c50574f8e329 + id: 30a0d7c34a6d + last_write_checksum: sha1:bc59834ab51e5be71d56c333654a2f1bcdd734a4 + pristine_git_object: f5acc1c4d0d5b825a5c72a39a9484d8bc28eb6c3 tests/mockserver/internal/sdk/models/components/feedback.go: - last_write_checksum: sha1:b8cbb9ea258cc0fbfccd63cd55ca7053d1c035d1 + id: 2f1e4a5ed682 + last_write_checksum: sha1:eefb62b24dcb02a447ac81ccabafe6de3fbc6a94 + pristine_git_object: c89a1ce6d7def85a9ed928b5d2071ba568bc84f1 tests/mockserver/internal/sdk/models/components/feedbackchatexchange.go: + id: ea5fdc1794cd last_write_checksum: sha1:59418d4b2dc683c810308022eade51a8894ab3b0 + pristine_git_object: 04cc3a93272ac70933b0485bee31b335e05ab623 tests/mockserver/internal/sdk/models/components/feedentry.go: - last_write_checksum: sha1:adc255338bbd71c90a1fb4a25324a37a701901de + id: d25fd66fcf7a + last_write_checksum: sha1:a8719b9673b1be33ad678b8aba6dbbf535d7e45d + pristine_git_object: 79fe6b08fbe864c3f293421c8594d27603ce35de tests/mockserver/internal/sdk/models/components/feedrequest.go: - last_write_checksum: sha1:fb71dcda54d7b99c7ed307314859234410891307 + id: b06bc4cef0cf + last_write_checksum: sha1:d16256931c5705257894f29fd2bb083cea2c95ae + pristine_git_object: b020374ce491b9719d7a253996a23e3aadcb03e5 tests/mockserver/internal/sdk/models/components/feedrequestoptions.go: + id: fd9245fe1bf2 last_write_checksum: sha1:fa30b7fd6ee3e45896d7bbe36e33e7c0cb9000ba + pristine_git_object: 7a1d1f2e7259890e51d6b020d07b2e98f38603e0 tests/mockserver/internal/sdk/models/components/feedresponse.go: + id: cebfff750545 last_write_checksum: sha1:f6f77be921621cf1a133463043fc1871533e2e22 + pristine_git_object: 54f9d1a8997983156c84e69f888c59a80d06c2b1 tests/mockserver/internal/sdk/models/components/feedresult.go: - last_write_checksum: sha1:20f7630be6eafa60aa19f9b002747186f649bb06 + id: 47411573e67a + last_write_checksum: sha1:4f077b5af6ccac474f80febd79efa382d6c445dc + pristine_git_object: cdb71976f9b6e528b67fd80e9a5860144f0d1cc6 tests/mockserver/internal/sdk/models/components/followupaction.go: + id: 38179fec19b1 last_write_checksum: sha1:32a31f7af77a58ce6f3284e8550d01fcf0d3bddd + pristine_git_object: 4a4197d838d2696f9a9bba8bebc9908ce4337c52 tests/mockserver/internal/sdk/models/components/generatedattachment.go: + id: 1971637f36e3 last_write_checksum: sha1:1a1159642e757f0f2e8a6f40489e89c14ae6141c + pristine_git_object: 0e418f080d3e4abd217bdc17c0cc6da71e27a248 tests/mockserver/internal/sdk/models/components/generatedattachmentcontent.go: + id: 509a7fb5ca9c last_write_checksum: sha1:3ad2418dfb7350cb752aa63896e09bc48c937ab1 + pristine_git_object: 5b1366c1688c1522c68d9b64aa87af628def09e6 tests/mockserver/internal/sdk/models/components/generatedqna.go: + id: ed97b38f710c last_write_checksum: sha1:ac6036d26e9b7fd66fc656d8fc4fe3fa913166b9 + pristine_git_object: 4bcd892cff45c28f89e18cd226af12fe07badd1d tests/mockserver/internal/sdk/models/components/getanswererror.go: + id: 7677c4d86aa2 last_write_checksum: sha1:5ef22ec08b1354a87fe81543b108c02f5a8f4f08 + pristine_git_object: 76937f9b4ce2ffd77fb225fddf77e5ae9e16342c tests/mockserver/internal/sdk/models/components/getanswerrequest.go: + id: b548a549496f last_write_checksum: sha1:8348eb0e9bfaba8f2d28637c5ab21bb1367de135 + pristine_git_object: 2f1611b97e5651a8d1ffd669b4db59d756d40325 tests/mockserver/internal/sdk/models/components/getanswerresponse.go: + id: e5966e71a445 last_write_checksum: sha1:3e279bc55976d949c30dbf6fb095f5cc562532aa + pristine_git_object: 0272f33027192b3242d73e907505a32af6a39a09 tests/mockserver/internal/sdk/models/components/getchatapplicationrequest.go: + id: 5428a97a4e4d last_write_checksum: sha1:a9a46fca987ca8a0796a3523d51ef9096793bd57 + pristine_git_object: ed309bf7dcc9bddc982e5779b25423457f5e7dfd tests/mockserver/internal/sdk/models/components/getchatapplicationresponse.go: + id: 584d1aa84068 last_write_checksum: sha1:14be03943ee96d4fa38258e0992dec05e058becf + pristine_git_object: e55f9694f260f5fcd80751ebc807801b8ee77cf6 tests/mockserver/internal/sdk/models/components/getchatfilesrequest.go: + id: b9cfe6efd9a0 last_write_checksum: sha1:cf51f4d67c81a221512b968cd2d8c6d5b2034c89 + pristine_git_object: 01e36cf0e396d5817c067c63d5f57f92e6ac4d91 tests/mockserver/internal/sdk/models/components/getchatfilesresponse.go: + id: 2b19d63b5462 last_write_checksum: sha1:b3186c85a7348b4811a4fa4022285b04bfd72b09 + pristine_git_object: 1148537a6423a3e79803fb7696ff5ad6b3089a82 tests/mockserver/internal/sdk/models/components/getchatrequest.go: + id: ea6a626275ff last_write_checksum: sha1:f89489d8e44dffd154b58b147ef5d6c38b5a1995 + pristine_git_object: 82118136e30cef6f85142afba2d3761300bb837a tests/mockserver/internal/sdk/models/components/getchatresponse.go: + id: 6d5eaf6d4f9f last_write_checksum: sha1:0b1cbc001dbe7ed91d4ea00de86b6940fe7b8cf0 + pristine_git_object: 88ac7a9577cb5b685830b17b728883ee1ba1d31f tests/mockserver/internal/sdk/models/components/getcollectionrequest.go: + id: 95dffbbabe20 last_write_checksum: sha1:f4213443c174441aca4924c764bb5bdf9d500653 + pristine_git_object: 89a1e14b6a8072b21eaedfb6ea909740eada8b32 tests/mockserver/internal/sdk/models/components/getcollectionresponse.go: - last_write_checksum: sha1:0839c84f2a8111d9d66a65c1d736fb2092d48822 + id: 8098a889e514 + last_write_checksum: sha1:a016fa2a8c1668cd2a9e37bd4b461e48cee61bf4 + pristine_git_object: e02580ca73b2dbbb980477c7f39d4c1cd40f74dd tests/mockserver/internal/sdk/models/components/getdatasourceconfigrequest.go: + id: 290fa2e460f7 last_write_checksum: sha1:8c4922eef911b0ac609b55bb3db3b20ad4dae298 + pristine_git_object: 61fa0d59951bd64d534b9c1d9d5efd7189d19b0d tests/mockserver/internal/sdk/models/components/getdlpreportresponse.go: + id: 1b8fed52da90 last_write_checksum: sha1:2295b89c5825b9bb77bd6a922658383856738f6a + pristine_git_object: 275dbf8c17bfe30f4b14f3dd08c5af2c23217aad tests/mockserver/internal/sdk/models/components/getdocpermissionsrequest.go: + id: 1cc53e7f7fc2 last_write_checksum: sha1:0bd25f29756a5492e4325aa9a6bde8d8ee00f125 + pristine_git_object: 05b37eac5639f9c6dffdf78d2a1d4221bd8729cf tests/mockserver/internal/sdk/models/components/getdocpermissionsresponse.go: + id: c640bba5be3e last_write_checksum: sha1:b8c67f3b9256322fbb744c09fdc46b5adece2c49 + pristine_git_object: 8e244e1423ceb5f38e76e451abd2655c3df1a18e tests/mockserver/internal/sdk/models/components/getdocumentcountrequest.go: + id: b49deafc8e5b last_write_checksum: sha1:1e9cef725ed386a02de9affbc9799e58dda94ddf + pristine_git_object: a0961331bf95b374fa301b0b497a4472df8513ac tests/mockserver/internal/sdk/models/components/getdocumentcountresponse.go: + id: e577b13c2ac8 last_write_checksum: sha1:7e63afe85b5865ddfa9a97662eca078ba5f62a25 + pristine_git_object: 1691776fa554378d6585588a5fe24da1a050537a tests/mockserver/internal/sdk/models/components/getdocumentsbyfacetsrequest.go: + id: 976bab028e6c last_write_checksum: sha1:8f36841ddbbbfea62c86ba29b2eb8d07a9e88c43 + pristine_git_object: 62e8ccc0f0ae9bd8ebe36b3c6910808b35d34971 tests/mockserver/internal/sdk/models/components/getdocumentsbyfacetsresponse.go: + id: 84a22fd76dfc last_write_checksum: sha1:14b5f51e476f1a1e61fb2bd26dec5c4b867d772a + pristine_git_object: 74a0f90f4843fcf597484c996d3c8448a647c5f8 tests/mockserver/internal/sdk/models/components/getdocumentsrequest.go: + id: 4baa7e3fe63e last_write_checksum: sha1:5f903088fa4591d857d3db75efec9b9366b79b9b + pristine_git_object: 6a2ecf4f0c462566b96b50e0f998dca94b94a377 tests/mockserver/internal/sdk/models/components/getdocumentsresponse.go: + id: c20fade23f9f last_write_checksum: sha1:e7ff263610b7a3ca1bc0c2830eaa015a9411bad9 + pristine_git_object: f19405631647564e74e1f5fde2f8de8a40745158 tests/mockserver/internal/sdk/models/components/getdocumentstatusrequest.go: + id: b2b6abd734af last_write_checksum: sha1:43fbfe4c484b2f7472a4551b8d5569b1e964473b + pristine_git_object: a16e6e7288d9679578e5deec888aa0c986249364 tests/mockserver/internal/sdk/models/components/getdocumentstatusresponse.go: + id: 9c96dbcb4b1d last_write_checksum: sha1:0c07570aeb2efd8d46349fba324e727a2335cb24 + pristine_git_object: b87bd528ea71c5e622fc7918668cbcdfbf2a9e22 tests/mockserver/internal/sdk/models/components/getdocumentvisibilityoverridesresponse.go: + id: 0403e5dad2ce last_write_checksum: sha1:9fdc2fece17abeefc931fa5addbac327e0e41563 + pristine_git_object: 5bd08e1472ed414258ed660cc95c34079356f545 tests/mockserver/internal/sdk/models/components/getpinrequest.go: + id: f7d5082f4559 last_write_checksum: sha1:2d34974baea66744068b6689e162664d334b73bd + pristine_git_object: f126af9cd8096ddfe866038a6164a06205745ed6 tests/mockserver/internal/sdk/models/components/getpinresponse.go: + id: 741f324fb227 last_write_checksum: sha1:8b89dbc0109895df7c98e39fb265632f229b7c03 + pristine_git_object: e6eb59d7b55b069863bb99fb343773253e7ad7d6 tests/mockserver/internal/sdk/models/components/getshortcutrequestunion.go: + id: 859ee5742266 last_write_checksum: sha1:49d8ffca440b15a9d2d9d71edb76f9600411af00 + pristine_git_object: cb0491ccf1682666779718e8ccf793331db59236 tests/mockserver/internal/sdk/models/components/getshortcutresponse.go: + id: 8714342c1e85 last_write_checksum: sha1:e43ee452f198284652e411a80c4d266f996e932f + pristine_git_object: 4e6db38c5a14355dfe3ba44005fc08511b5f0221 tests/mockserver/internal/sdk/models/components/getusercountrequest.go: + id: ed5ddc2f4a27 last_write_checksum: sha1:6722feed0a31a6b9a2c6066b7e194c24ebd61201 + pristine_git_object: c86badbe178a8349c1e8b413df9a822e9ee63c00 tests/mockserver/internal/sdk/models/components/getusercountresponse.go: + id: ab7de2163097 last_write_checksum: sha1:06f934d64d00650da28d814dd49645772dbe79e3 + pristine_git_object: 49761b93bf5fb960a974d114467524b7834c0bea tests/mockserver/internal/sdk/models/components/gleanassistinsightsresponse.go: + id: 4f4987f9f125 last_write_checksum: sha1:5b8a4fdefd05ed9e53cbee94c32b0a428175ad22 + pristine_git_object: 9bc58150c3098a1d5c6ec5fcd3495306311e264b tests/mockserver/internal/sdk/models/components/gleandataerror.go: - last_write_checksum: sha1:e2ba36c9aeaebae5a4f57509af9597481a809f8b + id: 4b6d01166c72 + last_write_checksum: sha1:fa6d4a5917a90f72a97628ba20e31dd31b02af0c + pristine_git_object: d549ead5c8637ed5f551cf20c640c509d97e63dd tests/mockserver/internal/sdk/models/components/grantpermission.go: + id: b919de0d2707 last_write_checksum: sha1:83d69c5a502306994095bc1a515d6c52798fa696 + pristine_git_object: fb1c2a041580745f6604e00404812be8a130fd25 tests/mockserver/internal/sdk/models/components/greenlistusersrequest.go: + id: d0652520da9b last_write_checksum: sha1:e6390a90f5ed90fe5b70c4ee6df519625cde2a8e + pristine_git_object: 7cfe20c0a1ad1f73027b9625d6a0e4b09ccb5a53 tests/mockserver/internal/sdk/models/components/group.go: + id: 94bdd0eb6533 last_write_checksum: sha1:a888f767f31073e6b49d412485bcb8c839b2b4a4 + pristine_git_object: ecd7ddb6777546fb2061ed8d7fe99372430d28e3 tests/mockserver/internal/sdk/models/components/grouptype.go: - last_write_checksum: sha1:0346c3bd888fdcfa6bdf470f76f7778f32b240dd + id: 5537ed02d061 + last_write_checksum: sha1:ac5c2401137f44b275f47896925b258c730d5a6c + pristine_git_object: be69cc6acc4dd739fa09cc6a3117fcd8ab91b269 tests/mockserver/internal/sdk/models/components/hotword.go: + id: 541b48d27f83 last_write_checksum: sha1:7aaa2279ba4032458f14d65c2dbd3def0078920d + pristine_git_object: ed23ff8d1bfebc257158abd13a0e9f67636b45a8 tests/mockserver/internal/sdk/models/components/hotwordproximity.go: + id: 2802b5309b57 last_write_checksum: sha1:806ab1ff7c35c34ccdd286a05c2a573621526d51 + pristine_git_object: 611b62d7686476b4c54deaa83ed8006519f0ebf6 tests/mockserver/internal/sdk/models/components/httpmetadata.go: + id: f8e74e13e446 last_write_checksum: sha1:9e4b58e3bb54db4360421109c2e169741499be16 + pristine_git_object: e18bdc060aad616636f0b92e38b08a03a5cc1e4b tests/mockserver/internal/sdk/models/components/iconconfig.go: + id: 56fe47f5306f last_write_checksum: sha1:61063c36128117a731eddf86d9f30666c22e7891 + pristine_git_object: 537d53a4d6235b3f67a08a6b3c08f88a6782f8ec + tests/mockserver/internal/sdk/models/components/importagentrequest.go: + id: e32c8cfe1620 + last_write_checksum: sha1:75b76342950aac00545d4ea1d5b276b44441d765 + pristine_git_object: f4d77d24a94bc7b21ea6f064c917c24b2a7c7af7 + tests/mockserver/internal/sdk/models/components/importagentresponse.go: + id: f99e9c9fe605 + last_write_checksum: sha1:bf26c40925bea852b8a302a4c3c585707a1b1622 + pristine_git_object: 711f70bd800827d0da12d8bf8f1b46effe0fab14 + tests/mockserver/internal/sdk/models/components/importagentstatus.go: + id: 4ec15b2eb351 + last_write_checksum: sha1:10fffd431a042d6032a5af90b8cee46f0b91765e + pristine_git_object: 9098ec1e48023a6ec1e19d166909000890dda807 + tests/mockserver/internal/sdk/models/components/importagentsyncmode.go: + id: 4fb849e9d196 + last_write_checksum: sha1:9995d0f6680f21783280ac90c04d661d1e775d2e + pristine_git_object: 993ad1431a85cfd608526d91513c22134ccf5c21 tests/mockserver/internal/sdk/models/components/indexdocumentrequest.go: + id: 3f357e41b670 last_write_checksum: sha1:51488e52d8f6cae4ccb957ffa67b009f1620ce58 + pristine_git_object: 86a60a706a79d339af37973d48033b8e7880ad96 tests/mockserver/internal/sdk/models/components/indexdocumentsrequest.go: + id: 9e5124ea734d last_write_checksum: sha1:67980a2ec0301faf4d4e53068bfd9b67ef4315ca + pristine_git_object: 759eb8b774b53468bfc600c2ecb156f90d68784f tests/mockserver/internal/sdk/models/components/indexemployeerequest.go: + id: 2801b9d91a2d last_write_checksum: sha1:09df0bebfc24a18f9985aaf803053b3c8a008ebe + pristine_git_object: 8d08b0b794c55919f607780cb128368ffe06a871 tests/mockserver/internal/sdk/models/components/indexgrouprequest.go: + id: 21ae28131157 last_write_checksum: sha1:70b134584a76f8c28353dd0d0ed7841fbc92f96e + pristine_git_object: acd400f6a2b5ed468d837a8999cb3e3efb8a2ebd tests/mockserver/internal/sdk/models/components/indexingshortcut.go: + id: 48d24d656fd8 last_write_checksum: sha1:ed57a6397d9a42ea652edfb3077262f0b1d7ea6f + pristine_git_object: b7b7ca1585f6e58b7957a8e90145b74177c601ff tests/mockserver/internal/sdk/models/components/indexmembershiprequest.go: + id: acacd39e17e6 last_write_checksum: sha1:92ccb0c0887e93ce1b6a0828c0f678b35593ad30 + pristine_git_object: e7b2a46c60d004de5ead827a2a28a41363e24603 tests/mockserver/internal/sdk/models/components/indexstatus.go: + id: 99a07ea21a13 last_write_checksum: sha1:8f2e56c105e7601ebd5fcbd5b775dd71d672cf91 + pristine_git_object: f170444ac68a29100a121b3852f2d1a33f2e1570 tests/mockserver/internal/sdk/models/components/indexteamrequest.go: + id: dc8a24d79966 last_write_checksum: sha1:1a61a66d3bdc9d1c1402fd9178fcf3093a366969 + pristine_git_object: 64f2b3640aacd14ec1dae4dde9d555326fef02d0 tests/mockserver/internal/sdk/models/components/indexuserrequest.go: + id: ed567e0d15f7 last_write_checksum: sha1:06d1d86e560655f1b5c529f630fd757c12b5d0f4 + pristine_git_object: daf6de74ff55ccd54aed86e2e10ec7f6154ca3f5 tests/mockserver/internal/sdk/models/components/inputoptions.go: - last_write_checksum: sha1:37bfc1b1073f6918185dada746c2f7c772ee3435 - tests/mockserver/internal/sdk/models/components/insightsagentsrequestoptions.go: - last_write_checksum: sha1:00e65e5e7f98d1b0b0d3253a15baad2c11c7dec2 - tests/mockserver/internal/sdk/models/components/insightsaiapprequestoptions.go: - last_write_checksum: sha1:a21e9cc2808cb91513ddfe6069d53dfecf52f4e6 + id: c5994340f415 + last_write_checksum: sha1:80d7508aa49da639f53def509fb1300d50b27a45 + pristine_git_object: 9ab2cc24643e9600bf2f31f09cfc178f930f905f tests/mockserver/internal/sdk/models/components/insightsassistantrequest.go: - last_write_checksum: sha1:eac843a444bc1a4407ac673f756bb9684564aef7 + id: 1e686caf681a + last_write_checksum: sha1:e420017f2d5df6e11b16e57611253957ccf470dc + pristine_git_object: 29a882de1e9020023d8910a6f4ce933356542dd1 tests/mockserver/internal/sdk/models/components/insightschatsummary.go: - last_write_checksum: sha1:bc7bb408c578673cad60c321487c0804e0600dd6 + id: a708c0854258 + last_write_checksum: sha1:40fe8e7f03b21f4f1790491c48a65dba9e3514bd + pristine_git_object: d5fe3dfced5431b6f5ce5fad8360e7f1e04afbac tests/mockserver/internal/sdk/models/components/insightsoverviewrequest.go: - last_write_checksum: sha1:f41a223c0da4e4edee140cdd8a7697a45969a239 + id: a4dad7d6aabd + last_write_checksum: sha1:1e607db283c6a0395011c9482508d3ad5544b44e + pristine_git_object: 5e903919f103f212820d2d4717e0e1e95d78846b tests/mockserver/internal/sdk/models/components/insightsoverviewresponse.go: - last_write_checksum: sha1:6b78d9baa749aa3e03c2e20964a9a5ddcaab97ad + id: 5643c3cf2f72 + last_write_checksum: sha1:16dad78e377ce9f351787544d31c03af558d1cfd + pristine_git_object: 2e8c2ec9b1055f925928b2179fea2bd7c9d31627 tests/mockserver/internal/sdk/models/components/insightsrequest.go: - last_write_checksum: sha1:eb012d78051f22fd42f8b58a31f1de61b6ee970a + id: ce15dfb99343 + last_write_checksum: sha1:b9f1c9680014aa2b60161886dc0d5932ef0cab20 + pristine_git_object: 5d275bd5402042106a4059b3af5f1c808e500280 tests/mockserver/internal/sdk/models/components/insightsresponse.go: - last_write_checksum: sha1:7b1af679f58bb536f24c3d2185bf8250886eef07 + id: f99b405884d9 + last_write_checksum: sha1:5c9ec796ce094c19b4ee9eaa6d392278b07936ae + pristine_git_object: 9914a52e917e0dcdadda314f1649931bdb3ca825 tests/mockserver/internal/sdk/models/components/insightssearchsummary.go: - last_write_checksum: sha1:7640f939a1f08bb1d3ed16361412801cad2c9d48 + id: 0db178e5510e + last_write_checksum: sha1:d8593121130c17b11118c88686aedf7a004503c3 + pristine_git_object: 408d84baa28719655de6ea3c763233f46847359d tests/mockserver/internal/sdk/models/components/invalidoperatorvalueerror.go: + id: 3ff602216ef9 last_write_checksum: sha1:6e8e407afa9e6caf4bc946a51054037a0b64100f + pristine_git_object: a59e010091e1f8ac5b86d4f111a5333ec1993165 tests/mockserver/internal/sdk/models/components/inviteinfo.go: - last_write_checksum: sha1:61032a89375395328097e99d31bf547ae52f5870 + id: 3dd69ef67f25 + last_write_checksum: sha1:a34f4007a255687f057ad9d07c76096ffc122a99 + pristine_git_object: 18cac8b3667eaeeefcd0a16793c0a724c982ea10 tests/mockserver/internal/sdk/models/components/labeledcountinfo.go: + id: 9ab98ae1e4d9 last_write_checksum: sha1:93763fcdc7d3a1e7b6ffc5cfc2e77fe7270e736d + pristine_git_object: 6ddd153cd951ad2e664d2f1a90ed99579258b4cc + tests/mockserver/internal/sdk/models/components/lifecycleevent.go: + id: 2e0a833df883 + last_write_checksum: sha1:a6c849e86ad63b7dfeff2752a28f5bbb40be1d06 + pristine_git_object: 0e3627a771a679384f7a79fad488867221b5d995 tests/mockserver/internal/sdk/models/components/listanswersrequest.go: + id: 30123e5ac5fc last_write_checksum: sha1:0a4be0587f8647a1c4f6702a256e8b6849a1234b + pristine_git_object: 04f62de323984f2e8d3eead984b538ff4e1164f8 tests/mockserver/internal/sdk/models/components/listanswersresponse.go: + id: 0128f48e6445 last_write_checksum: sha1:e2ad7ae1bcf8e0d09fdff647ae2831019c8b23e5 + pristine_git_object: fe8dd2869445bb4d9a4745fee8df5e53eb2ea9cb tests/mockserver/internal/sdk/models/components/listchatsresponse.go: - last_write_checksum: sha1:5ddbcdb15822645a1187dc548c18ec852c849800 + id: 7f4f004377b1 + last_write_checksum: sha1:97dd22a5070cf9f35b9aab05f606db34182e65e3 + pristine_git_object: 19ca70fc465ff370c50cda5799fe84aa77af361d tests/mockserver/internal/sdk/models/components/listcollectionsrequest.go: + id: 33f923996b18 last_write_checksum: sha1:e78e428237fc334a732d4a44e524e28a1e31e5c1 + pristine_git_object: 3dec95592d78066e1c23f9b20978ecd3d6eedb40 tests/mockserver/internal/sdk/models/components/listcollectionsresponse.go: + id: 9c4f2262dbed last_write_checksum: sha1:27ab5fefe97945d168a857925be7cb05dc0fdd82 + pristine_git_object: 77a9eafff4d1490d5b6ad782d641a1537c096649 tests/mockserver/internal/sdk/models/components/listdlpfindingsexportsresponse.go: + id: 6b933e67f205 last_write_checksum: sha1:508085e8ad2eb673bd53c61c522aef0b928c88d3 + pristine_git_object: 9e84daba07b14d706708d0d23d1487365317798e tests/mockserver/internal/sdk/models/components/listdlpreportsresponse.go: + id: fab2d05e4972 last_write_checksum: sha1:cefa10b1888bf6b537d3fe75e36bf359d14716e3 + pristine_git_object: 25f297b597a1dfa563907db00601e89cd55c39f1 tests/mockserver/internal/sdk/models/components/listentitiesrequest.go: - last_write_checksum: sha1:c181794849c1e7b456fb3ed65c7714c84ebfe2d2 + id: 1dbbb5c24982 + last_write_checksum: sha1:4af794e5bfaa93d0b8894e83a4ed66089ccc906a + pristine_git_object: a742d389e6e500312fef3867a228df6a28bb1b13 tests/mockserver/internal/sdk/models/components/listentitiesresponse.go: + id: 55ea0386c2bc last_write_checksum: sha1:a8a1457db48b2ff8d44cc065f02c66d69cff2ad5 + pristine_git_object: fdfcc5a46103beec70bb50c7f56572d5ec96c4af tests/mockserver/internal/sdk/models/components/listpinsresponse.go: + id: 83082c0af29b last_write_checksum: sha1:788783da18a1e0147bd6f7d2cdcfc1629f8781bd + pristine_git_object: cbf8b276879fab1ac54b44c642223972a11498ee tests/mockserver/internal/sdk/models/components/listshortcutspaginatedrequest.go: + id: 46ffa4ee859a last_write_checksum: sha1:0148fe62e21b94d4e9c2e2fc3aa9e1e8ee426157 + pristine_git_object: 40562b5b841c25efe4174ca87b5fa5ddd84ce9df tests/mockserver/internal/sdk/models/components/listshortcutspaginatedresponse.go: + id: ad6c529f00de last_write_checksum: sha1:839f408c6937505cfd768ed96aedc09e4ee95dd3 + pristine_git_object: 4994496601e911bc0d2894857d0a079f3e467a9e tests/mockserver/internal/sdk/models/components/manualfeedbackinfo.go: - last_write_checksum: sha1:171df8e214442629f381e82c271332d2b28682be + id: ec8878d0c324 + last_write_checksum: sha1:5c47725e2979dbf05bc3c609ea9dbe37bd03c5fe + pristine_git_object: a6091270ee84a1f4c81d64e369d249a82f1382af tests/mockserver/internal/sdk/models/components/manualfeedbacksidebysideinfo.go: + id: ca109f859575 last_write_checksum: sha1:9c066d47590c5ee9823f57a51466268e2893a13b + pristine_git_object: 23fb1a7da94ab17bfa0b54a45e12eb0ec3f59562 + tests/mockserver/internal/sdk/models/components/mcpbreakdowninsightsrequest.go: + id: 9ffe49fd371c + last_write_checksum: sha1:70341128cd46d9472de34bd3d58ac377f37d2580 + pristine_git_object: ef9a081c408459b7ef665bc6b1e89ea05b242fcd + tests/mockserver/internal/sdk/models/components/mcpbreakdowninsightsresponse.go: + id: 1f8eda5070e3 + last_write_checksum: sha1:8ecbd57e51bbd9b0690f74d66880087074a626d5 + pristine_git_object: 8ae55f171cc531a1b7f9fea7670d103b08191d7c + tests/mockserver/internal/sdk/models/components/mcphostapplicationbreakdown.go: + id: a9ba91d64581 + last_write_checksum: sha1:ef6e565d96b5253d5970fd5dd608f87cbe2f1cbe + pristine_git_object: 5b57f57be40f67fa1d0ccbd59e1fe573b9ef685e + tests/mockserver/internal/sdk/models/components/mcpinsightsrequest.go: + id: 44ebf8073f73 + last_write_checksum: sha1:6ee7a134ff7ef911922d79f7552936cbc6687309 + pristine_git_object: 930b2a4e0d95b505061653df063d355901440fcc + tests/mockserver/internal/sdk/models/components/mcpinsightsresponse.go: + id: cdebbbd5d4cb + last_write_checksum: sha1:eaad28cbccc71e85d47f6a0dd7f723cfaa9dc4f5 + pristine_git_object: 2d1a08e0f1b9da899fdbbe089df47fde9b8c7467 + tests/mockserver/internal/sdk/models/components/mcpserverbreakdown.go: + id: 52d405a6680a + last_write_checksum: sha1:64c2730a63feea5ff3965df8ca2034afe2bec8d1 + pristine_git_object: 6559a26dddb1b00c9dde1567fc7676ab00f65745 + tests/mockserver/internal/sdk/models/components/mcptoolbreakdown.go: + id: 9aa21211df8d + last_write_checksum: sha1:f351cdec05b8f05caac7031ea98f17071cb7ccf6 + pristine_git_object: be104ab72b0dbd45c2b852529cbf96985258066a + tests/mockserver/internal/sdk/models/components/mcpuserbreakdown.go: + id: 3796e6d874c0 + last_write_checksum: sha1:115c39fb75461e557499b7aebaac070fcbcc5af4 + pristine_git_object: 73014b6f5dd71b9d05fe8935098102f1ca034101 tests/mockserver/internal/sdk/models/components/meeting.go: + id: 104e13d174f0 last_write_checksum: sha1:3cf5bc5fd2b5a40c545bfe1d9f768a98c3360d11 + pristine_git_object: 0c852dd3a7a2cf25798b15303e82ec7b5e8a59e6 tests/mockserver/internal/sdk/models/components/message.go: + id: d96e45d4acde last_write_checksum: sha1:e26e4e76e56ff85f2df34f754db3bddaf57b1475 + pristine_git_object: 5972aa332f648eba54a1c048c1819c058233db36 tests/mockserver/internal/sdk/models/components/messagesrequest.go: + id: ad26cc127163 last_write_checksum: sha1:91ec52d57dfd2e53150a39841b6eebf3bf8d1568 + pristine_git_object: a778dc51fec681f83e9e9b0b5f0801792fc00fa6 tests/mockserver/internal/sdk/models/components/messagesresponse.go: + id: b2129871b3f8 last_write_checksum: sha1:cd2a29d8a46d95037a32717f4cc91612a3a29cac + pristine_git_object: 6d8bb0637e98328c014db61a92fcb9f65f378d1c tests/mockserver/internal/sdk/models/components/objectdefinition.go: - last_write_checksum: sha1:bb870ed291515df1134057b714064b863884817f + id: b31a249b0ab6 + last_write_checksum: sha1:4fb46c6216a0cfcc06a2eba090a8a54565eab685 + pristine_git_object: 32a3df40aae636faa61ffef31c606bc1e5e44ed6 tests/mockserver/internal/sdk/models/components/objectpermissions.go: + id: ccc6831e9a89 last_write_checksum: sha1:a182302021d92910af1f940b60a5fd78f0288bac + pristine_git_object: da63b51aa54a7d5161a011d213289171987a247a tests/mockserver/internal/sdk/models/components/operatormetadata.go: + id: 4ea52082a3ba last_write_checksum: sha1:29e97747020e7c3c4dbece0ccab3ed608e450f00 + pristine_git_object: 01e632cd137afddcd9ba7e5b08f87e75aec06df9 tests/mockserver/internal/sdk/models/components/operatorscope.go: + id: 84680c8d2dc1 last_write_checksum: sha1:b82c705e6442e386a62f48285b5075e4adfd39ad + pristine_git_object: 1432e9ddd5212e0f1142ae4ceefbf7e75c7e5805 tests/mockserver/internal/sdk/models/components/peoplerequest.go: + id: b9eb3293a335 last_write_checksum: sha1:ed92d35b9ee73fab4f70e9aaab17f6ad7c9351cf + pristine_git_object: 1240c00e54f6f5c4493022e643470ffd9011b8ac tests/mockserver/internal/sdk/models/components/peopleresponse.go: + id: e570c57343b4 last_write_checksum: sha1:370070abc7236a46218b5d2eeb74f00a4a082aba + pristine_git_object: 452671486fc4d36b768a7889f851da9533e3755b tests/mockserver/internal/sdk/models/components/peragentinsight.go: - last_write_checksum: sha1:2589f47e3230b4acac344d2a6898e1e01b9d70fb + id: ea141ba29ea4 + last_write_checksum: sha1:a2a967c60dd0334daa9cd8176282c81176887c6d + pristine_git_object: 8530b14c21b0de13337afca8d275ad96c8cc12a7 tests/mockserver/internal/sdk/models/components/period.go: + id: c1a6be1de5fb last_write_checksum: sha1:dd7b20879b387cbdb3a38113398daeee9f09c4ff + pristine_git_object: 8115421fc6bf9f0c50d006993df91c43de998116 tests/mockserver/internal/sdk/models/components/permissions.go: + id: 758ded9c8cd6 last_write_checksum: sha1:604bc9bec4a89d3f72cf808327489999ad5a4639 + pristine_git_object: c12f95f09aa18267484d5e1c11ca089a6bb35a03 tests/mockserver/internal/sdk/models/components/permissionsgroupintersectiondefinition.go: + id: 1a18261a9010 last_write_checksum: sha1:1d89ecd50e0f4bf8e7539e33d6f02a0e5b37afa1 + pristine_git_object: f9056e4fc9da37d708e834fc6731ba114ce05981 tests/mockserver/internal/sdk/models/components/person.go: + id: 11bb88f6a505 last_write_checksum: sha1:205cadebb2dd56343e3985b090b1532ace9838e0 + pristine_git_object: ab2c5f86c9d1327bfde1edcb7706392180b8b8fc tests/mockserver/internal/sdk/models/components/persondistance.go: + id: 38ff917355bb last_write_checksum: sha1:b1c7f853fd358135eeeeeebe8911abcefb0f646a + pristine_git_object: 234db0e2f35f0717bf6949b3d600dc1b5043f9ec tests/mockserver/internal/sdk/models/components/personmetadata.go: - last_write_checksum: sha1:14372a801821a619f0523d898f933f55ac34cb19 + id: ae4a57f895bd + last_write_checksum: sha1:6e3e721cb51a3fd06da8b266435122f0a0dcaed3 + pristine_git_object: 7813a6fbe9f9a1cb8a4bde86ec2d76cf1efd468f tests/mockserver/internal/sdk/models/components/personobject.go: + id: 793511d31751 last_write_checksum: sha1:d7b6865c46ed5f590011f698163bb0c6d4fd3cb0 + pristine_git_object: cc4039529bc991beb283c22be167cc07c4c591ef tests/mockserver/internal/sdk/models/components/personteam.go: + id: aab3428e64ad last_write_checksum: sha1:d93eeb820d2b3d29e06915dca5c07e17d8fc2990 + pristine_git_object: e93471a504e98c35176105cdffb371f460790bfa tests/mockserver/internal/sdk/models/components/persontoteamrelationship.go: + id: dc4286ebd099 last_write_checksum: sha1:512bb60a765e1eae497c256364dd579db3458c9f + pristine_git_object: ab48edf1ca57a44ad65ed31902626c12d4091458 tests/mockserver/internal/sdk/models/components/peruserassistantinsight.go: + id: b63c751dbc98 last_write_checksum: sha1:79215291ad220a4cc52937f05f2703f787c1d2fb + pristine_git_object: 1432c2e402d16ede1dc88cb566a58858a998e308 tests/mockserver/internal/sdk/models/components/peruserinsight.go: - last_write_checksum: sha1:db34b45a2a1e2c35ed703db5e3c7877b98ee03cd + id: 4b7102dcf8b5 + last_write_checksum: sha1:c2927daf6e2dd2fd6f88b69725c61a3a749ed751 + pristine_git_object: 0cda09fda06e6aa7bb5f181e816f2cf797279257 tests/mockserver/internal/sdk/models/components/pindocument.go: - last_write_checksum: sha1:1eeaa9c17a1cd0208bbe00d221d0357efa63e707 + id: 8605d1ff21f6 + last_write_checksum: sha1:4dbe3cbb9caf93226145a0982341a9629e3081b0 + pristine_git_object: 3ccb00d4d2cb3bf2cd5c93b39271423ac9ac3cc8 tests/mockserver/internal/sdk/models/components/pinrequest.go: + id: bae26829f4cc last_write_checksum: sha1:b73fc92fa94ae8b4b090e9df2102b921e7634bd2 + pristine_git_object: 7ef8d8e65bd75fe35f59d6858df07c1f970c991c + tests/mockserver/internal/sdk/models/components/platformactionsummary.go: + id: 696bcfeed832 + last_write_checksum: sha1:4284aa5cd97b0516fd7b19e9ffc69231a1dd61de + pristine_git_object: 5a56a4c8b3d833211df4fbd7864ec581310ed2e1 + tests/mockserver/internal/sdk/models/components/platformagent.go: + id: dcdd9a7bc9de + last_write_checksum: sha1:b55d4b147d41e3732e54372b8f1fc4c69a6a2426 + pristine_git_object: 79049da4483e06ef116e58df66ecff3551a849ab + tests/mockserver/internal/sdk/models/components/platformagentcapabilities.go: + id: 2807a52a8b1a + last_write_checksum: sha1:eed1084087dd93ae61c145598628546d819fe45b + pristine_git_object: 562c8682df3bb923ffa1cc3fdc86b8a9048b6e1f + tests/mockserver/internal/sdk/models/components/platformagentexecutionstatus.go: + id: c9db767e876c + last_write_checksum: sha1:c8f646aff8df619e61b6f55a22b8ca836e40ce9d + pristine_git_object: c8c2bfb9613140654f527aed41518769e10ff152 + tests/mockserver/internal/sdk/models/components/platformagentgetresponse.go: + id: 531e55c09141 + last_write_checksum: sha1:b36aba6678be9f8a1b18e6e901f1671dcdebd0a3 + pristine_git_object: 3df4f65db7b472cc1bb0fec6603e80830ddd938d + tests/mockserver/internal/sdk/models/components/platformagentrun.go: + id: d12a92c365e5 + last_write_checksum: sha1:c39a6b74fe9c30850bf5bedd6827577bf4b56566 + pristine_git_object: a3139f71ea2e70673649a36519c072d817d45969 + tests/mockserver/internal/sdk/models/components/platformagentruncreaterequest.go: + id: 77a686bb0b6e + last_write_checksum: sha1:470b1f19968f3aea31ae965922ecfd8a659855fb + pristine_git_object: d653f4bc7ce64623cacfb1c1a48ba3451dbf0d12 + tests/mockserver/internal/sdk/models/components/platformagentrunwaitresponse.go: + id: 368b82c238d0 + last_write_checksum: sha1:77ffebf146f2f6f671f10a8ad893f672ee8c67a5 + pristine_git_object: b157f036a87b980e584e542010411e4ac69a36f2 + tests/mockserver/internal/sdk/models/components/platformagentschemasresponse.go: + id: 68274dd0a3df + last_write_checksum: sha1:a7e32651fe39006126fc80176910047ac84c9893 + pristine_git_object: 6f9aa5d088b6d5d8b6e3490b15ee4c0ad45749b1 + tests/mockserver/internal/sdk/models/components/platformagentssearchrequest.go: + id: 7eaeaea3b941 + last_write_checksum: sha1:7c1f9eb5a6433e664b9ce9e5dd111d3408ff910e + pristine_git_object: a74eaf650388df24696257f96f58ba715b82f5ab + tests/mockserver/internal/sdk/models/components/platformagentssearchresponse.go: + id: f299b36c97da + last_write_checksum: sha1:2e0f29320158b7f1b204af2adbc462bdefa34c1f + pristine_git_object: ba08e943e4a74ac111304125d6085f642a522085 + tests/mockserver/internal/sdk/models/components/platformauthenticationsuggestion.go: + id: 48f115d1756f + last_write_checksum: sha1:1a05a8e9c2ce9f6db1c96831eb05f6dd2cc0abc8 + pristine_git_object: 58281ae6e982ccb6e585a3299a3893a5850cfb3d + tests/mockserver/internal/sdk/models/components/platformchatcitationannotation.go: + id: f4acfb6b571a + last_write_checksum: sha1:1f7f643895fdec20a70e5efebecdf9d8f636384e + pristine_git_object: 64b253ab16d8eea7f910fb7c32635756312c7866 + tests/mockserver/internal/sdk/models/components/platformchatcitationsnippet.go: + id: 19303510f847 + last_write_checksum: sha1:521a16886f1f96d692e7dfc60c68ed16195f9db9 + pristine_git_object: def727555354501498b0e5757236ced49f597ba2 + tests/mockserver/internal/sdk/models/components/platformchatcitationsource.go: + id: f4e0cc1911d7 + last_write_checksum: sha1:235f12483ef7492b172bfbefa85065019bed09cc + pristine_git_object: 596b8663993c350c7a529ddd4bf958629d58f6c8 + tests/mockserver/internal/sdk/models/components/platformchatcompletedresponse.go: + id: dfc6d86d9ca2 + last_write_checksum: sha1:0a214ec8175734c89d968fbb3af56fc19e817264 + pristine_git_object: be4e37123971803d69d6581668ac6fa8e0f56347 + tests/mockserver/internal/sdk/models/components/platformchatcreaterequest.go: + id: b024a90db5cf + last_write_checksum: sha1:c7c3b67893cd7e42c4995e7e5b8f13bbb91090f1 + pristine_git_object: a5b50b89f856fa678f9bc26fa08818a8d91f183b + tests/mockserver/internal/sdk/models/components/platformchatcustomentitysource.go: + id: 19335eec1f0c + last_write_checksum: sha1:52947945dd84893095dd04c7c1d0fed92eed9d03 + pristine_git_object: ccd6eac366414927d53ec579b691a1abf3f34867 + tests/mockserver/internal/sdk/models/components/platformchatdocumentsource.go: + id: 50d8ddf827c8 + last_write_checksum: sha1:601d2c92039f18fcf03ea3abe7a8cb30d96862d2 + pristine_git_object: 63d8078fd2f1510238397be59455ef19090a3a3a + tests/mockserver/internal/sdk/models/components/platformchatfilesource.go: + id: f717724c0acb + last_write_checksum: sha1:9c1cf43539e36e553ea918fd22db2e9a6985f926 + pristine_git_object: 6714718990fc59806d1a8f15d9b24515397fa930 + tests/mockserver/internal/sdk/models/components/platformchatinputmessage.go: + id: 56818bc51e4c + last_write_checksum: sha1:42af3af208da28f93f0f2201e3daa8b46a7e1dba + pristine_git_object: 97c1e067fb5ecb6b2f97606419d967243488f520 + tests/mockserver/internal/sdk/models/components/platformchatoutputmessage.go: + id: 7ca1fc5cc683 + last_write_checksum: sha1:3db396040f3153e9079616c8618abeecc999e663 + pristine_git_object: 69218f0ebe38116259e1e0a7c021e605a79e88f6 + tests/mockserver/internal/sdk/models/components/platformchatoutputtextcontent.go: + id: b5d5f31f9886 + last_write_checksum: sha1:65d94d8a5470bd836564c69e1476d29c7c8041b9 + pristine_git_object: d5020f5ca750f648d73d9153f3a332745d72304c + tests/mockserver/internal/sdk/models/components/platformchatpersonsource.go: + id: b44852860bd9 + last_write_checksum: sha1:ae83c0e9521f08d5818d9aa5cff33ca7233239a7 + pristine_git_object: 9576e8664747c8ca292816827aae56589aeab5c0 + tests/mockserver/internal/sdk/models/components/platformcontentschedulewebhookevent.go: + id: aa997737c72e + last_write_checksum: sha1:cf082854fbef3c2fb99b4415f333e65a3e97950a + pristine_git_object: 1bd0c5a424091a348602510d34d92195d7fad553 + tests/mockserver/internal/sdk/models/components/platformcontenttype.go: + id: d1a02baa3621 + last_write_checksum: sha1:b552f26421544664b54a4423c8335c90b09480c6 + pristine_git_object: e96a7c7850d7a0c456dd61d706232dd7c06cd0db + tests/mockserver/internal/sdk/models/components/platformdatasourcefilterinfo.go: + id: a1eb3b7148bf + last_write_checksum: sha1:094bff06100193f57b6766f2f42139c2e5bcd8b8 + pristine_git_object: e577fb7f7b9c911e698ec560181abbe596be0416 + tests/mockserver/internal/sdk/models/components/platformdocumentchangewebhookevent.go: + id: 14cae8b8b46f + last_write_checksum: sha1:eeef00ef9e08df054c9f0b37881495b3ddc400c6 + pristine_git_object: 790da9be746c8ffb31da4ddd45e70435cae25c20 + tests/mockserver/internal/sdk/models/components/platformfilter.go: + id: 1762bf95c464 + last_write_checksum: sha1:9a4357e8b4ccf75dd97072960321efb36dcf13a1 + pristine_git_object: c1ab5360ebdb5dda06e190b31faaca26b4d054f7 + tests/mockserver/internal/sdk/models/components/platformfilterfieldinfo.go: + id: c22bd1d66163 + last_write_checksum: sha1:be6276937481e3ff27ea4339a888496edbc85fc9 + pristine_git_object: 5b3272e0dd3464f9ee2f480dac80127bcdd499c4 + tests/mockserver/internal/sdk/models/components/platformfilteroperator.go: + id: 7daac12f5ae7 + last_write_checksum: sha1:49fd1240cf9eb9d2259465f79e0c481d711ec37d + pristine_git_object: 7515a2832f306164806fae459e9a995d37b70b78 + tests/mockserver/internal/sdk/models/components/platformmessage.go: + id: 5eb3e8c3fd80 + last_write_checksum: sha1:3051abc1ef3e40cd0385bd9846c987d3ebfbcbbf + pristine_git_object: c8062f03d7a576e59acdca705b62c2be08cd9770 + tests/mockserver/internal/sdk/models/components/platformmessagerole.go: + id: 09fd90afdd78 + last_write_checksum: sha1:9249342777230262261267ff0a32ba1b4248db5d + pristine_git_object: bece7dac13fb6fe5bad631a67b835abf18833015 + tests/mockserver/internal/sdk/models/components/platformmessagetextblock.go: + id: de473d461198 + last_write_checksum: sha1:a36d13b1d29fb55a08134ebf88f3971079b14fbb + pristine_git_object: 0432f13a4feb9922a9d36f79a6f83c78224f9a27 + tests/mockserver/internal/sdk/models/components/platformpersonreference.go: + id: ebc5c183c98b + last_write_checksum: sha1:91afcf6171cafdd18d638818711fe0f3a0ba1021 + pristine_git_object: dca6a6f855816c3598a9a1fa69c72f131eefa1c6 + 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 + tests/mockserver/internal/sdk/models/components/platformresult.go: + id: dd777258615b + last_write_checksum: sha1:4343640607d8d0421164c0dc16daf5718d65e848 + pristine_git_object: f09289f87429f1cb7b7aced37ac349ebbd88e746 + tests/mockserver/internal/sdk/models/components/platformsearchfiltersresponse.go: + id: c6e01fb5cff1 + last_write_checksum: sha1:94caa146dcfafb521d396d19e5358da8c598faab + pristine_git_object: 51409a03c73a593fdad3d7b479a4e0c95d3b91a3 + tests/mockserver/internal/sdk/models/components/platformsearchrequest.go: + id: 4da7625f1c35 + last_write_checksum: sha1:1ca1f5c466206edca83b513db2e1179229e2f8cb + pristine_git_object: 83c3c79dedae573f3ee3185856fd12360918ce9b + tests/mockserver/internal/sdk/models/components/platformsearchresponse.go: + id: a58f32052764 + last_write_checksum: sha1:c2aea70c85fe71f160f527055a91f378caf3e6f9 + pristine_git_object: 3eed4668d26f9212f864b7e486d75dbbf920b68d + tests/mockserver/internal/sdk/models/components/platformskill.go: + id: a97a51039ff5 + last_write_checksum: sha1:8871b58924c180a5565b43c91b58ed79212739bb + pristine_git_object: 8397a89921fdbadf8ff5733049b9faabf554e21a + tests/mockserver/internal/sdk/models/components/platformskillcreaterequest.go: + id: 05411c97e4b1 + last_write_checksum: sha1:8d732893340e35116cb9768a65fd07dd6e77c6c6 + pristine_git_object: c85a2e3c3ef4d4b302c260cdeb09335b5c283cf2 + tests/mockserver/internal/sdk/models/components/platformskillcreateresponse.go: + id: 23cf6098161c + last_write_checksum: sha1:a3553c0a1ed26ce0616cb9ecad259a4402dbb0b8 + pristine_git_object: 4713a36677ed57a3c58455cd05d72608eb7e64c2 + tests/mockserver/internal/sdk/models/components/platformskillgetresponse.go: + id: 24cc096b11c0 + last_write_checksum: sha1:44cf3cd559d6e8cde855daafc7c9fe31774fce6f + pristine_git_object: c9bcfa2f4e416f4b6c441f39bd70c157687abc5d + tests/mockserver/internal/sdk/models/components/platformskillimportrequest.go: + id: 45a3f2664bef + last_write_checksum: sha1:296deabb4c404db64f289f4ef289367c4e3b1b42 + pristine_git_object: f038a7deff637e79bde341c3b7b30da64979a8c3 + tests/mockserver/internal/sdk/models/components/platformskillimportresponse.go: + id: 440a9e446bd2 + last_write_checksum: sha1:450ab4711bb5995f21f486cc05fae94264ee840a + pristine_git_object: 262df2a7dfed6e67a02d34a227ba545cbc521e18 + tests/mockserver/internal/sdk/models/components/platformskillorigin.go: + id: b3f692d12f20 + last_write_checksum: sha1:4bbd57b85b9318d5fa9ea3ca97e26cab34e689fd + pristine_git_object: e0a004498154f0b4285d2d29dde3d0e27b163bb6 + tests/mockserver/internal/sdk/models/components/platformskillslistresponse.go: + id: 61695a856d41 + last_write_checksum: sha1:718c3f3013007de52b02444e4a12d43a10fce37d + pristine_git_object: 566d53518ac6a45dc5ae0ec8e5e55df0433f8ae1 + tests/mockserver/internal/sdk/models/components/platformskillsourcepreview.go: + id: "760613548093" + last_write_checksum: sha1:3deb2829d40e4656a75ad550dc52dd3a97a3d8e6 + pristine_git_object: f7a467f1f1802a1a56314879c7666620ca9d714e + tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewfailure.go: + id: e2897ced2da1 + last_write_checksum: sha1:6255f8ffe6c9d895d71f4eac788dc31a131b6038 + pristine_git_object: 5a6c6fe802defd21d7d69908b67a24d9b75c50ce + 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 + tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewresponse.go: + id: d14b15a2dcc9 + last_write_checksum: sha1:3fb833b7b4a3bb0b15ca4bba00a74a2de33dcad3 + pristine_git_object: 0607598d7d2a3539a2b4ad5ca38b9baba4402f32 + 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 + 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 + 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 + 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 + tests/mockserver/internal/sdk/models/components/platformskillvalidationfile.go: + id: 4c3718b26406 + last_write_checksum: sha1:fda63f0276f5a36dca1e5b81fdc3e7b1e7766034 + pristine_git_object: 0ecb2538415b054b94e9f61e9f39f4f56571fc46 + tests/mockserver/internal/sdk/models/components/platformskillvalidationmetadata.go: + id: 45f983d9e246 + last_write_checksum: sha1:0961a2860562ea86dfe3eab7f29f46050c61d25b + pristine_git_object: 0368fac90ba4f0c69bb4442564c499e6138fb263 + tests/mockserver/internal/sdk/models/components/platformskillvalidationrequest.go: + id: cd6e93648ad1 + last_write_checksum: sha1:fcebfac74710edc851a1a69934ff142f17549203 + pristine_git_object: 2f644ff648b531896643d65ebdc1122058f87527 + tests/mockserver/internal/sdk/models/components/platformskillvalidationresponse.go: + id: a886263018af + last_write_checksum: sha1:2dfde216c6f86cb10dc8514d7bdcdefa86eb404d + pristine_git_object: f8bd1eaedf0df29c529f9e641ea5fe59eb1479cf + tests/mockserver/internal/sdk/models/components/platformskillversion.go: + id: a742ffff90ef + last_write_checksum: sha1:9d8ca19699faae865387810ce6eb941be4596cc3 + pristine_git_object: a826ce8b738b155252c6065bc470a614509b705f + tests/mockserver/internal/sdk/models/components/platformskillversioncreaterequest.go: + id: ce5496adfe5d + last_write_checksum: sha1:49a360434b94f1112e7426551cb0976a52b0bd28 + pristine_git_object: 29ee553540b0368c45eb8a9a4ab006677cebc528 + tests/mockserver/internal/sdk/models/components/platformskillversioncreateresponse.go: + id: d0edc0d19225 + last_write_checksum: sha1:b85fd664a3b89426774210af03ace87ccaed016d + pristine_git_object: 2c9b431201c9caf257b67cf2ab8648fafbad235e + tests/mockserver/internal/sdk/models/components/platformskillversiongetresponse.go: + id: 3958ae09afa3 + last_write_checksum: sha1:997e12885a2af2936a1178b95deaaee6e3efe1f0 + pristine_git_object: d86476b946a8dd85853c233b93a123eb81b0cfb7 + tests/mockserver/internal/sdk/models/components/platformskillversionslistresponse.go: + id: 35adfb5fbba2 + last_write_checksum: sha1:19ba3b0df3949f3771d8026290caeb44a9350e42 + pristine_git_object: e6eac47b00f8ce90e72c78ef293dea6e1f933782 + tests/mockserver/internal/sdk/models/components/platformtimerange.go: + id: cf2540151ce1 + last_write_checksum: sha1:3a0ec2ca473681b89ff97606f648fc15fcdae38e + pristine_git_object: b88a152d5940b3e49fb73807c476607374d9d01e + tests/mockserver/internal/sdk/models/components/platformtrigger.go: + id: 46daff53baeb + last_write_checksum: sha1:6c82eb0357951867b9fad9878a738c218ed31df4 + pristine_git_object: f4ff0336c0ad85f45bfa4f53bfe5c47e6241f7be + tests/mockserver/internal/sdk/models/components/platformtriggerauthoutput.go: + id: 71e6f1f9954d + last_write_checksum: sha1:4509100855356b44534c924fb9d1e89461311371 + pristine_git_object: b72ecabbfec66c0cee56269317cefd05716178cd + tests/mockserver/internal/sdk/models/components/platformtriggercreaterequest.go: + id: 141f31ac21f0 + last_write_checksum: sha1:6d43e92de90a43429ce5e7def4b9d46e42b74b40 + pristine_git_object: f0b4f7f1f96534d2d43ef31ae8e11aa44ecc37f4 + tests/mockserver/internal/sdk/models/components/platformtriggercreateresponse.go: + id: 1e05f6421894 + last_write_checksum: sha1:d9e287757cdbfcbce72440976a49fa5b6330e257 + pristine_git_object: 2bc5301472ac71d0bf015b020a072c19d511cbd2 + tests/mockserver/internal/sdk/models/components/platformtriggerdelivery.go: + id: dbc485abe9e1 + last_write_checksum: sha1:38fcc9df98884c844c2941ce93d2ee97158ad1ba + pristine_git_object: 07fb9833a35cbe88d27a7cae28ea31753a7ef6a9 + tests/mockserver/internal/sdk/models/components/platformtriggerdeliveryoutput.go: + id: 14b6c01c5556 + last_write_checksum: sha1:6e6e34fda2ed2be606b4d9e517a68c5ff9d27ad4 + pristine_git_object: eae6a26f4f3a957a0d218c03b6191bd1dc067dd4 + tests/mockserver/internal/sdk/models/components/platformtriggerevent.go: + id: 40ac7d97e87d + last_write_checksum: sha1:822fac0c20d77d4fc8421f5a5af4c7642298340d + pristine_git_object: 30f4d2fcf79274a8c8d20ec7d7882bd53c47ee37 + tests/mockserver/internal/sdk/models/components/platformtriggereventreason.go: + id: a9f89c6ff900 + last_write_checksum: sha1:d13aad890584ba5531a741afad4f368ecf2ad033 + pristine_git_object: 7f0bda2d068426631a0cd1964476166db7ac70c0 + tests/mockserver/internal/sdk/models/components/platformtriggereventsearchrequest.go: + id: 9cc3d3ae7054 + last_write_checksum: sha1:7634063252a61e46a0f2de39d39ae1865b44cb7d + pristine_git_object: dd4df12aa5aeb1ae9a73d527012942c548bc2f36 + tests/mockserver/internal/sdk/models/components/platformtriggereventsearchresponse.go: + id: 81da5b782e91 + last_write_checksum: sha1:e6537a85004ec418f7785951742ec970b6cca4d6 + pristine_git_object: 052cac3bdecffa85957c905e37d0c06258823eaf + tests/mockserver/internal/sdk/models/components/platformtriggereventtype.go: + id: a4c8db90bb12 + last_write_checksum: sha1:ad40d6d39507a292a6ebfecec4ee87e809bb07c4 + pristine_git_object: 01a90c1892683cf4df4a1010553fa59d05169154 + tests/mockserver/internal/sdk/models/components/platformtriggergetresponse.go: + id: d2394632e1bd + last_write_checksum: sha1:3d51d8dfdb10dc312c36ef9a0f6acd88495a02ea + pristine_git_object: bf48ffae47ed0c8257515f8c07ea7d8e85728021 + tests/mockserver/internal/sdk/models/components/platformtriggerlistresponse.go: + id: ec67e38158cb + last_write_checksum: sha1:b1535697540b7c3cb50af2e00e6880131efd08ee + pristine_git_object: ee21c82435f4435504b49ce34aed10780b9e3a5e + tests/mockserver/internal/sdk/models/components/platformtriggerpreset.go: + id: 022c4cab659c + last_write_checksum: sha1:1336162aca79ecfb73b240d465f02db245d4b7c2 + pristine_git_object: 8ec754d7659f3c4629dd340f36d2cabf98db81a5 + tests/mockserver/internal/sdk/models/components/platformtriggerpreseteventsearchrequest.go: + id: e50ada6912e4 + last_write_checksum: sha1:fbc9af64f34da12d9fe3988a2b0148737d59241c + pristine_git_object: e461aefd8d7cae92208bd528dc0c3255b54ea405 + tests/mockserver/internal/sdk/models/components/platformtriggerpresetgetresponse.go: + id: 3327e7fb3ac1 + last_write_checksum: sha1:68ae39f59612e960dba5926d8534bb0a0f4b84b3 + pristine_git_object: 75202b87350ce7eaff249ab4bc245c8d5c5fd6d1 + tests/mockserver/internal/sdk/models/components/platformtriggerpresetinput.go: + id: f9aae855e61f + last_write_checksum: sha1:4bc4a629ea10db2aa7fcdd1d36e3f59c07439024 + pristine_git_object: 674722cafba59e60e82956a9b48f327afd0e7ac7 + tests/mockserver/internal/sdk/models/components/platformtriggerpresetinputtype.go: + id: 3637710c2323 + last_write_checksum: sha1:ea5de994ba8c96e0049ce5009516bd3f26a8928c + pristine_git_object: b51f9eac287417af1cdc4e9be6aadcabaab9f04e + tests/mockserver/internal/sdk/models/components/platformtriggerpresetinputvalue.go: + id: 66d3fb5c0b53 + last_write_checksum: sha1:4b7fec202ef73a577cc60598fa4aea02077a9ccc + pristine_git_object: 53487dfacea86ac4241008990791040ae5159a51 + tests/mockserver/internal/sdk/models/components/platformtriggerpresetinputvaluelistresponse.go: + id: 77efafb42b6c + last_write_checksum: sha1:43a7950f2686a18cf952c90d557b1205574d1ac2 + pristine_git_object: bc923be00f133b16429463a31daecbc7942cab89 + tests/mockserver/internal/sdk/models/components/platformtriggerpresetlistresponse.go: + id: 82a42aecc0f2 + last_write_checksum: sha1:f02617594b8b63afca7ec2a0c693bf9245e7e4dc + pristine_git_object: 6e6cc206c13a6ff8d8fc89e12dbc05d06d0ce0d9 + tests/mockserver/internal/sdk/models/components/platformtriggerpresetsummary.go: + id: b63774bbc4d9 + last_write_checksum: sha1:86bc54973e616a741100d42ca2913459230b581d + pristine_git_object: 101983d34b786e1af0e01a7c227ae162f7f5a68d + tests/mockserver/internal/sdk/models/components/platformtriggerstatus.go: + id: 1d8e591a1116 + last_write_checksum: sha1:b321c6fbc2f38fd0dcfbfa189b4254ef599cc469 + pristine_git_object: ac192ac6722d95648a08ecc83eb83234e5e00f17 + tests/mockserver/internal/sdk/models/components/platformtriggerupdaterequest.go: + id: 37bb79e7c302 + last_write_checksum: sha1:6aca83308ad6f81a494a21390318e6662d3a38f6 + pristine_git_object: 872cf5559b57fdbddceba6694f976fff1216f1f1 + tests/mockserver/internal/sdk/models/components/platformtriggerwebhookevent.go: + id: 7701b82f4ba0 + last_write_checksum: sha1:5ab4f2b6deaa06e43199df33611f8eafce6b68e7 + pristine_git_object: 7b756465cefe4ceb1fb1ab9421f7ccd9edc68dd5 + tests/mockserver/internal/sdk/models/components/platformtriggerwithsecret.go: + id: 5b5f73675f76 + last_write_checksum: sha1:83a4692d9abc1ee07e343eabf32e5cce4c3c7ad9 + pristine_git_object: 0a610553debaa7ab04e12b3f81dae01bd59c721c + tests/mockserver/internal/sdk/models/components/platformwarning.go: + id: bf3a0578fb90 + last_write_checksum: sha1:4f58e985f8592a928bb3d605f1a8538a5e611d2a + pristine_git_object: c96ef7a9b39cb05eac61f11511b5066c860cb411 tests/mockserver/internal/sdk/models/components/possiblevalue.go: + id: bf71542de5f4 last_write_checksum: sha1:5c25db519b896499621e67c6245893d26afa30e4 + pristine_git_object: a2238c72e427496296d3dd4d409025ae961e78d3 tests/mockserver/internal/sdk/models/components/processalldocumentsrequest.go: + id: 5e67fd31aa40 last_write_checksum: sha1:ecbb989ae9b79a4f7f2bf1a0be611efc3be1afda + pristine_git_object: 3da693ea27916362771c0890106ef863ea1ebb6c tests/mockserver/internal/sdk/models/components/processallmembershipsrequest.go: + id: 818dd3357d39 last_write_checksum: sha1:6b293ca0f6edbf88ccc798c2cd3a9d416f082415 + pristine_git_object: baaa3e15efcd06ada5b7fd91519a3556f88b2a2b tests/mockserver/internal/sdk/models/components/processinghistoryevent.go: + id: 1b23187bf46e last_write_checksum: sha1:139d88be64782c4b81cd831a55062bf7c497492a + pristine_git_object: e808139c9bcca5cf9f2b9619b3caa87f850fc7a6 tests/mockserver/internal/sdk/models/components/prompttemplate.go: + id: e91829a92d90 last_write_checksum: sha1:0dda45b631b0179f17250c5db0cc96cc48390ac0 + pristine_git_object: ad65ceb65a0629a8dfb8327dda069c2244f27e5c tests/mockserver/internal/sdk/models/components/prompttemplateresult.go: + id: 68586eff3a1e last_write_checksum: sha1:24ea2871bc9e7dc1d7e186d1f030222f009e969d + pristine_git_object: 9ef3447d5242bd1324c14926c8c1ad1073d46e19 tests/mockserver/internal/sdk/models/components/propertydefinition.go: - last_write_checksum: sha1:c4abcee5c9f4127b3913aa3af278af0f2ef72bc2 + id: ac66a3926f16 + last_write_checksum: sha1:4102937b70876c9932fbfd7c7ace69d8455394c8 + pristine_git_object: e17d0096b71414f4f7d951587efdb080f47a34ac tests/mockserver/internal/sdk/models/components/propertygroup.go: + id: c8fa9b3a9f8e last_write_checksum: sha1:68058f9a81607adc088834a548fa26aa8e71a2b6 - tests/mockserver/internal/sdk/models/components/queryinsight.go: - last_write_checksum: sha1:df50afff895f3f827ca5885d1d4814eb5e4467a8 - tests/mockserver/internal/sdk/models/components/queryinsightsresponse.go: - last_write_checksum: sha1:8d3c4323826907204828795f60572549e3b05c08 + pristine_git_object: 173332a524a5a6150bbb6daaf5db984e764358d8 tests/mockserver/internal/sdk/models/components/querysuggestion.go: + id: 8eea13a856ec last_write_checksum: sha1:333e772c98b3b0c488a4b0dad9c477475778bd65 + pristine_git_object: c9318394e0a3eb760aa51c809b13432f27b1f6dc tests/mockserver/internal/sdk/models/components/querysuggestionlist.go: + id: 4696745f397f last_write_checksum: sha1:bc14d652a453fa1f6e85110e9797724755a9cee7 + pristine_git_object: 08eda91ad7dd33d90a53cf35b7c95c0756ced500 tests/mockserver/internal/sdk/models/components/quicklink.go: + id: c6758c22cadf last_write_checksum: sha1:7f32f9b08a77159cab69189869bfa06b36f451f4 + pristine_git_object: 7387d9099dee1062569987528e1dee9439f7b9c5 tests/mockserver/internal/sdk/models/components/reaction.go: + id: fe72a4e08de8 last_write_checksum: sha1:1fec03571ad220af83da82ff0ddc28226843db1e + pristine_git_object: cdc2dd7ccac4ae5d77b132c5de003d70c20d871c tests/mockserver/internal/sdk/models/components/readpermission.go: + id: 27b917f0c511 last_write_checksum: sha1:8fd237486ded8e2383da7fdf30474e35c85e3b24 + pristine_git_object: 769b69aba360937566ad8e355af915ecbab71157 tests/mockserver/internal/sdk/models/components/recommendationsrequest.go: + id: f69925e5e953 last_write_checksum: sha1:b1923c5a9a57149c46160a4c3bc2eb424e5aa363 + pristine_git_object: 546f09dba0846c39781c0382ed0ac50d3602efbc tests/mockserver/internal/sdk/models/components/recommendationsrequestoptions.go: + id: a3657d60f731 last_write_checksum: sha1:3ed19bb28d50abf892843d98716d3a7ae0869fa6 + pristine_git_object: 15fd1bbda1895a164ec7fa883ad8c19c0c893859 tests/mockserver/internal/sdk/models/components/referencerange.go: + id: 93711c7ae9c3 last_write_checksum: sha1:cd2d934fbc80cc4ff9e23f37e573b9a33e8a7d8d + pristine_git_object: 7fe5e73aacfc2e85bd336a2fa98c56754f5b9217 tests/mockserver/internal/sdk/models/components/relateddocuments.go: - last_write_checksum: sha1:e6cc3deef8a5485268dd31e12db59417528276ce + id: 52691dda03e8 + last_write_checksum: sha1:eea27dba609f1624659fcbd0d15777c55eb703e0 + pristine_git_object: b7981fb285550e9262c20cbb499b27699df20d29 tests/mockserver/internal/sdk/models/components/relatedobject.go: + id: 45c74af43a53 last_write_checksum: sha1:643744c2a87fa946d97b54f20a7ee7e140cb703c + pristine_git_object: 4dc10d77c908ad7d7391e46062a13b4d540e8d0d tests/mockserver/internal/sdk/models/components/relatedobjectedge.go: + id: d7fcbfc76081 last_write_checksum: sha1:83cc59bf75b808a281598e4a8698a5207986d100 + pristine_git_object: aa001154f60987e709d4cdf5e0bd8991a535f495 tests/mockserver/internal/sdk/models/components/relatedquestion.go: + id: 934c4d56a345 last_write_checksum: sha1:cfca1adace3e86522f5c7fcfe982c01ec7eedef6 + pristine_git_object: 868ca518a7e7240cc1c46a0cd1b30451ed19ffbb tests/mockserver/internal/sdk/models/components/reminder.go: + id: 106d77152103 last_write_checksum: sha1:867cb2925fa54516862371f24f451451f4613fc0 + pristine_git_object: 5ea8bfcb2bf9dfbc1e5f119e255540e7311d3d77 tests/mockserver/internal/sdk/models/components/reminderrequest.go: + id: df52737c1765 last_write_checksum: sha1:1b589913958b7fc4c9718ec37e202108e779a57f + pristine_git_object: d501a75442ed82cde890158778d0917ec3697781 tests/mockserver/internal/sdk/models/components/reportstatusresponse.go: + id: d63aa5c44265 last_write_checksum: sha1:0a688b4f49c4d9e40abeb0302ff22037ea0c7a23 + pristine_git_object: e2603ee4d96338345c86220aeb99d8f12d4459a8 tests/mockserver/internal/sdk/models/components/restrictionfilters.go: + id: 2f13938afdbd last_write_checksum: sha1:01a457eeaddebfa048d02b4960af533294186ee5 + pristine_git_object: 616624fcba7f40b0eab7f4473d35398500672e7a tests/mockserver/internal/sdk/models/components/resultsdescription.go: + id: 781720cc7572 last_write_checksum: sha1:222d4cd162257aa1fa51a4618c5fe5878f620e51 + pristine_git_object: 4b6266633c78dbe3a7de382a5cddb4079dd17fec tests/mockserver/internal/sdk/models/components/resultsresponse.go: - last_write_checksum: sha1:0f0c1e24f84e466afbe162723e77c992ea86234a + id: 9f71b2d148b9 + last_write_checksum: sha1:11f1bf56e8b41e71b3b458d39f4a18b9ad7ae0e3 + pristine_git_object: 6fd3dbe08a7f69712804e68845532af7169c7bd9 tests/mockserver/internal/sdk/models/components/resulttab.go: + id: f74dbc8c646f last_write_checksum: sha1:0c61e42fad9332219ca1e3642fb386c3cf9228ad + pristine_git_object: a8ccfb2ed064632fe0afed4c80bca8479936158c + tests/mockserver/internal/sdk/models/components/rotatedatasourcecredentialsrequest.go: + id: b13e96ea86bb + last_write_checksum: sha1:142794daff76893b8a56e02aa1a480e3257f4c3f + pristine_git_object: 3733a70792eb2440f4a315659792f352ab32b539 tests/mockserver/internal/sdk/models/components/rotatetokenresponse.go: + id: 3823d2eff751 last_write_checksum: sha1:669e30d5f7f5fb79cbae3f949a18347caaacfb2c + pristine_git_object: 7c751f2595d88c368db8393c08a108833554e37a tests/mockserver/internal/sdk/models/components/scopetype.go: + id: 0e31d2a43ced last_write_checksum: sha1:4c421c547071cbf1b0287e602fa55043a2183ff1 + pristine_git_object: b0f9c8a46029f8e1b9e025941186a1482767a5f5 tests/mockserver/internal/sdk/models/components/searchagentsrequest.go: + id: 8634f5e44a9a last_write_checksum: sha1:0dc1fc77eb97329652038c1ea807512599e97844 + pristine_git_object: 121e0c7b00d2a62d7fa3a3379fb92e807b1025fd tests/mockserver/internal/sdk/models/components/searchagentsresponse.go: + id: 906d6f33d1b2 last_write_checksum: sha1:f51f69ce784c7bb5bb3f5ba16af06fb2d57ede27 + pristine_git_object: 7c26e61471d861f4182a9213e93920d0214ae244 tests/mockserver/internal/sdk/models/components/searchproviderinfo.go: + id: e3f93a07e870 last_write_checksum: sha1:81c076f3cb625580354cebb26759f796157f034c + pristine_git_object: 2f42b9fbe95b26c9b1009cf7d77f28b5eb67e16b tests/mockserver/internal/sdk/models/components/searchrequest.go: + id: eb0ff8fe9877 last_write_checksum: sha1:fb876a08dac279d7755c1a455458ef4456d8e289 + pristine_git_object: 40507db50db5fbcb9059864be6ec40d0755c437a tests/mockserver/internal/sdk/models/components/searchrequestinputdetails.go: + id: e0cf19d53328 last_write_checksum: sha1:79a19cf32c26e938cfb20ca444f0375e6f270c40 + pristine_git_object: b35217f02d13149c5e15c32fabc50238df1904eb tests/mockserver/internal/sdk/models/components/searchrequestoptions.go: + id: 3bb8cb6c87fb last_write_checksum: sha1:17ee2976b192f2b65f9b431afb0e9056aae72278 + pristine_git_object: 0a74cf275e2b777b3716152cb44d6fe4bee82cd5 tests/mockserver/internal/sdk/models/components/searchresponse.go: - last_write_checksum: sha1:f5525fc2fce0c9527511393ea5f25dd9ef017535 + id: 5828ee669deb + last_write_checksum: sha1:eb63c5279cb78ba8d445ec077a50a898af7f3cc4 + pristine_git_object: a9cdbe0ec3b66e2941596870dc36d72e374ff49c tests/mockserver/internal/sdk/models/components/searchresponsemetadata.go: + id: 065ed51c3d81 last_write_checksum: sha1:5ba373bccf0e7b975614650485d334c3099aa38a + pristine_git_object: d8c9a4fb4f52e8d5cfecbce6d434714572916727 tests/mockserver/internal/sdk/models/components/searchresult.go: + id: 71ad9c528176 last_write_checksum: sha1:ba319a872b4d9a471f094e41bc5f9e4a065ed3ca + pristine_git_object: 7327f8fd25c64b287d8698c665c97b8f3bd84fde tests/mockserver/internal/sdk/models/components/searchresultprominenceenum.go: + id: 6ebcfacc7133 last_write_checksum: sha1:81270b9cc68f366ac10358642bea75aa1cd1bc62 + pristine_git_object: 789b4f2705f661b1a35cad4ed5573df584d3cfd7 tests/mockserver/internal/sdk/models/components/searchresultsnippet.go: - last_write_checksum: sha1:a97091130611ac2fcc8fcd06300d4f6d4f8bbaa4 + id: ee8a658aba84 + last_write_checksum: sha1:18cded48b53d0255192b20827ef35c4c4592de45 + pristine_git_object: b131c899e07f63919b3064918c7ad828f7ee9e5d tests/mockserver/internal/sdk/models/components/searchwarning.go: + id: 7b7f62c4019a last_write_checksum: sha1:66f8096972e691ecc07f13500d0dd65ec9a753ee + pristine_git_object: 131f65a7c0efcbe02e0becc771bbb7d188fdbcbe tests/mockserver/internal/sdk/models/components/sectiontype.go: + id: d0937c1ce7a9 last_write_checksum: sha1:df93de89435efeb2dc2adb0e18ec994348050181 + pristine_git_object: 395b5e465c6bf212b1e1af9721d86613ac964811 tests/mockserver/internal/sdk/models/components/security.go: + id: fa6cb32e2c62 last_write_checksum: sha1:87599ab7affbe8d9cc9650ee626776a499439a2e + pristine_git_object: bc7c195400fe896ff4df76ff641a639f8a4484b6 tests/mockserver/internal/sdk/models/components/seenfeedbackinfo.go: + id: 8f93bbcb4a73 last_write_checksum: sha1:0368976a1568c4e9db8888fd5769c906721ac604 + pristine_git_object: c1aa85e9b973cc24f396293eb1c08fb19d7313da tests/mockserver/internal/sdk/models/components/sensitivecontentoptions.go: - last_write_checksum: sha1:b08f415f9e57e04e0c214b57def2efb0a05559f0 + id: c3fae78853dd + last_write_checksum: sha1:3c60d59437ff36fa449f7ad804fe7803af15ca07 + pristine_git_object: dc7c424ede5d8ddf96b358ce40f2be96734e81ee tests/mockserver/internal/sdk/models/components/sensitiveexpression.go: + id: ae7015f11a98 last_write_checksum: sha1:b4fbc845bc2db4f1bc0cc4401b990d697491fbf0 + pristine_git_object: a38113a300fc0e2b6d9ea3911c808f8211cb40c6 tests/mockserver/internal/sdk/models/components/sensitiveinfotype.go: - last_write_checksum: sha1:c2df8ed552a054db82dff2fc7f45306979cb2f3a + id: b02d63c8519a + last_write_checksum: sha1:20f1d2089955876f297f6effc3667f6ae84c5108 + pristine_git_object: 207653771e5bb2ae5982853962b6318d8c83229f + tests/mockserver/internal/sdk/models/components/servertoolrequest.go: + id: 574fa6f36078 + last_write_checksum: sha1:6690ff38d976f82a1c585d4c9ab3cebfd1ad2828 + pristine_git_object: 3bf8c6b39892210207a22b82d84673f88b5659c1 + tests/mockserver/internal/sdk/models/components/servertoolresponse.go: + id: 621e6633f5d6 + last_write_checksum: sha1:4b508f1f965688a2066e0c4f61c03a9d736516e6 + pristine_git_object: f4b84c3b0ec23c99703c36f92065a4071d389743 tests/mockserver/internal/sdk/models/components/sessioninfo.go: + id: 23183e4b8fb8 last_write_checksum: sha1:d0a7c3cb679745701743e6ec68c15cf72b3e0a2f + pristine_git_object: ef3481af18364657e6f775deb42f836dd4c53c0b tests/mockserver/internal/sdk/models/components/share.go: + id: f20ebadb280a last_write_checksum: sha1:08b6c55410e0d0960f69ee24294c009e4af90d9f + pristine_git_object: 82202845aeee21ff811ee18ca6a0690ec5428b5f tests/mockserver/internal/sdk/models/components/sharingoptions.go: - last_write_checksum: sha1:72b6d9fcfd36d322094c2157172978fcd84b9b88 + id: bcf886b45d18 + last_write_checksum: sha1:4b1d902a86f9d461eae3527d9c7edb967ef13ff2 + pristine_git_object: 3b36812b9e1f8ebf1f391e1e13773cbe842016e9 tests/mockserver/internal/sdk/models/components/shortcut.go: - last_write_checksum: sha1:89fc93286c3a87e26d3c93179ff289d25c4abb5a + id: c081dd6922ba + last_write_checksum: sha1:3788c5868967b2d8617073dd4582fbd3ffd973b2 + pristine_git_object: 7004b3e6f7cca95b753003e1a22d30d574a842b6 tests/mockserver/internal/sdk/models/components/shortcuterror.go: + id: 933e10c284f0 last_write_checksum: sha1:c2c12b0e5d2a4488c59ca8f9ba95fa50f031b8fb - tests/mockserver/internal/sdk/models/components/shortcutinsight.go: - last_write_checksum: sha1:077f1ca0915fe19dafe5f690de46447dea3dc4f5 - tests/mockserver/internal/sdk/models/components/shortcutinsightsresponse.go: - last_write_checksum: sha1:4f85fbc58033e27a9b80ba97063852905286f23a + pristine_git_object: 5ecd3e9e85897657077af9f1cba9e5b022bbc0b0 tests/mockserver/internal/sdk/models/components/shortcutmutableproperties.go: + id: c418cbbe0c0d last_write_checksum: sha1:b68137186eb03f324e4a7d83bf44f01ef9499712 + pristine_git_object: 00cb907cb5b8c16329c7285520996e45c20dadeb tests/mockserver/internal/sdk/models/components/shortcutspaginationmetadata.go: + id: e60ddd715c16 last_write_checksum: sha1:207b41cf581affaa2f6a184691154306765a0f01 + pristine_git_object: 6732831e9a0412cc3812abebbf7f2da148b2b68e tests/mockserver/internal/sdk/models/components/sidebysideimplementation.go: + id: 45b12ef8a8c7 last_write_checksum: sha1:955f1346a512097e839380835b7cf482c79b8e8c + pristine_git_object: f1cf399efacff9407efc6732c906142610025442 tests/mockserver/internal/sdk/models/components/socialnetwork.go: + id: d7411f3f4c0c last_write_checksum: sha1:7b5460e9689446a60ddd8660162e29ea58606be1 + pristine_git_object: acf04b4a208261d8df9ac31b280c01f8c27db58e tests/mockserver/internal/sdk/models/components/socialnetworkdefinition.go: + id: 00d844819024 last_write_checksum: sha1:df28ff5e6d99611a7b8a0edfdf6154325760ca85 + pristine_git_object: 668935e3421de5b9f55c082f5357052463b5afc2 tests/mockserver/internal/sdk/models/components/sortoptions.go: + id: 3113dec09245 last_write_checksum: sha1:587b0c63c9aeb4f1669bcd36d1a5a4fe6c8be3eb + pristine_git_object: 0f3949f13eaa0feab6c82f5429622900b2fa993d tests/mockserver/internal/sdk/models/components/structuredlink.go: + id: 66fbbe32ee19 last_write_checksum: sha1:c1b1a1a6db51fed14a0c0c604c36515ea16b7747 + pristine_git_object: 00f0362099a66acfb916e5c1ada28bbd8c9a7a60 tests/mockserver/internal/sdk/models/components/structuredlocation.go: + id: 0e9d225cea1d last_write_checksum: sha1:952c61d565a519770c1e1bd456dbe06a43527a1d + pristine_git_object: d10688529d742736c70cef3082ac9a4ebaf04f9d tests/mockserver/internal/sdk/models/components/structuredresult.go: + id: 90ec3be3bc39 last_write_checksum: sha1:09964d21fd594ac675fcc130aae8e7ea8a59a15c + pristine_git_object: 99a8991a4521f6d18edf718d599c779bb951d75b tests/mockserver/internal/sdk/models/components/structuredtext.go: + id: 86b16fd56fe4 last_write_checksum: sha1:355352f1325e5756bc262be00952f3a75b46de11 + pristine_git_object: 3c09f214c712b35a0dd716998e44a185a278a827 tests/mockserver/internal/sdk/models/components/structuredtextitem.go: + id: 3dca73ff277f last_write_checksum: sha1:1d31ba0ba1d9a20da78f3f407b667ecdadc08410 + pristine_git_object: 8fea354a041919b8a9edbcea2ad8b3c0b092cc5b tests/mockserver/internal/sdk/models/components/structuredtextmutableproperties.go: + id: 8fa49e2be615 last_write_checksum: sha1:7e3d70101d8e7e704b8b47a8fe47c7d15ff75641 + pristine_git_object: ab29bfc25c2eb615a2962531f2ef95760cbb352c + tests/mockserver/internal/sdk/models/components/successresponse.go: + id: b460fd4e1f9f + last_write_checksum: sha1:1a7b439d7e030fc7d44d33feced3358da73977e9 + pristine_git_object: f1aba12eb2698a626fd1ed8b18d0501187873387 tests/mockserver/internal/sdk/models/components/summarizerequest.go: + id: cc37dad3b100 last_write_checksum: sha1:a70506060ae64e1ba99958ac03e60a7349ea8b7a + pristine_git_object: 4fb506583734b993aef87205fbfbcc4a9b044456 tests/mockserver/internal/sdk/models/components/summarizeresponse.go: + id: 41518d1a5883 last_write_checksum: sha1:645e516e007cc50be2e6e5dd81b301d0a4298363 + pristine_git_object: b196ab2d0cd1cd96e33d85b2412c823d19349ac2 tests/mockserver/internal/sdk/models/components/summary.go: + id: 53ea3054091b last_write_checksum: sha1:92ff1330ff0a98019953ca073adf72f796f03a0d + pristine_git_object: 1e715524d5fe06b731b43ec7feb66591acdf8db3 tests/mockserver/internal/sdk/models/components/team.go: + id: e630ccd84ae7 last_write_checksum: sha1:4ba7528f4ef142ad874ab012825d2b3318e43b03 + pristine_git_object: 85e653f2eff7bd16aadf66b7e5df7afc3e2c6f94 tests/mockserver/internal/sdk/models/components/teamemail.go: + id: 18f3f86ed7cf last_write_checksum: sha1:8b4ee57362b382e2711b18729f92ebcba3315851 + pristine_git_object: cafd347117f694001a728542aec9c0c248617310 tests/mockserver/internal/sdk/models/components/teaminfodefinition.go: + id: d726f522ce01 last_write_checksum: sha1:275470eb886295589deee6d90a2309ff6adaf71d + pristine_git_object: 9dea6e19ecfbb558103ad0346fb8277e4af1a891 tests/mockserver/internal/sdk/models/components/teammember.go: + id: 27c8ff56b2a2 last_write_checksum: sha1:fc3eb4d5bbf18c83641603838e70b154429f2f51 + pristine_git_object: 121d5bb3f4fdfc8f3ce51533b500479ffe9667d3 tests/mockserver/internal/sdk/models/components/textrange.go: + id: 4aac78e73924 last_write_checksum: sha1:59ca0835f734d4bf268d38fb1ab0541c69e01607 + pristine_git_object: ebd99e4a1dd2fae017e6e5d7565884b2b2b1dba2 tests/mockserver/internal/sdk/models/components/thumbnail.go: + id: 03d459002df2 last_write_checksum: sha1:aa262ee8c5b91970d59d22e8b142a302320a71b7 + pristine_git_object: 11629380217508ad7879fa02046e3aa6e6a8c6a6 tests/mockserver/internal/sdk/models/components/timeinterval.go: + id: 6c37b5ab3a56 last_write_checksum: sha1:81705bb1ecaf99d821e06bab433ae8acb7f0a06f + pristine_git_object: cad1e0d2cc49c5eef7f0106722df9c5e1943873c tests/mockserver/internal/sdk/models/components/timepoint.go: - last_write_checksum: sha1:67f919859cc4a59b8fad0788eb53c825d84f3dd2 + id: 68564f8f50b0 + last_write_checksum: sha1:f8729435a86cb935d5af211ecbd5cf1f2ef9e28e + pristine_git_object: 3fc0938df6a4f9bb1488860673a4e01b8efa3371 tests/mockserver/internal/sdk/models/components/timerange.go: + id: 492d7488222b last_write_checksum: sha1:128b8dd617902f688dd9dec7a0c09ad9c2572415 + pristine_git_object: 2671083bf18f1a56d96b174d47a1ac6243b87ae5 tests/mockserver/internal/sdk/models/components/timerangefilter.go: + id: 915351005b05 last_write_checksum: sha1:8de0e503866460658beed077250e82e99327cea1 + pristine_git_object: df3ce29abaf3b5d9e31f36c3ff5a84c38180f947 tests/mockserver/internal/sdk/models/components/tool.go: + id: 0c0984074ced last_write_checksum: sha1:95ee27c43bc6e01b322d32330b2645ea53bb4f08 + pristine_git_object: ed0eadfe146a86176e07d217fac3e032b7a65d12 + tests/mockserver/internal/sdk/models/components/toolannotations.go: + id: 1d68a6a1d0ed + last_write_checksum: sha1:2578873399ad76af4205a145b31a0dd8932ab613 + pristine_git_object: 68923329cf1d8a986f5f6ca49c8fc3984ba91f33 + tests/mockserver/internal/sdk/models/components/tooldefinition.go: + id: 4b277c3fac72 + last_write_checksum: sha1:b74fcc52d4fa886afc560d14d20bd69e6137d5b5 + pristine_git_object: 918fecce9c070e7ed2579f51fd4f4504b15a193f + tests/mockserver/internal/sdk/models/components/tooldefinitionsresponse.go: + id: fc79ddcfadb2 + last_write_checksum: sha1:3ca9d0dbc6ab565bf4462b9a255c828006164c43 + pristine_git_object: ab96ce3277c8b3ad51451e72c25c10ad2d786444 tests/mockserver/internal/sdk/models/components/toolinfo.go: + id: e2175889a2bd last_write_checksum: sha1:244266dd3f84d49224725ef35603df9fc80d14ef + pristine_git_object: dea3298b26e324de06316da296f7a4d899dd475d tests/mockserver/internal/sdk/models/components/toolmetadata.go: - last_write_checksum: sha1:4487cdc2b5b1dc1a2fa1a3ca7d46188bfc0e211c + id: 2777b3aa0636 + last_write_checksum: sha1:97ddaa6e15c52ec37c4ea46e933f7ec5d4ca7bca + pristine_git_object: 061df30afb35d8282910bd66ddd76838607ea7ab tests/mockserver/internal/sdk/models/components/toolparameter.go: + id: d02a0b83b357 last_write_checksum: sha1:66a7a1e6154a3c42741d575291f358116f017c87 + pristine_git_object: fd0c3c73d6541d05f749b3e9199042f309d9fd33 tests/mockserver/internal/sdk/models/components/toolscallparameter.go: + id: 4bf0d893d0eb last_write_checksum: sha1:e405c512fef7a3702536cbecc97023daf43159ec + pristine_git_object: ddfbe5f9c74cff93c64431c35b3368f93e6903c3 tests/mockserver/internal/sdk/models/components/toolscallrequest.go: + id: a216e2bb473d last_write_checksum: sha1:8d07bfa85a5065a3b948ce2df571e0e2b7079548 + pristine_git_object: 4678acfcbf69be7863a832961ef4203867e70d3f tests/mockserver/internal/sdk/models/components/toolscallresponse.go: + id: ce1add8ce3b1 last_write_checksum: sha1:526fa5ff943d8fe623fbfbfb4e33bbfe9cf5e3ce + pristine_git_object: 03e9af73e5d69f93976218dea9bef90eaef0f02d + tests/mockserver/internal/sdk/models/components/toolserverauthstatus.go: + id: 7688e01624a9 + last_write_checksum: sha1:82d5d759e6d7dd4422526fcd410b8cc4a717dfe6 + pristine_git_object: d6715ec49771c2715fba9d007d9a7094751407fb + tests/mockserver/internal/sdk/models/components/toolserverauthstatusresponse.go: + id: 740fdab1d2ad + last_write_checksum: sha1:199fcd464b82a25094252f4ab32609636d00630d + pristine_git_object: 4328a09e55db5a7edbf5421457c6b59cfe50f4fb tests/mockserver/internal/sdk/models/components/toolsets.go: + id: 75b43b793fdd last_write_checksum: sha1:d92cd83151d1a51109858e7ebbfae0b95c8f1e37 + pristine_git_object: 755f3654f83595cc9a2cc4db98b5fe4c09936247 tests/mockserver/internal/sdk/models/components/toolslistresponse.go: + id: a80dcec8c375 last_write_checksum: sha1:12c38931f0f2810e038e30a743845a97b876d03c + pristine_git_object: 7a6a89805e8b840aa2fae616ef6e49dc3d0e0851 tests/mockserver/internal/sdk/models/components/ugctype.go: - last_write_checksum: sha1:e0a05c163ffdcbacd03574a0adcc51ff1997dd59 + id: 7b77277c1355 + last_write_checksum: sha1:c7e27d5ff56bd7ff24625189a85d766eca701e7f + pristine_git_object: bc085b15186b2dcd11f9f73d3dcbb7c090e2987d + tests/mockserver/internal/sdk/models/components/unauthorizeddatasourceinstance.go: + id: bc69d4c4bf6d + last_write_checksum: sha1:39fb84396b33bc645fb5e6ebcea36ab88b5db179 + pristine_git_object: 78d5650a464ded19cb8221db6ff1090c04f8f6ca tests/mockserver/internal/sdk/models/components/unpin.go: + id: 4465740d0bfe last_write_checksum: sha1:6bd1f6c9f451492810949a589b7cf0e07ede176d + pristine_git_object: c7d3431977763c17c326cd26951712fd92894bad tests/mockserver/internal/sdk/models/components/updateannouncementrequest.go: + id: 97b13da95b8f last_write_checksum: sha1:8b10184d480e07a4631098d08ef3c16bfbdfcc33 + pristine_git_object: 9a66e2cbf3742cbc4a68ed308f8671e9090c10e4 + tests/mockserver/internal/sdk/models/components/updatedatasourceconfigurationrequest.go: + id: 6f0c20164b49 + last_write_checksum: sha1:5710dfb763b96275a55fe0e6b16269cded3f9b9d + pristine_git_object: 07beb967689878b37dbefda0badd8f3b8b895df8 tests/mockserver/internal/sdk/models/components/updatedlpconfigrequest.go: + id: 65adad0b9a06 last_write_checksum: sha1:0612a19ee35705f71346a5d3b6ec4eaec4d9f029 + pristine_git_object: 676fbf0cab6c60d25b94dd60a79174735c289588 tests/mockserver/internal/sdk/models/components/updatedlpconfigresponse.go: + id: 6d85daa19bfa last_write_checksum: sha1:bfa625695134084b049ed67d2fe1257bef5420ed + pristine_git_object: 7f2dceec5bcca381a0a517d82baedcc7047a5ee5 tests/mockserver/internal/sdk/models/components/updatedlpreportrequest.go: + id: 8bceeb9d9267 last_write_checksum: sha1:37d54bad15f360ff3ca8a150a0ea3616420cf497 + pristine_git_object: 7b8e524e010cf879b3956a712ed21b040a8f2aca tests/mockserver/internal/sdk/models/components/updatedlpreportresponse.go: + id: a1efb14c3714 last_write_checksum: sha1:f2c27beb7eac6cf9549c29fc16d9f121c06345ff + pristine_git_object: beff94eb9a15814fcc518363091777d529427135 tests/mockserver/internal/sdk/models/components/updatedocumentvisibilityoverridesrequest.go: + id: d28d6490aa5b last_write_checksum: sha1:fa29de482d2b46d46ade8134932799cd678b20ec + pristine_git_object: e26ea504690cbf70b004aeca7e6951733a9aa963 tests/mockserver/internal/sdk/models/components/updatedocumentvisibilityoverridesresponse.go: + id: 4519e62fb216 last_write_checksum: sha1:45d635d096c8a8bf259172dc213fd7002662d1f9 + pristine_git_object: 638a1b975044806e077843015cc9d67e3bdaf430 tests/mockserver/internal/sdk/models/components/updatepermissionsrequest.go: + id: 181b5737964e last_write_checksum: sha1:43f31527bba5c28cdcd92182f67d8cd9347d33a0 + pristine_git_object: a2455c34bcee77a41ce781f5d91e2da7a3978341 tests/mockserver/internal/sdk/models/components/updateshortcutrequest.go: + id: df13c5f6fa66 last_write_checksum: sha1:042494404547b469509b7c2b1104bffd7d8da203 + pristine_git_object: e9e8dd98e2d6ce8fe61eb0bb3848def38d3c57c8 tests/mockserver/internal/sdk/models/components/updateshortcutresponse.go: + id: a8016234d954 last_write_checksum: sha1:c7ad561984d98ac8fe21a121a5b1131c0d2d977c + pristine_git_object: f4ab9bee73eaaf850f2962e7ac825315ddb396df tests/mockserver/internal/sdk/models/components/updatetype.go: + id: 4b5f8cc7ba7c last_write_checksum: sha1:e1ab594be688dd3fedb265c39338efd490f59f6f + pristine_git_object: 1d45f58700ba9b2af76c916b3a93ca9eeaaa1898 tests/mockserver/internal/sdk/models/components/uploadchatfilesrequest.go: - last_write_checksum: sha1:00e0f9e75e7158fcbab4881b4ce1151f0d889919 + id: 548e133a2571 + last_write_checksum: sha1:a47f4908dbcf31f0fde78f9724d176dfe4011ae2 + pristine_git_object: 5eebdcd8ee5dd9fb04fbe5e19fbad06048b7662e tests/mockserver/internal/sdk/models/components/uploadchatfilesresponse.go: + id: 73997cc40782 last_write_checksum: sha1:7879f60132d94f5788e6a855b4487ef69f491e86 + pristine_git_object: a10030cf565b9674366ea0b5a6287e7fa91c3cc9 tests/mockserver/internal/sdk/models/components/uploadshortcutsrequest.go: + id: 4be5a6d6806d last_write_checksum: sha1:e088e707939512ac98f0969de4c57e340dc45777 + pristine_git_object: 4549bec3eb7476246900d248d9c969d91fd73192 tests/mockserver/internal/sdk/models/components/uploadstatusenum.go: + id: 2387e771c725 last_write_checksum: sha1:756732c9fa8a7ecb858b1e904cf01e263c1a4bc9 + pristine_git_object: 90546c9d992bbf87e28ee8bd225719ca2c901377 tests/mockserver/internal/sdk/models/components/user.go: + id: cd9bf653c7cd last_write_checksum: sha1:9dc99e4dcfd7749102ea771b4d39517f19f40bb7 + pristine_git_object: c9309929dc319b58d3e06cd3ffbc7282be42b884 tests/mockserver/internal/sdk/models/components/useractivity.go: + id: 63a73683766a last_write_checksum: sha1:71a0cd2120cf0f1d014d16003e35a71ace54b9c5 + pristine_git_object: 686d11762b9fdb7644f72444352782af14c8f5e0 tests/mockserver/internal/sdk/models/components/useractivityinsight.go: + id: dd9890941594 last_write_checksum: sha1:e59f8c217005ea01e8a8d4271f5ab6502185cf74 + pristine_git_object: ef7cc8792f183d08ccf08b8bb00b8eaf87c40398 tests/mockserver/internal/sdk/models/components/usergeneratedcontentid.go: + id: ae284ccc354d last_write_checksum: sha1:2f2c56c39abc65c6ff52326baeca86444f64cae2 - tests/mockserver/internal/sdk/models/components/userinsightsresponse.go: - last_write_checksum: sha1:e5ccbbe41c498ccb57f50bcaaba90cf228f82dd1 + pristine_git_object: 9fc1da086cd00e2db7ebc847042a77f03e6a5fa3 tests/mockserver/internal/sdk/models/components/userreferencedefinition.go: + id: c56996250efd last_write_checksum: sha1:149db1930e323d413f07a581e381cc61e1dd1ff2 + pristine_git_object: 29153dadd636db1dbe5e9945e41778529a9c7749 tests/mockserver/internal/sdk/models/components/userrole.go: + id: 849f6755a65e last_write_checksum: sha1:c06437b641b29e943ed6fa230589682890b7c6f8 + pristine_git_object: 7697e0b0dcf4c3acdb15e2d46b68c1df28defe8f tests/mockserver/internal/sdk/models/components/userrolespecification.go: + id: 15d678a439c9 last_write_checksum: sha1:95b432bee3a41397fba1148743099c9c6c1806b7 + pristine_git_object: 6e478462febc7db9c0b0557b766d715e50ed1705 tests/mockserver/internal/sdk/models/components/userstatusresponse.go: + id: ac403ed26c68 last_write_checksum: sha1:30fb2152829214a851333d127946bcfe9794336d + pristine_git_object: 7457001c43802466d88418c59419506b98ab67b7 tests/mockserver/internal/sdk/models/components/userviewinfo.go: + id: 7168edb7cb3e last_write_checksum: sha1:6efd1ccd0596cad2a52c836713d2078788ee7c97 + pristine_git_object: e256289a0d1f95c26a5a1c635bcc64a16da3b3b7 tests/mockserver/internal/sdk/models/components/verification.go: + id: 2ba8bca07453 last_write_checksum: sha1:6454d7a40baacc9b0695e91e7b019e9fa9fca832 + pristine_git_object: e5d1b407296643dbd45cb75c25a8b382d03f67c1 tests/mockserver/internal/sdk/models/components/verificationfeed.go: + id: f06a54525d14 last_write_checksum: sha1:75a4b4b8d5ac529d57e903f07319f058e9a90104 + pristine_git_object: 74a08b655fe20f22d9bacd8cfdd152f5a45cc85d tests/mockserver/internal/sdk/models/components/verificationmetadata.go: + id: a8d01eb59acd last_write_checksum: sha1:367dcd729051cf898c32b6602c4ce0c1b5ee9336 + pristine_git_object: 1d77b47c327b217ab75f54d0067607692a138bbd tests/mockserver/internal/sdk/models/components/verifyrequest.go: + id: 0db56cb0f0c8 last_write_checksum: sha1:b21b8e5f5f48355b6b3afd4be9229b08e78123d9 + pristine_git_object: 18059e0b87042c6a2796c4986159826588a3c7ce tests/mockserver/internal/sdk/models/components/viewerinfo.go: - last_write_checksum: sha1:dde2be514fc0a6bff7d7dc27ad154e5edfdb35ac + id: 35ffe4bbefe0 + last_write_checksum: sha1:f810379c0be8f940bcfdc6bd34fb5548aea7611d + pristine_git_object: f893b058a14ea9c1b4bb238ada3ed9d1cefac5f1 tests/mockserver/internal/sdk/models/components/workflow.go: - last_write_checksum: sha1:22bec7e5d678873d1efc40d537a5beee7c7e4205 + id: 229cbc0e7f6f + last_write_checksum: sha1:d341832b97426683942df2564e76029d6f53db8d + pristine_git_object: 47aa9d245a4cc99101e6323f93e53ca934f820c1 tests/mockserver/internal/sdk/models/components/workflowfeedbackinfo.go: + id: 3350baa380bd last_write_checksum: sha1:6723c2b80df391bab5e91b8ac23f9ca4938665f7 + pristine_git_object: e13579aca5b29a1fb515bc30d0f9eb886326df98 tests/mockserver/internal/sdk/models/components/workflowresult.go: + id: ba8eda81dcec last_write_checksum: sha1:0579e0100303b04427d820fb8a671cbac520950b + pristine_git_object: 6352973581225f68e2fbdd12a78b95857fa44edb tests/mockserver/internal/sdk/models/components/writeactionparameter.go: + id: d04d4b2bf639 last_write_checksum: sha1:b53c3217bbb92c123681b705dcddde49a8f79bb7 + pristine_git_object: de5e3bb38dd815bb8c363625ade4ae2ada0fa21b tests/mockserver/internal/sdk/models/components/writepermission.go: + id: 5380d7650d5b last_write_checksum: sha1:41ba3a8f6d2bd29dcb8e5b5005a30363e55673f7 + pristine_git_object: 66f1973b2538f8adef448c3d4a9f2eceef136c8a tests/mockserver/internal/sdk/models/operations/activity.go: + id: bbf0076e613f last_write_checksum: sha1:5957ce406e3a70449e7168b90a96ab29661834ed + pristine_git_object: fbeadfb6a9cce0b561c98531e8f40943cb519d53 tests/mockserver/internal/sdk/models/operations/addcollectionitems.go: - last_write_checksum: sha1:5f735957943d7e79366d6353d6c48fc273e6849a + id: 8810ea12a4e8 + last_write_checksum: sha1:6b24917028ee62ef0a79e353e689d11d1d5fd7f0 + pristine_git_object: 5402c0c301c66145e40753e919025f0ce1925816 tests/mockserver/internal/sdk/models/operations/addverificationreminder.go: - last_write_checksum: sha1:cbef6f30affe579220a476c72c1397d6884cf54b + id: 50456d5e8281 + last_write_checksum: sha1:cd6a0cbf098c64d2873723c6db34d4d104aafee4 + pristine_git_object: 5ac1bc76a1c2b2e08894a447b12c357fdae7215d tests/mockserver/internal/sdk/models/operations/adminsearch.go: - last_write_checksum: sha1:e2b90fa98367a43a19d1ade415205864c3f2bd54 + id: 2798a847b072 + last_write_checksum: sha1:8349967c39c2200f8b798379f9d601234dd0ea08 + pristine_git_object: d3bcae611c12160cc42a6eaca51e379415c81741 + tests/mockserver/internal/sdk/models/operations/authorizeactionpack.go: + id: a0a71987d741 + last_write_checksum: sha1:c78c40c14e10717246e43461e2168240ccbb6a52 + pristine_git_object: 9c7fd68f3990aff22648a954f8883593d19f446e + tests/mockserver/internal/sdk/models/operations/authorizetoolserver.go: + id: 6bacf66a9801 + last_write_checksum: sha1:0657ac18a74bc4d75e8cbfe09ee26748e9a5cbad + pristine_git_object: df8f15054a3f283399947b45cc04495a174d6823 tests/mockserver/internal/sdk/models/operations/autocomplete.go: - last_write_checksum: sha1:649c6bfe21648ef99fadebb2420f752d703037d0 + id: 15fbad3e639d + last_write_checksum: sha1:242f4ac0044ef328043fc3a5d0effdeccb7f291f + pristine_git_object: e056f2449485d454ff68beac9196be500b9e9f68 tests/mockserver/internal/sdk/models/operations/chat.go: - last_write_checksum: sha1:dcde2580dd70d8830c68159f2137f98be67033f6 + id: 3b631354e272 + last_write_checksum: sha1:f2f55f4fecbef27cf1e00a589d3cea6d95982523 + pristine_git_object: 571a9b9d89dd7bcef39e99d713c854abffc24657 tests/mockserver/internal/sdk/models/operations/chatstream.go: + id: 2d65fe2a6633 last_write_checksum: sha1:b299a7da20b4ecf28e85b669de479778ed917ef1 + pristine_git_object: b97e7a447c60c32fab90accb4e2ef611a7df82a9 + tests/mockserver/internal/sdk/models/operations/checkdatasourceauth.go: + id: 89e5236173f5 + last_write_checksum: sha1:4ea8a844fedb81791dbff6fd5b45031943c118ed + pristine_git_object: 55046755b604159689bf327aa7174a0e080a970e + tests/mockserver/internal/sdk/models/operations/createagent.go: + id: 4338e91202b4 + last_write_checksum: sha1:80daff65223d9d23afb599cb4af805f35c29919b + pristine_git_object: 255e835e82fba8bf4023a2f99c5c2d1af40dd2cf tests/mockserver/internal/sdk/models/operations/createandstreamrun.go: + id: e9a974b86a39 last_write_checksum: sha1:ff0bc51a66cdb65f5d36415c82e92377fd0d2cff + pristine_git_object: 0dbe446c160fa31b5b7339b2d937f9928b05a596 tests/mockserver/internal/sdk/models/operations/createandwaitrun.go: + id: 576c4f2f5bf8 last_write_checksum: sha1:8d070245a42135fc34df714fce8d7d6df72edbd5 + pristine_git_object: 7286ef6415ee635de6071b5385a55431b5e92b55 tests/mockserver/internal/sdk/models/operations/createannouncement.go: - last_write_checksum: sha1:3530ce01b1389b908fd7c6bfe04ffffa73b1ab1d + id: 62efdfaba4d6 + last_write_checksum: sha1:a035aac91237a6d6285af28fb8d68545589655b9 + pristine_git_object: 420e51a0e38be6d394e8a75add07c6ceac26ad2c tests/mockserver/internal/sdk/models/operations/createanswer.go: - last_write_checksum: sha1:4461cb52022fe25f506bcabc62528b91e2c2d094 + id: 787e92e85d6b + last_write_checksum: sha1:7bac56604ac9dbbdd2c759c81acf67e873e4bd56 + pristine_git_object: 6ae4843d4f785577422409c79b499fc99e6fe071 tests/mockserver/internal/sdk/models/operations/createauthtoken.go: + id: 689a60baeefe last_write_checksum: sha1:38490a95b3433ee0a6ef325641981976e847c1af + pristine_git_object: be32a0f3caa3ccd70544064a3e45e561e3b6af42 tests/mockserver/internal/sdk/models/operations/createcollection.go: - last_write_checksum: sha1:42466e9f0cf3ab70bb8414e523dd644c5f503256 + id: 325dfac7b050 + last_write_checksum: sha1:e0056a37231832f11558b9fe7d3b658bcfb900b9 + pristine_git_object: 3b62bee2d266f74bb6a8382fc647fba6582ac613 tests/mockserver/internal/sdk/models/operations/createfindingsexport.go: + id: 3cf504b92665 last_write_checksum: sha1:825e1e9c17e00b8f29056902188e711dbe285d48 + pristine_git_object: cffb09fcd4a1703e3ebee038c886c05f79932b3f tests/mockserver/internal/sdk/models/operations/createpolicy.go: + id: a233bde7bbab last_write_checksum: sha1:e3cfcfd8f254f6085a744e3585e29ad11fc4a0b3 + pristine_git_object: d0c5b8e1ca8c15aa0786689cc06a89c9f6b02e14 tests/mockserver/internal/sdk/models/operations/createreport.go: + id: 2eb5ee7f6bd3 last_write_checksum: sha1:b9c82a7632c995986f191d03c466420a345d0d42 + pristine_git_object: 7a9d07abe8598203d256e73a46a8b3d9b9b072a1 tests/mockserver/internal/sdk/models/operations/createshortcut.go: - last_write_checksum: sha1:5dc130b4ba82965511de0ae7e86dd17ef7d967d5 + id: 2fe1a5065c46 + last_write_checksum: sha1:98ff02e8657bc6dcc49ef54c81fd322094b60d29 + pristine_git_object: 4dead6af49c03b4b02deeeb12e5a512ac6729ef5 tests/mockserver/internal/sdk/models/operations/deleteallchats.go: - last_write_checksum: sha1:7ea7cf3376fe341579815d112b6499f080d04fc1 + id: 20c90e0ef97a + last_write_checksum: sha1:a3e27dba3ff434ac40651d103f2585b541a3a061 + pristine_git_object: 9a61eac013fa7715cf6ef9b4198c9cddecf9ba97 tests/mockserver/internal/sdk/models/operations/deleteannouncement.go: - last_write_checksum: sha1:92f9d7be4c575d757f38e41836426e30e88158c0 + id: 86b9b267fe32 + last_write_checksum: sha1:2a26722569463faa2b52c1642f1f5915ac0dae88 + pristine_git_object: 6df70f30d193cafb0d03097cfee76b461e4981b0 tests/mockserver/internal/sdk/models/operations/deleteanswer.go: - last_write_checksum: sha1:54b14cb71f8e46690b84ae7fe5d1632555731be5 + id: 222fcb1c8af5 + last_write_checksum: sha1:345a8fd35229943057730308e473f44f134d1cd3 + pristine_git_object: c30ae2bbeaae180e2bbb0f8919f6d2bfe544743e tests/mockserver/internal/sdk/models/operations/deletechatfiles.go: - last_write_checksum: sha1:e7f7be6fe84f26aef1ca139d86a1e22d6f8af4c8 + id: 7df4e9fe9c42 + last_write_checksum: sha1:506173bfe099edeb1c4f0954762015bafca2dc18 + pristine_git_object: 132474f44a9c25bd795f2780c797b091f2144a74 tests/mockserver/internal/sdk/models/operations/deletechats.go: - last_write_checksum: sha1:a402bfb8ec5e0914fb0695bd0bb1ecd3f5df2cc0 + id: c746a9d73e64 + last_write_checksum: sha1:9c694319cc3e3b220d9fbabbac8060fe4377993f + pristine_git_object: 558b4262476fcdf8e8305b88c9b233ea85452598 tests/mockserver/internal/sdk/models/operations/deletecollection.go: - last_write_checksum: sha1:3ef03868f2aab829be605dba1e1250f198036127 + id: ca1fd99cdc93 + last_write_checksum: sha1:eb724e5b7b71ff8b6b79e99b3a8e9bb88c12f1d5 + pristine_git_object: 29f0e83d6f823ab30caa8710606763278c60ceea tests/mockserver/internal/sdk/models/operations/deletecollectionitem.go: - last_write_checksum: sha1:89ccaa80ae6b857f57ad2ee1ca15a7810f254d4e + id: 15faa52e4b86 + last_write_checksum: sha1:ce58b49a61bb08f2a383f020137dfbeb682c7186 + pristine_git_object: ebc25f934cf49b5bf4895439374d5f432ba8e66e tests/mockserver/internal/sdk/models/operations/deletefindingsexport.go: + id: cb1e282bcdb8 last_write_checksum: sha1:75f0c5cb8e9465c8e248692de923523cdcba2761 + pristine_git_object: c7c8a18c716c39c6ff005fc6d7eccc7174195365 + tests/mockserver/internal/sdk/models/operations/deleterestapiindexcustommetadataschemagroupname.go: + id: 73f4210e3b29 + last_write_checksum: sha1:0fdd271c32c4163e095daf0de640cdafb007954e + pristine_git_object: 0d1f72024250b51d1cc6027173980db30155682e + tests/mockserver/internal/sdk/models/operations/deleterestapiindexdocumentdocidcustommetadatagroupname.go: + id: 9040d3cca806 + last_write_checksum: sha1:23a94ff1cfd1c43e26cda5fb8bd2158e050d210d + pristine_git_object: beb27fc30ba97f7b376098759bc3987f413c144e tests/mockserver/internal/sdk/models/operations/deleteshortcut.go: - last_write_checksum: sha1:1e5db1ae20ea804ead16a7ab081ee453fcbea5a5 + id: a4aa680e7b60 + last_write_checksum: sha1:843c8276cc4bf518266362585ea810b2e56c015e + pristine_git_object: 887e2fafb13934283d823efddd22ca93b13dee08 tests/mockserver/internal/sdk/models/operations/downloadfindingsexport.go: + id: 754be8daf00a last_write_checksum: sha1:32282301f13c2e740139de75b2efb2c0413ca8e9 + pristine_git_object: 2bfabd236f2307c857a0575e0cbd30d85955339e tests/mockserver/internal/sdk/models/operations/downloadpolicycsv.go: + id: a219d4960a65 last_write_checksum: sha1:f3ba004b4b770392d747b21d15fd09be91c096f0 + pristine_git_object: f11d56e26eea9f06ce6f2a2408ec5f2ec357f002 tests/mockserver/internal/sdk/models/operations/downloadreportcsv.go: + id: 7fe39b85f03f last_write_checksum: sha1:5be47a665f15ebd67c3ccb0be070936ac3f0a04b + pristine_git_object: 40814b93a732463ccd49f8d33f21b1e8511eadef + tests/mockserver/internal/sdk/models/operations/editagent.go: + id: 51fe73b9fe72 + last_write_checksum: sha1:399ba5ffdca374600a2e89d3613158fb8e050a48 + pristine_git_object: e65fa40646a4c11d61f92bd408c7298f589f5794 tests/mockserver/internal/sdk/models/operations/editanswer.go: - last_write_checksum: sha1:46d0995defdc7c39736bf5c8285e79f0e598f762 + id: 577bf726d76e + last_write_checksum: sha1:6319063f92d2532ab663554171253c25f7b0f865 + pristine_git_object: a012cd57bee710b93b9381c99f4fbb0ed322eaa2 tests/mockserver/internal/sdk/models/operations/editcollection.go: - last_write_checksum: sha1:74d0cd186696b3574389f891f8089b406efab145 + id: 32edb89189ba + last_write_checksum: sha1:f728d0af16fe57defc5a1e229a125e7fcab675b0 + pristine_git_object: 1009daa12283b083fe4cb1ad9c9de20ebf93fa7d tests/mockserver/internal/sdk/models/operations/editcollectionitem.go: - last_write_checksum: sha1:fae911cee133540a2388479d532a5add1012b579 + id: 0843dc263b7e + last_write_checksum: sha1:d31194f3dd387014f598e8fa830af8809cf90e87 + pristine_git_object: 520900db55cbd000400d3814d255bccd173cc62a tests/mockserver/internal/sdk/models/operations/editpin.go: - last_write_checksum: sha1:893eb168d3505744d28a40186f2383a15504bba7 + id: f5fbd074d724 + last_write_checksum: sha1:68f0bedad3f1292e88176f78c4a3feaaa72636a5 + pristine_git_object: 9105b3366f4444a3cc1e6a95033157ab2a07e4bf tests/mockserver/internal/sdk/models/operations/feed.go: - last_write_checksum: sha1:583c3f65f15eb020e9091e7a09f059d6dbfecfb1 + id: 855294cff2a1 + last_write_checksum: sha1:5cc00b3895c2391dab6e7706a97903ed226c8f10 + pristine_git_object: 8f7a3aa040ddcd71393b9ed787d3afad195276c6 tests/mockserver/internal/sdk/models/operations/feedback.go: + id: 47bfac25ebd7 last_write_checksum: sha1:7d5a51aed8eacae15096b90250b2a35f647b45ac + pristine_git_object: 3f4ec58df553f094f9d21f67131761d268ae35c3 + tests/mockserver/internal/sdk/models/operations/getactionpackauthstatus.go: + id: f39b4bf02b51 + last_write_checksum: sha1:59f683b0141feca6a0db93cdbc99d977c0d0b481 + pristine_git_object: 9b7a1160364b1a13328a3e8e569f021bdbdf5134 tests/mockserver/internal/sdk/models/operations/getagent.go: - last_write_checksum: sha1:d891bc90f4d81a0977f6cedee571685977d20487 + id: 28bd59af7ef5 + last_write_checksum: sha1:97fa8b77eab495bb56cda7e91667fd77d8567faa + pristine_git_object: 6e79ed8b752b271f5134daad59d3c97292de8b4c tests/mockserver/internal/sdk/models/operations/getagentschemas.go: - last_write_checksum: sha1:2f4625bd8c585549e768400f1b867163e42632e7 + id: 93de0ffc7e0e + last_write_checksum: sha1:2c2ca4842ec6e43e2b0fe486c273600ea369c3e1 + pristine_git_object: 8b4bb0ad9560e03c49438fd0c95d7aed7bfb8d8c tests/mockserver/internal/sdk/models/operations/getanswer.go: - last_write_checksum: sha1:0b237b13fc7986d332548e4be8573e9a6fdc1cca + id: 8c9e385fc676 + last_write_checksum: sha1:464649f75bf44047247059576b829e2fe409815d + pristine_git_object: 2f3d1ba57b8c1616b47adac8cbf51453d240ba47 tests/mockserver/internal/sdk/models/operations/getchat.go: - last_write_checksum: sha1:0bd97b5e18fd81ba0011952477a790bc724b88ce + id: d328205f0632 + last_write_checksum: sha1:830d4df2089c82c236e71784eb380eb58c1e2ec0 + pristine_git_object: 50686f3424c0b9b7dda573325cf0d4ceb231d6f7 tests/mockserver/internal/sdk/models/operations/getchatapplication.go: - last_write_checksum: sha1:66051d825c1fbfe2bfc12583b8df8ab26b5d724d + id: 09304151a94f + last_write_checksum: sha1:8f6f58e46b6e1ac9a5172dfdc09f28446335dd25 + pristine_git_object: 43b8a32f1b22bf89a3aa5074cb5c63fff6da31a6 + tests/mockserver/internal/sdk/models/operations/getchatfile.go: + id: a5bdc5d5f961 + last_write_checksum: sha1:1a218e7e0b4de008c5bb4947aa1ff1b6019b6589 + pristine_git_object: b2bd8aaccf04028dd6cd25c148f28fb5ec7dae24 tests/mockserver/internal/sdk/models/operations/getchatfiles.go: - last_write_checksum: sha1:a182a409432a7c27b2264f8502ceef742a2a52c8 + id: 53e6e6665403 + last_write_checksum: sha1:b9331fcb429d8bb22487234f7fa3627ee91b21f9 + pristine_git_object: 5ecbbe8d75c085d7199935e157ec9c1c4e7b5db0 tests/mockserver/internal/sdk/models/operations/getcollection.go: - last_write_checksum: sha1:a01d4b745af6515d193d31a0204f0472cd183630 + id: d301a6d10b96 + last_write_checksum: sha1:758de3276a51cb9ef5e2bc09d8e689a95ff4fc53 + pristine_git_object: 6b70b3c9c515c661e4de5444cc290aed950e95df + tests/mockserver/internal/sdk/models/operations/getdatasourcecredentialstatus.go: + id: 2d6cc31a82ca + last_write_checksum: sha1:2943041f083244fbccda983df0a06ee0d04031eb + pristine_git_object: bc0d1e27cda23a31ab6b3daa906b61aa31a4d1fb + tests/mockserver/internal/sdk/models/operations/getdatasourceinstanceconfiguration.go: + id: 44fbe990162d + last_write_checksum: sha1:1570d25442383d4a4d95f8e55ffc0f6c426f683e + pristine_git_object: 515b849ff469c67b595d20155f31dbdde1518f3b tests/mockserver/internal/sdk/models/operations/getdocpermissions.go: - last_write_checksum: sha1:59dc60d6382711186c4110d6d62b94f49ec68c5e + id: b101ee7f401c + last_write_checksum: sha1:dfd7bfff0ab9672ecfed72ca75845eeb6e1572b3 + pristine_git_object: e615fcc1b7600b1202ce6bf34c7f14e2fcdca2d9 tests/mockserver/internal/sdk/models/operations/getdocuments.go: - last_write_checksum: sha1:1fe33ac5dd621e8a8b6e0441903db5d1bc3b11da + id: 62cefe31da09 + last_write_checksum: sha1:d4f23739c982a434827c5e540cb10b8e4ad942a5 + pristine_git_object: 87367f5e414ed790369acda6f9dc97d4c8371fd3 tests/mockserver/internal/sdk/models/operations/getdocumentsbyfacets.go: - last_write_checksum: sha1:115ab3a64f7cff5fba836cb267fd56745452f3f8 + id: a6bee4f91e05 + last_write_checksum: sha1:d4bf58f85d349c021ec670d2a7fc308e13c64a11 + pristine_git_object: 4c3deeb2950ad6025ef0f693d23c53be7a602487 tests/mockserver/internal/sdk/models/operations/getdocvisibility.go: + id: b3dedaa9e1b8 last_write_checksum: sha1:5402b1db287c42416c4f4aea7768be3d562f42c9 + pristine_git_object: 8fbe257571bb02b888a51cdef7ee27aab0481e82 + tests/mockserver/internal/sdk/models/operations/getpersonphoto.go: + id: 0a1a1a0fcabc + last_write_checksum: sha1:5d1aac3d1f32842d4855f0278d7602ac5723c3dd + pristine_git_object: 4d865674f0a8add42cb30ff13ec1b7c222c61c5d tests/mockserver/internal/sdk/models/operations/getpin.go: - last_write_checksum: sha1:c176f67fa51f2cfa0a0ef0be9a5785f97250ad44 + id: cabced4cbab9 + last_write_checksum: sha1:7bf799aefdcb8165fe3fe2d5a756a0fa7b2251dc + pristine_git_object: 0292ece88f50fdae6465f418bcf7a028e1048b1d tests/mockserver/internal/sdk/models/operations/getpolicy.go: + id: 70a443c4bd2b last_write_checksum: sha1:8d4c18ff0db3e28e0de5c1d04c0eddb5f02692e7 + pristine_git_object: 1cac9e52c42d40cf26ce5a7f940f16267f3d6719 tests/mockserver/internal/sdk/models/operations/getreportstatus.go: + id: 348ac820aa32 last_write_checksum: sha1:cbef3e3a77849d9e7865b0e104a51f36b213e211 + pristine_git_object: d83ce7267a1eb0ce6a506c9734b5c51ec8a65b79 + tests/mockserver/internal/sdk/models/operations/getrestapiindexcustommetadataschemagroupname.go: + id: d0483a26369d + last_write_checksum: sha1:b355db6de6aeb8df4fe66cbd88a1680d6e57fcfb + pristine_git_object: e38d331a0388b578682dcbb358d5d5ba79f16012 tests/mockserver/internal/sdk/models/operations/getrestapiv1toolslist.go: + id: 3b09272b9a97 last_write_checksum: sha1:4b333486980e930369ed4c804a7a82da12af3985 + pristine_git_object: 4d9d36df3c68953dee10bc12f6c53974a09b0a45 tests/mockserver/internal/sdk/models/operations/getshortcut.go: - last_write_checksum: sha1:f1ba65a8edb67c47a016d7b108dd67785f8df0fe + id: a3ff8d97b66f + last_write_checksum: sha1:9d3a3758b295b8ee5b1bcc3f433ab0fe9a663644 + pristine_git_object: feebc4377fd3e995e6e40a153536a25e5995332d + tests/mockserver/internal/sdk/models/operations/gettoolserverauthstatus.go: + id: 47caf49ab6ed + last_write_checksum: sha1:ca3e16bedf97f0f8606d6d9c82b6a7a886c071a3 + pristine_git_object: 26d8a0ccfca2b2e6585958cacc77a7a359f88749 + tests/mockserver/internal/sdk/models/operations/gettoolservertools.go: + id: 2b77225b512b + last_write_checksum: sha1:07e378cbba3813c8846acc6fe34b523532dace30 + pristine_git_object: 7a3bfa4e700fecab05247d9306b39cc1403a612f + tests/mockserver/internal/sdk/models/operations/importagent.go: + id: a0622c6cb9f9 + last_write_checksum: sha1:50e8a99d7aa1035f10994126d158fe0dd9808f5b + pristine_git_object: ddb85ab63c76deff368d2c85c9187a71f3e66852 tests/mockserver/internal/sdk/models/operations/insights.go: - last_write_checksum: sha1:5f35bf67a5566a0ba41a5d5f88cb24bf94b59de5 + id: 9bf374c79662 + last_write_checksum: sha1:3091cfd7f0f9ad34caa7ba644bd79bfcbf009f6b + pristine_git_object: e644932e7ebc12607ec1e481d69776de25b4514d tests/mockserver/internal/sdk/models/operations/listanswers.go: - last_write_checksum: sha1:416e2ddaa59c4c7b66955d90e353c5c3c08b4167 + id: a16ad30fca0d + last_write_checksum: sha1:4177467d63a522673e6fc55099bca7eb4485c888 + pristine_git_object: f001b00913f630156bc5fb4fae5f5de44d94dfbc tests/mockserver/internal/sdk/models/operations/listchats.go: - last_write_checksum: sha1:0ff998c4605383851afeb240aa653ea365504a71 + id: b65185dc9532 + last_write_checksum: sha1:2c15c1ab202e82f06527529f4aed2ae981bcc18e + pristine_git_object: 404637d261bde5c37f51b66ab5a27589a959ed80 tests/mockserver/internal/sdk/models/operations/listcollections.go: - last_write_checksum: sha1:396e087a2d1cc1f7c145710cfc2e33fc2a88e4eb + id: 46aff684beca + last_write_checksum: sha1:d260f925936fb9de661a06ec411a5d875d59b97f + pristine_git_object: 423a2c497ec3f666f0c09629e514ac558321413e tests/mockserver/internal/sdk/models/operations/listentities.go: - last_write_checksum: sha1:19072515fe93b882cf60fa58b80ffa3c70bf7f84 + id: 7c267e82d329 + last_write_checksum: sha1:466d941106775a6674cca3ae6f07f0f1f41a9a77 + pristine_git_object: ee93a302225363d2bad4520914693ec85e5512c9 tests/mockserver/internal/sdk/models/operations/listfindingsexports.go: + id: 9a66d38027b8 last_write_checksum: sha1:bc380b07b5659cc6bb63d4d1c56da32ded5d5cfb + pristine_git_object: 3ac3652786270b36634fdb089b8964d190932dc4 tests/mockserver/internal/sdk/models/operations/listpins.go: - last_write_checksum: sha1:62d707a3bb796e9282c80b5c6f495aa12ea9bb68 + id: afe8322b4bf5 + last_write_checksum: sha1:0f78c07c1ad4bce0694e9a460d054472a45d33f2 + pristine_git_object: ea87433ef383d4858c109e148ee406e1245c1dfa tests/mockserver/internal/sdk/models/operations/listpolicies.go: + id: d5e1463752bb last_write_checksum: sha1:873e036f6e3166351de3868799fda4c7e4e6f23b + pristine_git_object: 61d27e4fbbd341310e249fff22dc8ffe564d6791 tests/mockserver/internal/sdk/models/operations/listshortcuts.go: - last_write_checksum: sha1:df3a33271a40fc4eeac29b522d472e1ca932bb51 + id: 9bcb31dc3b12 + last_write_checksum: sha1:b82eb9565758c5f1f4664c132869a41ff3b5c214 + pristine_git_object: 216616d5863e8f1cab292118ba7fc629618cc8b4 tests/mockserver/internal/sdk/models/operations/listverifications.go: - last_write_checksum: sha1:7ce42277a2833bf83efb52e386998abb6425132b + id: cf364ff1d7a9 + last_write_checksum: sha1:4b7f74c8948528b2687a834a7ade6fdc629db31c + pristine_git_object: 9ca1324dd71e602d5d17839c5a7c851ffb660076 tests/mockserver/internal/sdk/models/operations/messages.go: - last_write_checksum: sha1:bd5570eaa4111c14f849c3144300433538a0845f + id: 3a119d52ac1f + last_write_checksum: sha1:6f6eeb2807ea13c66d3600caf246e3ae6d2c1e99 + pristine_git_object: f978753b6e6ace4d1b8f194e81c5cdb62e4d5b25 tests/mockserver/internal/sdk/models/operations/people.go: - last_write_checksum: sha1:5a014ee7706adc6db3e3e5ceab65539315faff31 + id: 873c595bed7e + last_write_checksum: sha1:5c9b08af447b7e58258a9c20fdd02ccadaa54895 + pristine_git_object: bfd1b518e7f1abe38915cd870c70d869cfb38929 tests/mockserver/internal/sdk/models/operations/pin.go: - last_write_checksum: sha1:44ea6e779637e05626146f3a3e000b39871bd8ca + id: b553eb9bdb35 + last_write_checksum: sha1:5248f738207e7e99637a538c31c57d93394a588c + pristine_git_object: d6f74b3f76e41314e5e33934c50f5bd0bda958de + tests/mockserver/internal/sdk/models/operations/platformagentscreaterun.go: + id: eb220c44e3e3 + last_write_checksum: sha1:4f2318a6152e1b1d3e4ddf1654202580c600cadc + pristine_git_object: a677b6c1a99819e1ff2ed687039a833c3bc1bead + tests/mockserver/internal/sdk/models/operations/platformagentsget.go: + id: e74910e78a17 + last_write_checksum: sha1:56851bbd3fbefcf411fff643accc8124be24b7d2 + pristine_git_object: 9b2282ad03704136d35901a9d908e7f554310534 + tests/mockserver/internal/sdk/models/operations/platformagentsgetschemas.go: + id: bf409518e189 + last_write_checksum: sha1:767ce5c40fc319d756445283490a4a043213ef84 + pristine_git_object: 117158eff717169b07505ddd717d92c04b45f66c + tests/mockserver/internal/sdk/models/operations/platformagentssearch.go: + id: 1bfa86240c50 + last_write_checksum: sha1:3851c6668a7c007efe9ff4ccbd038cb5d2429713 + pristine_git_object: cdbc9f550e7d2339b0946fe4783a3b79a851f39d + tests/mockserver/internal/sdk/models/operations/platformchatcreate.go: + id: 38da4ead08a1 + last_write_checksum: sha1:816aea1bfc29aa670152cf53137d3d8b5bcbcde4 + pristine_git_object: 1676f6436514b8104a1784f6ad3e6b3d4303befb + tests/mockserver/internal/sdk/models/operations/platformsearch.go: + id: d990791ac101 + last_write_checksum: sha1:9da9b49850375b74bf6296fcec336ba9ad1e1eea + pristine_git_object: 381c8530dfb959419e47dee10c46cfdd5846f611 + tests/mockserver/internal/sdk/models/operations/platformsearchfilters.go: + id: 3f6c4119e4bd + last_write_checksum: sha1:e0836460229365773a66a5b310ba886d5fbdf202 + pristine_git_object: 8e578bcdd052389777bf51d0140176d523d4a976 + tests/mockserver/internal/sdk/models/operations/platformskillscreate.go: + id: cd743025fd37 + last_write_checksum: sha1:af1e6384914f9cd0cc653f0492e99ec648168391 + pristine_git_object: 7018793fb9ea00645c22183c434e464e8b1a9b15 + tests/mockserver/internal/sdk/models/operations/platformskillscreateversion.go: + id: e864f7a1e300 + last_write_checksum: sha1:71b26146e856969fad0ec9664b6ded57bcbf41cc + pristine_git_object: 554b04385e45319a18190bbce6e683be221cd3d2 + tests/mockserver/internal/sdk/models/operations/platformskillsdelete.go: + id: b882924d7f05 + last_write_checksum: sha1:e48b3d6e818895e65535b0d98bc69234920a8c8e + pristine_git_object: ae1f874a8efe12a750b8d869482aab8deab744e9 + tests/mockserver/internal/sdk/models/operations/platformskillsget.go: + id: fc753bfc0e6f + last_write_checksum: sha1:beb72342b1186ad56896339bb3fa710456214bab + pristine_git_object: 6ebb5b11eb4470e6b8804d62db58a314cefa2a6d + tests/mockserver/internal/sdk/models/operations/platformskillsgetcontent.go: + id: 81d0a0deac3e + last_write_checksum: sha1:82685e50d37f2b4b6beddc53de21fddd26d72a96 + pristine_git_object: 2c134153f7fe1f61d792feecb85dc6e2a2cf68cb + tests/mockserver/internal/sdk/models/operations/platformskillsgetversion.go: + id: ac901032cf3c + last_write_checksum: sha1:0984c5536ede7155ae314a4aef4094af4508d663 + pristine_git_object: 79761282ede1334eaffd1723a378244d7dd6a513 + tests/mockserver/internal/sdk/models/operations/platformskillsgetversioncontent.go: + id: 25f71a4682aa + last_write_checksum: sha1:7792a682e3f19bd1366affc985c57d49a8f19b07 + pristine_git_object: f8138d2e1caefe9a7093ac12c1a5ce0ff128823a + tests/mockserver/internal/sdk/models/operations/platformskillsimport.go: + id: 598f3cd7379a + last_write_checksum: sha1:6b2b111cf9cd162041b521e1ba4477375d552f68 + pristine_git_object: 05953c0918c11c9a3ee57114361e27026ee81e82 + tests/mockserver/internal/sdk/models/operations/platformskillslist.go: + id: daa657929c98 + last_write_checksum: sha1:fb44d154d8dcca86575b76dd6fdef213e2a568a5 + pristine_git_object: 40f74199560f03309466234c52f5d5dfaed2f563 + tests/mockserver/internal/sdk/models/operations/platformskillslistversions.go: + id: ef57d1f31c39 + last_write_checksum: sha1:60e17abc357b220cb752d85a411402a118b6fde7 + pristine_git_object: 3853971fc3d394241809e862a204df0821c4e368 + tests/mockserver/internal/sdk/models/operations/platformskillspreviewsource.go: + id: 9228f6ef6a79 + last_write_checksum: sha1:7f93cbe4b5fa4ddafbe7b3e5d7782d48c4290ce7 + pristine_git_object: a32c6102b4d886eb573006e516e5f1047cd5ac2c + tests/mockserver/internal/sdk/models/operations/platformskillssync.go: + id: 16804fdbcba4 + last_write_checksum: sha1:7525ca186303c98bc1d8104c6aeb506dc64149ce + pristine_git_object: 447f71a2d356345bd5f291869c5607e51afeeff3 + tests/mockserver/internal/sdk/models/operations/platformskillsupdate.go: + id: a42134c7c823 + last_write_checksum: sha1:f570a0ea531945ee8ae803f4d8c582f7e9c86a79 + pristine_git_object: ec45cac3446e6c7ceef4a3e2d96da621bfcc1cc8 + tests/mockserver/internal/sdk/models/operations/platformskillsvalidate.go: + id: c98dd1ece70f + last_write_checksum: sha1:2449140437acabcd61691b30b730c1edcec089f5 + pristine_git_object: a05a3ba6ac66e2352bd97184f45caeb2c782d9c0 + tests/mockserver/internal/sdk/models/operations/platformtriggerpresetseventssearch.go: + id: c260f0bc0ba1 + last_write_checksum: sha1:6b2fbc1bfe081acc67336c62929e1b2f7d47c8d6 + pristine_git_object: 37c7771eebc13a58c446f7421a20280b3d5c548e + tests/mockserver/internal/sdk/models/operations/platformtriggerpresetsget.go: + id: bc100e1216f5 + last_write_checksum: sha1:4f4fe20e0ad1db86926be70871e3d5c0e07edd8e + pristine_git_object: b6d75f2ae837db9a54ed6bad56ae4ddb33e7dd9b + tests/mockserver/internal/sdk/models/operations/platformtriggerpresetsinputvalueslist.go: + id: b1ec3c1cf3e3 + last_write_checksum: sha1:59946a06b8130a08524781f91163b945bebbbdaa + pristine_git_object: f177d8a9da85f8db5707d69ee418153e827e0e88 + tests/mockserver/internal/sdk/models/operations/platformtriggerpresetslist.go: + id: 48e01ca825c3 + last_write_checksum: sha1:d0374ca3b589ec6d36146b33becfde936441192f + pristine_git_object: d73911f3ef9f79a15739e0a0ffc168a335d7eb27 + tests/mockserver/internal/sdk/models/operations/platformtriggerscreate.go: + id: c4ad7fe46213 + last_write_checksum: sha1:0e31564c243a483b8a09a964835b2e0473d3461b + pristine_git_object: 664f9c97722ccd5548a9aa09ca49245503daccb3 + tests/mockserver/internal/sdk/models/operations/platformtriggersdelete.go: + id: 7a29a3143cd7 + last_write_checksum: sha1:7aaa82731255b447c81d27ec0346bb72cd95accc + pristine_git_object: 58a202ca831378c3fdfbf0c435e70745a046cb0b + tests/mockserver/internal/sdk/models/operations/platformtriggerseventssearch.go: + id: 5dcce0e80035 + last_write_checksum: sha1:02160a745440b9cbe3a914c63e923261609559de + pristine_git_object: bfcff5748aae56306838c80f6c7014eafa84d896 + tests/mockserver/internal/sdk/models/operations/platformtriggersget.go: + id: c299ef1342d0 + last_write_checksum: sha1:d88fdb3095fdcc442c54b2b735c4c370bf19c2a3 + pristine_git_object: 548dcbf0cad526ef77d4fa58d10b0ebc99403e34 + tests/mockserver/internal/sdk/models/operations/platformtriggerslist.go: + id: 9da758308a26 + last_write_checksum: sha1:a5d0980c2dbf8f9f6a9ae73b360ba268b50d5bbe + pristine_git_object: 24df6582a02e0b02a8a78120d1f539851d80b573 + tests/mockserver/internal/sdk/models/operations/platformtriggersupdate.go: + id: 97cc4ddb3921 + last_write_checksum: sha1:0aafe1072c61b82f62f6bbb29c91dac410fa0a17 + pristine_git_object: 0c16788ff815693180b186aa0e9d4a016ffe2c28 tests/mockserver/internal/sdk/models/operations/postapiindexv1adddatasource.go: + id: 85e7185113c5 last_write_checksum: sha1:2f82dc427027cdb45f8fcf8fa6454e28599233aa + pristine_git_object: ec4316c15cf80ce3eb067e5827af11fe4a520d25 tests/mockserver/internal/sdk/models/operations/postapiindexv1betausers.go: + id: 04ccb45a6331 last_write_checksum: sha1:a7948ad81eb4bf57409c43a788a114e1b0bf4a95 + pristine_git_object: eaab9c654f19c0709d930c2b988098c9d6c16ec6 tests/mockserver/internal/sdk/models/operations/postapiindexv1bulkindexdocuments.go: + id: a3e203754131 last_write_checksum: sha1:b1c1d3a29a4b6fe050b1814373def790474b91e0 + pristine_git_object: 91856daa88bd132c6f43345745d73eb06b296f5d tests/mockserver/internal/sdk/models/operations/postapiindexv1bulkindexemployees.go: + id: d26cf727047e last_write_checksum: sha1:d9392ff1cd5377c7b81b8441e2b3b52bf57d0d21 + pristine_git_object: 9db6475f01f3733b4b7908d85890dbd992927d11 tests/mockserver/internal/sdk/models/operations/postapiindexv1bulkindexgroups.go: + id: db95d0bdaf9b last_write_checksum: sha1:b4cda132c0ef19b9d9894d45b635c72aa202d3e1 + pristine_git_object: 61a821cd645c3111ed82ccaf4239b6403406751e tests/mockserver/internal/sdk/models/operations/postapiindexv1bulkindexmemberships.go: + id: 7b3dd3260ea6 last_write_checksum: sha1:de7f0116950be7357bef2b0cf54e2f6a338f9fed + pristine_git_object: e2f87c0dfde4d4895d089717df04b2e787077793 tests/mockserver/internal/sdk/models/operations/postapiindexv1bulkindexshortcuts.go: + id: 842d87215981 last_write_checksum: sha1:5f4a29e02699c47a9f50fdd38a8f68fcd6e90e7e + pristine_git_object: 6348bbd6f1227de1d9c7e696ed0b29db8fda10b1 tests/mockserver/internal/sdk/models/operations/postapiindexv1bulkindexteams.go: + id: 0d098a2aaf9d last_write_checksum: sha1:9dd2656fc4e99259359d28c314fce435bdf4dac5 + pristine_git_object: a6a54ca349370e987fee1b4ea385669412441f84 tests/mockserver/internal/sdk/models/operations/postapiindexv1bulkindexusers.go: + id: b5e3669d405b last_write_checksum: sha1:1fb6af351766e122750be52afa2299c75b887e80 + pristine_git_object: eca83011c7b7f445306afc0a198c6cc037f8d8bf tests/mockserver/internal/sdk/models/operations/postapiindexv1checkdocumentaccess.go: + id: beaff772bb5d last_write_checksum: sha1:f00c6615010a5d00bbab9188dbdfea578bdedac5 + pristine_git_object: daa947b5d2e7e9df896bf4feff7b85ad81df7641 tests/mockserver/internal/sdk/models/operations/postapiindexv1debugdatasourcedocument.go: + id: 9386c4d7ec77 last_write_checksum: sha1:3e6d9847f34b084afaa15e0358ca2f0fbd6f761a + pristine_git_object: 0030470cdbb8446c45318fb63d5ff131f0af5432 + tests/mockserver/internal/sdk/models/operations/postapiindexv1debugdatasourcedocumentevents.go: + id: 6a566fb46abd + last_write_checksum: sha1:f989e66a6ee1143f9e068974ef6383c78e5fd01a + pristine_git_object: 33447581a47d1d267c454971e0b21cbc1acdb8f9 tests/mockserver/internal/sdk/models/operations/postapiindexv1debugdatasourcedocuments.go: + id: 19cf1c71b920 last_write_checksum: sha1:32dcdcf2c32961719a7ebeba45c06291c31c5d3b + pristine_git_object: db365a703f2fe4fb22f56e775bec772f909cf510 tests/mockserver/internal/sdk/models/operations/postapiindexv1debugdatasourcestatus.go: + id: e6046df82ffe last_write_checksum: sha1:6dda731df684acf5abb0531564e1d48e9e91f201 + pristine_git_object: e9913883805eebb8d5f9de919e011ffb3b26b456 tests/mockserver/internal/sdk/models/operations/postapiindexv1debugdatasourceuser.go: + id: f1fb36eb58d1 last_write_checksum: sha1:be15f8a3a14f6aefb0328d11f56f78e38f16bee9 + pristine_git_object: 4d642b8f0f09371a1a7c2393d95112feb0610659 tests/mockserver/internal/sdk/models/operations/postapiindexv1deletedocument.go: + id: a94078f9ad88 last_write_checksum: sha1:133d606d69c460aedcf6cc2c748b9889ef5b8d8d + pristine_git_object: cb9dcbeb0638c790fc4ac8171d673c51c65ce698 tests/mockserver/internal/sdk/models/operations/postapiindexv1deleteemployee.go: + id: 57a55472cfe4 last_write_checksum: sha1:76d2f815e9ed1cc1ea5622aabedbd37928ce78e2 + pristine_git_object: c2ff187ffd33e7f645cd8536f400b0a7122ed9a2 tests/mockserver/internal/sdk/models/operations/postapiindexv1deletegroup.go: + id: b84a9782069a last_write_checksum: sha1:4ea8e8c9d31e6ff8469f51a1b857b206dc9dbe05 + pristine_git_object: 51bf558891f3e003111cb17fe5ba5c4ef7e5e3c3 tests/mockserver/internal/sdk/models/operations/postapiindexv1deletemembership.go: + id: 5f3d67a00395 last_write_checksum: sha1:d4633a3027f1ae7f110a0a5976b513ae7157f5c7 + pristine_git_object: 0c2cf3c60dac30b6332484183bdcf2b8c731ba3a tests/mockserver/internal/sdk/models/operations/postapiindexv1deleteteam.go: + id: 646d84637b89 last_write_checksum: sha1:a92d30b0348623fbe6d0bcdf49c1fb3d1ce6b0e0 + pristine_git_object: 3e7591f4fb46945fa2b6ac537707d1b7a9d90fce tests/mockserver/internal/sdk/models/operations/postapiindexv1deleteuser.go: + id: 3ac1da6974b7 last_write_checksum: sha1:5fedaa14f75e19ec9d19ca4a3e99a4352bb47a2d + pristine_git_object: f283635984ba5b0f2c785bbca361e1619c9304b9 tests/mockserver/internal/sdk/models/operations/postapiindexv1getdatasourceconfig.go: + id: 7fda817cb810 last_write_checksum: sha1:1d91ec929b59c3eb28d55c4bcf733d22ba8ce429 + pristine_git_object: 87af103e121dcb3403ffbc3bce1c6c924a3f079d tests/mockserver/internal/sdk/models/operations/postapiindexv1getdocumentcount.go: + id: 6433cbe23c23 last_write_checksum: sha1:5117f2204b56a4fab8b78e1505afe4effefb89d2 + pristine_git_object: e834673897df62698a8acd84a25cf316e58d7a31 tests/mockserver/internal/sdk/models/operations/postapiindexv1getdocumentstatus.go: + id: 0710b282ba21 last_write_checksum: sha1:c7392d72ca0b952723c1138b999d2927f2cd36de + pristine_git_object: 23e6ce27a9299e9a183a35e123bec4c9a9250c89 tests/mockserver/internal/sdk/models/operations/postapiindexv1getusercount.go: + id: 73d27c91bd1d last_write_checksum: sha1:01f3825d72dc86dd0085273d1b8c72f340e76636 + pristine_git_object: d65e1df985ab3fa57cf7b826b6db663c262f2c6a tests/mockserver/internal/sdk/models/operations/postapiindexv1indexdocument.go: + id: a208711c3554 last_write_checksum: sha1:3efed5fae8df0d1a262ddef69189cc78070134c9 + pristine_git_object: 0dee9b590c9626171165eac64f6ede3ef1767350 tests/mockserver/internal/sdk/models/operations/postapiindexv1indexdocuments.go: + id: 7153a6c3b857 last_write_checksum: sha1:740474c41034fe84e2550e13643e9d7339780501 + pristine_git_object: dc8114aee9563ca706c2f5a6d10c5a238f2ac4dd tests/mockserver/internal/sdk/models/operations/postapiindexv1indexemployee.go: + id: 4fb5c55c2847 last_write_checksum: sha1:ea137b2359cdf0253992a98befcde0ef321eb4ec + pristine_git_object: 78fee1b1682e0bf269123264248540d26589d5d1 tests/mockserver/internal/sdk/models/operations/postapiindexv1indexgroup.go: + id: 8724d89aa0ee last_write_checksum: sha1:deaac8a99b80c144b09973f3165b3460629820d9 + pristine_git_object: 2376f01a646d7647335b193f8887313bee6b3a8a tests/mockserver/internal/sdk/models/operations/postapiindexv1indexmembership.go: + id: 9bb69b2e8f8b last_write_checksum: sha1:5e3890463d141971df363b7d2aabf485437ed65a + pristine_git_object: bc37981822806851a7ef236df0330bd45a06e92d tests/mockserver/internal/sdk/models/operations/postapiindexv1indexteam.go: + id: 47ea300d1c72 last_write_checksum: sha1:af338c162bdd05f170de7280332f0629d2881893 + pristine_git_object: e21ea660ad2f28ce21d6789aeb1e123cc28041ff tests/mockserver/internal/sdk/models/operations/postapiindexv1indexuser.go: + id: 60183ac8063b last_write_checksum: sha1:6af067cd2896b25ae230aba5c869dcd43e9599ee + pristine_git_object: 97d96c43227c664c03a0fc0e1a09bc85ff3c9c9e tests/mockserver/internal/sdk/models/operations/postapiindexv1processalldocuments.go: + id: 936d4338ab5c last_write_checksum: sha1:a5cb7dc7c1a090e13d6d0a892ca81fd939fa2cbb + pristine_git_object: 842e0b833c4d0d3ee76ade1257e91c378a0d3e45 tests/mockserver/internal/sdk/models/operations/postapiindexv1processallemployeesandteams.go: + id: c1337f1c16fc last_write_checksum: sha1:b0e9349d32b6f6e6bcfcf50795a3c9d01a8d579a + pristine_git_object: 6836e1b0547d29ab0b06a61483c1cf0a6d4dd41a tests/mockserver/internal/sdk/models/operations/postapiindexv1processallmemberships.go: + id: de2279267e56 last_write_checksum: sha1:dc15b4835d4c2419c41df90c732b551c0e47b4b6 + pristine_git_object: 7fda5903222b53179c889c5347166d3e306909c6 tests/mockserver/internal/sdk/models/operations/postapiindexv1rotatetoken.go: + id: 770dc5e9fe7a last_write_checksum: sha1:c7e443b0a9f994246b12f845cfe17a6faa9dd50c + pristine_git_object: d0333d02e471e38c949808fb72a415c1b58bcd95 tests/mockserver/internal/sdk/models/operations/postapiindexv1updatepermissions.go: + id: 3003447c5df5 last_write_checksum: sha1:efe733ad63d09cdafbd01f06870cad083c46fe86 + pristine_git_object: 677130bbedacaa7a7084ce137359aeb7bff7265b tests/mockserver/internal/sdk/models/operations/postapiindexv1uploadshortcuts.go: + id: 050d90bfef03 last_write_checksum: sha1:ed4651d4860935aaf0e344aeb9bbffb1365b8db7 + pristine_git_object: cc5dbf54dc3c27fb7c8deae58311079a11510827 + tests/mockserver/internal/sdk/models/operations/postrestapiindexsubmissionsdatasourceinstancetype.go: + id: 93b21d4811cb + last_write_checksum: sha1:4c19c046232b28b4690f580188874df776fe9710 + pristine_git_object: f18b0916913896d0028d84c699c07fdcbd88ad90 tests/mockserver/internal/sdk/models/operations/postrestapiv1toolscall.go: + id: 2cb295dd1782 last_write_checksum: sha1:a598e25aef310bd7c8c7c37987899e6f88e918f9 + pristine_git_object: eb2eea470710ba5887a0340b934b602a63b486fc + tests/mockserver/internal/sdk/models/operations/putrestapiindexcustommetadataschemagroupname.go: + id: bbbcdd70f097 + last_write_checksum: sha1:a4b2a2546463defadda12f10c5d48cf3f978bed4 + pristine_git_object: 8aabd0646608b24242dd0685d3dba9d4a7fb50e0 + tests/mockserver/internal/sdk/models/operations/putrestapiindexdocumentdocidcustommetadatagroupname.go: + id: afac7770cd53 + last_write_checksum: sha1:8248f106ce4fd60e2de01ad997600bef0dd48dbe + pristine_git_object: 2722a184f1aaf9588ffea6874a4b0948bec19a7e tests/mockserver/internal/sdk/models/operations/recommendations.go: - last_write_checksum: sha1:038b9dbb0057a5df6c6fb4d8625fb8bcbb1e6e6a + id: a185d6e70d36 + last_write_checksum: sha1:6ae07252753671a40f928d93b959ea0403154494 + pristine_git_object: 1a7d11cdea0461dacd357e652ceba5ad048ab2b4 + tests/mockserver/internal/sdk/models/operations/rotatedatasourcecredentials.go: + id: 4423e4f78c63 + last_write_checksum: sha1:e3ba704236a66ebc3e5c3d36865df95bae4620e9 + pristine_git_object: f5ac0b261c77d2df930fdbd5f24911627bb31221 tests/mockserver/internal/sdk/models/operations/search.go: - last_write_checksum: sha1:6bf4ec701c188fb195525550a201a0a0e2b09750 + id: 6db405372f56 + last_write_checksum: sha1:8ebd0389fc5b227f30ce9e4ff19b12516c4b5329 + pristine_git_object: 7467c541d0f39e1b2571785b48474cddd93e5d1e tests/mockserver/internal/sdk/models/operations/searchagents.go: + id: 6f53dbe362ec last_write_checksum: sha1:15a0051b4288ddfec731e7198c1561ceb4187faf + pristine_git_object: 0e9a07157966bee757b21e5c6fe08129385e0345 tests/mockserver/internal/sdk/models/operations/setdocvisibility.go: + id: d4ab3d457210 last_write_checksum: sha1:af755e76cbc165a8f9282ecbb67ba09d32ac9e22 + pristine_git_object: 3b077768a3c7b6925e2bf5ad45938527f197e1f3 tests/mockserver/internal/sdk/models/operations/summarize.go: - last_write_checksum: sha1:ddde2cc76030dd5d239b5c19e41ea2b264205e8c + id: 53e19d91ab53 + last_write_checksum: sha1:e23c22ddcc5ffa4d3201ff38dee77bf305c1b156 + pristine_git_object: 9bd6a38a71f87d63e10d146d772b43df55093ea3 tests/mockserver/internal/sdk/models/operations/unpin.go: - last_write_checksum: sha1:605fd15abbc6cffae0bf369831ca390f85db4cce + id: 1c8ed2f7e0f0 + last_write_checksum: sha1:ebc6723ce70f20e4847d322b1f63ab297b7b4d39 + pristine_git_object: f6aeca75322cf729c455320aeb878665f81a037b tests/mockserver/internal/sdk/models/operations/updateannouncement.go: - last_write_checksum: sha1:f09b2db0a0ca4fcdaa5d2812b360fc1f287bdd3d + id: 667baa2231cd + last_write_checksum: sha1:219c6a8e147028e49185ebfe1488b8efe1e5f4a3 + pristine_git_object: 4cc872ff71d34060db600f0da799cd493bfeee3c + tests/mockserver/internal/sdk/models/operations/updatedatasourceinstanceconfiguration.go: + id: 646219724b69 + last_write_checksum: sha1:9138b5126887e93c98c8c5d936909af27faa6236 + pristine_git_object: b8568c6360c20c277dd89f45a8eba7cc9feacd3e tests/mockserver/internal/sdk/models/operations/updatepolicy.go: + id: 77df97c41ed7 last_write_checksum: sha1:555e1077b891a4d7a21f275bcffe983b7fff9120 + pristine_git_object: a355bbe91da6940f4c182d7da12592b0fe239d54 tests/mockserver/internal/sdk/models/operations/updateshortcut.go: - last_write_checksum: sha1:a281706f648c15c16513e06ad582a05e27d7a94c + id: 97d965cc3c6e + last_write_checksum: sha1:f9689073485924ff89de0d476d3bd0ea56b73501 + pristine_git_object: f16ddd5e3c04d237a6f3f3e29685ee3dff588915 tests/mockserver/internal/sdk/models/operations/uploadchatfiles.go: - last_write_checksum: sha1:a9700d5dd59c4c9e8dfacda1ebe9feeed653c54e + id: 23ab0825947d + last_write_checksum: sha1:f1c44bb376adee3854955832ceff513124324a3b + pristine_git_object: 24142696d0a73079faa1114b40dd5f35ca089648 tests/mockserver/internal/sdk/models/operations/verify.go: - last_write_checksum: sha1:312f2afd842757b48d7a741d9c5e74549f737a51 + id: 3c481ba80f28 + last_write_checksum: sha1:f20f8fd1bbf3169e0e4516595d7971e5cae03951 + pristine_git_object: 502b190f8e59bcc4ebb0c0efdb317c641b845f93 + tests/mockserver/internal/sdk/models/sdkerrors/accessrequestpermissiondeniedresponseerror.go: + id: f244f160d8da + last_write_checksum: sha1:9b0a14a93bc595e225d8c6f06caf7391f6a33dd7 + pristine_git_object: 5f5014935454bd9afcfdbea2ba6c153fc1508fd6 tests/mockserver/internal/sdk/models/sdkerrors/collectionerror.go: + id: 60537b88bdfe last_write_checksum: sha1:a8ce08145cf00a84487714f875ba1d3a8d84be1d + pristine_git_object: 6eb492d877ba569e41405a84ed4eb539d2df1317 + tests/mockserver/internal/sdk/models/sdkerrors/errorinforesponse.go: + id: ff26c56caf3f + last_write_checksum: sha1:45ea1373ecbbade089e437790674efbffb72238d + pristine_git_object: 75ecfbc9fd1e451c19a4cf492569ba20f47c79ba + tests/mockserver/internal/sdk/models/sdkerrors/errorresponse.go: + id: 285d3b46954a + last_write_checksum: sha1:eecdd5dcfa17d3c57965b06f8d75065b5ccf243b + pristine_git_object: a3f04453bc6f90fb4be431387a87da90d3191212 tests/mockserver/internal/sdk/models/sdkerrors/gleandataerror.go: - last_write_checksum: sha1:8b2cb972da36ace2356aac3c81b133626315fd6c + id: 6162be7fca7f + last_write_checksum: sha1:ee697c8e2807f2b86c3de73bcbc013bbaf4ee2e9 + pristine_git_object: 05af2574a03e26abac55345798ac1e965376ecd4 + tests/mockserver/internal/sdk/models/sdkerrors/platformproblemdetailerror.go: + id: cdcf3c6fd1e3 + last_write_checksum: sha1:277bd1fcc00faa488f46f2bd2f40cf4360c3fa7c + pristine_git_object: 2910d0bd964e88e265060c18c4e99a1f5f45dc62 + tests/mockserver/internal/sdk/models/sdkerrors/platformunauthorizedagenttoolsproblemerror.go: + id: b971e82e74ab + last_write_checksum: sha1:15e25fba5d4a2d4485b7182985b26843213e5aa1 + pristine_git_object: 45b9087af2856cc4c2702c26d855d1c35c63eb3b + tests/mockserver/internal/sdk/models/sdkerrors/unauthorizedagenttoolserror.go: + id: e8f79a87d789 + last_write_checksum: sha1:8a59fb748ae785c760ee3e4a0431f0ee516ff9cf + pristine_git_object: 0f579e13784795d08fe8f2562fc5007cd43babd6 + tests/mockserver/internal/sdk/optionalnullable/optionalnullable.go: + id: 49a8c2638f49 + last_write_checksum: sha1:aa5ff815f31a3657487ad5e0c3f023f573b1fcab + pristine_git_object: bdf1155c8c11ce1a1266e0e2e0fe24a1cefff196 + tests/mockserver/internal/sdk/optionalnullable/optionalnullable_test.go: + id: 67aafc07794f + last_write_checksum: sha1:c0ca755fb35acd8f838567e22c2b5722592fe1c3 + pristine_git_object: 52fb11f9ecfbf5e83c2a2d406d39e9a58923ef27 tests/mockserver/internal/sdk/types/bigint.go: + id: 87f867cb8679 last_write_checksum: sha1:49b004005d0461fb04b846eca062b070b0360b31 + pristine_git_object: 9c6a086d51595888a6ff787ebcb8693559afee95 tests/mockserver/internal/sdk/types/date.go: + id: f98ae21d85d5 last_write_checksum: sha1:3036a2e1ed15a1d484c093367eba000c38f384d0 + pristine_git_object: 5b2782f219efe6bfbce46fc2dec68998eb759438 tests/mockserver/internal/sdk/types/datetime.go: + id: aaa67b7338e2 last_write_checksum: sha1:196d050af6450669214e9ae4fd28e56263ae2b5d + pristine_git_object: 3eff332daa04e34cec5ffb10add670bafd8ac454 tests/mockserver/internal/sdk/types/decimal.go: + id: cdc9f41c716d last_write_checksum: sha1:54f1f8c0d89d6ef048805121f97c6937404c5d51 + pristine_git_object: d8429bc6bda8a597610c4fac56b71c403dbadb2b tests/mockserver/internal/sdk/types/jsonl/jsonl.go: + id: f059643f67b2 last_write_checksum: sha1:15fb778e0fa6c7b4c228431af3d03b9819b8fd94 + pristine_git_object: 26df95cf42add9ff7286ab4cc191c9548b0ac16b tests/mockserver/internal/sdk/types/pointers.go: + id: f880573cf1fb last_write_checksum: sha1:fc2275ea006257ba9ba4ff6f2a2cdb6205371eef + pristine_git_object: 35c439d2661e08fcb6a854096fd7b9a8561b3938 tests/mockserver/internal/sdk/utils/json.go: - last_write_checksum: sha1:5608b7911537cefb829eadfd5df85f43d0918a1d + id: b1ed67b63d16 + last_write_checksum: sha1:2c860aa8b53b7d38c20290854c880368ce4fe0ec + pristine_git_object: e5aafa7be41a6c5a754c4c500c13a1aabcc654d4 tests/mockserver/internal/sdk/utils/reflect.go: - last_write_checksum: sha1:2e555f970ae33dd41130199d1b87c9864b485fdf + id: b024be29d61f + last_write_checksum: sha1:1e3a0ca0387685b6b21c0a6a75650b8611c76ee3 + pristine_git_object: c9ae9a7c41b87dac23a4e517213f840adbf116f7 tests/mockserver/internal/sdk/utils/sort.go: + id: ee80b6668d52 last_write_checksum: sha1:a9d390de086ad13841c7d154e97d314e6ae2d285 + pristine_git_object: 6b265be746b089d6a8c34e55d18839fec9c91f96 tests/mockserver/internal/server/doc.go: + id: 54a531ed97c2 last_write_checksum: sha1:71ca1bebc409ffcb7ed573f4bfc85f1d2cb76252 + pristine_git_object: 666dc10909c6fc1d8699cadd82e358b422e21842 tests/mockserver/internal/server/generated_handlers.go: + id: d4345560d91e last_write_checksum: sha1:dbaa2e7beedda2a3e0ef373939f0424577cb2666 + pristine_git_object: 1ea16355c8f0747d5c98f4233865c94fc61e6da0 tests/mockserver/internal/server/internal_handlers.go: + id: 03ed5c3e8424 last_write_checksum: sha1:1c79af9ee45c9bde435f5acc711bc48c9f66315e + pristine_git_object: 1c248615e9a35cab3b451f4696cd7d787e173041 tests/mockserver/internal/server/server.go: + id: bc4818c1c5f8 last_write_checksum: sha1:d97000314c64b937ff7a243cbc051c5591ab8722 + pristine_git_object: 12239611a68d9a0ca7522a55a18788829c5e67e8 tests/mockserver/internal/server/server_option.go: + id: 8a815959caed last_write_checksum: sha1:f787e17525cbaed4d6881d02562da66a1deda9c0 + pristine_git_object: ff85a678b6c19095ae99851ba6dfbba3813aae09 tests/mockserver/internal/server/templates/log/index.html.tmpl: + id: 0cb9583d5972 last_write_checksum: sha1:7c3fc6e6b03d80e05bc586ade52ddcb8adaee148 + pristine_git_object: 8b1124e5f9fb283a4effd9c891b94a011c9dc5f2 tests/mockserver/internal/server/templates/log/operation.html.tmpl: + id: 60a6c6274bd7 last_write_checksum: sha1:ab2894028c76b25dfe613d743a243bfd04fb279c + pristine_git_object: a54a2adce7e3701bc4e40584e1679193d08062fb tests/mockserver/internal/server/templates/log/style.css.tmpl: + id: 38e1479659c5 last_write_checksum: sha1:474c79a94fa7d2671135e078a71c51b11f38bfae + pristine_git_object: 5490930e568fac28e0f8d1a218bfb3cb261430b9 tests/mockserver/internal/tracking/requesttracker.go: + id: 24598502491b last_write_checksum: sha1:09963693aae5446c247cac171c284f2cdf7cfa4d + pristine_git_object: 1d9131d09f58db9a36c3032c08b043f08989f9e4 tests/mockserver/main.go: + id: 2b32d316f0d2 last_write_checksum: sha1:1267817b54decac7af35c5db3f4d865eb628547d + pristine_git_object: 2270443b07cb33114f54c654c6d4184fcfc1d68a tests/test_activities.py: id: 0511c9cc6a92 - last_write_checksum: sha1:1c181cab75547a32bdb2889f86d5284012b61fca - pristine_git_object: dc6994d4926e2e2667f2aa2250b93dc5cb3c141c + last_write_checksum: sha1:e3ed9762b0d3969663ff8b18dcd9d55a0198b2bb + pristine_git_object: db4221c9f5953adc8f8219979060f1248ae5c342 tests/test_agents.py: id: 2eb70a860f3a - last_write_checksum: sha1:0c2472116b756d6985f893ff62edb5505e2a260d - pristine_git_object: 1d18b7662e493260672cbaabfcbc8461355ffeba + last_write_checksum: sha1:6e1b73ba0d82b9ea9bfa33819b2293f35d344dae + pristine_git_object: 8b75a0e000414b7fb57a82ac2523251ca40fc12e tests/test_announcements.py: id: 720cc07fca06 last_write_checksum: sha1:1d0dcab6446633bc6809bc67e14b6cc1755aa319 @@ -6155,6 +10655,10 @@ trackedFiles: id: 255e2a2c77ee last_write_checksum: sha1:933ca9c7da1cfab204f0acc1005c29118b08162a pristine_git_object: d2b02f269ac418b9a9240772f28ab1bd3cfa4997 + tests/test_chat_sdk.py: + id: d6e6d5c5a1b2 + last_write_checksum: sha1:72cb3066bc3db6fba04a615d4a8f4505de1de29c + pristine_git_object: 41b3a54c70ea6fa17f921c13ad06a07899fe0f51 tests/test_client.py: id: 6b61d4b06ccc last_write_checksum: sha1:df970d19cdb9f9e057722699dc73965b6f9b1758 @@ -6163,22 +10667,30 @@ trackedFiles: id: 3754879096ea last_write_checksum: sha1:657e6ccc2cc0d4b92b3feb1681d39796fa0e5889 pristine_git_object: 200e3ceebf0fb52248b717e6cb20b105611c41ec + tests/test_client_agents.py: + id: 5ac5a5b220c8 + last_write_checksum: sha1:7a239203a9848e8f05fab59d7d0df262e0ec20b5 + pristine_git_object: 154665a2de0bd7f01ac5f44fdf547c25fdcee9d7 tests/test_client_authentication.py: id: 7cf5a14528ec - last_write_checksum: sha1:0f967704460d2f4160f4afbfcb864a8524b83106 - pristine_git_object: 1ea7ec892d316489240c82ed6e3b5b99f8d657fd + last_write_checksum: sha1:3ac1ca0753590620676a8bcc6a06e2aa6375ab71 + pristine_git_object: 8e770a8520907d0cdba6928e7e6681b9de6de880 tests/test_client_chat.py: id: 6eb71db2a62a - last_write_checksum: sha1:9826e7ec5c3a757af9dfe000f879f5a105aa1939 - pristine_git_object: 6be5e6a77a5918ec1c069bd0b89b76c08ad7dfad + last_write_checksum: sha1:2db740c4c12b792ff04b44159fb379893f124bb1 + pristine_git_object: e6df2edf75407c06b0433d8d1fb5231ea785c83c + tests/test_client_datasources.py: + id: 451a8b0f5e13 + last_write_checksum: sha1:f0fe510f036c9a717a255344c005eea66420ce3c + pristine_git_object: c931870814144f8c83ebf567759ee1ceb0d1331d tests/test_client_documents.py: id: e41c035a85b3 - last_write_checksum: sha1:37e765a7adddebc975d63c541e791ab3af5ae23d - pristine_git_object: da0882b216dde017669aa0b60f9e442ba41481ab + last_write_checksum: sha1:d29128c0414195ef128ee8a28f192332ebccd46f + pristine_git_object: 96ebd8a4c7eb1f304df1ddcc9c3f8f61ef40445a tests/test_client_shortcuts.py: id: 9a1252d16102 - last_write_checksum: sha1:0f6503db3a78347b80bf55f0d6022df4e3e8b161 - pristine_git_object: 6530e65fbc1b97004c0a01e83648652ff99b926b + last_write_checksum: sha1:52954c9239c69b8c1b04d0f3be604cef3d143920 + pristine_git_object: 1d6344e4f3bd9d256695173be6871f7fa1088390 tests/test_client_user.py: id: d0d9efc1996d last_write_checksum: sha1:8b01269dd6d5e482c28d14394f4745aae1be6c17 @@ -6191,6 +10703,10 @@ trackedFiles: id: 33710eb789fa last_write_checksum: sha1:c6b81c29d18d880a42399a2fe526b0867fefb77f pristine_git_object: 4e7e05cd255ebd497afde50b97fcfa63e4367e2a + tests/test_custommetadata.py: + id: d05cd1ca7d1d + last_write_checksum: sha1:e57a3f0a6d3d51855f525249f1f50af50f8251f8 + pristine_git_object: bf13266784d196fcb7420c35655f5e8c63a433ff tests/test_datasources.py: id: 0a9c5268286f last_write_checksum: sha1:a762f2d7867ba2516772bc38f230660fd4f4c847 @@ -6201,40 +10717,44 @@ trackedFiles: pristine_git_object: acec822d761f40906a287eee92200d1223caec4d tests/test_entities.py: id: 9bdc6c717c71 - last_write_checksum: sha1:1a696f0dc5eb087d61736ff90415abe39858d512 - pristine_git_object: 04ba72dd01828321c6158046387e864ee4bc379c - tests/test_governance.py: - id: d9680b75ffff - last_write_checksum: sha1:c1eb83dbb3867d3c43fd55377c05039853af49e5 - pristine_git_object: 16b5840bb501d1ad7753aaf846630c0a34bdc119 + last_write_checksum: sha1:883ddda9c056ac71fb37d07777e21e97b3d6a345 + pristine_git_object: b6c97f067a81983cd9055ea636273276c569d6dc + tests/test_findings.py: + id: f4c91dfb4975 + last_write_checksum: sha1:8c377b73f379ee056474bdc6a19e3d7d5d323ef4 + pristine_git_object: bc9f6357001f21bb93f48c0d74b72219b0819fe2 tests/test_indexing_authentication.py: id: 466ee13c3372 last_write_checksum: sha1:c96c8f13a7cca3cade8ca389857541596ee01fc5 pristine_git_object: ba76ccdfe646b9d6e0d9dbca11b594bbf1ca75ce + tests/test_indexing_datasources.py: + id: a3f9a6fd341a + last_write_checksum: sha1:7d36ea13ee18447533890819deeefcc8d4e9cb07 + pristine_git_object: 538b6fe427c2f0931149031917c7ac5dd63a1a34 tests/test_indexing_documents.py: id: 5445d048eccd - last_write_checksum: sha1:03eda0aceb8904f9974260374b1092d3e1e1db17 - pristine_git_object: 53c2f4b1345be2f73bcb05aa54f44a287ed11c59 + last_write_checksum: sha1:9fb64bf5103cd434d5cddf39aa4400188e25a51e + pristine_git_object: c7ffe7626a381406ae75558e9af65ed584f31b6a tests/test_indexing_permissions.py: id: a6c5e41932fb last_write_checksum: sha1:ce73ba9de3f1e0b28725112cb250c61ff83ebd33 pristine_git_object: 51a750d7b6f1e75837dcd81c25a42bdfecc80fd0 tests/test_insights.py: id: 7669cd72a629 - last_write_checksum: sha1:ff12a7c40426796bd9ebc193153c5b3b2f546cc9 - pristine_git_object: 301907d8b173301d252e800b1e16f9978108a5ef + last_write_checksum: sha1:1f1a50da621d48b4acd55f8350d6778e9b1f2393 + pristine_git_object: 6cc8aeec3c52329d389081db0a27f10f53f214b9 tests/test_messages.py: id: be23089b1f8b - last_write_checksum: sha1:bef200db8e7fff0aa33ef17846f5054a2d035a88 - pristine_git_object: 36643db35a2d2a3cf9d327379ee7a6cb30da51d0 + last_write_checksum: sha1:a91c985cd1d11560059dc448b10e0c7b75ed60e5 + pristine_git_object: dfdc18641f0d6c38d84b4603ad2da71f75f2e13c tests/test_people.py: id: 37c243940039 - last_write_checksum: sha1:7c7268ffeebe48d81ed25e9b1cfc3a395abf5c1f - pristine_git_object: c64882efb749dec916454d169b905964076b39e7 + last_write_checksum: sha1:2b78b1c5ea17f267895188b1b48ff9fe2bc19f17 + pristine_git_object: a1febc58b891b933f4d5527506dc931082c7bd38 tests/test_pins.py: id: ca3f94cca4af - last_write_checksum: sha1:2a4484539a2cf42da7c5d92b1c7378a259029cc7 - pristine_git_object: 6f6cb1cf3636448de3c04963a4a8396a4cb69254 + last_write_checksum: sha1:4d9eb94936fb2e8431c731f9b2179d32ae7a7c46 + pristine_git_object: fae672bbb1ebffb6b22ce6260a47c02d62ede3fd tests/test_policies.py: id: 4a08836fb665 last_write_checksum: sha1:5a7a52568dc7f3b2c2f555eade996a746b680367 @@ -6245,16 +10765,24 @@ trackedFiles: pristine_git_object: 3fa82f944c8693f534f71d96c489225c3f65cb5d tests/test_search.py: id: dd86606b335f - last_write_checksum: sha1:313c3950c21ccf57f4569a4ca9eeeaefc8e7af91 - pristine_git_object: df2944ebda36db652b2770dd1c23be83df90fc99 + last_write_checksum: sha1:40d22ed4eca2f98edacba5f3f9122f7f6ccd6e89 + pristine_git_object: c3b37c851073899ae790451988d2617aa065ec9c + tests/test_skills.py: + id: ac5db26bd6b1 + last_write_checksum: sha1:88782257782c4a24a77f5ab5d8e50d1129086b6f + pristine_git_object: 98d7f69d362a6770ee01a6c3d9f3684b01a6cbd6 tests/test_summarize.py: id: a255d8a6f627 - last_write_checksum: sha1:4f50b660d414adea1d509dfc957eb74a12654ee4 - pristine_git_object: 63b4eb8541c2b110dab6dda746fef9ac074611f1 + last_write_checksum: sha1:6244d4da1522f443776e78aeb31dd83ebdc90c42 + pristine_git_object: 2b5d1f38b094214933fc3b8da79ff8ed979c5122 tests/test_tools.py: id: 70889bdf7321 - last_write_checksum: sha1:3c0c220f8975b050c322f6475e95f7af4e65b995 - pristine_git_object: 1d25eef896061023603420d7d56c27e40ec7ed01 + last_write_checksum: sha1:e9e37efd6a65d805c02d70d548df9c87dd062b0e + pristine_git_object: 626f9c2c92cff302bac5dd4340d7b962551b5c8f + tests/test_triggers.py: + id: 99ebb55d09b2 + last_write_checksum: sha1:663b063eb9d7b716af9949c73f61abedb078310f + pristine_git_object: 35ec4a2bd7923d0aea72d213f691f3627003abcf tests/test_troubleshooting.py: id: 784c409f631e last_write_checksum: sha1:5af30befb8fffd54210e313bf98c24a64a685c50 @@ -6296,7 +10824,7 @@ examples: application/json: {"data": {"question": "Why is the sky blue?", "bodyText": "From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light.", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "addedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "VIEWER"}], "removedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "ANSWER_MODERATOR"}], "roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "OWNER"}], "combinedAnswerText": {"text": "From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light."}}} responses: "200": - application/json: {"id": 3, "docId": "ANSWERS_answer_3", "question": "Why is the sky blue?", "bodyText": "From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light.", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "addedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "VIEWER"}], "removedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "ANSWER_MODERATOR"}], "roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "OWNER"}], "combinedAnswerText": {"text": "From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light.", "structuredList": [{"link": "https://en.wikipedia.org/wiki/Diffuse_sky_radiation", "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "text": "Because its wavelengths are shorter, blue light is more strongly scattered than the longer-wavelength lights, red or green. Hence the result that when looking at the sky away from the direct incident sunlight, the human eye perceives the sky to be blue.", "structuredResult": {"document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "customer": {"id": "", "company": {"name": "", "location": "New York City", "industry": "Finances", "about": "Financial, software, data, and media company headquartered in Midtown Manhattan, New York City"}, "poc": [{"name": "George Clooney", "obfuscatedId": "abc123"}], "mergedCustomers": [{"id": "", "company": {"name": "", "location": "New York City", "industry": "Finances", "about": "Financial, software, data, and media company headquartered in Midtown Manhattan, New York City"}, "notes": "CIO is interested in trying out the product."}], "notes": "CIO is interested in trying out the product."}, "team": {"id": "", "name": "", "members": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "relationship": "MEMBER"}], "customFields": [{"label": "", "values": [{}], "displayable": true}], "datasourceProfiles": [{"datasource": "github", "handle": ""}], "status": "PROCESSED", "canBeDeleted": true}, "customEntity": {}, "answer": {"id": 3, "docId": "ANSWERS_answer_3", "question": "Why is the sky blue?", "bodyText": "From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light.", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "combinedAnswerText": {"text": "From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light."}, "likes": {"likedBy": [{"user": {"name": "George Clooney", "obfuscatedId": "abc123"}}], "likedByUser": false, "numLikes": 431057}, "author": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "verification": {"state": "UNVERIFIED", "metadata": {"lastVerifier": {"name": "George Clooney", "obfuscatedId": "abc123"}, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "reminders": [{"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 109303}], "lastReminder": {"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 299633}, "candidateVerifiers": [{"name": "George Clooney", "obfuscatedId": "abc123"}]}}, "collections": [{"name": "", "description": "drat what longingly um recklessly fill", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 523810, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "items": [{"collectionId": 460997, "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "shortcut": {"inputAlias": "", "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "destinationDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "collection": {"name": "", "description": "gah peppery well tenement charm reword ha oof reassemble", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 957555, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "outside toward information as smoothly smoggy feminize solemnly round duh", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 459472, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "itemType": "DOCUMENT"}]}], "sourceDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "extractedQnA": {"questionResult": {"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"}}}}, "meeting": {"attendees": {"people": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "groupAttendees": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}]}}, "collection": {"name": "", "description": "gah peppery well tenement charm reword ha oof reassemble", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 957555, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "outside toward information as smoothly smoggy feminize solemnly round duh", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 459472, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "code": {"repoName": "scio", "fileName": "README.md"}, "shortcut": {"inputAlias": "", "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "destinationDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "querySuggestions": {"person": {"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": {"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}}]}], "relatedQuestion": {"ranges": [{"startIndex": 485611, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}]}}}]}, "likes": {"likedBy": [{"user": {"name": "George Clooney", "obfuscatedId": "abc123"}}], "likedByUser": false, "numLikes": 431057}, "author": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "verification": {"state": "UNVERIFIED", "metadata": {"lastVerifier": {"name": "George Clooney", "obfuscatedId": "abc123"}, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "reminders": [{"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 109303}], "lastReminder": {"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 299633}, "candidateVerifiers": [{"name": "George Clooney", "obfuscatedId": "abc123"}]}}, "sourceDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}} + application/json: {"id": 3, "docId": "ANSWERS_answer_3", "question": "Why is the sky blue?", "bodyText": "From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light.", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "addedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "VIEWER"}], "removedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "ANSWER_MODERATOR"}], "roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "OWNER"}], "combinedAnswerText": {"text": "From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light.", "structuredList": [{"link": "https://en.wikipedia.org/wiki/Diffuse_sky_radiation", "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "text": "Because its wavelengths are shorter, blue light is more strongly scattered than the longer-wavelength lights, red or green. Hence the result that when looking at the sky away from the direct incident sunlight, the human eye perceives the sky to be blue.", "structuredResult": {"document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "customer": {"id": "", "company": {"name": "", "location": "New York City", "industry": "Finances", "about": "Financial, software, data, and media company headquartered in Midtown Manhattan, New York City"}, "poc": [{"name": "George Clooney", "obfuscatedId": "abc123"}], "mergedCustomers": [{"id": "", "company": {"name": "", "location": "New York City", "industry": "Finances", "about": "Financial, software, data, and media company headquartered in Midtown Manhattan, New York City"}, "notes": "CIO is interested in trying out the product."}], "notes": "CIO is interested in trying out the product."}, "team": {"id": "", "name": "", "members": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "relationship": "MEMBER"}], "customFields": [{"label": "", "values": [{}], "displayable": true}], "datasourceProfiles": [{"datasource": "github", "handle": ""}], "status": "PROCESSED", "canBeDeleted": true}, "customEntity": {}, "answer": {"id": 3, "docId": "ANSWERS_answer_3", "question": "Why is the sky blue?", "bodyText": "From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light.", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "combinedAnswerText": {"text": "From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light."}, "likes": {"likedBy": [{"user": {"name": "George Clooney", "obfuscatedId": "abc123"}}], "likedByUser": false, "numLikes": 431057}, "author": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "verification": {"state": "UNVERIFIED", "metadata": {"lastVerifier": {"name": "George Clooney", "obfuscatedId": "abc123"}, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "reminders": [{"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 109303}], "lastReminder": {"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 299633}, "candidateVerifiers": [{"name": "George Clooney", "obfuscatedId": "abc123"}]}}, "collections": [{"name": "", "description": "drat what longingly um recklessly fill", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 523810, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "items": [{"collectionId": 460997, "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "shortcut": {"inputAlias": "", "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "destinationDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "collection": {"name": "", "description": "gah peppery well tenement charm reword ha oof reassemble", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 957555, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "outside toward information as smoothly smoggy feminize solemnly round duh", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 459472, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "itemType": "DOCUMENT"}]}], "sourceDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "extractedQnA": {"questionResult": {"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"}}}}, "meeting": {"attendees": {"people": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "groupAttendees": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}]}}, "collection": {"name": "", "description": "gah peppery well tenement charm reword ha oof reassemble", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 957555, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "outside toward information as smoothly smoggy feminize solemnly round duh", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 459472, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "code": {"repoName": "scio", "fileName": "README.md"}, "shortcut": {"inputAlias": "", "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "destinationDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "querySuggestions": {"person": {"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": {"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}}]}], "relatedQuestion": {"ranges": [{"startIndex": 485611, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}]}}}]}, "likes": {"likedBy": [{"user": {"name": "George Clooney", "obfuscatedId": "abc123"}}], "likedByUser": false, "numLikes": 431057}, "author": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "verification": {"state": "UNVERIFIED", "metadata": {"lastVerifier": {"name": "George Clooney", "obfuscatedId": "abc123"}, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "Done", "customData": {"someCustomField": {"stringValue": "someCustomValue"}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "Done", "customData": {"someCustomField": {"stringValue": "someCustomValue"}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "Done", "customData": {"someCustomField": {"stringValue": "someCustomValue"}}}}, "reminders": [{"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 109303}], "lastReminder": {"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 299633}, "candidateVerifiers": [{"name": "George Clooney", "obfuscatedId": "abc123"}]}}, "sourceDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "Done", "customData": {"someCustomField": {"stringValue": "someCustomValue"}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "Done", "customData": {"someCustomField": {"stringValue": "someCustomValue"}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "Done", "customData": {"someCustomField": {"stringValue": "someCustomValue"}}}}} deleteanswer: speakeasy-default-deleteanswer: requestBody: @@ -6307,14 +10835,14 @@ examples: application/json: {"id": 3, "docId": "ANSWERS_answer_3", "question": "Why is the sky blue?", "bodyText": "From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light.", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "addedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "EDITOR"}], "removedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "OWNER"}], "roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "EDITOR"}], "combinedAnswerText": {"text": "From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light."}} responses: "200": - application/json: {"id": 3, "docId": "ANSWERS_answer_3", "question": "Why is the sky blue?", "bodyText": "From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light.", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "addedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "EDITOR"}], "removedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "OWNER"}], "roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "EDITOR"}], "combinedAnswerText": {"text": "From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light.", "structuredList": [{"link": "https://en.wikipedia.org/wiki/Diffuse_sky_radiation", "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "text": "Because its wavelengths are shorter, blue light is more strongly scattered than the longer-wavelength lights, red or green. Hence the result that when looking at the sky away from the direct incident sunlight, the human eye perceives the sky to be blue.", "structuredResult": {"document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "customer": {"id": "", "company": {"name": "", "location": "New York City", "industry": "Finances", "about": "Financial, software, data, and media company headquartered in Midtown Manhattan, New York City"}, "poc": [{"name": "George Clooney", "obfuscatedId": "abc123"}], "mergedCustomers": [{"id": "", "company": {"name": "", "location": "New York City", "industry": "Finances", "about": "Financial, software, data, and media company headquartered in Midtown Manhattan, New York City"}, "notes": "CIO is interested in trying out the product."}], "notes": "CIO is interested in trying out the product."}, "team": {"id": "", "name": "", "members": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "relationship": "MEMBER"}], "customFields": [{"label": "", "values": [{}], "displayable": true}], "datasourceProfiles": [{"datasource": "github", "handle": ""}], "status": "PROCESSED", "canBeDeleted": true}, "customEntity": {}, "answer": {"id": 3, "docId": "ANSWERS_answer_3", "question": "Why is the sky blue?", "bodyText": "From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light.", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "combinedAnswerText": {"text": "From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light."}, "likes": {"likedBy": [], "likedByUser": false, "numLikes": 275292}, "author": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "verification": {"state": "DEPRECATED", "metadata": {"lastVerifier": {"name": "George Clooney", "obfuscatedId": "abc123"}, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "reminders": [{"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 705883}], "lastReminder": {"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 764761}, "candidateVerifiers": [{"name": "George Clooney", "obfuscatedId": "abc123"}]}}, "collections": [{"name": "", "description": "subtle fess aw if whether", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 701136, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "items": [{"collectionId": 794773, "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "shortcut": {"inputAlias": "", "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "destinationDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "collection": {"name": "", "description": "hairy with authentic newsstand supposing howl short axe", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 296704, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "minus save since chasuble per blah", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 925420, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "itemType": "DOCUMENT"}]}], "sourceDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "extractedQnA": {"questionResult": {"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"}}}}, "meeting": {"attendees": {"people": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "groupAttendees": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}]}}, "collection": {"name": "", "description": "hairy with authentic newsstand supposing howl short axe", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 296704, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "minus save since chasuble per blah", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 925420, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "code": {"repoName": "scio", "fileName": "README.md"}, "shortcut": {"inputAlias": "", "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "destinationDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "querySuggestions": {"person": {"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": {"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}}]}], "relatedQuestion": {"ranges": [{"startIndex": 978665, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}]}}}]}, "likes": {"likedBy": [], "likedByUser": false, "numLikes": 275292}, "author": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "verification": {"state": "DEPRECATED", "metadata": {"lastVerifier": {"name": "George Clooney", "obfuscatedId": "abc123"}, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "reminders": [{"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 705883}], "lastReminder": {"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 764761}, "candidateVerifiers": [{"name": "George Clooney", "obfuscatedId": "abc123"}]}}, "sourceDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}} + application/json: {"id": 3, "docId": "ANSWERS_answer_3", "question": "Why is the sky blue?", "bodyText": "From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light.", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "addedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "EDITOR"}], "removedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "OWNER"}], "roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "EDITOR"}], "combinedAnswerText": {"text": "From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light.", "structuredList": [{"link": "https://en.wikipedia.org/wiki/Diffuse_sky_radiation", "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "text": "Because its wavelengths are shorter, blue light is more strongly scattered than the longer-wavelength lights, red or green. Hence the result that when looking at the sky away from the direct incident sunlight, the human eye perceives the sky to be blue.", "structuredResult": {"document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "customer": {"id": "", "company": {"name": "", "location": "New York City", "industry": "Finances", "about": "Financial, software, data, and media company headquartered in Midtown Manhattan, New York City"}, "poc": [{"name": "George Clooney", "obfuscatedId": "abc123"}], "mergedCustomers": [{"id": "", "company": {"name": "", "location": "New York City", "industry": "Finances", "about": "Financial, software, data, and media company headquartered in Midtown Manhattan, New York City"}, "notes": "CIO is interested in trying out the product."}], "notes": "CIO is interested in trying out the product."}, "team": {"id": "", "name": "", "members": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "relationship": "MEMBER"}], "customFields": [{"label": "", "values": [{}], "displayable": true}], "datasourceProfiles": [{"datasource": "github", "handle": ""}], "status": "PROCESSED", "canBeDeleted": true}, "customEntity": {}, "answer": {"id": 3, "docId": "ANSWERS_answer_3", "question": "Why is the sky blue?", "bodyText": "From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light.", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "combinedAnswerText": {"text": "From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light."}, "likes": {"likedBy": [], "likedByUser": false, "numLikes": 275292}, "author": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "verification": {"state": "DEPRECATED", "metadata": {"lastVerifier": {"name": "George Clooney", "obfuscatedId": "abc123"}, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "reminders": [{"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 705883}], "lastReminder": {"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 764761}, "candidateVerifiers": [{"name": "George Clooney", "obfuscatedId": "abc123"}]}}, "collections": [{"name": "", "description": "subtle fess aw if whether", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 701136, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "items": [{"collectionId": 794773, "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "shortcut": {"inputAlias": "", "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "destinationDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "collection": {"name": "", "description": "hairy with authentic newsstand supposing howl short axe", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 296704, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "minus save since chasuble per blah", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 925420, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "itemType": "DOCUMENT"}]}], "sourceDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "extractedQnA": {"questionResult": {"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"}}}}, "meeting": {"attendees": {"people": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "groupAttendees": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}]}}, "collection": {"name": "", "description": "hairy with authentic newsstand supposing howl short axe", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 296704, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "minus save since chasuble per blah", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 925420, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "code": {"repoName": "scio", "fileName": "README.md"}, "shortcut": {"inputAlias": "", "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "destinationDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "querySuggestions": {"person": {"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": {"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}}]}], "relatedQuestion": {"ranges": [{"startIndex": 978665, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}]}}}]}, "likes": {"likedBy": [], "likedByUser": false, "numLikes": 275292}, "author": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "verification": {"state": "DEPRECATED", "metadata": {"lastVerifier": {"name": "George Clooney", "obfuscatedId": "abc123"}, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "Done", "customData": {"someCustomField": {"stringValue": "someCustomValue"}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "Done", "customData": {"someCustomField": {"stringValue": "someCustomValue"}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "Done", "customData": {"someCustomField": {"stringValue": "someCustomValue"}}}}, "reminders": [{"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 705883}], "lastReminder": {"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 764761}, "candidateVerifiers": [{"name": "George Clooney", "obfuscatedId": "abc123"}]}}, "sourceDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "Done", "customData": {"someCustomField": {"stringValue": "someCustomValue"}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "Done", "customData": {"someCustomField": {"stringValue": "someCustomValue"}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "Done", "customData": {"someCustomField": {"stringValue": "someCustomValue"}}}}} getanswer: speakeasy-default-getanswer: requestBody: application/json: {"id": 3, "docId": "ANSWERS_answer_3"} responses: "200": - application/json: {"answerResult": {"answer": {"id": 3, "docId": "ANSWERS_answer_3", "question": "Why is the sky blue?", "bodyText": "From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light.", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "addedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "VIEWER"}], "removedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "OWNER"}], "roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "VIEWER"}], "combinedAnswerText": {"text": "From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light.", "structuredList": [{"link": "https://en.wikipedia.org/wiki/Diffuse_sky_radiation", "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "text": "Because its wavelengths are shorter, blue light is more strongly scattered than the longer-wavelength lights, red or green. Hence the result that when looking at the sky away from the direct incident sunlight, the human eye perceives the sky to be blue.", "structuredResult": {"document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "customer": {"id": "", "company": {"name": "", "location": "New York City", "industry": "Finances", "about": "Financial, software, data, and media company headquartered in Midtown Manhattan, New York City"}, "poc": [{"name": "George Clooney", "obfuscatedId": "abc123"}], "mergedCustomers": [{"id": "", "company": {"name": "", "location": "New York City", "industry": "Finances", "about": "Financial, software, data, and media company headquartered in Midtown Manhattan, New York City"}, "notes": "CIO is interested in trying out the product."}], "notes": "CIO is interested in trying out the product."}, "team": {"id": "", "name": "", "members": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "relationship": "MEMBER"}], "customFields": [{"label": "", "values": [{}], "displayable": true}], "datasourceProfiles": [{"datasource": "github", "handle": ""}], "status": "PROCESSED", "canBeDeleted": true}, "customEntity": {}, "answer": {"id": 3, "docId": "ANSWERS_answer_3", "question": "Why is the sky blue?", "bodyText": "From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light.", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "combinedAnswerText": {"text": "From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light."}, "likes": {"likedBy": [], "likedByUser": true, "numLikes": 322563}, "author": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "verification": {"state": "DEPRECATED", "metadata": {"lastVerifier": {"name": "George Clooney", "obfuscatedId": "abc123"}, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "reminders": [{"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 37610}], "lastReminder": {"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 726314}, "candidateVerifiers": [{"name": "George Clooney", "obfuscatedId": "abc123"}]}}, "collections": [{"name": "", "description": "exactly besmirch fuss nor bookend safely aw optimistically usher miscalculate", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 966336, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "items": [{"collectionId": 648270, "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "shortcut": {"inputAlias": "", "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "destinationDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "collection": {"name": "", "description": "wilted ew hearten vestment gust", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 486539, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "unselfish regarding long calculating indolent twist", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 705775, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "itemType": "COLLECTION"}]}], "sourceDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "extractedQnA": {"questionResult": {"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"}}}}, "meeting": {"attendees": {"people": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "groupAttendees": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}]}}, "collection": {"name": "", "description": "wilted ew hearten vestment gust", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 486539, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "unselfish regarding long calculating indolent twist", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 705775, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "code": {"repoName": "scio", "fileName": "README.md"}, "shortcut": {"inputAlias": "", "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "destinationDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "querySuggestions": {"person": {"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": {"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}}]}], "relatedQuestion": {"ranges": [{"startIndex": 862152, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}]}}}]}, "likes": {"likedBy": [], "likedByUser": true, "numLikes": 322563}, "author": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "verification": {"state": "DEPRECATED", "metadata": {"lastVerifier": {"name": "George Clooney", "obfuscatedId": "abc123"}, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "reminders": [{"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 37610}], "lastReminder": {"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 726314}, "candidateVerifiers": [{"name": "George Clooney", "obfuscatedId": "abc123"}]}}, "sourceDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}}, "error": {"answerAuthor": {"name": "George Clooney", "obfuscatedId": "abc123"}}} + application/json: {"answerResult": {"answer": {"id": 3, "docId": "ANSWERS_answer_3", "question": "Why is the sky blue?", "bodyText": "From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light.", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "addedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "VIEWER"}], "removedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "OWNER"}], "roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "VIEWER"}], "combinedAnswerText": {"text": "From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light.", "structuredList": [{"link": "https://en.wikipedia.org/wiki/Diffuse_sky_radiation", "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "text": "Because its wavelengths are shorter, blue light is more strongly scattered than the longer-wavelength lights, red or green. Hence the result that when looking at the sky away from the direct incident sunlight, the human eye perceives the sky to be blue.", "structuredResult": {"document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "customer": {"id": "", "company": {"name": "", "location": "New York City", "industry": "Finances", "about": "Financial, software, data, and media company headquartered in Midtown Manhattan, New York City"}, "poc": [{"name": "George Clooney", "obfuscatedId": "abc123"}], "mergedCustomers": [{"id": "", "company": {"name": "", "location": "New York City", "industry": "Finances", "about": "Financial, software, data, and media company headquartered in Midtown Manhattan, New York City"}, "notes": "CIO is interested in trying out the product."}], "notes": "CIO is interested in trying out the product."}, "team": {"id": "", "name": "", "members": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "relationship": "MEMBER"}], "customFields": [{"label": "", "values": [{}], "displayable": true}], "datasourceProfiles": [{"datasource": "github", "handle": ""}], "status": "PROCESSED", "canBeDeleted": true}, "customEntity": {}, "answer": {"id": 3, "docId": "ANSWERS_answer_3", "question": "Why is the sky blue?", "bodyText": "From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light.", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "combinedAnswerText": {"text": "From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light."}, "likes": {"likedBy": [], "likedByUser": true, "numLikes": 322563}, "author": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "verification": {"state": "DEPRECATED", "metadata": {"lastVerifier": {"name": "George Clooney", "obfuscatedId": "abc123"}, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "reminders": [{"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 37610}], "lastReminder": {"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 726314}, "candidateVerifiers": [{"name": "George Clooney", "obfuscatedId": "abc123"}]}}, "collections": [{"name": "", "description": "exactly besmirch fuss nor bookend safely aw optimistically usher miscalculate", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 966336, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "items": [{"collectionId": 648270, "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "shortcut": {"inputAlias": "", "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "destinationDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "collection": {"name": "", "description": "wilted ew hearten vestment gust", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 486539, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "unselfish regarding long calculating indolent twist", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 705775, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "itemType": "COLLECTION"}]}], "sourceDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "extractedQnA": {"questionResult": {"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"}}}}, "meeting": {"attendees": {"people": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "groupAttendees": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}]}}, "collection": {"name": "", "description": "wilted ew hearten vestment gust", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 486539, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "unselfish regarding long calculating indolent twist", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 705775, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "code": {"repoName": "scio", "fileName": "README.md"}, "shortcut": {"inputAlias": "", "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "destinationDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "querySuggestions": {"person": {"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": {"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}}]}], "relatedQuestion": {"ranges": [{"startIndex": 862152, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}]}}}]}, "likes": {"likedBy": [], "likedByUser": true, "numLikes": 322563}, "author": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "verification": {"state": "DEPRECATED", "metadata": {"lastVerifier": {"name": "George Clooney", "obfuscatedId": "abc123"}, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "Done", "customData": {"someCustomField": {"stringValue": "someCustomValue"}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "Done", "customData": {"someCustomField": {"stringValue": "someCustomValue"}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "Done", "customData": {"someCustomField": {"stringValue": "someCustomValue"}}}}, "reminders": [{"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 37610}], "lastReminder": {"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 726314}, "candidateVerifiers": [{"name": "George Clooney", "obfuscatedId": "abc123"}]}}, "sourceDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "Done", "customData": {"someCustomField": {"stringValue": "someCustomValue"}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "Done", "customData": {"someCustomField": {"stringValue": "someCustomValue"}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "Done", "customData": {"someCustomField": {"stringValue": "someCustomValue"}}}}}}, "error": {"answerAuthor": {"name": "George Clooney", "obfuscatedId": "abc123"}}} listanswers: speakeasy-default-listanswers: requestBody: @@ -6339,7 +10867,7 @@ examples: application/json: {"messages": [{"author": "USER", "fragments": [{"text": "Who was the first person to land on the moon?"}], "messageType": "CONTENT"}], "agentConfig": {"agent": "GPT"}} responses: "200": - application/json: {"messages": [{"author": "USER", "citations": [{"sourceDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "sourceFile": {"id": "FILE_1234", "url": "www.google.com", "name": "sample.pdf"}, "sourcePerson": {"name": "George Clooney", "obfuscatedId": "abc123"}, "referenceRanges": [{"textRange": {"startIndex": 831084, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "snippets": [{"mimeType": "mimeType", "snippet": "snippet"}]}]}], "fragments": [{"structuredResults": [{"document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "customer": {"id": "", "company": {"name": "", "location": "New York City", "industry": "Finances", "about": "Financial, software, data, and media company headquartered in Midtown Manhattan, New York City"}, "poc": [{"name": "George Clooney", "obfuscatedId": "abc123"}], "mergedCustomers": [{"id": "", "company": {"name": "", "location": "New York City", "industry": "Finances", "about": "Financial, software, data, and media company headquartered in Midtown Manhattan, New York City"}, "notes": "CIO is interested in trying out the product."}], "notes": "CIO is interested in trying out the product."}, "team": {"id": "", "name": "", "members": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "relationship": "MEMBER"}], "customFields": [{"label": "", "values": [{}], "displayable": true}], "datasourceProfiles": [{"datasource": "github", "handle": ""}], "status": "PROCESSED", "canBeDeleted": true}, "customEntity": {"roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "VIEWER"}]}, "answer": {"id": 3, "docId": "ANSWERS_answer_3", "question": "Why is the sky blue?", "bodyText": "From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light.", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "addedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "ANSWER_MODERATOR"}], "removedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "VERIFIER"}], "combinedAnswerText": {"text": "From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light.", "structuredList": [{"link": "https://en.wikipedia.org/wiki/Diffuse_sky_radiation", "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "text": "Because its wavelengths are shorter, blue light is more strongly scattered than the longer-wavelength lights, red or green. Hence the result that when looking at the sky away from the direct incident sunlight, the human eye perceives the sky to be blue.", "structuredResult": {"document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "customer": {"id": "", "company": {"name": "", "location": "New York City", "industry": "Finances", "about": "Financial, software, data, and media company headquartered in Midtown Manhattan, New York City"}, "poc": [{"name": "George Clooney", "obfuscatedId": "abc123"}], "mergedCustomers": [{"id": "", "company": {"name": "", "location": "New York City", "industry": "Finances", "about": "Financial, software, data, and media company headquartered in Midtown Manhattan, New York City"}, "notes": "CIO is interested in trying out the product."}], "notes": "CIO is interested in trying out the product."}, "team": {"id": "", "name": "", "members": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "relationship": "MEMBER"}], "customFields": [{"label": "", "values": [{}], "displayable": true}], "datasourceProfiles": [{"datasource": "github", "handle": ""}], "status": "PROCESSED", "canBeDeleted": true}, "customEntity": {"roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "VIEWER"}]}, "answer": {"id": 3, "docId": "ANSWERS_answer_3", "question": "Why is the sky blue?", "bodyText": "From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light.", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "combinedAnswerText": {"text": "From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light."}, "likes": {"likedBy": [], "likedByUser": false, "numLikes": 204638}, "author": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "verification": {"state": "UNVERIFIED", "metadata": {"lastVerifier": {"name": "George Clooney", "obfuscatedId": "abc123"}, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "reminders": [{"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 175584}], "lastReminder": {"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 100341}, "candidateVerifiers": [{"name": "George Clooney", "obfuscatedId": "abc123"}]}}, "collections": [{"name": "", "description": "or into as", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 547453, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "items": [{"collectionId": 741089, "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "shortcut": {"inputAlias": "", "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "destinationDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "collection": {"name": "", "description": "inside acknowledge painfully", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 902618, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "inwardly quietly clinch whether murky before ew diver that knottily", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 719075, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "itemType": "COLLECTION"}]}], "sourceDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "extractedQnA": {"questionResult": {"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"}}}}, "meeting": {"attendees": {"people": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "groupAttendees": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}]}}, "collection": {"name": "", "description": "inside acknowledge painfully", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 902618, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "inwardly quietly clinch whether murky before ew diver that knottily", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 719075, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "code": {"repoName": "scio", "fileName": "README.md"}, "shortcut": {"inputAlias": "", "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "destinationDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "querySuggestions": {"person": {"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": {"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}}]}], "relatedQuestion": {"ranges": [{"startIndex": 629124, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}]}}}]}, "likes": {"likedBy": [], "likedByUser": false, "numLikes": 204638}, "author": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "verification": {"state": "UNVERIFIED", "metadata": {"lastVerifier": {"name": "George Clooney", "obfuscatedId": "abc123"}, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "reminders": [{"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 175584}], "lastReminder": {"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 100341}, "candidateVerifiers": [{"name": "George Clooney", "obfuscatedId": "abc123"}]}}, "sourceDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "extractedQnA": {"questionResult": {"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"}}}}, "meeting": {"attendees": {"people": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "groupAttendees": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}]}}, "collection": {"name": "", "description": "inside acknowledge painfully", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 902618, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "inwardly quietly clinch whether murky before ew diver that knottily", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 719075, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "code": {"repoName": "scio", "fileName": "README.md"}, "shortcut": {"inputAlias": "", "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "destinationDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "querySuggestions": {"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}, "relatedQuestion": {"ranges": [{"startIndex": 629124, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}]}}], "querySuggestion": {"query": "app:github type:pull author:mortimer", "label": "Mortimer's PRs", "datasource": "github"}, "file": {"id": "FILE_1234", "url": "www.google.com", "name": "sample.pdf"}, "action": {"metadata": {"type": "RETRIEVAL", "name": "", "displayName": "Cecil20", "displayDescription": "", "objectName": "[\"HR ticket\",\"Email\",\"Chat message\"]"}}}], "messageType": "CONTENT"}], "backendTimeMillis": 1100} + application/json: {"messages": [{"author": "USER", "citations": [{"sourceDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "sourceFile": {"id": "FILE_1234", "url": "www.google.com", "name": "sample.pdf"}, "sourcePerson": {"name": "George Clooney", "obfuscatedId": "abc123"}, "referenceRanges": [{"textRange": {"startIndex": 831084, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "snippets": [{"mimeType": "mimeType", "snippet": "snippet"}]}]}], "fragments": [{"structuredResults": [{"document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "customer": {"id": "", "company": {"name": "", "location": "New York City", "industry": "Finances", "about": "Financial, software, data, and media company headquartered in Midtown Manhattan, New York City"}, "poc": [{"name": "George Clooney", "obfuscatedId": "abc123"}], "mergedCustomers": [{"id": "", "company": {"name": "", "location": "New York City", "industry": "Finances", "about": "Financial, software, data, and media company headquartered in Midtown Manhattan, New York City"}, "notes": "CIO is interested in trying out the product."}], "notes": "CIO is interested in trying out the product."}, "team": {"id": "", "name": "", "members": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "relationship": "MEMBER"}], "customFields": [{"label": "", "values": [{}], "displayable": true}], "datasourceProfiles": [{"datasource": "github", "handle": ""}], "status": "PROCESSED", "canBeDeleted": true}, "customEntity": {"roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "VIEWER"}]}, "answer": {"id": 3, "docId": "ANSWERS_answer_3", "question": "Why is the sky blue?", "bodyText": "From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light.", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "addedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "ANSWER_MODERATOR"}], "removedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "VERIFIER"}], "combinedAnswerText": {"text": "From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light.", "structuredList": [{"link": "https://en.wikipedia.org/wiki/Diffuse_sky_radiation", "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "text": "Because its wavelengths are shorter, blue light is more strongly scattered than the longer-wavelength lights, red or green. Hence the result that when looking at the sky away from the direct incident sunlight, the human eye perceives the sky to be blue.", "structuredResult": {"document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "customer": {"id": "", "company": {"name": "", "location": "New York City", "industry": "Finances", "about": "Financial, software, data, and media company headquartered in Midtown Manhattan, New York City"}, "poc": [{"name": "George Clooney", "obfuscatedId": "abc123"}], "mergedCustomers": [{"id": "", "company": {"name": "", "location": "New York City", "industry": "Finances", "about": "Financial, software, data, and media company headquartered in Midtown Manhattan, New York City"}, "notes": "CIO is interested in trying out the product."}], "notes": "CIO is interested in trying out the product."}, "team": {"id": "", "name": "", "members": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "relationship": "MEMBER"}], "customFields": [{"label": "", "values": [{}], "displayable": true}], "datasourceProfiles": [{"datasource": "github", "handle": ""}], "status": "PROCESSED", "canBeDeleted": true}, "customEntity": {"roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "VIEWER"}]}, "answer": {"id": 3, "docId": "ANSWERS_answer_3", "question": "Why is the sky blue?", "bodyText": "From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light.", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "combinedAnswerText": {"text": "From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light."}, "likes": {"likedBy": [], "likedByUser": false, "numLikes": 204638}, "author": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "verification": {"state": "UNVERIFIED", "metadata": {"lastVerifier": {"name": "George Clooney", "obfuscatedId": "abc123"}, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "reminders": [{"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 175584}], "lastReminder": {"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 100341}, "candidateVerifiers": [{"name": "George Clooney", "obfuscatedId": "abc123"}]}}, "collections": [{"name": "", "description": "or into as", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 547453, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "items": [{"collectionId": 741089, "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "shortcut": {"inputAlias": "", "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "destinationDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "collection": {"name": "", "description": "inside acknowledge painfully", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 902618, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "inwardly quietly clinch whether murky before ew diver that knottily", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 719075, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "itemType": "COLLECTION"}]}], "sourceDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "extractedQnA": {"questionResult": {"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"}}}}, "meeting": {"attendees": {"people": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "groupAttendees": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}]}}, "collection": {"name": "", "description": "inside acknowledge painfully", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 902618, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "inwardly quietly clinch whether murky before ew diver that knottily", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 719075, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "code": {"repoName": "scio", "fileName": "README.md"}, "shortcut": {"inputAlias": "", "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "destinationDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "querySuggestions": {"person": {"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": {"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}}]}], "relatedQuestion": {"ranges": [{"startIndex": 629124, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}]}}}]}, "likes": {"likedBy": [], "likedByUser": false, "numLikes": 204638}, "author": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "verification": {"state": "UNVERIFIED", "metadata": {"lastVerifier": {"name": "George Clooney", "obfuscatedId": "abc123"}, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "reminders": [{"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 175584}], "lastReminder": {"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 100341}, "candidateVerifiers": [{"name": "George Clooney", "obfuscatedId": "abc123"}]}}, "sourceDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "extractedQnA": {"questionResult": {"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"}}}}, "meeting": {"attendees": {"people": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "groupAttendees": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}]}}, "collection": {"name": "", "description": "inside acknowledge painfully", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 902618, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "inwardly quietly clinch whether murky before ew diver that knottily", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 719075, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "code": {"repoName": "scio", "fileName": "README.md"}, "shortcut": {"inputAlias": "", "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "destinationDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "querySuggestions": {"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}, "relatedQuestion": {"ranges": [{"startIndex": 629124, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}]}}], "querySuggestion": {"query": "app:github type:pull author:mortimer", "label": "Mortimer's PRs", "datasource": "github"}, "file": {"id": "FILE_1234", "url": "www.google.com", "name": "sample.pdf"}, "action": {"metadata": {"type": "RETRIEVAL", "name": "", "displayName": "Cecil20", "displayDescription": "", "objectName": "[\"HR ticket\",\"Email\",\"Chat message\"]"}}}], "messageType": "CONTENT"}], "chat": {"createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "icon": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}, "backendTimeMillis": 1100} streamingExample: requestBody: application/json: {"messages": [], "timeoutMillis": 30000} @@ -6370,11 +10898,13 @@ examples: responses: "200": application/json: {"chatResult": {"chat": {"createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "icon": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}, "messages": [{"author": "USER", "citations": [{"sourceDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "sourceFile": {"id": "FILE_1234", "url": "www.google.com", "name": "sample.pdf"}, "sourcePerson": {"name": "George Clooney", "obfuscatedId": "abc123"}, "referenceRanges": [{"textRange": {"startIndex": 641568, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "snippets": [{"mimeType": "mimeType", "snippet": "snippet"}]}]}], "fragments": [{"structuredResults": [{"document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "customer": {"id": "", "company": {"name": "", "location": "New York City", "industry": "Finances", "about": "Financial, software, data, and media company headquartered in Midtown Manhattan, New York City"}, "poc": [{"name": "George Clooney", "obfuscatedId": "abc123"}], "mergedCustomers": [{"id": "", "company": {"name": "", "location": "New York City", "industry": "Finances", "about": "Financial, software, data, and media company headquartered in Midtown Manhattan, New York City"}, "notes": "CIO is interested in trying out the product."}], "notes": "CIO is interested in trying out the product."}, "team": {"id": "", "name": "", "members": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "relationship": "MEMBER"}], "customFields": [{"label": "", "values": [{}], "displayable": true}], "datasourceProfiles": [{"datasource": "github", "handle": ""}], "status": "PROCESSED", "canBeDeleted": true}, "customEntity": {"roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "VIEWER"}]}, "answer": {"id": 3, "docId": "ANSWERS_answer_3", "question": "Why is the sky blue?", "bodyText": "From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light.", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "addedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "EDITOR"}], "removedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "VERIFIER"}], "combinedAnswerText": {"text": "From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light.", "structuredList": [{"link": "https://en.wikipedia.org/wiki/Diffuse_sky_radiation", "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "text": "Because its wavelengths are shorter, blue light is more strongly scattered than the longer-wavelength lights, red or green. Hence the result that when looking at the sky away from the direct incident sunlight, the human eye perceives the sky to be blue.", "structuredResult": {"document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "customer": {"id": "", "company": {"name": "", "location": "New York City", "industry": "Finances", "about": "Financial, software, data, and media company headquartered in Midtown Manhattan, New York City"}, "poc": [{"name": "George Clooney", "obfuscatedId": "abc123"}], "mergedCustomers": [{"id": "", "company": {"name": "", "location": "New York City", "industry": "Finances", "about": "Financial, software, data, and media company headquartered in Midtown Manhattan, New York City"}, "notes": "CIO is interested in trying out the product."}], "notes": "CIO is interested in trying out the product."}, "team": {"id": "", "name": "", "members": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "relationship": "MEMBER"}], "customFields": [{"label": "", "values": [{}], "displayable": true}], "datasourceProfiles": [{"datasource": "github", "handle": ""}], "status": "PROCESSED", "canBeDeleted": true}, "customEntity": {"roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "VIEWER"}]}, "answer": {"id": 3, "docId": "ANSWERS_answer_3", "question": "Why is the sky blue?", "bodyText": "From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light.", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "combinedAnswerText": {"text": "From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light."}, "likes": {"likedBy": [{"user": {"name": "George Clooney", "obfuscatedId": "abc123"}}], "likedByUser": true, "numLikes": 548232}, "author": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "verification": {"state": "DEPRECATED", "metadata": {"lastVerifier": {"name": "George Clooney", "obfuscatedId": "abc123"}, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "reminders": [{"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 728034}], "lastReminder": {"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 546319}, "candidateVerifiers": [{"name": "George Clooney", "obfuscatedId": "abc123"}]}}, "collections": [{"name": "", "description": "until nifty warmly nicely furthermore howl at", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 427851, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "items": [{"collectionId": 864473, "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "shortcut": {"inputAlias": "", "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "destinationDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "collection": {"name": "", "description": "scarification upon ack sometimes arrange contractor courageous tributary worthwhile jell", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 623437, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "bustling needily enroll", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 491436, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "itemType": "DOCUMENT"}]}], "sourceDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "extractedQnA": {"questionResult": {"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"}}}}, "meeting": {"attendees": {"people": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "groupAttendees": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}]}}, "collection": {"name": "", "description": "scarification upon ack sometimes arrange contractor courageous tributary worthwhile jell", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 623437, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "bustling needily enroll", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 491436, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "code": {"repoName": "scio", "fileName": "README.md"}, "shortcut": {"inputAlias": "", "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "destinationDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "querySuggestions": {"person": {"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": {"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}}]}], "relatedQuestion": {"ranges": [{"startIndex": 853389, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}]}}}]}, "likes": {"likedBy": [{"user": {"name": "George Clooney", "obfuscatedId": "abc123"}}], "likedByUser": true, "numLikes": 548232}, "author": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "verification": {"state": "DEPRECATED", "metadata": {"lastVerifier": {"name": "George Clooney", "obfuscatedId": "abc123"}, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "reminders": [{"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 728034}], "lastReminder": {"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 546319}, "candidateVerifiers": [{"name": "George Clooney", "obfuscatedId": "abc123"}]}}, "sourceDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "extractedQnA": {"questionResult": {"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"}}}}, "meeting": {"attendees": {"people": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "groupAttendees": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}]}}, "collection": {"name": "", "description": "scarification upon ack sometimes arrange contractor courageous tributary worthwhile jell", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 623437, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "bustling needily enroll", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 491436, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "code": {"repoName": "scio", "fileName": "README.md"}, "shortcut": {"inputAlias": "", "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "destinationDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "querySuggestions": {"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}, "relatedQuestion": {"ranges": [{"startIndex": 853389, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}]}}], "querySuggestion": {"query": "app:github type:pull author:mortimer", "label": "Mortimer's PRs", "datasource": "github"}, "file": {"id": "FILE_1234", "url": "www.google.com", "name": "sample.pdf"}, "action": {"metadata": {"type": "RETRIEVAL", "name": "", "displayName": "Stanford30", "displayDescription": "", "objectName": "[\"HR ticket\",\"Email\",\"Chat message\"]"}}}], "messageType": "CONTENT"}], "roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "EDITOR"}]}}} + "403": + application/json: {"errorType": "PERMISSION_DENIED", "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestableRoles": ["VERIFIER"], "hasPendingRequest": true} listchats: speakeasy-default-listchats: responses: "200": - application/json: {"chatResults": [{"chat": {"createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "icon": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}}]} + application/json: {"chatResults": [{"chat": {"createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "icon": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}}], "cursor": ""} getchatapplication: speakeasy-default-getchatapplication: requestBody: @@ -6439,6 +10969,8 @@ examples: responses: "200": application/json: {"agent_id": "mho4lwzylcozgoc2", "name": "HR Policy Agent", "description": "This agent answers questions about the current company HR policies.", "capabilities": {}} + "404": + application/json: {} getAgentSchemas: speakeasy-default-get-agent-schemas: parameters: @@ -6446,7 +10978,9 @@ examples: agent_id: "" responses: "200": - application/json: {"agent_id": "mho4lwzylcozgoc2", "input_schema": {}, "output_schema": {}} + application/json: {"agent_id": "mho4lwzylcozgoc2", "name": "HR Policy Agent", "input_schema": {}, "output_schema": {}} + "404": + application/json: {} searchAgents: speakeasy-default-search-agents: requestBody: @@ -6454,6 +10988,8 @@ examples: responses: "200": application/json: {"agents": [{"agent_id": "mho4lwzylcozgoc2", "name": "HR Policy Agent", "description": "This agent answers questions about the current company HR policies.", "capabilities": {}}]} + "404": + application/json: {} createAndStreamRun: speakeasy-default-create-and-stream-run: requestBody: @@ -6461,6 +10997,10 @@ examples: responses: "200": text/event-stream: "" + "404": + application/json: {} + "422": + application/json: {"message": "", "authenticationSuggestions": [{"requestType": "EXECUTION", "requestId": ""}]} createAndWaitRun: speakeasy-default-create-and-wait-run: requestBody: @@ -6468,6 +11008,8 @@ examples: responses: "200": application/json: {"run": {"agent_id": "", "messages": [{"role": "USER"}]}, "messages": [{"role": "USER"}]} + "422": + application/json: {"message": "", "authenticationSuggestions": []} addcollectionitems: speakeasy-default-addcollectionitems: requestBody: @@ -6543,10 +11085,10 @@ examples: getdocumentsbyfacets: speakeasy-default-getdocumentsbyfacets: requestBody: - application/json: {"filterSets": [{"filters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}]}]} + application/json: {"filterSets": [{"filters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}]}], "cursor": ""} responses: "200": - application/json: {"documents": [{"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}]} + application/json: {"documents": [{"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}], "cursor": ""} summarize: speakeasy-default-summarize: requestBody: @@ -6560,14 +11102,14 @@ examples: application/json: {} responses: "200": - application/json: {"users": {"activityInsights": [{"user": {"name": "George Clooney", "obfuscatedId": "abc123"}, "activity": "SEARCH"}], "inactiveInsights": [{"user": {"name": "George Clooney", "obfuscatedId": "abc123"}, "activity": "ALL"}]}, "content": {"documentInsights": [{"document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}]}, "collections": {"documentInsights": [{"document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}]}, "collectionsV2": {"documentInsights": [{"document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}]}, "shortcuts": {"shortcutInsights": [{"shortcut": {"inputAlias": "", "addedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "VIEWER"}], "removedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "ANSWER_MODERATOR"}], "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "destinationDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "EDITOR"}]}}]}, "announcements": {"documentInsights": [{"document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}]}, "answers": {"documentInsights": [{"document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}]}, "ai": {"assistantInsights": [{"user": {"name": "George Clooney", "obfuscatedId": "abc123"}, "activity": "SEARCH"}]}, "aiApps": {"aiAppInsights": [{"user": {"name": "George Clooney", "obfuscatedId": "abc123"}, "activity": "ALL"}]}, "gleanAssist": {"activityInsights": [{"user": {"name": "George Clooney", "obfuscatedId": "abc123"}, "activity": "SEARCH"}]}, "overviewResponse": {"perUserInsights": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "assistantResponse": {"perUserInsights": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "agentsResponse": {"topAgentsInsights": [{"icon": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}], "agentsUsageByDepartmentInsights": [{"icon": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}], "agentUsersInsights": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}} + application/json: {"gleanAssist": {"activityInsights": [{"user": {"name": "George Clooney", "obfuscatedId": "abc123"}, "activity": "SEARCH"}]}, "overviewResponse": {"perUserInsights": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "assistantResponse": {"perUserInsights": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "agentsResponse": {"topAgentsInsights": [{"icon": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}], "topUseCasesInsights": [{"topAgentIcon": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}], "agentsUsageByDepartmentInsights": [{"icon": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}], "agentUsersInsights": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}], "agentsTimeSavedInsights": [{"icon": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}, "mcpBreakdownResponse": {"usersBreakdown": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}} messages: speakeasy-default-messages: requestBody: application/json: {"idType": "CONVERSATION_ID", "id": "", "datasource": "GCHAT"} responses: "200": - application/json: {"hasMore": true, "searchResponse": {"trackingToken": "trackingToken", "results": [{"title": "title", "url": "https://www.example.com/", "snippets": [{"mimeType": "mimeType", "snippet": "snippet"}]}, {"title": "title", "url": "https://www.example.com/", "snippets": [{"mimeType": "mimeType", "snippet": "snippet"}]}], "errorInfo": {"errorMessages": [{"source": "gmail", "errorMessage": "invalid token"}, {"source": "slack", "errorMessage": "expired token"}]}, "requestID": "5e345ae500ff0befa2b9d1a3ba0001737e7363696f312d323535323137000171756572792d656e64706f696e743a323032303031333074313830343032000100", "facetResults": [{"sourceName": "sourceName", "operatorName": "operatorName", "buckets": [{"count": 1, "percentage": 5, "value": {"stringValue": "stringValue", "integerValue": 5}}, {"count": 1, "percentage": 5, "value": {"stringValue": "stringValue", "integerValue": 5}}]}, {"sourceName": "sourceName", "operatorName": "operatorName", "buckets": [{"count": 1, "percentage": 5, "value": {"stringValue": "stringValue", "integerValue": 5}}, {"count": 1, "percentage": 5, "value": {"stringValue": "stringValue", "integerValue": 5}}]}], "rewrittenFacetFilters": [{"fieldName": "fieldName", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Spreadsheet", "relationType": "EQUALS"}]}, {"fieldName": "fieldName", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Spreadsheet", "relationType": "EQUALS"}]}], "hasMoreResults": true}, "rootMessage": {"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"}}}} + application/json: {"hasMore": true, "searchResponse": {"trackingToken": "trackingToken", "results": [{"title": "title", "url": "https://www.example.com/", "snippets": [{"mimeType": "mimeType", "snippet": "snippet"}]}, {"title": "title", "url": "https://www.example.com/", "snippets": [{"mimeType": "mimeType", "snippet": "snippet"}]}], "errorInfo": {"errorMessages": [{"source": "gmail", "errorMessage": "invalid token"}, {"source": "slack", "errorMessage": "expired token"}]}, "requestID": "5e345ae500ff0befa2b9d1a3ba0001737e7363696f312d323535323137000171756572792d656e64706f696e743a323032303031333074313830343032000100", "facetResults": [{"sourceName": "sourceName", "operatorName": "operatorName", "buckets": [{"count": 1, "percentage": 5, "value": {"stringValue": "stringValue", "integerValue": 5}}, {"count": 1, "percentage": 5, "value": {"stringValue": "stringValue", "integerValue": 5}}]}, {"sourceName": "sourceName", "operatorName": "operatorName", "buckets": [{"count": 1, "percentage": 5, "value": {"stringValue": "stringValue", "integerValue": 5}}, {"count": 1, "percentage": 5, "value": {"stringValue": "stringValue", "integerValue": 5}}]}], "rewrittenFacetFilters": [{"fieldName": "fieldName", "values": [{"value": "fieldValues", "relationType": "EQUALS"}, {"value": "fieldValues", "relationType": "EQUALS"}]}, {"fieldName": "fieldName", "values": [{"value": "fieldValues", "relationType": "EQUALS"}, {"value": "fieldValues", "relationType": "EQUALS"}]}], "hasMoreResults": true}, "rootMessage": {"title": "title", "url": "https://example.com/foo/bar", "nativeAppUrl": "slack://foo/bar", "snippets": [{"mimeType": "mimeType", "snippet": "snippet"}], "mustIncludeSuggestions": {"suggestions": [{"missingTerm": "container", "query": "container"}]}}} editpin: speakeasy-default-editpin: requestBody: @@ -6606,7 +11148,7 @@ examples: application/json: {"trackingToken": "trackingToken", "pageSize": 10, "query": "vacation policy", "requestOptions": {"facetFilters": [{"fieldName": "type", "values": [{"value": "article", "relationType": "EQUALS"}, {"value": "document", "relationType": "EQUALS"}]}, {"fieldName": "department", "values": [{"value": "engineering", "relationType": "EQUALS"}]}], "facetBucketSize": 723824}} responses: "200": - application/json: {"trackingToken": "trackingToken", "results": [{"title": "title", "url": "https://www.example.com/", "snippets": [{"mimeType": "mimeType", "snippet": "snippet"}]}, {"title": "title", "url": "https://www.example.com/", "snippets": [{"mimeType": "mimeType", "snippet": "snippet"}]}], "errorInfo": {"errorMessages": [{"source": "gmail", "errorMessage": "invalid token"}, {"source": "slack", "errorMessage": "expired token"}]}, "requestID": "5e345ae500ff0befa2b9d1a3ba0001737e7363696f312d323535323137000171756572792d656e64706f696e743a323032303031333074313830343032000100", "facetResults": [{"sourceName": "sourceName", "operatorName": "operatorName", "buckets": [{"count": 1, "percentage": 5, "value": {"stringValue": "stringValue", "integerValue": 5}}, {"count": 1, "percentage": 5, "value": {"stringValue": "stringValue", "integerValue": 5}}]}, {"sourceName": "sourceName", "operatorName": "operatorName", "buckets": [{"count": 1, "percentage": 5, "value": {"stringValue": "stringValue", "integerValue": 5}}, {"count": 1, "percentage": 5, "value": {"stringValue": "stringValue", "integerValue": 5}}]}], "rewrittenFacetFilters": [{"fieldName": "fieldName", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Spreadsheet", "relationType": "EQUALS"}]}, {"fieldName": "fieldName", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Spreadsheet", "relationType": "EQUALS"}]}], "hasMoreResults": true} + application/json: {"trackingToken": "trackingToken", "results": [{"title": "title", "url": "https://www.example.com/", "snippets": [{"mimeType": "mimeType", "snippet": "snippet"}]}, {"title": "title", "url": "https://www.example.com/", "snippets": [{"mimeType": "mimeType", "snippet": "snippet"}]}], "errorInfo": {"errorMessages": [{"source": "gmail", "errorMessage": "invalid token"}, {"source": "slack", "errorMessage": "expired token"}]}, "requestID": "5e345ae500ff0befa2b9d1a3ba0001737e7363696f312d323535323137000171756572792d656e64706f696e743a323032303031333074313830343032000100", "facetResults": [{"sourceName": "sourceName", "operatorName": "operatorName", "buckets": [{"count": 1, "percentage": 5, "value": {"stringValue": "stringValue", "integerValue": 5}}, {"count": 1, "percentage": 5, "value": {"stringValue": "stringValue", "integerValue": 5}}]}, {"sourceName": "sourceName", "operatorName": "operatorName", "buckets": [{"count": 1, "percentage": 5, "value": {"stringValue": "stringValue", "integerValue": 5}}, {"count": 1, "percentage": 5, "value": {"stringValue": "stringValue", "integerValue": 5}}]}], "rewrittenFacetFilters": [{"fieldName": "fieldName", "values": [{"value": "fieldValues", "relationType": "EQUALS"}, {"value": "fieldValues", "relationType": "EQUALS"}]}, {"fieldName": "fieldName", "values": [{"value": "fieldValues", "relationType": "EQUALS"}, {"value": "fieldValues", "relationType": "EQUALS"}]}], "hasMoreResults": true} "403": application/json: {} autocomplete: @@ -6626,26 +11168,26 @@ examples: recommendations: speakeasy-default-recommendations: requestBody: - application/json: {"sourceDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "pageSize": 100, "maxSnippetSize": 400, "requestOptions": {"facetFilterSets": [{"filters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}]}], "context": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}} + application/json: {"sourceDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "Done", "customData": {"someCustomField": {"stringValue": "someCustomValue"}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "Done", "customData": {"someCustomField": {"stringValue": "someCustomValue"}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "Done", "customData": {"someCustomField": {"stringValue": "someCustomValue"}}}}, "pageSize": 100, "maxSnippetSize": 400, "requestOptions": {"facetFilterSets": [{"filters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}]}], "context": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "Done", "customData": {"someCustomField": {"stringValue": "someCustomValue"}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "Done", "customData": {"someCustomField": {"stringValue": "someCustomValue"}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "Done", "customData": {"someCustomField": {"stringValue": "someCustomValue"}}}}}} responses: "200": - application/json: {"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"}}}], "structuredResults": [{"document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "customer": {"id": "", "company": {"name": "", "location": "New York City", "industry": "Finances", "about": "Financial, software, data, and media company headquartered in Midtown Manhattan, New York City"}, "poc": [{"name": "George Clooney", "obfuscatedId": "abc123"}], "mergedCustomers": [{"id": "", "company": {"name": "", "location": "New York City", "industry": "Finances", "about": "Financial, software, data, and media company headquartered in Midtown Manhattan, New York City"}, "notes": "CIO is interested in trying out the product."}], "notes": "CIO is interested in trying out the product."}, "team": {"id": "", "name": "", "members": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "relationship": "MEMBER"}], "customFields": [{"label": "", "values": [], "displayable": true}], "datasourceProfiles": [{"datasource": "github", "handle": ""}], "status": "PROCESSED", "canBeDeleted": true}, "customEntity": {"roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "EDITOR"}]}, "answer": {"id": 3, "docId": "ANSWERS_answer_3", "question": "Why is the sky blue?", "bodyText": "From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light.", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "addedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "EDITOR"}], "removedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "ANSWER_MODERATOR"}], "combinedAnswerText": {"text": "From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light.", "structuredList": [{"link": "https://en.wikipedia.org/wiki/Diffuse_sky_radiation", "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "text": "Because its wavelengths are shorter, blue light is more strongly scattered than the longer-wavelength lights, red or green. Hence the result that when looking at the sky away from the direct incident sunlight, the human eye perceives the sky to be blue.", "structuredResult": {"document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "customer": {"id": "", "company": {"name": "", "location": "New York City", "industry": "Finances", "about": "Financial, software, data, and media company headquartered in Midtown Manhattan, New York City"}, "poc": [{"name": "George Clooney", "obfuscatedId": "abc123"}], "mergedCustomers": [{"id": "", "company": {"name": "", "location": "New York City", "industry": "Finances", "about": "Financial, software, data, and media company headquartered in Midtown Manhattan, New York City"}, "notes": "CIO is interested in trying out the product."}], "notes": "CIO is interested in trying out the product."}, "team": {"id": "", "name": "", "members": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "relationship": "MEMBER"}], "customFields": [{"label": "", "values": [], "displayable": true}], "datasourceProfiles": [{"datasource": "github", "handle": ""}], "status": "PROCESSED", "canBeDeleted": true}, "customEntity": {"roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "EDITOR"}]}, "answer": {"id": 3, "docId": "ANSWERS_answer_3", "question": "Why is the sky blue?", "bodyText": "From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light.", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "combinedAnswerText": {"text": "From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light."}, "likes": {"likedBy": [{"user": {"name": "George Clooney", "obfuscatedId": "abc123"}}], "likedByUser": true, "numLikes": 252096}, "author": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "verification": {"state": "VERIFIED", "metadata": {"lastVerifier": {"name": "George Clooney", "obfuscatedId": "abc123"}, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "reminders": [{"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 321130}], "lastReminder": {"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 284307}, "candidateVerifiers": [{"name": "George Clooney", "obfuscatedId": "abc123"}]}}, "collections": [{"name": "", "description": "untimely underneath boo", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 106210, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "items": [{"collectionId": 502218, "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "shortcut": {"inputAlias": "", "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "destinationDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "collection": {"name": "", "description": "than ew cycle beyond twist", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 612012, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "furlough lest hydrant past unto ah", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 234815, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "itemType": "COLLECTION"}]}], "sourceDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "extractedQnA": {"questionResult": {"title": "title", "url": "https://example.com/foo/bar", "nativeAppUrl": "slack://foo/bar", "snippets": [{"mimeType": "mimeType", "snippet": "snippet"}], "mustIncludeSuggestions": {"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}}}, "meeting": {"attendees": {"people": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "groupAttendees": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}]}}, "collection": {"name": "", "description": "than ew cycle beyond twist", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 612012, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "furlough lest hydrant past unto ah", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 234815, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "code": {"repoName": "scio", "fileName": "README.md"}, "shortcut": {"inputAlias": "", "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "destinationDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "querySuggestions": {"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}, "relatedDocuments": [{"querySuggestion": {"query": "app:github type:pull author:mortimer", "label": "Mortimer's PRs", "datasource": "github"}}], "relatedQuestion": {"ranges": [{"startIndex": 710108, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}]}}}]}, "likes": {"likedBy": [{"user": {"name": "George Clooney", "obfuscatedId": "abc123"}}], "likedByUser": true, "numLikes": 252096}, "author": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "verification": {"state": "VERIFIED", "metadata": {"lastVerifier": {"name": "George Clooney", "obfuscatedId": "abc123"}, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "reminders": [{"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 321130}], "lastReminder": {"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 284307}, "candidateVerifiers": [{"name": "George Clooney", "obfuscatedId": "abc123"}]}}, "sourceDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "extractedQnA": {"questionResult": {"title": "title", "url": "https://example.com/foo/bar", "nativeAppUrl": "slack://foo/bar", "snippets": [{"mimeType": "mimeType", "snippet": "snippet"}], "mustIncludeSuggestions": {"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}}}, "meeting": {"attendees": {"people": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "groupAttendees": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}]}}, "collection": {"name": "", "description": "than ew cycle beyond twist", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 612012, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "furlough lest hydrant past unto ah", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 234815, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "code": {"repoName": "scio", "fileName": "README.md"}, "shortcut": {"inputAlias": "", "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "destinationDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "querySuggestions": {"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}, "relatedQuestion": {"ranges": [{"startIndex": 710108, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}]}}], "generatedQnaResult": {"ranges": [{"startIndex": 710108, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}]}, "backendTimeMillis": 1100} + application/json: {"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"}}}], "structuredResults": [{"document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "customer": {"id": "", "company": {"name": "", "location": "New York City", "industry": "Finances", "about": "Financial, software, data, and media company headquartered in Midtown Manhattan, New York City"}, "poc": [{"name": "George Clooney", "obfuscatedId": "abc123"}], "mergedCustomers": [{"id": "", "company": {"name": "", "location": "New York City", "industry": "Finances", "about": "Financial, software, data, and media company headquartered in Midtown Manhattan, New York City"}, "notes": "CIO is interested in trying out the product."}], "notes": "CIO is interested in trying out the product."}, "team": {"id": "", "name": "", "members": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "relationship": "MEMBER"}], "customFields": [{"label": "", "values": [], "displayable": true}], "datasourceProfiles": [{"datasource": "github", "handle": ""}], "status": "PROCESSED", "canBeDeleted": true}, "customEntity": {"roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "EDITOR"}]}, "answer": {"id": 3, "docId": "ANSWERS_answer_3", "question": "Why is the sky blue?", "bodyText": "From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light.", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "addedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "EDITOR"}], "removedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "ANSWER_MODERATOR"}], "combinedAnswerText": {"text": "From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light.", "structuredList": [{"link": "https://en.wikipedia.org/wiki/Diffuse_sky_radiation", "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "text": "Because its wavelengths are shorter, blue light is more strongly scattered than the longer-wavelength lights, red or green. Hence the result that when looking at the sky away from the direct incident sunlight, the human eye perceives the sky to be blue.", "structuredResult": {"document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "customer": {"id": "", "company": {"name": "", "location": "New York City", "industry": "Finances", "about": "Financial, software, data, and media company headquartered in Midtown Manhattan, New York City"}, "poc": [{"name": "George Clooney", "obfuscatedId": "abc123"}], "mergedCustomers": [{"id": "", "company": {"name": "", "location": "New York City", "industry": "Finances", "about": "Financial, software, data, and media company headquartered in Midtown Manhattan, New York City"}, "notes": "CIO is interested in trying out the product."}], "notes": "CIO is interested in trying out the product."}, "team": {"id": "", "name": "", "members": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "relationship": "MEMBER"}], "customFields": [{"label": "", "values": [], "displayable": true}], "datasourceProfiles": [{"datasource": "github", "handle": ""}], "status": "PROCESSED", "canBeDeleted": true}, "customEntity": {"roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "EDITOR"}]}, "answer": {"id": 3, "docId": "ANSWERS_answer_3", "question": "Why is the sky blue?", "bodyText": "From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light.", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "combinedAnswerText": {"text": "From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light."}, "likes": {"likedBy": [{"user": {"name": "George Clooney", "obfuscatedId": "abc123"}}], "likedByUser": true, "numLikes": 252096}, "author": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "verification": {"state": "VERIFIED", "metadata": {"lastVerifier": {"name": "George Clooney", "obfuscatedId": "abc123"}, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "reminders": [{"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 321130}], "lastReminder": {"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 284307}, "candidateVerifiers": [{"name": "George Clooney", "obfuscatedId": "abc123"}]}}, "collections": [{"name": "", "description": "untimely underneath boo", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 106210, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "items": [{"collectionId": 502218, "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "shortcut": {"inputAlias": "", "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "destinationDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "collection": {"name": "", "description": "than ew cycle beyond twist", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 612012, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "furlough lest hydrant past unto ah", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 234815, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "itemType": "COLLECTION"}]}], "sourceDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "extractedQnA": {"questionResult": {"title": "title", "url": "https://example.com/foo/bar", "nativeAppUrl": "slack://foo/bar", "snippets": [{"mimeType": "mimeType", "snippet": "snippet"}], "mustIncludeSuggestions": {"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}}}, "meeting": {"attendees": {"people": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "groupAttendees": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}]}}, "collection": {"name": "", "description": "than ew cycle beyond twist", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 612012, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "furlough lest hydrant past unto ah", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 234815, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "code": {"repoName": "scio", "fileName": "README.md"}, "shortcut": {"inputAlias": "", "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "destinationDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "querySuggestions": {"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}, "relatedDocuments": [{"querySuggestion": {"query": "app:github type:pull author:mortimer", "label": "Mortimer's PRs", "datasource": "github"}}], "relatedQuestion": {"ranges": [{"startIndex": 710108, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}]}}}]}, "likes": {"likedBy": [{"user": {"name": "George Clooney", "obfuscatedId": "abc123"}}], "likedByUser": true, "numLikes": 252096}, "author": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "verification": {"state": "VERIFIED", "metadata": {"lastVerifier": {"name": "George Clooney", "obfuscatedId": "abc123"}, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "reminders": [{"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 321130}], "lastReminder": {"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 284307}, "candidateVerifiers": [{"name": "George Clooney", "obfuscatedId": "abc123"}]}}, "sourceDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "extractedQnA": {"questionResult": {"title": "title", "url": "https://example.com/foo/bar", "nativeAppUrl": "slack://foo/bar", "snippets": [{"mimeType": "mimeType", "snippet": "snippet"}], "mustIncludeSuggestions": {"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}}}, "meeting": {"attendees": {"people": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "groupAttendees": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}]}}, "collection": {"name": "", "description": "than ew cycle beyond twist", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 612012, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "furlough lest hydrant past unto ah", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 234815, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "code": {"repoName": "scio", "fileName": "README.md"}, "shortcut": {"inputAlias": "", "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "destinationDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "querySuggestions": {"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}, "relatedQuestion": {"ranges": [{"startIndex": 710108, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}]}}], "generatedQnaResult": {"ranges": [{"startIndex": 710108, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}], "cursor": ""}, "backendTimeMillis": 1100} search: speakeasy-default-search: requestBody: application/json: {"trackingToken": "trackingToken", "pageSize": 10, "query": "vacation policy", "requestOptions": {"facetFilters": [{"fieldName": "type", "values": [{"value": "article", "relationType": "EQUALS"}, {"value": "document", "relationType": "EQUALS"}]}, {"fieldName": "department", "values": [{"value": "engineering", "relationType": "EQUALS"}]}], "facetBucketSize": 939520}} responses: "200": - application/json: {"trackingToken": "trackingToken", "results": [{"title": "title", "url": "https://www.example.com/", "snippets": [{"mimeType": "mimeType", "snippet": "snippet"}]}, {"title": "title", "url": "https://www.example.com/", "snippets": [{"mimeType": "mimeType", "snippet": "snippet"}]}], "errorInfo": {"errorMessages": [{"source": "gmail", "errorMessage": "invalid token"}, {"source": "slack", "errorMessage": "expired token"}]}, "requestID": "5e345ae500ff0befa2b9d1a3ba0001737e7363696f312d323535323137000171756572792d656e64706f696e743a323032303031333074313830343032000100", "facetResults": [{"sourceName": "sourceName", "operatorName": "operatorName", "buckets": [{"count": 1, "percentage": 5, "value": {"stringValue": "stringValue", "integerValue": 5}}, {"count": 1, "percentage": 5, "value": {"stringValue": "stringValue", "integerValue": 5}}]}, {"sourceName": "sourceName", "operatorName": "operatorName", "buckets": [{"count": 1, "percentage": 5, "value": {"stringValue": "stringValue", "integerValue": 5}}, {"count": 1, "percentage": 5, "value": {"stringValue": "stringValue", "integerValue": 5}}]}], "rewrittenFacetFilters": [{"fieldName": "fieldName", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Spreadsheet", "relationType": "EQUALS"}]}, {"fieldName": "fieldName", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Spreadsheet", "relationType": "EQUALS"}]}], "hasMoreResults": true} + application/json: {"trackingToken": "trackingToken", "results": [{"title": "title", "url": "https://www.example.com/", "snippets": [{"mimeType": "mimeType", "snippet": "snippet"}]}, {"title": "title", "url": "https://www.example.com/", "snippets": [{"mimeType": "mimeType", "snippet": "snippet"}]}], "errorInfo": {"errorMessages": [{"source": "gmail", "errorMessage": "invalid token"}, {"source": "slack", "errorMessage": "expired token"}]}, "requestID": "5e345ae500ff0befa2b9d1a3ba0001737e7363696f312d323535323137000171756572792d656e64706f696e743a323032303031333074313830343032000100", "facetResults": [{"sourceName": "sourceName", "operatorName": "operatorName", "buckets": [{"count": 1, "percentage": 5, "value": {"stringValue": "stringValue", "integerValue": 5}}, {"count": 1, "percentage": 5, "value": {"stringValue": "stringValue", "integerValue": 5}}]}, {"sourceName": "sourceName", "operatorName": "operatorName", "buckets": [{"count": 1, "percentage": 5, "value": {"stringValue": "stringValue", "integerValue": 5}}, {"count": 1, "percentage": 5, "value": {"stringValue": "stringValue", "integerValue": 5}}]}], "rewrittenFacetFilters": [{"fieldName": "fieldName", "values": [{"value": "fieldValues", "relationType": "EQUALS"}, {"value": "fieldValues", "relationType": "EQUALS"}]}, {"fieldName": "fieldName", "values": [{"value": "fieldValues", "relationType": "EQUALS"}, {"value": "fieldValues", "relationType": "EQUALS"}]}], "hasMoreResults": true} "403": application/json: {} listentities: speakeasy-default-listentities: requestBody: - application/json: {"filter": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "entityType": "PEOPLE", "pageSize": 100, "requestType": "STANDARD"} + application/json: {"filter": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "entityType": "PEOPLE", "pageSize": 100, "cursor": "", "requestType": "STANDARD"} responses: "200": - application/json: {"results": [{"name": "George Clooney", "obfuscatedId": "abc123"}], "teamResults": [{"id": "", "name": "", "members": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "relationship": "MEMBER"}], "customFields": [{"label": "", "values": [], "displayable": true}], "datasourceProfiles": [{"datasource": "github", "handle": ""}], "status": "PROCESSED", "canBeDeleted": true}], "customEntityResults": [{"roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "OWNER"}]}], "facetResults": [{"sourceName": "container_name", "operatorName": "SelectMultiple", "buckets": [{"count": 1, "datasource": "jira", "percentage": 5, "value": {"stringValue": "engineering", "integerValue": 5, "displayLabel": "engineering", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}}], "hasMoreBuckets": false, "groupName": "Service Cloud"}]} + application/json: {"results": [{"name": "George Clooney", "obfuscatedId": "abc123"}], "teamResults": [{"id": "", "name": "", "members": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "relationship": "MEMBER"}], "customFields": [{"label": "", "values": [], "displayable": true}], "datasourceProfiles": [{"datasource": "github", "handle": ""}], "status": "PROCESSED", "canBeDeleted": true}], "customEntityResults": [{"roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "OWNER"}]}], "facetResults": [{"sourceName": "container_name", "operatorName": "SelectMultiple", "buckets": [{"count": 1, "datasource": "jira", "percentage": 5, "value": {"stringValue": "engineering", "integerValue": 5, "displayLabel": "engineering", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}}], "hasMoreBuckets": false, "groupName": "Service Cloud"}], "cursor": ""} people: speakeasy-default-people: requestBody: @@ -6659,7 +11201,7 @@ examples: application/json: {"data": {"addedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "VERIFIER"}], "removedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "VIEWER"}]}} responses: "200": - application/json: {"shortcut": {"inputAlias": "", "addedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "VERIFIER"}], "removedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "VIEWER"}], "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "destinationDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "VERIFIER"}]}} + application/json: {"shortcut": {"inputAlias": "", "addedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "VERIFIER"}], "removedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "VIEWER"}], "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "destinationDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "Done", "customData": {"someCustomField": {"stringValue": "someCustomValue"}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "Done", "customData": {"someCustomField": {"stringValue": "someCustomValue"}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "Done", "customData": {"someCustomField": {"stringValue": "someCustomValue"}}}}, "roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "VERIFIER"}]}} deleteshortcut: speakeasy-default-deleteshortcut: requestBody: @@ -6670,28 +11212,28 @@ examples: application/json: {"alias": ""} responses: "200": - application/json: {"shortcut": {"inputAlias": "", "addedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "VERIFIER"}], "removedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "EDITOR"}], "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "destinationDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "EDITOR"}]}} + application/json: {"shortcut": {"inputAlias": "", "addedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "VERIFIER"}], "removedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "EDITOR"}], "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "destinationDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "Done", "customData": {"someCustomField": {"stringValue": "someCustomValue"}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "Done", "customData": {"someCustomField": {"stringValue": "someCustomValue"}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "Done", "customData": {"someCustomField": {"stringValue": "someCustomValue"}}}}, "roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "EDITOR"}]}} listshortcuts: speakeasy-default-listshortcuts: requestBody: - application/json: {"pageSize": 10, "filters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}]} + application/json: {"pageSize": 10, "cursor": "", "filters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}]} responses: "200": - application/json: {"shortcuts": [], "facetResults": [{"sourceName": "container_name", "operatorName": "SelectMultiple", "buckets": [{"count": 1, "datasource": "jira", "percentage": 5, "value": {"stringValue": "engineering", "integerValue": 5, "displayLabel": "engineering", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}}], "hasMoreBuckets": false, "groupName": "Service Cloud"}], "meta": {}} + application/json: {"shortcuts": [], "facetResults": [{"sourceName": "container_name", "operatorName": "SelectMultiple", "buckets": [{"count": 1, "datasource": "jira", "percentage": 5, "value": {"stringValue": "engineering", "integerValue": 5, "displayLabel": "engineering", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}}], "hasMoreBuckets": false, "groupName": "Service Cloud"}], "meta": {"cursor": ""}} updateshortcut: speakeasy-default-updateshortcut: requestBody: application/json: {"id": 268238, "addedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "ANSWER_MODERATOR"}], "removedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "ANSWER_MODERATOR"}]} responses: "200": - application/json: {"shortcut": {"inputAlias": "", "addedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "ANSWER_MODERATOR"}], "removedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "ANSWER_MODERATOR"}], "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "destinationDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "ANSWER_MODERATOR"}]}} + application/json: {"shortcut": {"inputAlias": "", "addedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "ANSWER_MODERATOR"}], "removedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "ANSWER_MODERATOR"}], "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "destinationDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "Done", "customData": {"someCustomField": {"stringValue": "someCustomValue"}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "Done", "customData": {"someCustomField": {"stringValue": "someCustomValue"}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "Done", "customData": {"someCustomField": {"stringValue": "someCustomValue"}}}}, "roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "ANSWER_MODERATOR"}]}} addverificationreminder: speakeasy-default-addverificationreminder: requestBody: application/json: {"documentId": ""} responses: "200": - application/json: {"state": "DEPRECATED", "metadata": {"lastVerifier": {"name": "George Clooney", "obfuscatedId": "abc123"}, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "reminders": [{"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 524110}], "lastReminder": {"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 100145}, "candidateVerifiers": [{"name": "George Clooney", "obfuscatedId": "abc123"}]}} + application/json: {"state": "DEPRECATED", "metadata": {"lastVerifier": {"name": "George Clooney", "obfuscatedId": "abc123"}, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "Done", "customData": {"someCustomField": {"stringValue": "someCustomValue"}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "Done", "customData": {"someCustomField": {"stringValue": "someCustomValue"}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "Done", "customData": {"someCustomField": {"stringValue": "someCustomValue"}}}}, "reminders": [{"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 524110}], "lastReminder": {"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 100145}, "candidateVerifiers": [{"name": "George Clooney", "obfuscatedId": "abc123"}]}} listverifications: speakeasy-default-listverifications: responses: @@ -6703,7 +11245,7 @@ examples: application/json: {"documentId": ""} responses: "200": - application/json: {"state": "UNVERIFIED", "metadata": {"lastVerifier": {"name": "George Clooney", "obfuscatedId": "abc123"}, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "reminders": [{"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 415447}], "lastReminder": {"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 376840}, "candidateVerifiers": [{"name": "George Clooney", "obfuscatedId": "abc123"}]}} + application/json: {"state": "UNVERIFIED", "metadata": {"lastVerifier": {"name": "George Clooney", "obfuscatedId": "abc123"}, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "Done", "customData": {"someCustomField": {"stringValue": "someCustomValue"}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "Done", "customData": {"someCustomField": {"stringValue": "someCustomValue"}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "Done", "customData": {"someCustomField": {"stringValue": "someCustomValue"}}}}, "reminders": [{"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 415447}], "lastReminder": {"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 376840}, "candidateVerifiers": [{"name": "George Clooney", "obfuscatedId": "abc123"}]}} get_/rest/api/v1/tools/list: speakeasy-default-get-/rest/api/v1-/tools/list: responses: @@ -6813,9 +11355,11 @@ examples: datasource: "" requestBody: application/json; charset=UTF-8: {"objectType": "Article", "docId": "art123"} + application/json: {"objectType": "Article", "docId": "art123"} responses: "200": application/json; charset=UTF-8: {"status": {"uploadStatus": "UPLOADED", "lastUploadedAt": "2021-08-06T17:58:01.000Z", "indexingStatus": "INDEXED", "lastIndexedAt": "2021-08-06T17:58:01.000Z", "permissionIdentityStatus": "UPLOADED"}} + application/json: {"status": {"uploadStatus": "UPLOADED", "lastUploadedAt": "2021-08-06T17:58:01.000Z", "indexingStatus": "INDEXED", "lastIndexedAt": "2021-08-06T17:58:01.000Z", "permissionIdentityStatus": "UPLOADED"}} post_/api/index/v1/debug/{datasource}/documents: speakeasy-default-post-/api/index/v1-/debug/{datasource}/documents: parameters: @@ -6823,9 +11367,11 @@ examples: datasource: "" requestBody: application/json; charset=UTF-8: {"debugDocuments": []} + application/json: {"debugDocuments": []} responses: "200": application/json; charset=UTF-8: {"documentStatuses": [{"debugInfo": {"status": {"uploadStatus": "UPLOADED", "lastUploadedAt": "2021-08-06T17:58:01.000Z", "indexingStatus": "INDEXED", "lastIndexedAt": "2021-08-06T17:58:01.000Z", "permissionIdentityStatus": "UPLOADED"}}}]} + application/json: {"documentStatuses": [{"debugInfo": {"status": {"uploadStatus": "UPLOADED", "lastUploadedAt": "2021-08-06T17:58:01.000Z", "indexingStatus": "INDEXED", "lastIndexedAt": "2021-08-06T17:58:01.000Z", "permissionIdentityStatus": "UPLOADED"}}}]} post_/api/index/v1/checkdocumentaccess: speakeasy-default-post-/api/index/v1-/checkdocumentaccess: requestBody: @@ -6900,6 +11446,7 @@ examples: responses: "200": application/json; charset=UTF-8: {"documents": {"bulkUploadHistory": [{"uploadId": "upload-id-content-1707403081", "startTime": "2021-08-06T17:58:01.000Z", "endTime": "2021-08-06T18:58:01.000Z", "status": "SUCCESSFUL", "processingState": "UPLOAD COMPLETED"}], "counts": {"uploaded": [{"objectType": "Article", "count": 15}], "indexed": [{"objectType": "Article", "count": 15}]}, "processingHistory": [{"startTime": "2021-08-06T17:58:01.000Z", "endTime": "2021-08-06T18:58:01.000Z"}]}, "identity": {"processingHistory": [{"startTime": "2021-08-06T17:58:01.000Z", "endTime": "2021-08-06T18:58:01.000Z"}], "users": {"bulkUploadHistory": [{"uploadId": "upload-id-content-1707403081", "startTime": "2021-08-06T17:58:01.000Z", "endTime": "2021-08-06T18:58:01.000Z", "status": "SUCCESSFUL", "processingState": "UPLOAD COMPLETED"}], "counts": {"uploaded": 15}}, "groups": {"bulkUploadHistory": [{"uploadId": "upload-id-content-1707403081", "startTime": "2021-08-06T17:58:01.000Z", "endTime": "2021-08-06T18:58:01.000Z", "status": "SUCCESSFUL", "processingState": "UPLOAD COMPLETED"}], "counts": {"uploaded": 15}}, "memberships": {"bulkUploadHistory": [{"uploadId": "upload-id-content-1707403081", "startTime": "2021-08-06T17:58:01.000Z", "endTime": "2021-08-06T18:58:01.000Z", "status": "SUCCESSFUL", "processingState": "UPLOAD COMPLETED"}], "counts": {"uploaded": 15}}}, "datasourceVisibility": "ENABLED_FOR_ALL"} + application/json: {"documents": {"bulkUploadHistory": [{"uploadId": "upload-id-content-1707403081", "startTime": "2021-08-06T17:58:01.000Z", "endTime": "2021-08-06T18:58:01.000Z", "status": "SUCCESSFUL", "processingState": "UPLOAD COMPLETED"}], "counts": {"uploaded": [{"objectType": "Article", "count": 15}], "indexed": [{"objectType": "Article", "count": 15}]}, "processingHistory": [{"startTime": "2021-08-06T17:58:01.000Z", "endTime": "2021-08-06T18:58:01.000Z"}]}, "identity": {"processingHistory": [{"startTime": "2021-08-06T17:58:01.000Z", "endTime": "2021-08-06T18:58:01.000Z"}], "users": {"bulkUploadHistory": [{"uploadId": "upload-id-content-1707403081", "startTime": "2021-08-06T17:58:01.000Z", "endTime": "2021-08-06T18:58:01.000Z", "status": "SUCCESSFUL", "processingState": "UPLOAD COMPLETED"}], "counts": {"uploaded": 15}}, "groups": {"bulkUploadHistory": [{"uploadId": "upload-id-content-1707403081", "startTime": "2021-08-06T17:58:01.000Z", "endTime": "2021-08-06T18:58:01.000Z", "status": "SUCCESSFUL", "processingState": "UPLOAD COMPLETED"}], "counts": {"uploaded": 15}}, "memberships": {"bulkUploadHistory": [{"uploadId": "upload-id-content-1707403081", "startTime": "2021-08-06T17:58:01.000Z", "endTime": "2021-08-06T18:58:01.000Z", "status": "SUCCESSFUL", "processingState": "UPLOAD COMPLETED"}], "counts": {"uploaded": 15}}}, "datasourceVisibility": "ENABLED_FOR_ALL"} post_/api/index/v1/debug/{datasource}/user: speakeasy-default-post-/api/index/v1-/debug/{datasource}/user: parameters: @@ -6907,9 +11454,11 @@ examples: datasource: "" requestBody: application/json; charset=UTF-8: {"email": "u1@foo.com"} + application/json: {"email": "u1@foo.com"} responses: "200": application/json; charset=UTF-8: {"status": {"isActiveUser": true, "uploadStatus": "UPLOADED", "lastUploadedAt": "2021-08-06T17:58:01.000Z"}} + application/json: {"status": {"isActiveUser": true, "uploadStatus": "UPLOADED", "lastUploadedAt": "2021-08-06T17:58:01.000Z"}} post_/api/index/v1/getusercount: speakeasy-default-post-/api/index/v1-/getusercount: requestBody: @@ -6991,6 +11540,617 @@ examples: parameters: path: id: 741945 + checkdatasourceauth: + speakeasy-default-checkdatasourceauth: + responses: + "200": + application/json: {"unauthorizedDatasourceInstances": [{"datasourceInstance": "slack_0", "displayName": "Slack"}]} + getDatasourceInstanceConfiguration: + speakeasy-default-get-datasource-instance-configuration: + parameters: + path: + datasourceId: "o365sharepoint" + instanceId: "o365sharepoint_abc123" + responses: + "200": + application/json: {"configuration": {"values": {"key": {}}}} + "400": + application/json: {} + updateDatasourceInstanceConfiguration: + speakeasy-default-update-datasource-instance-configuration: + parameters: + path: + datasourceId: "o365sharepoint" + instanceId: "o365sharepoint_abc123" + requestBody: + application/json: {"configuration": {"values": {}}} + responses: + "200": + application/json: {"configuration": {"values": {}}} + "400": + application/json: {} + getChatFile: + speakeasy-default-get-chat-file: + parameters: + path: + fileId: "" + responses: + "200": + application/octet-stream: "x-file: example.file" + editAgent: + speakeasy-default-edit-agent: + parameters: + path: + agent_id: "" + requestBody: + application/json: {} + responses: + "404": + application/json: {} + getPersonPhoto: + speakeasy-default-get-person-photo: + parameters: + path: + person_id: "" + responses: + "200": + image/png: "x-file: example.file" + image/jpeg: "x-file: example.file" + getActionPackAuthStatus: + speakeasy-default-get-action-pack-auth-status: + parameters: + path: + actionPackId: "" + responses: + "200": + application/json: {"actionPack": {"authenticated": true, "authType": "AUTH_USER_OAUTH"}} + authorizeActionPack: + speakeasy-default-authorize-action-pack: + parameters: + path: + actionPackId: "" + requestBody: + application/json: {"returnUrl": "https://merry-allocation.org/"} + responses: + "200": + application/json: {"redirectUrl": "https://unconscious-diversity.net"} + put_/rest/api/index/document/{docId}/custom-metadata/{groupName}: + speakeasy-default-put-/rest/api/index/document/{doc-id}/custom-metadata/{group-name}: + parameters: + path: + docId: "" + groupName: "" + requestBody: + application/json: {"customMetadata": []} + responses: + "200": + application/json: {"success": true} + "400": + application/json: {"error": ""} + "500": + application/json: {"error": ""} + delete_/rest/api/index/document/{docId}/custom-metadata/{groupName}: + speakeasy-default-delete-/rest/api/index/document/{doc-id}/custom-metadata/{group-name}: + parameters: + path: + docId: "" + groupName: "" + responses: + "200": + application/json: {"success": true} + "400": + application/json: {"error": ""} + "500": + application/json: {"error": ""} + get_/rest/api/index/custom-metadata/schema/{groupName}: + speakeasy-default-get-/rest/api/index/custom-metadata/schema/{group-name}: + parameters: + path: + groupName: "" + responses: + "200": + application/json: {"metadataKeys": []} + "401": + application/json: {"error": ""} + "500": + application/json: {"error": ""} + put_/rest/api/index/custom-metadata/schema/{groupName}: + speakeasy-default-put-/rest/api/index/custom-metadata/schema/{group-name}: + parameters: + path: + groupName: "" + requestBody: + application/json: {"metadataKeys": []} + responses: + "200": + application/json: {"success": true} + "400": + application/json: {"error": ""} + "500": + application/json: {"error": ""} + delete_/rest/api/index/custom-metadata/schema/{groupName}: + speakeasy-default-delete-/rest/api/index/custom-metadata/schema/{group-name}: + parameters: + path: + groupName: "" + responses: + "200": + application/json: {"success": true} + "400": + application/json: {"error": ""} + "500": + application/json: {"error": ""} + post_/api/index/v1/debug/{datasource}/document/events: + speakeasy-default-post-/api/index/v1-/debug/{datasource}/document/events: + parameters: + path: + datasource: "" + requestBody: + application/json; charset=UTF-8: {"objectType": "Article", "docId": "art123", "startDate": "2025-05-01", "maxEvents": 50} + application/json: {"objectType": "Article", "docId": "art123", "startDate": "2025-05-01", "maxEvents": 50} + responses: + "200": + application/json; charset=UTF-8: {"lifeCycleEvents": [{"event": "INDEXED", "timestamp": "2021-08-06T17:58:01.000Z"}]} + application/json: {"lifeCycleEvents": [{"event": "INDEXED", "timestamp": "2021-08-06T17:58:01.000Z"}]} + getDatasourceCredentialStatus: + speakeasy-default-get-datasource-credential-status: + parameters: + path: + datasourceInstanceId: "o365sharepoint_abc123" + responses: + "200": + application/json: {"status": "VALID"} + "400": + application/json: {} + rotateDatasourceCredentials: + speakeasy-default-rotate-datasource-credentials: + parameters: + path: + datasourceInstanceId: "o365sharepoint_abc123" + requestBody: + application/json: {"credentials": {"values": {"key": {}}}} + responses: + "200": + application/json: {"status": "MISSING"} + "400": + application/json: {} + createAgent: + speakeasy-default-create-agent: + requestBody: + application/json: {} + responses: + "200": + application/json: {"workflow": {"author": {"name": "George Clooney", "obfuscatedId": "abc123"}, "lastDraftSavedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "lastUpdatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}}} + platform-agents-search: + speakeasy-default-platform-agents-search: + requestBody: + application/json: {"name": "HR Policy Agent"} + responses: + "200": + application/json: {"agents": [], "request_id": ""} + "400": + application/problem+json: {"type": "https://developer.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://developer.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://developer.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://developer.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-agents-get: + speakeasy-default-platform-agents-get: + parameters: + path: + agent_id: "" + responses: + "200": + application/json: {"agent": {"agent_id": "mho4lwzylcozgoc2", "name": "HR Policy Agent", "capabilities": {}}, "request_id": ""} + "400": + application/problem+json: {"type": "https://developer.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://developer.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://developer.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://developer.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-agents-get-schemas: + speakeasy-default-platform-agents-get-schemas: + parameters: + path: + agent_id: "" + query: + include_tools: false + responses: + "200": + application/json: {"agent_id": "", "input_schema": {}, "output_schema": {"key": "", "key1": "", "key2": ""}, "request_id": ""} + "400": + application/problem+json: {"type": "https://developer.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://developer.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://developer.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://developer.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-agents-create-run: + speakeasy-default-platform-agents-create-run: + parameters: + path: + agent_id: "" + requestBody: + application/json: {"messages": [{"role": "USER", "content": []}], "stream": false} + responses: + "200": + application/json: {"run": {"agent_id": "", "messages": [{"role": "USER", "content": []}], "status": "error"}, "messages": [{"role": "USER", "content": []}], "request_id": ""} + text/event-stream: "" + "400": + application/problem+json: {"type": "https://developer.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://developer.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://developer.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://developer.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-search: + speakeasy-default-platform-search: + requestBody: + application/json: {"query": "quarterly planning 2026", "page_size": 10, "datasources": ["confluence", "google_drive"], "filters": [{"field": "type", "values": ["spreadsheet", "presentation"]}]} + responses: + "200": + application/json: {"results": [], "has_more": false, "next_cursor": "", "request_id": "", "warnings": []} + "400": + application/problem+json: {"type": "https://developer.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://developer.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://developer.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://developer.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"}]} + getToolServerAuthStatus: + speakeasy-default-get-tool-server-auth-status: + parameters: + path: + serverId: "" + responses: + "200": + application/json: {"authStatus": "AUTHORIZED", "authType": "AUTH_NONE"} + authorizeToolServer: + speakeasy-default-authorize-tool-server: + parameters: + path: + serverId: "" + requestBody: + application/json: {"returnUrl": "https://lucky-disadvantage.com"} + responses: + "200": + application/json: {"authorizationUrl": "https://shocked-casket.name/"} + platform-skills-create: + speakeasy-default-platform-skills-create: + requestBody: + multipart/form-data: {"file": "x-file: example.file"} + responses: + "200": + application/json: {"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": ""} + "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"}]} + platform-skills-list: + speakeasy-default-platform-skills-list: + responses: + "200": + application/json: {"skills": [], "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": + 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-validate: + speakeasy-default-platform-skills-validate: + requestBody: + multipart/form-data: {"file": "x-file: example.file"} + responses: + "200": + application/json: {"metadata": {"display_name": "Hattie10", "description": "overburden actual impact"}, "files": [], "warnings": [], "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"}]} + platform-skills-get: + speakeasy-default-platform-skills-get: + parameters: + path: + 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": ""} + "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"}]} + platform-skills-get-content: + speakeasy-default-platform-skills-get-content: + parameters: + path: + skill_id: "" + responses: + "200": + application/octet-stream: "x-file: example.file" + "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"}]} + platform-skills-create-version: + speakeasy-default-platform-skills-create-version: + parameters: + path: + skill_id: "" + requestBody: + multipart/form-data: {"file": "x-file: example.file"} + responses: + "200": + 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": ""} + "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"}]} + platform-skills-list-versions: + speakeasy-default-platform-skills-list-versions: + parameters: + path: + skill_id: "" + responses: + "200": + application/json: {"versions": [], "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": + 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-get-version: + speakeasy-default-platform-skills-get-version: + parameters: + path: + skill_id: "" + version: 495658 + responses: + "200": + application/json: {"version": {"skill_id": "", "version": 81632, "minor_version": 646412, "is_latest": false, "created_by": {"name": ""}, "created_at": "2025-02-17T18:47:57.025Z", "updated_at": "2024-12-19T03:10:35.770Z"}, "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"}]} + platform-skills-get-version-content: + speakeasy-default-platform-skills-get-version-content: + parameters: + path: + skill_id: "" + version: 117760 + responses: + "200": + application/octet-stream: "x-file: example.file" + "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"}]} + post_/rest/api/index/submissions/{datasourceInstance}/{type}: + speakeasy-default-post-/rest/api/index/submissions/{datasource-instance}/{type}: + parameters: + path: + datasourceInstance: "" + type: "" + requestBody: + application/json: {"key": "", "key1": "", "key2": ""} + responses: + "202": + application/json: {"requestId": ""} + "400": + application/json: {"error": ""} + "500": + application/json: {"error": ""} + platform-chat-create: + speakeasy-default-platform-chat-create: + requestBody: + application/json: {"input": "", "stream": false, "store": true} + responses: + "200": + application/json: {"id": "", "object": "RESPONSE", "created_at": "2026-05-19T05:32:52.505Z", "status": "COMPLETED", "output": [{"type": "MESSAGE", "role": "ASSISTANT", "content": [{"type": "OUTPUT_TEXT", "text": ""}]}], "store": false, "request_id": ""} + text/event-stream: "" + "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"}]} + platform-skills-import: + speakeasy-default-platform-skills-import: + requestBody: + application/json: {"source_urls": [""]} + responses: + "200": + application/json: {"skills": [], "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"}]} + platform-skills-preview-source: + speakeasy-default-platform-skills-preview-source: + requestBody: + application/json: {"source_url": "https://ugly-information.name/", "stream": false} + responses: + "200": + application/json: {"skills": [], "failures": [{"source_url": "https://slimy-availability.org", "code": "SKILL_FETCH_FAILED", "detail": ""}], "request_id": ""} + text/event-stream: "" + "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"}]} + platform-skills-update: + speakeasy-default-platform-skills-update: + parameters: + path: + skill_id: "" + requestBody: + application/json: {"status": "DISABLED"} + 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": ""} + "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"}]} + platform-skills-delete: + speakeasy-default-platform-skills-delete: + parameters: + path: + skill_id: "" + responses: + "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"}]} + platform-skills-sync: + speakeasy-default-platform-skills-sync: + parameters: + path: + skill_id: "" + responses: + "200": + application/json: {"sync_status": "UP_TO_DATE", "commit_sha": "", "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"}]} + platform-search-filters: + speakeasy-default-platform-search-filters: + responses: + "200": + application/json: {"datasources": [], "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"}]} + importAgent: + speakeasy-default-import-agent: + parameters: + path: + agent_id: "" + requestBody: + multipart/form-data: {"bundle": "x-file: example.file"} + responses: + "200": + application/json: {"workflowResult": {"workflow": {"author": {"name": "George Clooney", "obfuscatedId": "abc123"}, "lastDraftSavedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "lastUpdatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}}}} + "404": + application/json: {} + getToolServerTools: + speakeasy-default-get-tool-server-tools: + parameters: + path: + serverId: "" + query: + toolNames: ["", "", ""] + responses: + "200": + application/json: {"tools": [{"serverId": "", "name": ""}]} + platform-triggers-create: + speakeasy-default-platform-triggers-create: + requestBody: + application/json: {"preset_id": "GITHUB_1", "description": "Reviews I am tagged on, sent to my team's review channel", "inputs": {"repository": "acme/payments-api"}, "delivery": {"webhook_url": "https://customer.app/webhook", "auth": {"type": "BEARER", "secret": "secret_test_123"}}} + responses: + "201": + application/json: {"trigger": {"trigger_id": "trigger_test_123", "preset_id": "GITHUB_1", "description": "Reviews I am tagged on, sent to my team's review channel", "status": "ENABLED", "inputs": {"repository": "acme/payments-api"}, "delivery": {"webhook_url": "https://customer.app/webhook"}, "created_at": "2025-08-17T18:19:46.877Z", "updated_at": "2024-09-14T03:27:40.201Z", "signing_secret": "whsec_xxx"}, "request_id": ""} + "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"}]} + platform-triggers-list: + speakeasy-default-platform-triggers-list: + parameters: + query: + page_size: 50 + responses: + "200": + 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": + 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-triggers-get: + speakeasy-default-platform-triggers-get: + parameters: + path: + trigger_id: "" + responses: + "200": + application/json: {"trigger": {"trigger_id": "trigger_test_123", "preset_id": "GITHUB_1", "description": "Reviews I am tagged on, sent to my team's review channel", "status": "ENABLED", "inputs": {"repository": "acme/payments-api"}, "delivery": {"webhook_url": "https://customer.app/webhook"}, "created_at": "2024-01-06T01:37:37.232Z", "updated_at": "2025-07-02T01:19:47.126Z"}, "request_id": ""} + "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"}]} + platform-triggers-update: + speakeasy-default-platform-triggers-update: + parameters: + path: + trigger_id: "" + requestBody: + application/json: {"status": "ENABLED", "description": "Reviews I am tagged on, sent to my team's review channel", "inputs": {"repository": "acme/payments-api"}, "delivery": {"webhook_url": "https://customer.app/webhook", "auth": {"type": "BEARER", "secret": "secret_test_123"}}} + responses: + "200": + application/json: {"trigger": {"trigger_id": "trigger_test_123", "preset_id": "GITHUB_1", "description": "Reviews I am tagged on, sent to my team's review channel", "status": "ENABLED", "inputs": {"repository": "acme/payments-api"}, "delivery": {"webhook_url": "https://customer.app/webhook"}, "created_at": "2026-09-03T11:57:47.699Z", "updated_at": "2026-01-25T02:15:09.513Z"}, "request_id": ""} + "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"}]} + platform-triggers-delete: + speakeasy-default-platform-triggers-delete: + parameters: + path: + trigger_id: "" + responses: + "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"}]} + platform-triggers-events-search: + speakeasy-default-platform-triggers-events-search: + parameters: + path: + trigger_id: "" + responses: + "200": + application/json: {"results": [{"event_type": "DOCUMENT_CHANGE", "datasource": "GITHUB", "reason": "REVIEW_REQUESTED", "doc_type": "pull", "doc_id": "", "view_url": "https://silent-omelet.biz", "title": "", "event_time": "2024-06-12T22:23:25.274Z"}], "has_more": 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"}]} + platform-trigger-presets-list: + speakeasy-default-platform-trigger-presets-list: + parameters: + query: + page_size: 50 + responses: + "200": + application/json: {"results": [], "has_more": false, "next_cursor": null, "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"}]} + platform-trigger-presets-get: + speakeasy-default-platform-trigger-presets-get: + parameters: + path: + preset_id: "" + responses: + "200": + application/json: {"trigger_preset": {"preset_id": "GITHUB_1", "datasource": "github", "display_name": "Review requested from me", "description": "A review is requested from the trigger creator on a pull request", "inputs": []}, "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"}]} + platform-trigger-presets-input-values-list: + speakeasy-default-platform-trigger-presets-input-values-list: + parameters: + path: + preset_id: "" + query: + field: "" + responses: + "200": + application/json: {"results": [{"value": "acme/payments-api", "display_name": "acme/payments-api"}], "is_truncated": 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"}]} + platform-trigger-presets-events-search: + speakeasy-default-platform-trigger-presets-events-search: + parameters: + path: + preset_id: "" + requestBody: + application/json: {"inputs": {"repository": "acme/payments-api"}, "page_size": 10} + responses: + "200": + application/json: {"results": [{"event_type": "DOCUMENT_CHANGE", "datasource": "GITHUB", "reason": "REVIEW_REQUESTED", "doc_type": "pull", "doc_id": "", "view_url": "https://prickly-cutover.info/", "title": "", "event_time": "2025-04-15T15:45:31.544Z"}], "has_more": 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"}]} examplesVersion: 1.0.2 generatedTests: activity: "2025-04-28T22:05:12+01:00" @@ -7138,6 +12298,60 @@ generatedTests: updateshortcut: "2025-06-12T19:13:52-04:00" listfindingsexports: "2025-12-10T17:53:31Z" downloadfindingsexport: "2025-12-10T17:53:31Z" + checkdatasourceauth: "2026-02-19T15:48:52Z" + getDatasourceInstanceConfiguration: "2026-03-09T18:34:29Z" + updateDatasourceInstanceConfiguration: "2026-03-09T18:34:29Z" + getChatFile: "2026-06-05T03:54:47Z" + getPersonPhoto: "2026-06-05T03:54:47Z" + getActionPackAuthStatus: "2026-06-05T03:54:47Z" + authorizeActionPack: "2026-06-05T03:54:47Z" + put_/rest/api/index/document/{docId}/custom-metadata/{groupName}: "2026-06-05T03:54:47Z" + delete_/rest/api/index/document/{docId}/custom-metadata/{groupName}: "2026-06-05T03:54:47Z" + get_/rest/api/index/custom-metadata/schema/{groupName}: "2026-06-05T03:54:47Z" + put_/rest/api/index/custom-metadata/schema/{groupName}: "2026-06-05T03:54:47Z" + delete_/rest/api/index/custom-metadata/schema/{groupName}: "2026-06-05T03:54:47Z" + getDatasourceCredentialStatus: "2026-06-05T03:54:47Z" + rotateDatasourceCredentials: "2026-06-05T03:54:47Z" + createAgent: "2026-06-29T04:02:25Z" + platform-agents-search: "2026-07-02T17:48:17Z" + platform-agents-get: "2026-07-02T17:48:17Z" + platform-agents-get-schemas: "2026-07-02T17:48:17Z" + platform-agents-create-run: "2026-07-02T17:48:17Z" + platform-search: "2026-07-02T17:48:17Z" + getToolServerAuthStatus: "2026-07-08T02:46:37Z" + authorizeToolServer: "2026-07-08T02:46:37Z" + platform-skills-create: "2026-07-21T08:59:49Z" + platform-skills-list: "2026-07-21T08:59:49Z" + platform-skills-validate: "2026-07-21T08:59:49Z" + platform-skills-get: "2026-07-21T08:59:49Z" + platform-skills-get-content: "2026-07-21T08:59:49Z" + platform-skills-create-version: "2026-07-21T08:59:49Z" + platform-skills-list-versions: "2026-07-21T08:59:49Z" + platform-skills-get-version: "2026-07-21T08:59:49Z" + platform-skills-get-version-content: "2026-07-21T08:59:49Z" + post_/rest/api/index/submissions/{datasourceInstance}/{type}: "2026-07-21T08:59:49Z" + platform-chat-create: "2026-08-07T21:21:16Z" + platform-skills-import: "2026-08-07T21:21:16Z" + platform-skills-preview-source: "2026-08-07T21:21:16Z" + platform-skills-update: "2026-08-07T21:21:16Z" + platform-skills-sync: "2026-08-07T21:21:16Z" + platform-search-filters: "2026-08-07T21:21:16Z" + importAgent: "2026-08-07T21:21:16Z" + getToolServerTools: "2026-08-07T21:21:16Z" + post_/api/index/v1/debug/{datasource}/document: "2026-08-07T21:21:16Z" + post_/api/index/v1/debug/{datasource}/documents: "2026-08-07T21:21:16Z" + post_/api/index/v1/debug/{datasource}/document/events: "2026-08-07T21:21:16Z" + post_/api/index/v1/debug/{datasource}/user: "2026-08-07T21:21:16Z" + platform-triggers-create: "2026-08-21T02:33:03Z" + platform-triggers-list: "2026-08-21T02:33:03Z" + platform-triggers-get: "2026-08-21T02:33:03Z" + platform-triggers-update: "2026-08-21T02:33:03Z" + platform-triggers-events-search: "2026-08-21T02:33:03Z" + platform-trigger-presets-list: "2026-08-21T02:33:03Z" + platform-trigger-presets-get: "2026-08-21T02:33:03Z" + platform-trigger-presets-input-values-list: "2026-08-21T02:33:03Z" + platform-trigger-presets-events-search: "2026-08-21T02:33:03Z" +releaseNotes: "## Python SDK Changes:\n* `glean.chat.create()`: \n * `request.input.union(Array)[].role` **Changed** (Breaking ⚠️)\n * `response` **Changed** (Breaking ⚠️)\n* `glean.triggers.list_presets()`: **Added**\n* `glean.triggers.list_preset_input_values()`: **Added**\n* `glean.triggers.update()`: **Added**\n* `glean.triggers.delete()`: **Added**\n* `glean.triggers.search_events()`: **Added**\n* `glean.triggers.create()`: **Added**\n* `glean.triggers.get_preset()`: **Added**\n* `glean.triggers.get()`: **Added**\n* `glean.triggers.search_preset_events()`: **Added**\n* `glean.triggers.list()`: **Added**\n* `glean.client.chat.create()`: \n * `request.messages[].citations[].source_skill` **Added**\n * `response.messages[].citations[].source_skill` **Added**\n* `glean.client.chat.retrieve()`: `response.chat_result.chat.messages[].citations[].source_skill` **Added**\n* `glean.client.chat.create_stream()`: \n * `request.messages[].citations[].source_skill` **Added**\n* `glean.client.search.retrieve_feed()`: \n * `request.categories[]` **Changed**\n * `response.results[]` **Changed**\n" generatedFiles: - .devcontainer/README.md - .devcontainer/devcontainer.json diff --git a/.speakeasy/gen.yaml b/.speakeasy/gen.yaml index 5194a521..03fd977a 100644 --- a/.speakeasy/gen.yaml +++ b/.speakeasy/gen.yaml @@ -17,6 +17,7 @@ generation: securityFeb2025: true sharedErrorComponentsApr2025: true sharedNestedComponentsJan2026: false + nameOverrideFeb2026: false auth: oAuth2ClientCredentialsEnabled: false oAuth2PasswordEnabled: false @@ -24,6 +25,7 @@ generation: schemas: allOfMergeStrategy: shallowMerge requestBodyFieldName: "" + versioningStrategy: automatic mockServer: disabled: false persistentEdits: {} @@ -32,7 +34,7 @@ generation: generateNewTests: true skipResponseBodyAssertions: true python: - version: 0.11.27 + version: 0.16.0 additionalDependencies: dev: {} main: {} @@ -44,18 +46,29 @@ python: authors: - Glean Technologies, Inc. baseErrorName: GleanBaseError + bodyVariantOverloads: false clientServerStatusCodesAsErrors: true constFieldCasing: upper defaultErrorName: GleanError description: Python Client SDK Generated by Speakeasy. + durationFormat: false enableCustomCodeRegions: false enumFormat: enum envVarPrefix: GLEAN + errorSchemaValidation: true + eventStreamClassNames: + async: EventStreamAsync + sync: EventStream fixFlags: + asyncPaginationSep2025: false + conflictResistantModelImportsFeb2026: false responseRequiredSep2024: true flattenGlobalSecurity: true flattenRequests: true flatteningOrder: parameters-first + forwardCompatibleEnumsByDefault: true + forwardCompatibleUnionsByDefault: "false" + httpClientLibrary: httpx imports: option: openapi paths: @@ -66,19 +79,26 @@ python: webhooks: "" inferUnionDiscriminators: true inputModelSuffix: input + inputTypedDictSuffix: TypedDict legacyPyright: true license: "" maxMethodParams: 999 methodArguments: infer-optional-args + methodTimeoutArgument: timeout-ms + methodTimeoutUnits: milliseconds moduleName: glean.api_client multipartArrayFormat: standard + optionalDependencies: {} outputModelSuffix: output packageManager: poetry packageName: glean-api-client preApplyUnionDiscriminators: false pytestFilterWarnings: [] pytestTimeout: 0 + rawResponseHelpers: false responseFormat: flat + responseSchemaValidation: true sseFlatResponse: false templateVersion: v2 useAsyncHooks: false + uuidFormat: false diff --git a/.speakeasy/glean-merged-spec.yaml b/.speakeasy/glean-merged-spec.yaml index f8520c95..c9540561 100644 --- a/.speakeasy/glean-merged-spec.yaml +++ b/.speakeasy/glean-merged-spec.yaml @@ -1,13246 +1,19705 @@ openapi: 3.0.0 info: - version: 0.9.0 - title: Glean API - x-source-commit-sha: 17a84cfc3e3f0e0a3eec1792cf57a65f444d613e - 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. + version: "0.9.0" + title: Glean API + x-source-commit-sha: ae20e37cc1d6786192c975f846fbe57527d94d7e + x-open-api-commit-sha: 68a8939fe1b80a3a659ea78c778a5ddfdcb8e999 + 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. - # Usage guidelines - This API is evolving fast. Glean will provide advance notice of any planned backwards incompatible changes along - with a 6-month sunset period for anything that requires developers to adopt the new versions. + # Usage guidelines + This API is evolving fast. Glean will provide advance notice of any planned backwards incompatible changes along + with a 6-month sunset period for anything that requires developers to adopt the new versions. - # API Clients - Official API clients for the Glean Indexing API are available in multiple languages: + # API Clients + Official API clients for the Glean Indexing API are available in multiple languages: - - [Python](https://github.com/gleanwork/api-client-python) - - [TypeScript](https://github.com/gleanwork/api-client-typescript) - - [Go](https://github.com/gleanwork/api-client-go) - - [Java](https://github.com/gleanwork/api-client-java) + - [Python](https://github.com/gleanwork/api-client-python) + - [TypeScript](https://github.com/gleanwork/api-client-typescript) + - [Go](https://github.com/gleanwork/api-client-go) + - [Java](https://github.com/gleanwork/api-client-java) - These API clients provide type-safe, idiomatic interfaces for working with Glean IndexingAPIs in your language of choice. - x-logo: - url: https://app.glean.com/images/glean-text2.svg - x-open-api-commit-sha: 3bb1859df9ba2cff7a43d5b1c336bb826a766b4c - x-speakeasy-name: 'Glean API' + These API clients provide type-safe, idiomatic interfaces for working with Glean IndexingAPIs in your language of choice. + x-logo: + url: https://app.glean.com/images/glean-text2.svg + x-speakeasy-name: 'Glean API' servers: - - url: https://{instance}-be.glean.com - variables: - instance: - default: instance-name - description: The instance name (typically the email domain without the TLD) that determines the deployment backend. -security: - - APIToken: [] + - url: https://{instance}-be.glean.com + variables: + instance: + default: instance-name + description: The instance name (typically the email domain without the TLD) that determines the deployment backend. paths: - /rest/api/v1/activity: - post: - tags: - - Activity - summary: Report document activity - description: Report user activity that occurs on indexed documents such as viewing or editing. This signal improves search quality. - operationId: activity - x-visibility: Public - x-codegen-request-body-name: payload - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/Activity" - required: true - x-exportParamName: Activity - responses: - "200": - description: OK - "400": - description: Invalid request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-name-override: report - x-speakeasy-group: client.activity - /rest/api/v1/feedback: - post: - tags: - - Activity - summary: Report client activity - description: Report events that happen to results within a Glean client UI, such as search result views and clicks. This signal improves search quality. - operationId: feedback - x-visibility: Public - x-codegen-request-body-name: payload - parameters: - - name: feedback - in: query - description: A URL encoded versions of Feedback. This is useful for requests. - required: false - schema: - type: string - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/Feedback" - x-exportParamName: Feedback - responses: - "200": - description: OK - "400": - description: Invalid request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-group: client.activity - /rest/api/v1/createannouncement: - post: - tags: - - Announcements - summary: Create Announcement - description: Create a textual announcement visible to some set of users based on department and location. - operationId: createannouncement - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/CreateAnnouncementRequest" - description: Announcement content - required: true - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/Announcement" - "400": - description: Invalid request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-name-override: create - x-speakeasy-group: client.announcements - /rest/api/v1/deleteannouncement: - post: - tags: - - Announcements - summary: Delete Announcement - description: Delete an existing user-generated announcement. - operationId: deleteannouncement - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/DeleteAnnouncementRequest" - description: Delete announcement request - required: true - x-exportParamName: Request - responses: - "200": - description: OK - "400": - description: Invalid request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-name-override: delete - x-speakeasy-group: client.announcements - /rest/api/v1/updateannouncement: - post: - tags: - - Announcements - summary: Update Announcement - description: Update a textual announcement visible to some set of users based on department and location. - operationId: updateannouncement - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/UpdateAnnouncementRequest" - description: Announcement content. Id need to be specified for the announcement. - required: true - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/Announcement" - "400": - description: Invalid request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-name-override: update - x-speakeasy-group: client.announcements - /rest/api/v1/createanswer: - post: - tags: - - Answers - summary: Create Answer - description: Create a user-generated Answer that contains a question and answer. - operationId: createanswer - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/CreateAnswerRequest" - description: CreateAnswer request - required: true - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/Answer" - "400": - description: Invalid request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-name-override: create - x-speakeasy-group: client.answers - /rest/api/v1/deleteanswer: - post: - tags: - - Answers - summary: Delete Answer - description: Delete an existing user-generated Answer. - operationId: deleteanswer - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/DeleteAnswerRequest" - description: DeleteAnswer request - required: true - x-exportParamName: Request - responses: - "200": - description: OK - "400": - description: Invalid request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-name-override: delete - x-speakeasy-group: client.answers - /rest/api/v1/editanswer: - post: - tags: - - Answers - summary: Update Answer - description: Update an existing user-generated Answer. - operationId: editanswer - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/EditAnswerRequest" - description: EditAnswer request - required: true - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/Answer" - "400": - description: Invalid request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-name-override: update - x-speakeasy-group: client.answers - /rest/api/v1/getanswer: - post: - tags: - - Answers - summary: Read Answer - description: Read the details of a particular Answer given its ID. - operationId: getanswer - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/GetAnswerRequest" - description: GetAnswer request - required: true - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/GetAnswerResponse" - "400": - description: Invalid request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-name-override: retrieve - x-speakeasy-group: client.answers - /rest/api/v1/listanswers: - post: - tags: - - Answers - summary: List Answers - description: List Answers created by the current user. - operationId: listanswers - deprecated: true - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/ListAnswersRequest" - description: ListAnswers request - required: true - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/ListAnswersResponse" - "400": - description: Invalid request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-name-override: list - x-speakeasy-group: client.answers - /rest/api/v1/createauthtoken: - post: - tags: - - Authentication - summary: Create authentication token - description: | - Creates an authentication token for the authenticated user. These are - specifically intended to be used with the [Web SDK](https://developers.glean.com/web). - - Note: The tokens generated from this endpoint are **not** valid tokens - for use with the Client API (e.g. `/rest/api/v1/*`). - operationId: createauthtoken - x-visibility: Public - parameters: [] - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/CreateAuthTokenResponse" - "400": - description: Invalid Request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-name-override: createToken - x-speakeasy-group: client.authentication - /rest/api/v1/chat: - post: - tags: - - Chat - summary: Chat - description: Have a conversation with Glean AI. - operationId: chat - x-visibility: Public - x-codegen-request-body-name: payload - parameters: - - $ref: "#/components/parameters/timezoneOffset" - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/ChatRequest" - examples: - defaultExample: - value: - messages: - - author: USER - messageType: CONTENT - fragments: - - text: What are the company holidays this year? - gptAgentExample: - value: - agentConfig: - agent: GPT - messages: - - author: USER - messageType: CONTENT - fragments: - - text: Who was the first person to land on the moon? - description: Includes chat history for Glean AI to respond to. - required: true - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: '#/components/schemas/ChatResponse' - examples: - defaultExample: - value: - messages: - - author: GLEAN_AI - messageType: CONTENT - hasMoreFragments: false - agentConfig: - agent: DEFAULT - mode: DEFAULT - fragments: - - text: There are no holidays! - streamingExample: - value: - messages: - - author: GLEAN_AI - messageType: CONTENT - agentConfig: - agent: DEFAULT - mode: DEFAULT - hasMoreFragments: true - fragments: null - - author: GLEAN_AI - messageType: CONTENT - agentConfig: - agent: DEFAULT - mode: DEFAULT - hasMoreFragments: true - fragments: null - - author: GLEAN_AI - messageType: CONTENT - agentConfig: - agent: DEFAULT - mode: DEFAULT - hasMoreFragments: true - fragments: - - text: e are - - author: GLEAN_AI - messageType: CONTENT - agentConfig: - agent: DEFAULT - mode: DEFAULT - hasMoreFragments: true - fragments: - - text: no hol - - author: GLEAN_AI - messageType: CONTENT - agentConfig: - agent: DEFAULT - mode: DEFAULT - hasMoreFragments: false - fragments: - - text: idays! - updateResponse: - value: - messages: - - author: GLEAN_AI - messageType: UPDATE - agentConfig: - agent: DEFAULT - mode: DEFAULT - fragments: - - text: '**Reading:**' - - structuredResults: - - document: - id: '123' - title: Company Handbook - citationResponse: - value: - messages: - - author: GLEAN_AI - messageType: CONTENT - agentConfig: - agent: DEFAULT - mode: DEFAULT - citations: - - sourceDocument: - id: '123' - title: Company Handbook - referenceRanges: - - textRange: - startIndex: 0 - endIndex: 12 - type: CITATION - "400": - description: Invalid request - "401": - description: Not Authorized - "408": - description: Request Timeout - "429": - description: Too Many Requests - x-speakeasy-group: client.chat - x-speakeasy-name-override: create - x-speakeasy-usage-example: true - /rest/api/v1/deleteallchats: - post: - tags: - - Chat - summary: Deletes all saved Chats owned by a user - description: Deletes all saved Chats a user has had and all their contained conversational content. - operationId: deleteallchats - x-visibility: Public - x-codegen-request-body-name: payload - parameters: - - $ref: "#/components/parameters/timezoneOffset" - responses: - "200": - description: OK - "400": - description: Invalid request - "401": - description: Not Authorized - "403": - description: Forbidden - x-speakeasy-name-override: deleteAll - x-speakeasy-group: client.chat - /rest/api/v1/deletechats: - post: - tags: - - Chat - summary: Deletes saved Chats - description: Deletes saved Chats and all their contained conversational content. - operationId: deletechats - x-visibility: Public - x-codegen-request-body-name: payload - parameters: - - $ref: "#/components/parameters/timezoneOffset" - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/DeleteChatsRequest" - required: true - x-exportParamName: Request - responses: - "200": - description: OK - "400": - description: Invalid request - "401": - description: Not Authorized - "403": - description: Forbidden - "429": - description: Too Many Requests - x-speakeasy-name-override: delete - x-speakeasy-group: client.chat - /rest/api/v1/getchat: - post: - tags: - - Chat - summary: Retrieves a Chat - description: Retrieves the chat history between Glean Assistant and the user for a given Chat. - operationId: getchat - x-visibility: Public - x-codegen-request-body-name: payload - parameters: - - $ref: "#/components/parameters/timezoneOffset" - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/GetChatRequest" - required: true - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/GetChatResponse" - "400": - description: Invalid request - "401": - description: Not Authorized - "403": - description: Forbidden - "429": - description: Too Many Requests - x-speakeasy-name-override: retrieve - x-speakeasy-group: client.chat - /rest/api/v1/listchats: - post: - tags: - - Chat - summary: Retrieves all saved Chats - description: Retrieves all the saved Chats between Glean Assistant and the user. The returned Chats contain only metadata and no conversational content. - operationId: listchats - x-visibility: Public - x-codegen-request-body-name: payload - parameters: - - $ref: "#/components/parameters/timezoneOffset" - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/ListChatsResponse" - "401": - description: Not Authorized - "403": - description: Forbidden - "429": - description: Too Many Requests - x-speakeasy-name-override: list - x-speakeasy-group: client.chat - /rest/api/v1/getchatapplication: - post: - tags: - - Chat - summary: Gets the metadata for a custom Chat application - description: Gets the Chat application details for the specified application ID. - operationId: getchatapplication - x-visibility: Preview - x-codegen-request-body-name: payload - parameters: - - $ref: "#/components/parameters/timezoneOffset" - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/GetChatApplicationRequest" - required: true - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/GetChatApplicationResponse" - "400": - description: Invalid request - "401": - description: Not Authorized - "403": - description: Forbidden - x-speakeasy-name-override: retrieveApplication - x-speakeasy-group: client.chat - /rest/api/v1/uploadchatfiles: - post: - tags: - - Chat - summary: Upload files for Chat. - description: Upload files for Chat. - operationId: uploadchatfiles - x-visibility: Public - parameters: - - $ref: "#/components/parameters/timezoneOffset" - requestBody: - required: true - content: - multipart/form-data: - schema: - $ref: "#/components/schemas/UploadChatFilesRequest" - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/UploadChatFilesResponse" - "400": - description: Invalid request - "401": - description: Not Authorized - "403": - description: Forbidden - "429": - description: Too Many Requests - x-speakeasy-name-override: uploadFiles - x-speakeasy-group: client.chat - /rest/api/v1/getchatfiles: - post: - tags: - - Chat - summary: Get files uploaded by a user for Chat. - description: Get files uploaded by a user for Chat. - operationId: getchatfiles - x-visibility: Public - parameters: - - $ref: "#/components/parameters/timezoneOffset" - requestBody: - required: true - content: - application/json: - schema: - $ref: "#/components/schemas/GetChatFilesRequest" - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/GetChatFilesResponse" - "400": - description: Invalid request - "401": - description: Not Authorized - "403": - description: Forbidden - "429": - description: Too Many Requests - x-speakeasy-name-override: retrieveFiles - x-speakeasy-group: client.chat - /rest/api/v1/deletechatfiles: - post: - tags: - - Chat - summary: Delete files uploaded by a user for chat. - description: Delete files uploaded by a user for Chat. - operationId: deletechatfiles - x-visibility: Public - parameters: - - $ref: "#/components/parameters/timezoneOffset" - requestBody: - required: true - content: - application/json: - schema: - $ref: "#/components/schemas/DeleteChatFilesRequest" - responses: - "200": - description: OK - "400": - description: Invalid request - "401": - description: Not Authorized - "403": - description: Forbidden - "429": - description: Too Many Requests - x-speakeasy-name-override: deleteFiles - x-speakeasy-group: client.chat - /rest/api/v1/agents/{agent_id}: - get: - tags: - - Agents - summary: Retrieve an agent - description: Returns details of an [agent](https://developers.glean.com/agents/agents-api) created in the Agent Builder. - operationId: getAgent - x-visibility: Preview - parameters: - - $ref: "#/components/parameters/timezoneOffset" - - description: The ID of the agent. - required: true - schema: - type: string - title: Agent ID - description: The ID of the agent. - name: agent_id - in: path - responses: - "200": - description: Success - content: - application/json: - schema: - $ref: "#/components/schemas/Agent" - "400": - description: Bad request - "403": - description: Forbidden - "404": - description: Not Found - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorResponse" - "500": - description: Internal server error - x-speakeasy-group: client.agents - x-speakeasy-name-override: retrieve - /rest/api/v1/agents/{agent_id}/schemas: - get: - tags: - - Agents - summary: List an agent's schemas - description: Return [agent](https://developers.glean.com/agents/agents-api)'s input and output schemas. You can use these schemas to detect changes to an agent's input or output structure. - operationId: getAgentSchemas - x-visibility: Preview - parameters: - - $ref: "#/components/parameters/timezoneOffset" - - description: The ID of the agent. - required: true - schema: - type: string - title: Agent Id - description: The ID of the agent. - name: agent_id - in: path - responses: - "200": - description: Success - content: - application/json: - schema: - $ref: "#/components/schemas/AgentSchemas" - "400": - description: Bad request - "403": - description: Forbidden - "404": - description: Not Found - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorResponse" - "422": - description: Validation Error - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorResponse" - "500": - description: Internal server error - x-speakeasy-group: client.agents - x-speakeasy-name-override: retrieveSchemas - /rest/api/v1/agents/search: - post: - tags: - - Agents - summary: Search agents - description: Search for [agents](https://developers.glean.com/agents/agents-api) by agent name. - operationId: searchAgents - x-visibility: Preview - requestBody: - required: true - content: - application/json: - schema: - $ref: "#/components/schemas/SearchAgentsRequest" - responses: - "200": - description: Success - content: - application/json: - schema: - $ref: "#/components/schemas/SearchAgentsResponse" - "400": - description: Bad request - "403": - description: Forbidden - "404": - description: Not Found - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorResponse" - "422": - description: Validation Error - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorResponse" - "500": - description: Internal server error - x-speakeasy-group: client.agents - x-speakeasy-name-override: list - /rest/api/v1/agents/runs/stream: - post: - tags: - - Agents - summary: Create an agent run and stream the response - description: Executes an [agent](https://developers.glean.com/agents/agents-api) run and returns the result as a stream of server-sent events (SSE). - operationId: createAndStreamRun - x-visibility: Preview - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/AgentRunCreate" - required: true - responses: - "200": - description: Success - content: - text/event-stream: - schema: - type: string - description: The server will send a stream of events in server-sent events (SSE) format. - example: | - id: 1 - event: message - data: {"messages":[{"role":"GLEAN_AI","content":[{"text":"Hello","type":"text"}]}]} - - id: 2 - event: message - data: {"messages":[{"role":"GLEAN_AI","content":[{"text":",","type":"text"}]}]} - - id: 3 - event: message - data: {"messages":[{"role":"GLEAN_AI","content":[{"text":" I'm","type":"text"}]}]} - - id: 4 - event: message - data: {"messages":[{"role":"GLEAN_AI","content":[{"text":" your","type":"text"}]}]} - "400": - description: Bad request - "403": - description: Forbidden - "404": - description: Not Found - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorResponse" - "409": - description: Conflict - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorResponse" - "422": - description: Validation Error - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorResponse" - "500": - description: Internal server error - x-speakeasy-group: client.agents - x-speakeasy-name-override: runStream - /rest/api/v1/agents/runs/wait: - post: - tags: - - Agents - summary: Create an agent run and wait for the response - description: Executes an [agent](https://developers.glean.com/agents/agents-api) run and returns the final response. - operationId: createAndWaitRun - x-visibility: Preview - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/AgentRunCreate" - required: true - responses: - "200": - description: Success - content: - application/json: - schema: - $ref: "#/components/schemas/AgentRunWaitResponse" - "400": - description: Bad request - "403": - description: Forbidden - "404": - description: Not Found - "409": - description: Conflict - "422": - description: Validation Error - "500": - description: Internal server error - x-speakeasy-group: client.agents - x-speakeasy-name-override: run - /rest/api/v1/addcollectionitems: - post: - tags: - - Collections - summary: Add Collection item - description: Add items to a Collection. - operationId: addcollectionitems - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/AddCollectionItemsRequest" - description: Data describing the add operation. - required: true - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/AddCollectionItemsResponse" - "400": - description: Invalid request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-name-override: addItems - x-speakeasy-group: client.collections - /rest/api/v1/createcollection: - post: - tags: - - Collections - summary: Create Collection - description: Create a publicly visible (empty) Collection of documents. - operationId: createcollection - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/CreateCollectionRequest" - description: Collection content plus any additional metadata for the request. - required: true - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/CreateCollectionResponse" - "400": - description: Invalid request - "401": - description: Not Authorized - "422": - description: Semantic error - content: - application/json: - schema: - $ref: "#/components/schemas/CollectionError" - "429": - description: Too Many Requests - x-speakeasy-group: client.collections - x-speakeasy-name-override: create - /rest/api/v1/deletecollection: - post: - tags: - - Collections - summary: Delete Collection - description: Delete a Collection given the Collection's ID. - operationId: deletecollection - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/DeleteCollectionRequest" - description: DeleteCollection request - required: true - x-exportParamName: Request - responses: - "200": - description: OK - "400": - description: Invalid request - "401": - description: Not Authorized - "422": - description: Semantic error - content: - application/json: - schema: - $ref: "#/components/schemas/CollectionError" - "429": - description: Too Many Requests - x-speakeasy-name-override: delete - x-speakeasy-group: client.collections - /rest/api/v1/deletecollectionitem: - post: - tags: - - Collections - summary: Delete Collection item - description: Delete a single item from a Collection. - operationId: deletecollectionitem - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/DeleteCollectionItemRequest" - description: Data describing the delete operation. - required: true - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/DeleteCollectionItemResponse" - "400": - description: Invalid request - "401": - description: Not Authorized - "422": - description: Failed to save deletion - "429": - description: Too Many Requests - x-speakeasy-name-override: deleteItem - x-speakeasy-group: client.collections - /rest/api/v1/editcollection: - post: - tags: - - Collections - summary: Update Collection - description: Update the properties of an existing Collection. - operationId: editcollection - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/EditCollectionRequest" - description: Collection content plus any additional metadata for the request. - required: true - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/EditCollectionResponse" - "400": - description: Invalid request - "401": - description: Not Authorized - "422": - description: Semantic error - content: - application/json: - schema: - $ref: "#/components/schemas/CollectionError" - "429": - description: Too Many Requests - x-speakeasy-name-override: update - x-speakeasy-group: client.collections - /rest/api/v1/editcollectionitem: - post: - tags: - - Collections - summary: Update Collection item - description: Update the URL, Glean Document ID, description of an item within a Collection given its ID. - operationId: editcollectionitem - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/EditCollectionItemRequest" - description: Edit Collection Items request - required: true - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/EditCollectionItemResponse" - "400": - description: Invalid request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-name-override: updateItem - x-speakeasy-group: client.collections - /rest/api/v1/getcollection: - post: - tags: - - Collections - summary: Read Collection - description: Read the details of a Collection given its ID. Does not fetch items in this Collection. - operationId: getcollection - x-visibility: Preview - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/GetCollectionRequest" - description: GetCollection request - required: true - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/GetCollectionResponse" - "400": - description: Invalid request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-name-override: retrieve - x-speakeasy-group: client.collections - /rest/api/v1/listcollections: - post: - tags: - - Collections - summary: List Collections - description: List all existing Collections. - operationId: listcollections - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/ListCollectionsRequest" - description: ListCollections request - required: true - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/ListCollectionsResponse" - "400": - description: Invalid request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-name-override: list - x-speakeasy-group: client.collections - /rest/api/v1/getdocpermissions: - post: - tags: - - Documents - summary: Read document permissions - description: Read the emails of all users who have access to the given document. - operationId: getdocpermissions - x-visibility: Preview - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/GetDocPermissionsRequest" - description: Document permissions request - required: true - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/GetDocPermissionsResponse" - "400": - description: Invalid request - "401": - description: Not Authorized - "403": - description: Forbidden - "429": - description: Too Many Requests - x-speakeasy-name-override: retrievePermissions - x-speakeasy-group: client.documents - /rest/api/v1/getdocuments: - post: - tags: - - Documents - summary: Read documents - description: Read the documents including metadata (does not include enhanced metadata via `/documentmetadata`) for the given list of Glean Document IDs or URLs specified in the request. - operationId: getdocuments - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/GetDocumentsRequest" - description: Information about documents requested. - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/GetDocumentsResponse" - "400": - description: Invalid request - "401": - description: Not Authorized - "403": - description: Documents does not exist, or user cannot access documents. - "429": - description: Too Many Requests - x-speakeasy-name-override: retrieve - x-speakeasy-group: client.documents - /rest/api/v1/getdocumentsbyfacets: - post: - tags: - - Documents - summary: Read documents by facets - description: Read the documents including metadata (does not include enhanced metadata via `/documentmetadata`) macthing the given facet conditions. - operationId: getdocumentsbyfacets - x-visibility: Preview - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/GetDocumentsByFacetsRequest" - description: Information about facet conditions for documents to be retrieved. - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/GetDocumentsByFacetsResponse" - "400": - description: Invalid request - "401": - description: Not Authorized - "404": - description: Not Found - "429": - description: Too Many Requests - x-speakeasy-name-override: retrieveByFacets - x-speakeasy-group: client.documents - /rest/api/v1/insights: - post: - tags: - - Insights - summary: Get insights - description: Gets the aggregate usage insights data displayed in the Insights Dashboards. - operationId: insights - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/InsightsRequest" - description: Includes request parameters for insights requests. - required: true - x-exportParamName: InsightsRequest - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/InsightsResponse" - "400": - description: Invalid request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-name-override: retrieve - x-speakeasy-group: client.insights - /rest/api/v1/messages: - post: - tags: - - Messages - summary: Read messages - description: Retrieves list of messages from messaging/chat datasources (e.g. Slack, Teams). - operationId: messages - x-visibility: Preview - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/MessagesRequest" - description: Includes request params such as the id for channel/message and direction. - required: true - x-exportParamName: MessagesRequest - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/MessagesResponse" - "400": - description: Invalid request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-name-override: retrieve - x-speakeasy-group: client.messages - /rest/api/v1/editpin: - post: - tags: - - Pins - summary: Update pin - description: Update an existing user-generated pin. - operationId: editpin - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/EditPinRequest" - description: Edit pins request - required: true - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/PinDocument" - "400": - description: Invalid request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-name-override: update - x-speakeasy-group: client.pins - /rest/api/v1/getpin: - post: - tags: - - Pins - summary: Read pin - description: Read pin details given its ID. - operationId: getpin - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/GetPinRequest" - description: Get pin request - required: true - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/GetPinResponse" - "400": - description: Invalid request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-name-override: retrieve - x-speakeasy-group: client.pins - /rest/api/v1/listpins: - post: - tags: - - Pins - summary: List pins - description: Lists all pins. - operationId: listpins - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - type: object - description: List pins request - required: true - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/ListPinsResponse" - "400": - description: Invalid request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-name-override: list - x-speakeasy-group: client.pins - /rest/api/v1/pin: - post: - tags: - - Pins - summary: Create pin - description: Pin a document as a result for a given search query.Pin results that are known to be a good match. - operationId: pin - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/PinRequest" - description: Details about the document and query for the pin. - required: true - x-exportParamName: PinDocument - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/PinDocument" - "400": - description: Invalid request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-name-override: create - x-speakeasy-group: client.pins - /rest/api/v1/unpin: - post: - tags: - - Pins - summary: Delete pin - description: Unpin a previously pinned result. - operationId: unpin - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/Unpin" - description: Details about the pin being unpinned. - required: true - x-exportParamName: Unpin - responses: - "200": - description: OK - "400": - description: Invalid request - "401": - description: Not Authorized - "403": - description: Forbidden from unpinning someone else's pin - "429": - description: Too Many Requests - x-speakeasy-name-override: remove - x-speakeasy-group: client.pins - /rest/api/v1/adminsearch: - post: - tags: - - Search - summary: Search the index (admin) - description: Retrieves results for search query without respect for permissions. This is available only to privileged users. - operationId: adminsearch - x-visibility: Preview - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/SearchRequest" - description: Admin search request - required: true - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/SearchResponse" - "400": - description: Invalid request - "401": - description: Not Authorized - "403": - description: Forbidden - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorInfo" - "422": - description: Invalid Query - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorInfo" - "429": - description: Too Many Requests - x-speakeasy-group: client.search - x-speakeasy-name-override: queryAsAdmin - /rest/api/v1/autocomplete: - post: - tags: - - Search - summary: Autocomplete - description: Retrieve query suggestions, operators and documents for the given partially typed query. - operationId: autocomplete - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/AutocompleteRequest" - description: Autocomplete request - required: true - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/AutocompleteResponse" - "400": - description: Invalid request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-group: client.search - x-speakeasy-name-override: autocomplete - /rest/api/v1/feed: - post: - tags: - - Search - summary: Feed of documents and events - description: The personalized feed/home includes different types of contents including suggestions, recents, calendar events and many more. - operationId: feed - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/FeedRequest" - description: Includes request params, client data and more for making user's feed. - required: true - x-exportParamName: FeedRequest - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/FeedResponse" - "400": - description: Invalid request - "401": - description: Not Authorized - "408": - description: Request Timeout - "429": - description: Too Many Requests - x-speakeasy-name-override: retrieveFeed - x-speakeasy-group: client.search - /rest/api/v1/recommendations: - post: - tags: - - Search - summary: Recommend documents - description: Retrieve recommended documents for the given URL or Glean Document ID. - operationId: recommendations - x-visibility: Preview - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/RecommendationsRequest" - description: Recommendations request - required: true - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/RecommendationsResponse" - "202": - description: Accepted. The Retry-After header has a hint about when the response will be available - "204": - description: There are no recommendations for this URL - "400": - description: Invalid request - "401": - description: Not Authorized - "403": - description: Document does not exist or user cannot access document - "429": - description: Too Many Requests - x-speakeasy-group: client.search - x-speakeasy-name-override: recommendations - /rest/api/v1/search: - post: - tags: - - Search - summary: Search - description: Retrieve results from the index for the given query and filters. - operationId: search - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/SearchRequest" - description: Search request - required: true - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/SearchResponse" - "400": - description: Invalid request - "401": - description: Not Authorized - "403": - description: Forbidden - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorInfo" - "408": - description: Request Timeout - "422": - description: Invalid Query - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorInfo" - "429": - description: Too Many Requests - x-speakeasy-group: client.search - x-speakeasy-name-override: query - /rest/api/v1/listentities: - post: - tags: - - Entities - summary: List entities - description: List some set of details for all entities that fit the given criteria and return in the requested order. Does not support negation in filters, assumes relation type EQUALS. There is a limit of 10000 entities that can be retrieved via this endpoint, except when using FULL_DIRECTORY request type for people entities. - operationId: listentities - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/ListEntitiesRequest" - description: List people request - required: true - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/ListEntitiesResponse" - "400": - description: Invalid request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-group: client.entities - x-speakeasy-name-override: list - /rest/api/v1/people: - post: - tags: - - Entities - summary: Read people - description: Read people details for the given IDs. - operationId: people - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/PeopleRequest" - description: People request - required: true - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/PeopleResponse" - "400": - description: Invalid request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-name-override: readPeople - x-speakeasy-group: client.entities - /rest/api/v1/createshortcut: - post: - tags: - - Shortcuts - summary: Create shortcut - description: Create a user-generated shortcut that contains an alias and destination URL. - operationId: createshortcut - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/CreateShortcutRequest" - description: CreateShortcut request - required: true - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/CreateShortcutResponse" - "400": - description: Invalid request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-name-override: create - x-speakeasy-group: client.shortcuts - /rest/api/v1/deleteshortcut: - post: - tags: - - Shortcuts - summary: Delete shortcut - description: Delete an existing user-generated shortcut. - operationId: deleteshortcut - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/DeleteShortcutRequest" - description: DeleteShortcut request - required: true - x-exportParamName: Request - responses: - "200": - description: OK - "400": - description: Invalid request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-name-override: delete - x-speakeasy-group: client.shortcuts - /rest/api/v1/getshortcut: - post: - tags: - - Shortcuts - summary: Read shortcut - description: Read a particular shortcut's details given its ID. - operationId: getshortcut - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/GetShortcutRequest" - description: GetShortcut request - required: true - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/GetShortcutResponse" - "400": - description: Invalid request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-group: client.shortcuts - x-speakeasy-name-override: retrieve - /rest/api/v1/listshortcuts: - post: - tags: - - Shortcuts - summary: List shortcuts - description: List shortcuts editable/owned by the currently authenticated user. - operationId: listshortcuts - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/ListShortcutsPaginatedRequest" - description: Filters, sorters, paging params required for pagination - required: true - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/ListShortcutsPaginatedResponse" - "400": - description: Invalid request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-group: client.shortcuts - x-speakeasy-name-override: list - /rest/api/v1/updateshortcut: - post: - tags: - - Shortcuts - summary: Update shortcut - description: Updates the shortcut with the given ID. - operationId: updateshortcut - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/UpdateShortcutRequest" - description: Shortcut content. Id need to be specified for the shortcut. - required: true - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/UpdateShortcutResponse" - "400": - description: Invalid request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-group: client.shortcuts - x-speakeasy-name-override: update - /rest/api/v1/summarize: - post: - tags: - - Summarize - summary: Summarize documents - description: Generate an AI summary of the requested documents. - operationId: summarize - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/SummarizeRequest" - description: Includes request params such as the query and specs of the documents to summarize. - required: true - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/SummarizeResponse" - "400": - description: Invalid request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-name-override: summarize - x-speakeasy-group: client.documents - /rest/api/v1/addverificationreminder: - post: - tags: - - Verification - summary: Create verification - description: Creates a verification reminder for the document. Users can create verification reminders from different product surfaces. - operationId: addverificationreminder - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/ReminderRequest" - description: Details about the reminder. - required: true - x-exportParamName: ReminderRequest - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/Verification" - "400": - description: Invalid request - "401": - description: Not Authorized - "403": - description: Document does not exist, does not support verification or user cannot access document - "429": - description: Too Many Requests - x-speakeasy-name-override: addReminder - x-speakeasy-group: client.verification - /rest/api/v1/listverifications: - post: - tags: - - Verification - summary: List verifications - description: Returns the information to be rendered in verification dashboard. Includes information for each document owned by user regarding their verifications. - operationId: listverifications - x-visibility: Public - x-codegen-request-body-name: payload - parameters: - - in: query - name: count - description: Maximum number of documents to return - required: false - schema: - type: integer - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/VerificationFeed" - "400": - description: Invalid request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-name-override: list - x-speakeasy-group: client.verification - /rest/api/v1/verify: - post: - tags: - - Verification - summary: Update verification - description: Verify documents to keep the knowledge up to date within customer corpus. - operationId: verify - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/VerifyRequest" - description: Details about the verification request. - required: true - x-exportParamName: VerifyRequest - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/Verification" - "400": - description: Invalid request - "401": - description: Not Authorized - "403": - description: Document does not exist, does not support verification or user cannot access document - "429": - description: Too Many Requests - x-speakeasy-name-override: verify - x-speakeasy-group: client.verification - /rest/api/v1/tools/list: - get: - summary: List available tools - description: Returns a filtered set of available tools based on optional tool name parameters. If no filters are provided, all available tools are returned. - x-visibility: Preview - parameters: - - in: query - name: toolNames - description: Optional array of tool names to filter by - required: false - schema: - type: array - items: - type: string - style: form - explode: false - responses: - "200": - description: Successful operation - content: - application/json: - schema: - $ref: "#/components/schemas/ToolsListResponse" - "400": - description: Bad Request - "401": - description: Unauthorized - "404": - description: Not Found - "429": - description: Too Many Requests - tags: - - Tools - x-speakeasy-name-override: list - x-speakeasy-group: client.tools - /rest/api/v1/tools/call: - post: - summary: Execute the specified tool - description: Execute the specified tool with provided parameters - x-visibility: Preview - requestBody: - required: true - content: - application/json: - schema: - $ref: "#/components/schemas/ToolsCallRequest" - responses: - "200": - description: Successful operation - content: - application/json: - schema: - $ref: "#/components/schemas/ToolsCallResponse" - "400": - description: Bad Request - "401": - description: Unauthorized - "404": - description: Not Found - "429": - description: Too Many Requests - tags: - - Tools - x-speakeasy-name-override: run - x-speakeasy-group: client.tools - /api/index/v1/indexdocument: - post: - summary: Index document - description: Adds a document to the index or updates an existing document. - tags: - - Documents - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/IndexDocumentRequest" - required: true - x-exportParamName: IndexDocumentRequest - responses: - "200": - description: OK - "400": - description: Bad Request - "401": - description: Not Authorized - "409": - description: Conflict - "429": - description: Too Many Requests - x-speakeasy-name-override: addOrUpdate - x-speakeasy-group: indexing.documents - /api/index/v1/indexdocuments: - post: - summary: Index documents - description: Adds or updates multiple documents in the index. Please refer to the [bulk indexing](https://developers.glean.com/indexing/documents/bulk-indexing/choosing-indexdocuments-vs-bulkindexdocuments) documentation for an explanation of when to use this endpoint. - tags: - - Documents - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/IndexDocumentsRequest" - required: true - x-exportParamName: IndexDocumentsRequest - responses: - "200": - description: OK - "400": - description: Bad Request - "401": - description: Not Authorized - "409": - description: Conflict - "429": - description: Too Many Requests - x-speakeasy-name-override: index - x-speakeasy-group: indexing.documents - /api/index/v1/bulkindexdocuments: - post: - summary: Bulk index documents - description: Replaces the documents in a datasource using paginated batch API calls. Please refer to the [bulk indexing](https://developers.glean.com/indexing/documents/bulk-upload-model) documentation for an explanation of how to use bulk endpoints. - tags: - - Documents - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/BulkIndexDocumentsRequest" - required: true - x-exportParamName: BulkIndexDocumentsRequest - responses: - "200": - description: OK - "400": - description: Bad Request - "401": - description: Not Authorized - "409": - description: Conflict - x-speakeasy-name-override: bulkIndex - x-speakeasy-group: indexing.documents - /api/index/v1/updatepermissions: - post: - summary: Update document permissions - description: Updates the permissions for a given document without modifying document content. - tags: - - Documents - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/UpdatePermissionsRequest" - required: true - x-exportParamName: UpdatePermissionsRequest - responses: - "200": - description: OK - "400": - description: Bad Request - "401": - description: Not Authorized - "409": - description: Conflict - "429": - description: Too Many Requests - x-speakeasy-name-override: updatePermissions - x-speakeasy-group: indexing.permissions - /api/index/v1/processalldocuments: - post: - summary: Schedules the processing of uploaded documents - description: | - Schedules the immediate processing of documents uploaded through the indexing API. By default the uploaded documents will be processed asynchronously but this API can be used to schedule processing of all documents on demand. + /api/agents/search: + post: + tags: + - Agents + summary: Search agents + description: | + Search agents available to the authenticated user by agent name. + operationId: platform-agents-search + x-visibility: Public + x-codegen-request-body-name: payload + requestBody: + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/PlatformAgentsSearchRequest" + responses: + "200": + description: Successful response. + content: + application/json: + schema: + $ref: "#/components/schemas/PlatformAgentsSearchResponse" + "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: agents + x-speakeasy-name-override: search + security: + - APIToken: [] + /api/agents/{agent_id}: + get: + tags: + - Agents + summary: Get agent + description: | + Retrieve details for an agent available to the authenticated user. + operationId: platform-agents-get + x-visibility: Public + parameters: + - in: path + name: agent_id + description: ID of the agent to retrieve. + required: true + schema: + type: string + minLength: 1 + responses: + "200": + description: Successful response. + content: + application/json: + schema: + $ref: "#/components/schemas/PlatformAgentGetResponse" + "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: agents + x-speakeasy-name-override: get + security: + - APIToken: [] + /api/agents/{agent_id}/schemas: + get: + tags: + - Agents + summary: Get agent schemas + description: | + Retrieve an agent's input and output JSON schemas. + operationId: platform-agents-get-schemas + x-visibility: Public + parameters: + - in: path + name: agent_id + description: ID of the agent whose schemas should be retrieved. + required: true + schema: + type: string + minLength: 1 + - in: query + name: include_tools + description: Whether to include tool metadata in the response. + required: false + schema: + type: boolean + default: false + responses: + "200": + description: Successful response. + content: + application/json: + schema: + $ref: "#/components/schemas/PlatformAgentSchemasResponse" + "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: agents + x-speakeasy-name-override: getSchemas + security: + - APIToken: [] + /api/agents/{agent_id}/runs: + post: + tags: + - Agents + summary: Create agent run + description: | + Execute an agent run. Set `stream` to true to receive server-sent events; otherwise the response contains the final agent messages. + operationId: platform-agents-create-run + x-visibility: Public + x-codegen-request-body-name: payload + parameters: + - in: path + name: agent_id + description: ID of the agent to run. + required: true + schema: + type: string + minLength: 1 + requestBody: + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/PlatformAgentRunCreateRequest" + responses: + "200": + description: Successful response. + content: + application/json: + schema: + $ref: "#/components/schemas/PlatformAgentRunWaitResponse" + text/event-stream: + schema: + type: string + description: | + Server-sent events emitted by the running agent. Successful runs emit `message` events. A terminal failure after the stream has started emits exactly one `run.failed` event whose `data` is an `AgentRunFailedEventData` payload, then closes. + example: | + id: 1 + event: message + data: {"messages":[{"role":"GLEAN_AI","content":[{"text":"Hello","type":"text"}]}]} - If a `datasource` parameter is specified, processing is limited to that custom datasource. Without it, processing applies to all documents across all custom datasources. - #### Rate Limits - This endpoint is rate-limited to one usage every 3 hours. Exceeding this limit results in a 429 response code. Here's how the rate limit works: - 1. Calling `/processalldocuments` for datasource `foo` prevents another call for `foo` for 3 hours. - 2. Calling `/processalldocuments` for datasource `foo` doesn't affect immediate calls for `bar`. - 3. Calling `/processalldocuments` for all datasources prevents any datasource calls for 3 hours. - 4. Calling `/processalldocuments` for datasource `foo` doesn't affect immediate calls for all datasources. + id: 2 + event: message + data: {"messages":[{"role":"GLEAN_AI","content":[{"text":", I can help with HR policy questions.","type":"text"}]}]} - For more frequent document processing, contact Glean support. - tags: - - Documents - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/ProcessAllDocumentsRequest" - x-exportParamName: ProcessAllDocumentsRequest - responses: - "200": - description: OK - "400": - description: Bad Request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-name-override: processAll - x-speakeasy-group: indexing.documents - /api/index/v1/deletedocument: - post: - summary: Delete document - description: Deletes the specified document from the index. Succeeds if document is not present. - tags: - - Documents - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/DeleteDocumentRequest" - required: true - x-exportParamName: DeleteDocumentRequest - responses: - "200": - description: OK - "400": - description: Bad Request - "401": - description: Not Authorized - "409": - description: Conflict - x-speakeasy-name-override: delete - x-speakeasy-group: indexing.documents - /api/index/v1/indexuser: - post: - summary: Index user - description: Adds a datasource user or updates an existing user. - tags: - - Permissions - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/IndexUserRequest" - required: true - x-exportParamName: IndexUserRequest - responses: - "200": - description: OK - "400": - description: Bad Request - "401": - description: Not Authorized - "409": - description: Conflict - x-speakeasy-name-override: indexUser - x-speakeasy-group: indexing.permissions - /api/index/v1/bulkindexusers: - post: - summary: Bulk index users - description: | - Replaces the users in a datasource using paginated batch API calls. Please refer to the [bulk indexing](https://developers.glean.com/indexing/documents/bulk-upload-model) documentation for an explanation of how to use bulk endpoints. - Note: Any users deleted from the existing set will have their associated memberships deleted as well. - tags: - - Permissions - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/BulkIndexUsersRequest" - required: true - x-exportParamName: BulkIndexUsersRequest - responses: - "200": - description: OK - "400": - description: Bad Request - "401": - description: Not Authorized - "409": - description: Conflict - x-speakeasy-name-override: bulkIndexUsers - x-speakeasy-group: indexing.permissions - /api/index/v1/indexgroup: - post: - summary: Index group - description: Add or update a group in the datasource. - tags: - - Permissions - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/IndexGroupRequest" - required: true - x-exportParamName: IndexGroupRequest - responses: - "200": - description: OK - "400": - description: Bad Request - "401": - description: Not Authorized - "409": - description: Conflict - x-speakeasy-name-override: indexGroup - x-speakeasy-group: indexing.permissions - /api/index/v1/bulkindexgroups: - post: - summary: Bulk index groups - description: | - Replaces the groups in a datasource using paginated batch API calls. Please refer to the [bulk indexing](https://developers.glean.com/indexing/documents/bulk-upload-model) documentation for an explanation of how to use bulk endpoints. - Note: Any groups deleted from the existing set will have their associated memberships deleted as well. - tags: - - Permissions - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/BulkIndexGroupsRequest" - required: true - x-exportParamName: BulkIndexGroupsRequest - responses: - "200": - description: OK - "400": - description: Bad Request - "401": - description: Not Authorized - "409": - description: Conflict - x-speakeasy-name-override: bulkIndexGroups - x-speakeasy-group: indexing.permissions - /api/index/v1/indexmembership: - post: - summary: Index membership - description: Add the memberships of a group in the datasource. - tags: - - Permissions - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/IndexMembershipRequest" - required: true - x-exportParamName: IndexMembershipRequest - responses: - "200": - description: OK - "400": - description: Bad Request - "401": - description: Not Authorized - "409": - description: Conflict - x-speakeasy-name-override: indexMembership - x-speakeasy-group: indexing.permissions - /api/index/v1/bulkindexmemberships: - post: - summary: Bulk index memberships for a group - description: Replaces the memberships for a group in a datasource using paginated batch API calls. Please refer to the [bulk indexing](https://developers.glean.com/indexing/documents/bulk-upload-model) documentation for an explanation of how to use bulk endpoints. - tags: - - Permissions - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/BulkIndexMembershipsRequest" - required: true - x-exportParamName: BulkIndexMembershipsRequest - responses: - "200": - description: OK - "400": - description: Bad Request - "401": - description: Not Authorized - "409": - description: Conflict - x-speakeasy-name-override: bulkIndexMemberships - x-speakeasy-group: indexing.permissions - /api/index/v1/processallmemberships: - post: - summary: Schedules the processing of group memberships - description: | - Schedules the immediate processing of all group memberships uploaded through the indexing API. By default the uploaded group memberships will be processed asynchronously but this API can be used to schedule processing of all memberships on demand. - tags: - - Permissions - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/ProcessAllMembershipsRequest" - x-exportParamName: ProcessAllMembershipsRequest - responses: - "200": - description: OK - "400": - description: Bad Request - "401": - description: Not Authorized - x-speakeasy-name-override: processMemberships - x-speakeasy-group: indexing.permissions - /api/index/v1/deleteuser: - post: - summary: Delete user - description: | - Delete the user from the datasource. Silently succeeds if user is not present. - Note: All memberships associated with the deleted user will also be deleted. - tags: - - Permissions - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/DeleteUserRequest" - required: true - x-exportParamName: DeleteUserRequest - responses: - "200": - description: OK - "400": - description: Bad Request - "401": - description: Not Authorized - "409": - description: Conflict - x-speakeasy-name-override: deleteUser - x-speakeasy-group: indexing.permissions - /api/index/v1/deletegroup: - post: - summary: Delete group - description: | - Delete group from the datasource. Silently succeeds if group is not present. - Note: All memberships associated with the deleted group will also be deleted. - tags: - - Permissions - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/DeleteGroupRequest" - required: true - x-exportParamName: DeleteGroupRequest - responses: - "200": - description: OK - "400": - description: Bad Request - "401": - description: Not Authorized - "409": - description: Conflict - x-speakeasy-name-override: deleteGroup - x-speakeasy-group: indexing.permissions - /api/index/v1/deletemembership: - post: - summary: Delete membership - description: Delete membership to a group in the specified datasource. Silently succeeds if membership is not present. - tags: - - Permissions - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/DeleteMembershipRequest" - required: true - x-exportParamName: DeleteMembershipRequest - responses: - "200": - description: OK - "400": - description: Bad Request - "401": - description: Not Authorized - "409": - description: Conflict - x-speakeasy-name-override: deleteMembership - x-speakeasy-group: indexing.permissions - /api/index/v1/debug/{datasource}/status: - post: - x-beta: true - summary: | - Beta: Get datasource status - description: | - Gather information about the datasource's overall status. Currently in beta, might undergo breaking changes without prior notice. + id: 3 + event: run.failed + data: {"error":{"type":"https://developers.glean.com/errors/spend-limit-exceeded","title":"Spend Limit Exceeded","status":403,"detail":"You've reached the monthly limit set by your admin.","code":"spend_limit_exceeded","request_id":"req_123","documentation_url":"https://developers.glean.com/errors/spend-limit-exceeded"}} + "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" + "409": + $ref: "#/components/responses/PlatformConflict" + "413": + $ref: "#/components/responses/PlatformRequestTooLarge" + "422": + description: Returned when the agent has tools the caller must authorize before the run can start. `authentication_suggestions` names each such tool; 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 run 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: agents + x-speakeasy-name-override: createRun + security: + - APIToken: [] + /api/chat: + post: + tags: + - Chat + summary: Create a chat response + description: | + Run an assistant turn. Set `stream` to true to receive server-sent events; otherwise the response is a typed JSON response object. + operationId: platform-chat-create + x-visibility: Public + x-glean-experimental: + id: e65a0a77-97a2-4c91-be60-eae7f6238015 + introduced: "2026-07-14" + x-codegen-request-body-name: payload + requestBody: + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/PlatformChatCreateRequest" + responses: + "200": + description: Successful response. + content: + application/json: + schema: + $ref: "#/components/schemas/PlatformChatCompletedResponse" + text/event-stream: + schema: + type: string + description: | + Server-sent events for a streaming chat run. Event payloads are documented under ChatStream* schemas. + example: | + id: 1 + event: RESPONSE_CREATED + data: {"type":"RESPONSE_CREATED","response_id":"resp_e65a0a77-97a2-4c91-be60-eae7f6238015"} - Tip: Refer to the [Troubleshooting tutorial](https://developers.glean.com/indexing/debugging/datasource-config) for more information. - tags: - - Troubleshooting - parameters: - - name: datasource - in: path - description: The datasource to get debug status for. - required: true - schema: - type: string - responses: - "200": - description: OK - content: - application/json; charset=UTF-8: - schema: - $ref: "#/components/schemas/DebugDatasourceStatusResponse" - "400": - description: Bad Request - "401": - description: Not Authorized - x-speakeasy-name-override: status - x-speakeasy-group: indexing.datasource - /api/index/v1/debug/{datasource}/document: - post: - x-beta: true - summary: | - Beta: Get document information - description: | - Gives various information that would help in debugging related to a particular document. Currently in beta, might undergo breaking changes without prior notice. + id: 2 + event: RESPONSE_PROGRESS + data: {"type":"RESPONSE_PROGRESS","response_id":"resp_e65a0a77-97a2-4c91-be60-eae7f6238015","text":"**Searching:** foo"} - Tip: Refer to the [Troubleshooting tutorial](https://developers.glean.com/indexing/debugging/datasource-config) for more information. - tags: - - Troubleshooting - parameters: - - name: datasource - in: path - description: The datasource to which the document belongs - required: true - schema: - type: string - requestBody: - content: - application/json; charset=UTF-8: - schema: - $ref: "#/components/schemas/DebugDocumentRequest" - required: true - x-exportParamName: DebugDocumentRequest - responses: - "200": - description: OK - content: - application/json; charset=UTF-8: - schema: - $ref: "#/components/schemas/DebugDocumentResponse" - "400": - description: Bad Request - "401": - description: Not Authorized - x-speakeasy-group: indexing.documents - x-speakeasy-name-override: debug - /api/index/v1/debug/{datasource}/documents: - post: - x-beta: true - summary: | - Beta: Get information of a batch of documents - description: | - Gives various information that would help in debugging related to a batch of documents. Currently in beta, might undergo breaking changes without prior notice. + id: 3 + event: RESPONSE_OUTPUT_TEXT_DELTA + data: {"type":"RESPONSE_OUTPUT_TEXT_DELTA","response_id":"resp_e65a0a77-97a2-4c91-be60-eae7f6238015","delta":"Hello"} - Tip: Refer to the [Troubleshooting tutorial](https://developers.glean.com/indexing/debugging/datasource-config) for more information. - tags: - - Troubleshooting - parameters: - - name: datasource - in: path - description: The datasource to which the document belongs - required: true - schema: - type: string - requestBody: - content: - application/json; charset=UTF-8: - schema: - $ref: "#/components/schemas/DebugDocumentsRequest" - required: true - x-exportParamName: DebugDocumentsRequest - responses: - "200": - description: OK - content: - application/json; charset=UTF-8: - schema: - $ref: "#/components/schemas/DebugDocumentsResponse" - "400": - description: Bad Request - "401": - description: Not Authorized - x-speakeasy-group: indexing.documents - x-speakeasy-name-override: debugMany - /api/index/v1/debug/{datasource}/user: - post: - x-beta: true - summary: | - Beta: Get user information - description: | - Gives various information that would help in debugging related to a particular user. Currently in beta, might undergo breaking changes without prior notice. + id: 4 + event: RESPONSE_OUTPUT_TEXT_DONE + data: {"type":"RESPONSE_OUTPUT_TEXT_DONE","response_id":"resp_e65a0a77-97a2-4c91-be60-eae7f6238015","text":"Hello"} - Tip: Refer to the [Troubleshooting tutorial](https://developers.glean.com/indexing/debugging/datasource-config) for more information. - tags: - - Troubleshooting - parameters: - - name: datasource - in: path - description: The datasource to which the user belongs - required: true - schema: - type: string - requestBody: - content: - application/json; charset=UTF-8: - schema: - $ref: "#/components/schemas/DebugUserRequest" - required: true - x-exportParamName: DebugUserRequest - responses: - "200": - description: OK - content: - application/json; charset=UTF-8: - schema: - $ref: "#/components/schemas/DebugUserResponse" - "400": - description: Bad Request - "401": - description: Not Authorized - x-speakeasy-name-override: debug - x-speakeasy-group: indexing.people - /api/index/v1/checkdocumentaccess: - post: - summary: Check document access - description: | - Check if a given user has access to access a document in a custom datasource + id: 5 + event: RESPONSE_COMPLETED + data: {"type":"RESPONSE_COMPLETED","response_id":"resp_e65a0a77-97a2-4c91-be60-eae7f6238015","response":{"id":"resp_e65a0a77-97a2-4c91-be60-eae7f6238015","object":"RESPONSE","status":"COMPLETED","output":[{"type":"MESSAGE","role":"ASSISTANT","content":[{"type":"OUTPUT_TEXT","text":"Hello"}]}],"store":true,"request_id":"req_123","created_at":"2026-07-14T20:00:00Z"}} + "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" + "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: create + security: + - APIToken: [] + /api/skills: + post: + tags: + - 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. + operationId: platform-skills-create + x-visibility: Public + x-glean-experimental: + id: 3cd55572-0d5c-4898-9ecf-1b86c520d1c7 + introduced: "2026-06-24" + requestBody: + required: true + content: + multipart/form-data: + schema: + $ref: "#/components/schemas/PlatformSkillCreateRequest" + x-codegen-request-body-name: request + responses: + "200": + description: Successful response. + content: + application/json: + schema: + $ref: "#/components/schemas/PlatformSkillCreateResponse" + "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: skills + x-speakeasy-name-override: create + security: + - APIToken: [] + get: + tags: + - Skills + summary: List skills + description: | + List skills available to the authenticated user. + operationId: platform-skills-list + x-visibility: Public + x-glean-experimental: + id: 3eb65937-03a3-472b-9a00-be713f302b5f + introduced: "2026-06-23" + parameters: + - in: query + name: page_size + description: Maximum number of skills to return. + required: false + schema: + type: integer + minimum: 1 + maximum: 100 + - in: query + name: cursor + description: Opaque pagination cursor from a previous response. + required: false + schema: + type: string + minLength: 1 + responses: + "200": + description: Successful response. + content: + application/json: + schema: + $ref: "#/components/schemas/PlatformSkillsListResponse" + "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: skills + x-speakeasy-name-override: list + security: + - APIToken: [] + /api/skills/import: + post: + tags: + - Skills + summary: Import skills from GitHub + description: | + Import one or more skills selected from a GitHub source preview. Each source URL is fetched and persisted as an independent skill with source provenance. This operation does not create a durable source resource. The import is atomic: if any source cannot be fetched, validated, or persisted, no skills are created. + operationId: platform-skills-import + x-visibility: Public + x-glean-experimental: + id: 9162d790-e101-437d-a9a0-25e4687d150b + introduced: "2026-07-28" + x-codegen-request-body-name: request + requestBody: + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/PlatformSkillImportRequest" + responses: + "200": + description: Skills imported successfully. + content: + application/json: + schema: + $ref: "#/components/schemas/PlatformSkillImportResponse" + "400": + $ref: "#/components/responses/PlatformBadRequest" + "401": + $ref: "#/components/responses/PlatformUnauthorized" + "403": + $ref: "#/components/responses/PlatformForbidden" + "408": + $ref: "#/components/responses/PlatformRequestTimeout" + "409": + $ref: "#/components/responses/PlatformConflict" + "413": + $ref: "#/components/responses/PlatformRequestTooLarge" + "429": + $ref: "#/components/responses/PlatformTooManyRequests" + "500": + $ref: "#/components/responses/PlatformInternalServerError" + "503": + $ref: "#/components/responses/PlatformServiceUnavailable" + x-speakeasy-group: skills + x-speakeasy-name-override: import + security: + - APIToken: [] + /api/skills/validation: + post: + tags: + - Skills + summary: Validate skill bundle + description: | + Validate a skill bundle without persisting it. Accepts a SKILL.md, .zip, or .skill upload and returns parsed metadata plus the normalized file layout. + operationId: platform-skills-validate + x-visibility: Public + x-glean-experimental: + id: 0b086fa6-30f8-4279-8d11-10ab0059c14a + introduced: "2026-06-24" + requestBody: + required: true + content: + multipart/form-data: + schema: + $ref: "#/components/schemas/PlatformSkillValidationRequest" + x-codegen-request-body-name: request + responses: + "200": + description: Successful response. + content: + application/json: + schema: + $ref: "#/components/schemas/PlatformSkillValidationResponse" + "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: skills + x-speakeasy-name-override: validate + security: + - APIToken: [] + /api/skills/sources/preview: + post: + tags: + - Skills + summary: Preview a GitHub skill source + description: | + 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. + operationId: platform-skills-preview-source + 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: + $ref: "#/components/schemas/PlatformSkillSourcePreviewRequest" + responses: + "200": + description: Successful response. + content: + 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"]} - Tip: Refer to the [Troubleshooting tutorial](https://developers.glean.com/indexing/debugging/datasource-config) for more information. - tags: - - Troubleshooting - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/CheckDocumentAccessRequest" - required: true - x-exportParamName: CheckDocumentAccessRequest - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/CheckDocumentAccessResponse" - "400": - description: Bad Request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-group: indexing.documents - x-speakeasy-name-override: checkAccess - /api/index/v1/getdocumentstatus: - post: - deprecated: true - summary: Get document upload and indexing status - description: | - Intended for debugging/validation. Fetches the current upload and indexing status of documents. + data: {"type":"progress","completed":1,"total":1,"current_skill":"skills/example/SKILL.md"} - Tip: Use [/debug/{datasource}/document](https://developers.glean.com/indexing/debugging/datasource-document) for richer information. - tags: - - Troubleshooting - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/GetDocumentStatusRequest" - required: true - x-exportParamName: GetDocumentStatusRequest - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/GetDocumentStatusResponse" - "400": - description: Bad Request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-group: indexing.documents - x-speakeasy-name-override: status - /api/index/v1/getdocumentcount: - post: - deprecated: true - summary: Get document count - description: | - Fetches document count for the specified custom datasource. + 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"]}} - Tip: Use [/debug/{datasource}/status](https://developers.glean.com/indexing/debugging/datasource-status) for richer information. - tags: - - Troubleshooting - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/GetDocumentCountRequest" - required: true - x-exportParamName: GetDocumentCountRequest - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/GetDocumentCountResponse" - "400": - description: Bad Request - "401": - description: Not Authorized - "409": - description: Conflict - x-speakeasy-group: indexing.documents - x-speakeasy-name-override: count - /api/index/v1/getusercount: - post: - deprecated: true - summary: Get user count - description: | - Fetches user count for the specified custom datasource. + 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"}} - Tip: Use [/debug/{datasource}/status](https://developers.glean.com/indexing/debugging/datasource-status) for richer information. - tags: - - Troubleshooting - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/GetUserCountRequest" - required: true - x-exportParamName: GetUserCountRequest - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/GetUserCountResponse" - "400": - description: Bad Request - "401": - description: Not Authorized - "409": - description: Conflict - x-speakeasy-name-override: count - x-speakeasy-group: indexing.people - /api/index/v1/betausers: - post: - summary: Beta users - description: Allow the datasource be visible to the specified beta users. The default behaviour is datasource being visible to all users if it is enabled and not visible to any user if it is not enabled. - tags: - - Permissions - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/GreenlistUsersRequest" - required: true - x-exportParamName: GreenlistUsersRequest - responses: - "200": - description: OK - "400": - description: Bad Request - "401": - description: Not Authorized - "409": - description: Conflict - x-speakeasy-name-override: authorizeBetaUsers - x-speakeasy-group: indexing.permissions - /api/index/v1/adddatasource: - post: - summary: Add or update datasource - description: Add or update a custom datasource and its schema. - tags: - - Datasources - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/CustomDatasourceConfig" - required: true - x-exportParamName: DatasourceConfig - responses: - "200": - description: OK - "400": - description: Bad Request - "401": - description: Not Authorized - x-speakeasy-name-override: add - x-speakeasy-group: indexing.datasources - /api/index/v1/getdatasourceconfig: - post: - summary: Get datasource config - description: Fetches the datasource config for the specified custom datasource. - tags: - - Datasources - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/GetDatasourceConfigRequest" - required: true - x-exportParamName: GetDatasourceConfigRequest - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/CustomDatasourceConfig" - "400": - description: Bad Request - "401": - description: Not Authorized - "409": - description: Conflict - x-speakeasy-name-override: retrieveConfig - x-speakeasy-group: indexing.datasources - /api/index/v1/rotatetoken: - post: - summary: Rotate token - description: Rotates the secret value inside the Indexing API token and returns the new raw secret. All other properties of the token are unchanged. In order to rotate the secret value, include the token as the bearer token in the `/rotatetoken` request. Please refer to [Token rotation](https://developers.glean.com/indexing/authentication/token-rotation) documentation for more information. - tags: - - Authentication - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/RotateTokenResponse" - "400": - description: Bad Request - "401": - description: Not Authorized - x-speakeasy-name-override: rotateToken - x-speakeasy-group: indexing.authentication - /api/index/v1/indexemployee: - post: - summary: Index employee - description: Adds an employee or updates information about an employee - tags: - - People - requestBody: - content: - application/json; charset=UTF-8: - schema: - $ref: "#/components/schemas/IndexEmployeeRequest" - required: true - x-exportParamName: IndexEmployeeRequest - responses: - "200": - description: OK - "400": - description: Bad Request - "401": - description: Not Authorized - "409": - description: Conflict - x-speakeasy-name-override: index - x-speakeasy-group: indexing.people - /api/index/v1/bulkindexemployees: - post: - summary: Bulk index employees - description: Replaces all the currently indexed employees using paginated batch API calls. Please refer to the [bulk indexing](https://developers.glean.com/indexing/documents/bulk-upload-model) documentation for an explanation of how to use bulk endpoints. - tags: - - People - requestBody: - content: - application/json; charset=UTF-8: - schema: - $ref: "#/components/schemas/BulkIndexEmployeesRequest" - required: true - x-exportParamName: BulkIndexEmployeesRequest - responses: - "200": - description: OK - "400": - description: Bad Request - "401": - description: Not Authorized - "409": - description: Conflict - x-speakeasy-name-override: bulkIndex - x-speakeasy-group: indexing.people - /api/index/v1/indexemployeelist: {} - /api/index/v1/processallemployeesandteams: - post: - summary: Schedules the processing of uploaded employees and teams - description: | - Schedules the immediate processing of employees and teams uploaded through the indexing API. By default all uploaded people data will be processed asynchronously but this API can be used to schedule its processing on demand. - tags: - - People - responses: - "200": - description: OK - "400": - description: Bad Request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-name-override: processAllEmployeesAndTeams - x-speakeasy-group: indexing.people - /api/index/v1/deleteemployee: - post: - summary: Delete employee - description: Delete an employee. Silently succeeds if employee is not present. - tags: - - People - requestBody: - content: - application/json; charset=UTF-8: - schema: - $ref: "#/components/schemas/DeleteEmployeeRequest" - required: true - x-exportParamName: DeleteEmployeeRequest - responses: - "200": - description: OK - "400": - description: Bad Request - "401": - description: Not Authorized - "409": - description: Conflict - x-speakeasy-name-override: delete - x-speakeasy-group: indexing.people - /api/index/v1/indexteam: - post: - summary: Index team - description: Adds a team or updates information about a team - tags: - - People - requestBody: - content: - application/json; charset=UTF-8: - schema: - $ref: "#/components/schemas/IndexTeamRequest" - required: true - x-exportParamName: IndexTeamRequest - responses: - "200": - description: OK - "400": - description: Bad Request - "401": - description: Not Authorized - "409": - description: Conflict - x-speakeasy-name-override: indexTeam - x-speakeasy-group: indexing.people - /api/index/v1/deleteteam: - post: - summary: Delete team - description: Delete a team based on provided id. - tags: - - People - requestBody: - content: - application/json; charset=UTF-8: - schema: - $ref: "#/components/schemas/DeleteTeamRequest" - required: true - x-exportParamName: DeleteTeamRequest - responses: - "200": - description: OK - "400": - description: Bad Request - "401": - description: Not Authorized - "409": - description: Conflict - x-speakeasy-name-override: deleteTeam - x-speakeasy-group: indexing.people - /api/index/v1/bulkindexteams: - post: - summary: Bulk index teams - description: Replaces all the currently indexed teams using paginated batch API calls. Please refer to the [bulk indexing](https://developers.glean.com/indexing/documents/bulk-upload-model) documentation for an explanation of how to use bulk endpoints. - tags: - - People - requestBody: - content: - application/json; charset=UTF-8: - schema: - $ref: "#/components/schemas/BulkIndexTeamsRequest" - required: true - x-exportParamName: BulkIndexTeamsRequest - responses: - "200": - description: OK - "400": - description: Bad Request - "401": - description: Not Authorized - "409": - description: Conflict - x-speakeasy-name-override: bulkIndexTeams - x-speakeasy-group: indexing.people - /api/index/v1/bulkindexshortcuts: - post: - summary: Bulk index external shortcuts - description: Replaces all the currently indexed shortcuts using paginated batch API calls. Note that this endpoint is used for indexing shortcuts not hosted by Glean. If you want to upload shortcuts that would be hosted by Glean, please use the `/uploadshortcuts` endpoint. For information on what you can do with Golinks, which are Glean-hosted shortcuts, please refer to [this](https://help.glean.com/en/articles/5628838-how-go-links-work) page. - tags: - - Shortcuts - requestBody: - content: - application/json; charset=UTF-8: - schema: - $ref: "#/components/schemas/BulkIndexShortcutsRequest" - required: true - x-exportParamName: BulkIndexShortcutsRequest - responses: - "200": - description: OK - "400": - description: Bad Request - "401": - description: Not Authorized - "409": - description: Conflict - x-speakeasy-name-override: bulkIndex - x-speakeasy-group: indexing.shortcuts - /api/index/v1/uploadshortcuts: - post: - summary: Upload shortcuts - description: Creates glean shortcuts for uploaded shortcuts info. Glean would host the shortcuts, and they can be managed in the knowledge tab once uploaded. - tags: - - Shortcuts - requestBody: - content: - application/json; charset=UTF-8: - schema: - $ref: "#/components/schemas/UploadShortcutsRequest" - required: true - x-exportParamName: UploadShortcutsRequest - responses: - "200": - description: OK - "400": - description: Bad Request - "401": - description: Not Authorized - "409": - description: Conflict - x-speakeasy-name-override: upload - x-speakeasy-group: indexing.shortcuts - /rest/api/v1/governance/data/policies/{id}: - get: - description: Fetches the specified policy version, or the latest if no version is provided. - summary: Gets specified policy - operationId: getpolicy - x-visibility: Public - tags: - - Governance - parameters: - - name: id - in: path - description: The id of the policy to fetch. - required: true - schema: - type: string - - name: version - in: query - description: The version of the policy to fetch. Each time a policy is updated, the older version is still stored. If this is left empty, the latest policy is fetched. - required: false - schema: - type: integer - format: int64 - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/GetDlpReportResponse" - "403": - description: Permissions error - "500": - description: Internal error - x-speakeasy-group: client.governance.data.policies - x-speakeasy-name-override: retrieve - post: - description: Updates an existing policy. - summary: Updates an existing policy - operationId: updatepolicy - tags: - - Governance - parameters: - - name: id - in: path - description: The id of the policy to fetch. - required: true - schema: - type: string - requestBody: - content: - application/json; charset=UTF-8: - schema: - $ref: "#/components/schemas/UpdateDlpReportRequest" - required: true - responses: - "200": - description: OK - content: - application/json; charset=UTF-8: - schema: - $ref: "#/components/schemas/UpdateDlpReportResponse" - "403": - description: Permissions error - "500": - description: Internal error - x-speakeasy-group: client.governance.data.policies - x-speakeasy-name-override: update - /rest/api/v1/governance/data/policies: - get: - description: Lists policies with filtering. - summary: Lists policies - operationId: listpolicies - x-visibility: Public - tags: - - Governance - parameters: - - name: autoHide - in: query - description: Filter to return reports with a given value of auto-hide. - required: false - schema: - type: boolean - - name: frequency - in: query - description: Filter to return reports with a given frequency. - required: false - schema: - type: string - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/ListDlpReportsResponse" - "403": - description: Permissions error - "500": - description: Internal error - x-speakeasy-group: client.governance.data.policies - x-speakeasy-name-override: list - post: - description: Creates a new policy with specified specifications and returns its id. - summary: Creates new policy - operationId: createpolicy - x-visibility: Public - tags: - - Governance - requestBody: - content: - application/json; charset=UTF-8: - schema: - $ref: "#/components/schemas/CreateDlpReportRequest" - required: true - responses: - "200": - description: OK - content: - application/json; charset=UTF-8: - schema: - $ref: "#/components/schemas/CreateDlpReportResponse" - "403": - description: Permissions error - "500": - description: Internal error - x-speakeasy-group: client.governance.data.policies - x-speakeasy-name-override: create - /rest/api/v1/governance/data/policies/{id}/download: - get: - description: Downloads CSV violations report for a specific policy id. This does not support continuous policies. - summary: Downloads violations CSV for policy - operationId: downloadpolicycsv - x-visibility: Public - tags: - - Governance - parameters: - - name: id - in: path - description: The id of the policy to download violations for. - required: true - schema: - type: string - responses: - "200": - description: Downloads csv of batch policy violations. - content: - text/csv; charset=UTF-8: - schema: - description: CSV of all the violations found for this policy. - type: string - "400": - description: Bad request error (e.g., continuous policies are not supported). - "403": - description: Permissions error - "500": - description: Internal error - x-speakeasy-group: client.governance.data.policies - x-speakeasy-name-override: download - /rest/api/v1/governance/data/reports: - post: - description: Creates a new one-time report and executes its batch job. - summary: Creates new one-time report - operationId: createreport - x-visibility: Public - tags: - - Governance - requestBody: - content: - application/json; charset=UTF-8: - schema: - $ref: "#/components/schemas/UpdateDlpConfigRequest" - required: true - responses: - "200": - description: OK - content: - application/json; charset=UTF-8: - schema: - $ref: "#/components/schemas/UpdateDlpConfigResponse" - "403": - description: Permissions error - "500": - description: Internal error - x-speakeasy-group: client.governance.data.reports - x-speakeasy-name-override: create - /rest/api/v1/governance/data/reports/{id}/download: - get: - description: Downloads CSV violations report for a specific report id. - summary: Downloads violations CSV for report - operationId: downloadreportcsv - x-visibility: Public - tags: - - Governance - parameters: - - name: id - in: path - description: The id of the report to download violations for. - required: true - schema: - type: string - responses: - "200": - description: Downloads csv of one-time report violations. - content: - text/csv; charset=UTF-8: - schema: - description: CSV of all the violations found for this report. - type: string - "403": - description: Permissions error - "500": - description: Internal error - x-speakeasy-group: client.governance.data.reports - x-speakeasy-name-override: download - /rest/api/v1/governance/data/reports/{id}/status: - get: - description: Fetches the status of the run corresponding to the report-id. - summary: Fetches report run status - operationId: getreportstatus - x-visibility: Public - tags: - - Governance - parameters: - - name: id - in: path - description: The id of the report to get run status for. - required: true - schema: - type: string - responses: - "200": - description: Fetches status of report run. - content: - application/json; charset=UTF-8: - schema: - $ref: "#/components/schemas/ReportStatusResponse" - "403": - description: Permissions error - "500": - description: Internal error - x-speakeasy-group: client.governance.data.reports - x-speakeasy-name-override: status - /rest/api/v1/governance/documents/visibilityoverrides: - get: - description: Fetches the visibility override status of the documents passed. - summary: Fetches documents visibility - operationId: getdocvisibility - x-visibility: Public - tags: - - Governance - parameters: - - name: docIds - in: query - description: List of doc-ids which will have their hide status fetched. - schema: - type: array - items: - type: string - responses: - "200": - description: The visibility status of documents - content: - application/json; charset=UTF-8: - schema: - $ref: "#/components/schemas/GetDocumentVisibilityOverridesResponse" - "403": - description: Permissions error - "500": - description: Internal error - x-speakeasy-group: client.governance.documents.visibilityoverrides - x-speakeasy-name-override: list - post: - description: Sets the visibility-override state of the documents specified, effectively hiding or un-hiding documents. - summary: Hide or unhide docs - operationId: setdocvisibility - x-visibility: Public - tags: - - Governance - requestBody: - content: - application/json; charset=UTF-8: - schema: - $ref: "#/components/schemas/UpdateDocumentVisibilityOverridesRequest" - required: true - responses: - "200": - description: OK - content: - application/json; charset=UTF-8: - schema: - $ref: "#/components/schemas/UpdateDocumentVisibilityOverridesResponse" - "403": - description: Permissions error - "500": - description: Internal error - x-speakeasy-group: client.governance.documents.visibilityoverrides - x-speakeasy-name-override: create - /rest/api/v1/governance/data/findings/exports: - post: - description: Creates a new DLP findings export job. - summary: Creates findings export - operationId: createfindingsexport - x-visibility: Private - tags: - - Governance - requestBody: - content: - application/json; charset=UTF-8: - schema: - $ref: "#/components/schemas/DlpExportFindingsRequest" + data: [DONE] + "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" + "429": + $ref: "#/components/responses/PlatformTooManyRequests" + "500": + $ref: "#/components/responses/PlatformInternalServerError" + "503": + $ref: "#/components/responses/PlatformServiceUnavailable" + x-speakeasy-group: skills + x-speakeasy-name-override: previewSource + security: + - APIToken: [] + /api/skills/{skill_id}: + patch: + tags: + - Skills + summary: Update skill + description: | + Update mutable metadata for a skill. V1 supports enabling or disabling a skill without changing its content. + operationId: platform-skills-update + x-visibility: Public + x-glean-experimental: + id: 262e1f6b-6c2d-4d6d-943b-fc251d2fb38b + introduced: "2026-07-20" + parameters: + - name: skill_id + in: path + required: true + description: Glean skill ID. + schema: + type: string + minLength: 1 + requestBody: + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/PlatformSkillUpdateRequest" + x-codegen-request-body-name: request + responses: + "200": + description: Successful response. + content: + application/json: + schema: + $ref: "#/components/schemas/PlatformSkillUpdateResponse" + "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" + "409": + $ref: "#/components/responses/PlatformConflict" + "413": + $ref: "#/components/responses/PlatformRequestTooLarge" + "429": + $ref: "#/components/responses/PlatformTooManyRequests" + "500": + $ref: "#/components/responses/PlatformInternalServerError" + "503": + $ref: "#/components/responses/PlatformServiceUnavailable" + x-speakeasy-group: skills + x-speakeasy-name-override: update + security: + - APIToken: [] + delete: + tags: + - Skills + summary: Delete skill + description: | + Delete a skill the authenticated caller is allowed to manage. This operation permanently removes all versions of the skill. + operationId: platform-skills-delete + x-visibility: Public + x-glean-experimental: + id: c4351fd0-4d28-4ad4-ab93-587ca4778173 + introduced: "2026-07-31" + parameters: + - name: skill_id + in: path + required: true + description: Glean skill ID. + schema: + type: string + minLength: 1 + responses: + "204": + description: Skill deleted. No content. + "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: skills + x-speakeasy-name-override: delete + security: + - APIToken: [] + get: + tags: + - Skills + summary: Retrieve skill + description: | + Retrieve metadata for a skill available to the authenticated user. + operationId: platform-skills-get + x-visibility: Public + x-glean-experimental: + id: 8f8d1c92-a484-4769-9903-200613dc8a72 + introduced: "2026-06-23" + parameters: + - name: skill_id + in: path + required: true + description: Glean skill ID. + schema: + type: string + minLength: 1 + responses: + "200": + description: Successful response. + content: + application/json: + schema: + $ref: "#/components/schemas/PlatformSkillGetResponse" + "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: skills + x-speakeasy-name-override: retrieve + security: + - APIToken: [] + /api/skills/{skill_id}/content: + get: + tags: + - Skills + summary: Download skill content + description: | + Download the latest installable bundle for a skill available to the authenticated user. + operationId: platform-skills-get-content + x-visibility: Public + x-glean-experimental: + id: fd6908d8-f230-4cd5-bf45-f71e69266b1d + introduced: "2026-06-24" + parameters: + - name: skill_id + in: path + required: true + description: Glean skill ID. + schema: + type: string + minLength: 1 + responses: + "200": + description: Successful response. + headers: + Content-Disposition: + description: Attachment filename for the skill bundle. + schema: + type: string + content: + application/octet-stream: + schema: + type: string + format: binary + "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: skills + x-speakeasy-name-override: retrieveContent + security: + - APIToken: [] + /api/skills/{skill_id}/sync: + post: + tags: + - Skills + summary: Sync a GitHub-imported skill + description: | + Refresh one GitHub-imported skill from its stored source URL. If the skill content has changed, this operation creates a new skill version. If the skill is no longer present upstream, the stored skill is left unchanged and must be deleted explicitly. + operationId: platform-skills-sync + x-visibility: Public + x-glean-experimental: + id: 568aa3f8-2af8-449c-9e4f-818ed4b877ef + introduced: "2026-08-03" + parameters: + - name: skill_id + in: path + required: true + description: ID of the GitHub-imported skill to sync. + schema: + type: string + minLength: 1 + responses: + "200": + description: Skill sync completed successfully. + content: + application/json: + schema: + $ref: "#/components/schemas/PlatformSkillSyncResponse" + "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" + "409": + $ref: "#/components/responses/PlatformConflict" + "413": + $ref: "#/components/responses/PlatformRequestTooLarge" + "429": + $ref: "#/components/responses/PlatformTooManyRequests" + "500": + $ref: "#/components/responses/PlatformInternalServerError" + "503": + $ref: "#/components/responses/PlatformServiceUnavailable" + x-speakeasy-group: skills + x-speakeasy-name-override: sync + security: + - APIToken: [] + /api/skills/{skill_id}/versions: + post: + tags: + - 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. + operationId: platform-skills-create-version + x-visibility: Public + x-glean-experimental: + id: 0d5e48e2-7a41-4d54-b3aa-5026f0dd65df + introduced: "2026-06-24" + parameters: + - name: skill_id + in: path + required: true + description: Glean skill ID. + schema: + type: string + minLength: 1 + requestBody: + required: true + content: + multipart/form-data: + schema: + $ref: "#/components/schemas/PlatformSkillVersionCreateRequest" + x-codegen-request-body-name: request + responses: + "200": + description: Successful response. + content: + application/json: + schema: + $ref: "#/components/schemas/PlatformSkillVersionCreateResponse" + "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" + "409": + $ref: "#/components/responses/PlatformConflict" + "413": + $ref: "#/components/responses/PlatformRequestTooLarge" + "429": + $ref: "#/components/responses/PlatformTooManyRequests" + "500": + $ref: "#/components/responses/PlatformInternalServerError" + "503": + $ref: "#/components/responses/PlatformServiceUnavailable" + x-speakeasy-group: skills + x-speakeasy-name-override: createVersion + security: + - APIToken: [] + get: + tags: + - Skills + summary: List skill versions + description: | + List versions for a skill available to the authenticated user. + operationId: platform-skills-list-versions + x-visibility: Public + x-glean-experimental: + id: 9efbb8a3-d546-4304-a653-09bb427e3681 + introduced: "2026-06-24" + parameters: + - name: skill_id + in: path + required: true + description: Glean skill ID. + schema: + type: string + minLength: 1 + - in: query + name: page_size + description: Maximum number of versions to return. + required: false + schema: + type: integer + minimum: 1 + maximum: 100 + - in: query + name: cursor + description: Opaque pagination cursor from a previous response. + required: false + schema: + type: string + minLength: 1 + responses: + "200": + description: Successful response. + content: + application/json: + schema: + $ref: "#/components/schemas/PlatformSkillVersionsListResponse" + "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: skills + x-speakeasy-name-override: listVersions + security: + - APIToken: [] + /api/skills/{skill_id}/versions/{version}: + get: + tags: + - Skills + summary: Retrieve skill version + description: | + Retrieve metadata for a skill version available to the authenticated user. + operationId: platform-skills-get-version + x-visibility: Public + x-glean-experimental: + id: d70986b1-ad80-48dd-8e52-f294e7251dda + introduced: "2026-06-24" + parameters: + - name: skill_id + in: path + required: true + description: Glean skill ID. + schema: + type: string + minLength: 1 + - name: version + in: path + required: true + description: Major version number. + schema: + type: integer + minimum: 1 + responses: + "200": + description: Successful response. + content: + application/json: + schema: + $ref: "#/components/schemas/PlatformSkillVersionGetResponse" + "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: skills + x-speakeasy-name-override: retrieveVersion + security: + - APIToken: [] + /api/skills/{skill_id}/versions/{version}/content: + get: + tags: + - Skills + summary: Download skill version content + description: | + Download the installable bundle for a skill version available to the authenticated user. + operationId: platform-skills-get-version-content + x-visibility: Public + x-glean-experimental: + id: 70c85692-7042-403a-a3a5-5b315576432a + introduced: "2026-06-24" + parameters: + - name: skill_id + in: path + required: true + description: Glean skill ID. + schema: + type: string + minLength: 1 + - name: version + in: path + required: true + description: Major version number. + schema: + type: integer + minimum: 1 + responses: + "200": + description: Successful response. + headers: + Content-Disposition: + description: Attachment filename for the skill bundle. + schema: + type: string + content: + application/octet-stream: + schema: + type: string + format: binary + "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: skills + x-speakeasy-name-override: retrieveVersionContent + security: + - APIToken: [] + /api/search: + post: + tags: + - Search + summary: Search + description: | + Search your organization's connected content and return ranked document results with cursor pagination. Use `GET /api/search/filters` to discover datasource identifiers and common filter fields. Built-in filter names are validated; other field names are accepted as custom filters and behavior depends on your Glean configuration and connected sources. + Errors: HTTP 422 `unprocessable_query` returns no `results` or `next_cursor`. See `warnings` on the response for non-blocking issues such as partially available results. Not every query issue produces a warning or error. + operationId: platform-search + x-visibility: Public + x-glean-experimental: + id: 5ab612fc-ed50-4419-bec3-e5fe83934653 + introduced: "2026-04-08" + x-codegen-request-body-name: payload + requestBody: + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/PlatformSearchRequest" + responses: + "200": + description: Successful response. + content: + application/json: + schema: + $ref: "#/components/schemas/PlatformSearchResponse" + "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" + "422": + $ref: "#/components/responses/PlatformUnprocessableEntity" + "429": + $ref: "#/components/responses/PlatformTooManyRequests" + "500": + $ref: "#/components/responses/PlatformInternalServerError" + "503": + $ref: "#/components/responses/PlatformServiceUnavailable" + x-speakeasy-group: search + x-speakeasy-name-override: query + security: + - APIToken: [] + /api/search/filters: + get: + tags: + - Search + summary: List search filters + description: | + List datasources and common built-in filter fields visible to the authenticated user. This is a best-effort catalog, not an exhaustive list of every filter search accepts. + Without `query`, returns field metadata only and does not run a search. With a nonblank `query`, provide exactly one `datasources` value to request suggested filter values for that query; no documents are returned and this endpoint does not include warning objects. See `FilterFieldInfo.values` for limitations on suggested values. Rate-limited requests return HTTP 429 with `Retry-After`; temporary backend unavailability returns HTTP 503. + operationId: platform-search-filters + x-visibility: Public + x-glean-experimental: + id: 0b585621-13fb-4544-bf20-5e1c99452735 + introduced: "2026-05-12" + parameters: + - in: query + name: datasources + description: | + Restrict metadata to one or more datasource identifiers as returned by this endpoint (for example, `jira`). With a nonblank `query`, exactly one datasource is required. Unknown or inaccessible identifiers return `invalid_datasource`. + required: false + schema: + type: array + minItems: 1 + items: + type: string + minLength: 1 + - in: query + name: query + description: | + Optional search query that requests suggested filter values for the selected datasource. Must be nonblank when present. Triggers a search for facet values only; does not return documents. + required: false + schema: + type: string + minLength: 1 + responses: + "200": + description: Successful response. + headers: + Cache-Control: + description: | + Present as `no-store` for query-backed discovery responses. Catalog-only responses omit this endpoint-specific override. + schema: + type: string + example: no-store + content: + application/json: + schema: + $ref: "#/components/schemas/PlatformSearchFiltersResponse" + "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: search + x-speakeasy-name-override: listFilters + security: + - APIToken: [] + /api/triggers: + post: + tags: + - Triggers + summary: Create trigger + description: | + Create a trigger from a preset and return it with its signing secret. + operationId: platform-triggers-create + x-visibility: Public + x-glean-experimental: + id: eb175f18-74e6-4c9c-ba02-23bcc9018fc9 + introduced: "2026-07-06" + x-codegen-request-body-name: payload + requestBody: + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/PlatformTriggerCreateRequest" + callbacks: + triggerEvent: + "{$request.body#/delivery/webhook_url}": + post: + tags: + - Triggers + summary: Receive a trigger event + description: Delivery uses at-least-once semantics, so the same event can be sent more than once. Return any 2xx status after accepting the event. Network failures, 408, 429, and 5xx responses are retried; other non-2xx responses, including redirects, are terminal. The `webhook-id` remains stable across attempts and can be used for deduplication, while `webhook-timestamp` and `webhook-signature` are generated for each attempt. + operationId: trigger-webhook-event + security: + - {} + - TriggerWebhookBearerAuth: [] + parameters: + - $ref: "#/components/parameters/TriggerWebhookId" + - $ref: "#/components/parameters/TriggerWebhookTimestamp" + - $ref: "#/components/parameters/TriggerWebhookSignature" + requestBody: required: true - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/ExportInfo" - "403": - description: Permissions error - "500": - description: Internal error - get: - description: Lists all DLP findings exports. - summary: Lists findings exports - operationId: listfindingsexports - x-visibility: Private - tags: - - Governance - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/ListDlpFindingsExportsResponse" - "403": - description: Permissions error - "500": - description: Internal error - /rest/api/v1/governance/data/findings/exports/{id}: - get: - description: Downloads a DLP findings export as a CSV file. - summary: Downloads findings export - operationId: downloadfindingsexport - x-visibility: Private - tags: - - Governance - parameters: - - name: id - in: path - description: The ID of the export to download. - required: true - schema: - type: string - responses: - "200": - description: Downloads CSV of exported findings. - content: - text/csv; charset=UTF-8: - schema: - description: CSV of all the exported findings. - type: string - "403": - description: Permissions error - "500": - description: Internal error - delete: - description: Deletes a DLP findings export. - summary: Deletes findings export - operationId: deletefindingsexport - x-visibility: Private - tags: - - Governance - parameters: - - name: id - in: path - description: The ID of the export to delete. - required: true - schema: - type: integer - format: int64 - responses: - "200": - description: OK - "403": - description: Permissions error - "500": - description: Internal error - /rest/api/v1/chat#stream: - post: - tags: - - Chat - summary: Chat - description: Have a conversation with Glean AI. - operationId: chatStream - x-visibility: Public - x-codegen-request-body-name: payload - parameters: - - $ref: '#/components/parameters/timezoneOffset' - requestBody: content: - application/json: - schema: - $ref: '#/components/schemas/ChatRequest' - examples: - defaultExample: - value: - messages: - - author: USER - messageType: CONTENT - fragments: - - text: What are the company holidays this year? - gptAgentExample: - value: - agentConfig: - agent: GPT - messages: - - author: USER - messageType: CONTENT - fragments: - - text: Who was the first person to land on the moon? - description: Includes chat history for Glean AI to respond to. - required: true - x-exportParamName: Request - responses: - '200': - description: OK - content: - text/plain: - schema: - $ref: '#/components/schemas/ChatRequestStream' - examples: - defaultExample: - value: - messages: - - author: GLEAN_AI - messageType: CONTENT - hasMoreFragments: false - agentConfig: - agent: DEFAULT - mode: DEFAULT - fragments: - - text: There are no holidays! - streamingExample: - value: - messages: - - author: GLEAN_AI - messageType: CONTENT - agentConfig: - agent: DEFAULT - mode: DEFAULT - hasMoreFragments: true - fragments: null - - author: GLEAN_AI - messageType: CONTENT - agentConfig: - agent: DEFAULT - mode: DEFAULT - hasMoreFragments: true - fragments: null - - author: GLEAN_AI - messageType: CONTENT - agentConfig: - agent: DEFAULT - mode: DEFAULT - hasMoreFragments: true - fragments: - - text: e are - - author: GLEAN_AI - messageType: CONTENT - agentConfig: - agent: DEFAULT - mode: DEFAULT - hasMoreFragments: true - fragments: - - text: no hol - - author: GLEAN_AI - messageType: CONTENT - agentConfig: - agent: DEFAULT - mode: DEFAULT - hasMoreFragments: false - fragments: - - text: idays! - updateResponse: - value: - messages: - - author: GLEAN_AI - messageType: UPDATE - agentConfig: - agent: DEFAULT - mode: DEFAULT - fragments: - - text: '**Reading:**' - - structuredResults: - - document: - id: '123' - title: Company Handbook - citationResponse: - value: - messages: - - author: GLEAN_AI - messageType: CONTENT - agentConfig: - agent: DEFAULT - mode: DEFAULT - citations: - - sourceDocument: - id: '123' - title: Company Handbook - referenceRanges: - - textRange: - startIndex: 0 - endIndex: 12 - type: CITATION - '400': - description: Invalid request - '401': - description: Not Authorized - '408': - description: Request Timeout - '429': - description: Too Many Requests - x-speakeasy-group: client.chat - x-speakeasy-name-override: createStream - x-speakeasy-usage-example: true -components: - securitySchemes: - APIToken: - scheme: bearer - type: http - schemas: - ActivityEventParams: - properties: - bodyContent: - description: The HTML content of the page body. - type: string - datasourceInstance: - type: string - description: The full datasource instance name inferred from the URL of the event - datasource: - type: string - description: The datasource without the instance inferred from the URL of the event - instanceOnlyName: - type: string - description: The instance only name of the datasource instance, e.g. 1 for jira_1, inferred from the URL of the event - duration: - description: Length in seconds of the activity. For VIEWS, this represents the amount the page was visible in the foreground. - type: integer - query: - description: The user's search query associated with a SEARCH. - type: string - referrer: - description: The referring URL of the VIEW or SEARCH. - type: string - title: - description: The page title associated with the URL of the event - type: string - truncated: - description: Indicates that the parameters are incomplete and more parameters may be sent with the same action+timestamp+URL in the future. This is used for sending the duration when a `VIEW` is finished. - type: boolean - ActivityEvent: - required: - - action - - source - - timestamp - - url - properties: - id: - type: string - description: Universally unique identifier of the event. To allow for reliable retransmission, only the earliest received event of a given UUID is considered valid by the server and subsequent are ignored. - action: - type: string - description: The type of activity this represents. - enum: - - VIEW - - EDIT - - SEARCH - - COMMENT - - CRAWL - - HISTORICAL_SEARCH - - HISTORICAL_VIEW - x-speakeasy-enum-descriptions: - VIEW: Represents a visit to the given `url`. - EDIT: Represents an edit of the document represented by the `url`. - SEARCH: Represents a search performed at the given `url`. - COMMENT: Represents a comment on the document represented by the `url`. - CRAWL: Represents an explicit request to index the given `url` along with associated attributes in this payload. - HISTORICAL_SEARCH: Represents a search performed at the given `url` as indicated by the user's history. - HISTORICAL_VIEW: Represents a visit to the given `url` as indicated by the user's history. - params: - $ref: "#/components/schemas/ActivityEventParams" - timestamp: - type: string - description: The ISO 8601 timestamp when the activity began. - format: date-time - url: - description: The URL of the activity. - type: string - Activity: - required: - - events - properties: - events: - type: array - items: - $ref: "#/components/schemas/ActivityEvent" - example: - events: - - url: https://example.com/ - action: HISTORICAL_VIEW - timestamp: "2000-01-23T04:56:07.000Z" - - url: https://example.com/search?q=query - action: SEARCH - timestamp: "2000-01-23T04:56:07.000Z" - params: - query: query - - url: https://example.com/ - action: VIEW - timestamp: "2000-01-23T04:56:07.000Z" - params: - duration: 20 - referrer: https://example.com/document - SessionInfo: - properties: - sessionTrackingToken: - type: string - description: A unique token for this session. A new session (and token) is created when the user issues a request from a new tab or when our server hasn't seen activity for more than 10 minutes from a tab. - tabId: - type: string - description: A unique id for all requests a user makes from a given tab, no matter how far apart. A new tab id is only generated when a user issues a request from a new tab. - lastSeen: - type: string - format: date-time - description: The last time the server saw this token. - lastQuery: - type: string - description: The last query seen by the server. - User: - properties: - userID: - description: An opaque user ID for the claimed authority (i.e., the actas param, or the origid if actas is not specified). - type: string - origID: - description: An opaque user ID for the authenticated user (ignores actas). - type: string - FeedbackChatExchange: - properties: - timestamp: - type: integer - format: int64 - description: Unix timestamp in millis for the chat request. - agent: - type: string - description: Either DEFAULT (company knowledge) or GPT (world knowledge). - userQuery: - type: string - description: Initial query entered by the user. - searchQuery: - type: string - description: Search query performed by the agent. - resultDocuments: - type: array - description: List of documents read by the agent. - items: - properties: - title: - type: string - url: - type: string - response: - type: string - ManualFeedbackInfo: - properties: - email: - type: string - description: The email address of the user who submitted the Feedback.event.MANUAL_FEEDBACK event. - deprecated: true - source: - type: string - description: The source associated with the Feedback.event.MANUAL_FEEDBACK event. - enum: - - AUTOCOMPLETE - - CALENDAR - - CHAT - - CHAT_GENERAL - - CONCEPT_CARD - - DESKTOP_APP - - DISAMBIGUATION_CARD - - EXPERT_DETECTION - - FEED - - GENERATED_Q_AND_A - - INLINE_MENU - - NATIVE_RESULT - - PRISM - - Q_AND_A - - RELATED_QUESTIONS - - REPORT_ISSUE - - SCIOBOT - - SEARCH - - SIDEBAR - - SUMMARY - - TASKS - - TASK_EXECUTION - issue: - type: string - description: The issue the user indicated in the feedback. - deprecated: true - issues: - type: array - description: The issue(s) the user indicated in the feedback. - items: - type: string - enum: - - INACCURATE_RESPONSE - - INCOMPLETE_OR_NO_ANSWER - - INCORRECT_CITATION - - MISSING_CITATION - - OTHER - - OUTDATED_RESPONSE - - RESULT_MISSING - - RESULT_SHOULD_NOT_APPEAR - - RESULTS_HELPFUL - - RESULTS_POOR_ORDER - - TOO_MUCH_ONE_KIND - imageUrls: - type: array - items: - type: string - description: URLs of images uploaded by user when providing feedback - query: - type: string - description: The query associated with the Feedback.event.MANUAL_FEEDBACK event. - obscuredQuery: - type: string - description: The query associated with the Feedback.event.MANUAL_FEEDBACK event, but obscured such that the vowels are replaced with special characters. For search feedback events only. - activeTab: - type: string - description: Which tabs the user had chosen at the time of the Feedback.event.MANUAL_FEEDBACK event. For search feedback events only. - comments: - type: string - description: The comments users can optionally add to the Feedback.event.MANUAL_FEEDBACK events. - searchResults: - type: array - items: - type: string - description: The array of search result Glean Document IDs, ordered by top to bottom result. - previousMessages: - type: array - items: - type: string - description: The array of previous messages in a chat session, ordered by oldest to newest. - chatTranscript: - type: array - items: - $ref: "#/components/schemas/FeedbackChatExchange" - description: Array of previous request/response exchanges, ordered by oldest to newest. - numQueriesFromFirstRun: - type: integer - description: How many times this query has been run in the past. - vote: - type: string - description: The vote associated with the Feedback.event.MANUAL_FEEDBACK event. - enum: - - UPVOTE - - DOWNVOTE - rating: - type: integer - description: A rating associated with the user feedback. The value will be between one and the maximum given by ratingScale, inclusive. - ratingKey: - type: string - description: A description of the rating that contextualizes how it appeared to the user, e.g. "satisfied". - ratingScale: - type: integer - description: The scale of comparison for a rating associated with the feedback. Rating values start from one and go up to the maximum specified by ratingScale. For example, a five-option satisfaction rating will have a ratingScale of 5 and a thumbs-up/thumbs-down rating will have a ratingScale of 2. - SideBySideImplementation: - properties: - implementationId: - type: string - description: Unique identifier for this implementation variant. - implementationName: - type: string - description: Human-readable name for this implementation (e.g., "Variant A", "GPT-4", "Claude"). - searchParams: - type: object - description: The search/chat parameters used for this implementation. - additionalProperties: - type: string - response: - type: string - description: The full response generated by this implementation. - responseMetadata: - type: object - description: Metadata about the response (e.g., latency, token count). - properties: - latencyMs: - type: integer - description: Time taken to generate the response in milliseconds. - tokenCount: - type: integer - description: Number of tokens in the response. - modelUsed: - type: string - description: The specific model version used. - ManualFeedbackSideBySideInfo: - properties: - email: - type: string - description: The email address of the user who submitted the side-by-side feedback. - source: - type: string - description: The source associated with the side-by-side feedback event. - enum: - - LIVE_EVAL - - CHAT - - SEARCH - query: - type: string - description: The query or prompt that was evaluated across multiple implementations. - implementations: - type: array - description: Array of implementations that were compared side-by-side. - items: - $ref: "#/components/schemas/SideBySideImplementation" - evaluationSessionId: - type: string - description: Unique identifier for this evaluation session to group related feedback events. - implementationId: - type: string - description: The ID of the implementation this specific feedback event is for. - vote: - type: string - description: The vote for this specific implementation. - enum: - - UPVOTE - - DOWNVOTE - - NEUTRAL - comments: - type: string - description: Specific feedback comments for this implementation. - SeenFeedbackInfo: - properties: - isExplicit: - type: boolean - description: The confidence of the user seeing the object is high because they explicitly interacted with it e.g. answer impression in SERP with additional user interaction. - UserViewInfo: - properties: - docId: - type: string - description: Unique Glean Document ID of the associated document. - docTitle: - type: string - description: Title of associated document. - docUrl: - type: string - description: URL of associated document. - WorkflowFeedbackInfo: - properties: - source: - type: string - enum: - - ZERO_STATE - - LIBRARY - - HOMEPAGE - description: Where the feedback of the workflow originated from - Feedback: - required: - - event - - trackingTokens - properties: - id: - type: string - description: Universally unique identifier of the event. To allow for reliable retransmission, only the earliest received event of a given UUID is considered valid by the server and subsequent are ignored. - category: - type: string - description: The feature category to which the feedback applies. These should be broad product areas such as Announcements, Answers, Search, etc. rather than specific components or UI treatments within those areas. - enum: - - ANNOUNCEMENT - - AUTOCOMPLETE - - COLLECTIONS - - FEED - - SEARCH - - CHAT - - NTP - - WORKFLOWS - - SUMMARY - - GENERAL - - PRISM - - PROMPTS - trackingTokens: - type: array - description: A list of server-generated trackingTokens to which this event applies. - items: - type: string - event: - type: string - description: The action the user took within a Glean client with respect to the object referred to by the given `trackingToken`. - enum: - - CLICK - - CONTAINER_CLICK - - COPY_LINK - - CREATE - - DISMISS - - DOWNVOTE - - EMAIL - - EXECUTE - - FILTER - - FIRST_TOKEN - - FOCUS_IN - - LAST_TOKEN - - MANUAL_FEEDBACK - - MANUAL_FEEDBACK_SIDE_BY_SIDE - - MARK_AS_READ - - MESSAGE - - MIDDLE_CLICK - - PAGE_BLUR - - PAGE_FOCUS - - PAGE_LEAVE - - PREVIEW - - RELATED_CLICK - - RIGHT_CLICK - - SECTION_CLICK - - SEEN - - SELECT - - SHARE - - SHOW_MORE - - UPVOTE - - VIEW - - VISIBLE - x-speakeasy-enum-descriptions: - CLICK: The object's primary link was clicked with the intent to view its full representation. Depending on the object type, this may imply an external navigation or navigating to a new page or view within the Glean app. - CONTAINER_CLICK: A link to the object's parent container (e.g. the folder in which it's located) was clicked. - COPY_LINK: The user copied a link to the primary link. - CREATE: The user creates a document. - DISMISS: The user dismissed the object such that it was hidden from view. - DOWNVOTE: The user gave feedback that the object was not useful. - EMAIL: The user attempted to send an email. - EXECUTE: The user executed the object (e.g. ran a workflow). - FILTER: The user applied a filter. - FIRST_TOKEN: The first token of a streaming response is received. - FOCUS_IN: The user clicked into an interactive element, e.g. the search box. - LAST_TOKEN: The final token of a streaming response is received. - MANUAL_FEEDBACK: The user submitted textual manual feedback regarding the object. - MANUAL_FEEDBACK_SIDE_BY_SIDE: The user submitted comparative feedback for multiple side-by-side implementations. - MARK_AS_READ: The user explicitly marked the content as read. - MESSAGE: The user attempted to send a message using their default messaing app. - MIDDLE_CLICK: The user middle clicked the object's primary link with the intent to open its full representation in a new tab. - PAGE_BLUR: The user puts a page out of focus but keeps it in the background. - PAGE_FOCUS: The user puts a page in focus, meaning it is the first to receive keyboard events. - PAGE_LEAVE: The user leaves a page and it is unloaded (by clicking a link, closing the tab/window, etc). - PREVIEW: The user clicked the object's inline preview affordance. - RIGHT_CLICK: The user right clicked the object's primary link. This may indicate an intent to open it in a new tab or copy it. - SECTION_CLICK: The user clicked a link to a subsection of the primary object. - SEEN: The user has likely seen the object (e.g. took action to make the object visible within the user's viewport). - SELECT: The user explicitly selected something, eg. a chat response variant they prefer. - SHARE: The user shared the object with another user. - SHOW_MORE: The user clicked the object's show more affordance. - UPVOTE: The user gave feedback that the object was useful. - VIEW: The object was visible within the user's viewport. - VISIBLE: The object was visible within the user's viewport. - position: - type: integer - description: Position of the element in the case that the client controls order (such as feed and autocomplete). - payload: - type: string - description: For type MANUAL_FEEDBACK, contains string of user feedback. For autocomplete, partial query string. For feed, string of user feedback in addition to manual feedback signals extracted from all suggested content. - sessionInfo: - $ref: "#/components/schemas/SessionInfo" - timestamp: - type: string - description: The ISO 8601 timestamp when the event occured. - format: date-time - user: - $ref: "#/components/schemas/User" - pathname: - type: string - description: The path the client was at when the feedback event triggered. - channels: - type: array - description: Where the feedback will be sent, e.g. to Glean, the user's company, or both. If no channels are specified, feedback will go only to Glean. - items: - type: string - enum: - - COMPANY - - GLEAN - url: - type: string - description: The URL the client was at when the feedback event triggered. - uiTree: - description: The UI element tree associated with the event, if any. - items: - type: string - type: array - uiElement: - type: string - description: The UI element associated with the event, if any. - manualFeedbackInfo: - $ref: "#/components/schemas/ManualFeedbackInfo" - manualFeedbackSideBySideInfo: - $ref: "#/components/schemas/ManualFeedbackSideBySideInfo" - seenFeedbackInfo: - $ref: "#/components/schemas/SeenFeedbackInfo" - userViewInfo: - $ref: "#/components/schemas/UserViewInfo" - workflowFeedbackInfo: - $ref: "#/components/schemas/WorkflowFeedbackInfo" - applicationId: - type: string - description: The application ID of the client that sent the feedback event. - agentId: - type: string - description: The agent ID of the client that sent the feedback event. - example: - trackingTokens: - - trackingTokens - event: VIEW - StructuredTextMutableProperties: - required: - - text - properties: - text: - type: string - example: From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light. - ConnectorType: + application/json: + schema: + $ref: "#/components/schemas/PlatformTriggerWebhookEvent" + responses: + "408": + description: Request timeout. Glean retries the delivery. + "429": + description: Rate limited. Glean retries the delivery. + 2XX: + description: Event accepted. Glean does not retry the delivery. + 3XX: + description: Redirects are not followed and the delivery is not retried. + 4XX: + description: Client error other than 408 or 429. Glean does not retry. + 5XX: + description: Server error. Glean retries the delivery. + responses: + "201": + description: Trigger created. + content: + application/json: + schema: + $ref: "#/components/schemas/PlatformTriggerCreateResponse" + "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" + "409": + $ref: "#/components/responses/PlatformConflict" + "413": + $ref: "#/components/responses/PlatformRequestTooLarge" + "429": + $ref: "#/components/responses/PlatformTooManyRequests" + "500": + $ref: "#/components/responses/PlatformInternalServerError" + "503": + $ref: "#/components/responses/PlatformServiceUnavailable" + x-speakeasy-group: triggers + x-speakeasy-name-override: create + security: + - APIToken: [] + get: + tags: + - Triggers + summary: List triggers + description: | + List triggers owned by the authenticated caller. + operationId: platform-triggers-list + x-visibility: Public + x-glean-experimental: + id: e3554987-e043-4561-889a-a1117b1bce06 + introduced: "2026-07-06" + parameters: + - in: query + name: page_size + description: Maximum number of triggers to return. + required: false + schema: + type: integer + minimum: 1 + maximum: 100 + default: 50 + - in: query + name: cursor + description: Opaque pagination cursor from a previous response. + required: false + schema: type: string - description: The source from which document content was pulled, e.g. an API crawl or browser history - enum: - - API_CRAWL - - BROWSER_CRAWL - - BROWSER_HISTORY - - BUILTIN - - FEDERATED_SEARCH - - PUSH_API - - WEB_CRAWL - - NATIVE_HISTORY - DocumentContent: - properties: - fullTextList: - type: array - items: - type: string - description: The plaintext content of the document. - Document: - properties: - id: - type: string - description: The Glean Document ID. - datasource: - type: string - description: The app or other repository type from which the document was extracted - connectorType: - $ref: "#/components/schemas/ConnectorType" - docType: - type: string - description: The datasource-specific type of the document (e.g. for Jira issues, this is the issue type such as Bug or Feature Request). - content: - $ref: "#/components/schemas/DocumentContent" - containerDocument: - $ref: "#/components/schemas/Document" - parentDocument: - $ref: "#/components/schemas/Document" - title: - type: string - description: The title of the document. - url: - type: string - description: A permalink for the document. - metadata: - $ref: "#/components/schemas/DocumentMetadata" - sections: - type: array - description: A list of content sub-sections in the document, e.g. text blocks with different headings in a Drive doc or Confluence page. - items: - $ref: "#/components/schemas/DocumentSection" - SearchProviderInfo: - properties: - name: - type: string - description: Name of the search provider. - logoUrl: - type: string - description: URL to the provider's logo. - searchLinkUrlTemplate: - type: string - description: URL template that can be used to perform the suggested search by replacing the {query} placeholder with the query suggestion. - example: - name: Google - logo: https://app.glean.com/images/feather/globe.svg - searchLinkUrlTemplate: https://www.google.com/search?q={query}&hl=en - ResultTab: - properties: - id: - type: string - description: The unique ID of the tab. Can be passed in a search request to get results for that tab. - count: - type: integer - description: The number of results in this tab for the current query. - datasource: - type: string - description: The datasource associated with the tab, if any. - datasourceInstance: - type: string - description: The datasource instance associated with the tab, if any. - FacetFilterValue: - properties: + minLength: 1 + responses: + "200": + description: Successful response. + content: + application/json: + schema: + $ref: "#/components/schemas/PlatformTriggerListResponse" + "400": + $ref: "#/components/responses/PlatformBadRequest" + "401": + $ref: "#/components/responses/PlatformUnauthorized" + "403": + $ref: "#/components/responses/PlatformForbidden" + "408": + $ref: "#/components/responses/PlatformRequestTimeout" + "429": + $ref: "#/components/responses/PlatformTooManyRequests" + "500": + $ref: "#/components/responses/PlatformInternalServerError" + "503": + $ref: "#/components/responses/PlatformServiceUnavailable" + x-speakeasy-group: triggers + x-speakeasy-name-override: list + security: + - APIToken: [] + /api/triggers/{trigger_id}: + get: + tags: + - Triggers + summary: Get trigger + description: | + Retrieve a trigger owned by the authenticated caller. + operationId: platform-triggers-get + x-visibility: Public + x-glean-experimental: + id: 46de62cb-ba31-4f71-9646-649c1d604816 + introduced: "2026-07-06" + parameters: + - in: path + name: trigger_id + description: ID of the trigger to retrieve. + required: true + schema: + type: string + minLength: 1 + responses: + "200": + description: Successful response. + content: + application/json: + schema: + $ref: "#/components/schemas/PlatformTriggerGetResponse" + "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: triggers + x-speakeasy-name-override: get + security: + - APIToken: [] + patch: + tags: + - Triggers + summary: Update trigger + description: | + Update a trigger. + operationId: platform-triggers-update + x-visibility: Public + x-glean-experimental: + id: 3eb4c709-bd5c-4019-b913-0db36c766350 + introduced: "2026-07-06" + x-codegen-request-body-name: payload + parameters: + - in: path + name: trigger_id + description: ID of the trigger to update. + required: true + schema: + type: string + minLength: 1 + requestBody: + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/PlatformTriggerUpdateRequest" + responses: + "200": + description: Trigger updated. + content: + application/json: + schema: + $ref: "#/components/schemas/PlatformTriggerGetResponse" + "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: triggers + x-speakeasy-name-override: update + security: + - APIToken: [] + delete: + tags: + - Triggers + summary: Delete trigger + description: | + Delete a trigger. + operationId: platform-triggers-delete + x-visibility: Public + x-glean-experimental: + id: e6564ed7-8b4b-4708-918b-eed97110859f + introduced: "2026-07-06" + parameters: + - in: path + name: trigger_id + description: ID of the trigger to delete. + required: true + schema: + type: string + minLength: 1 + responses: + "204": + description: Trigger deleted. No content. + "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: triggers + x-speakeasy-name-override: delete + security: + - APIToken: [] + /api/triggers/{trigger_id}/events/search: + post: + tags: + - Triggers + summary: Search events for a trigger + description: | + Search recent content events an existing trigger matches. Read-only — no webhook delivery is made. Covers the last seven days. + operationId: platform-triggers-events-search + x-visibility: Public + x-glean-experimental: + id: c734a377-3dec-4ee2-9ec5-3848a8384f03 + introduced: "2026-08-07" + parameters: + - in: path + name: trigger_id + description: ID of the trigger whose events to search. + required: true + schema: + type: string + minLength: 1 + requestBody: + required: false + content: + application/json: + schema: + $ref: "#/components/schemas/PlatformTriggerEventSearchRequest" + responses: + "200": + description: Successful response. + content: + application/json: + schema: + $ref: "#/components/schemas/PlatformTriggerEventSearchResponse" + "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: triggers + x-speakeasy-name-override: searchEvents + security: + - APIToken: [] + /api/trigger-presets: + get: + tags: + - Triggers + summary: List trigger presets + description: | + List the trigger presets available to the caller. A preset is a curated content-trigger template (e.g. a new Jira ticket) which is passed when creating a trigger. + operationId: platform-trigger-presets-list + x-visibility: Public + x-glean-experimental: + id: f5b16196-0d4c-42f0-89bf-40313398728e + introduced: "2026-07-22" + parameters: + - in: query + name: datasource + description: Restrict results to presets for a single datasource (e.g. github). + required: false + schema: + type: string + minLength: 1 + - in: query + name: page_size + description: Maximum number of presets to return. + required: false + schema: + type: integer + minimum: 1 + maximum: 100 + default: 50 + - in: query + name: cursor + description: Opaque pagination cursor from a previous response. + required: false + schema: + type: string + minLength: 1 + responses: + "200": + description: Successful response. + content: + application/json: + schema: + $ref: "#/components/schemas/PlatformTriggerPresetListResponse" + "400": + $ref: "#/components/responses/PlatformBadRequest" + "401": + $ref: "#/components/responses/PlatformUnauthorized" + "403": + $ref: "#/components/responses/PlatformForbidden" + "408": + $ref: "#/components/responses/PlatformRequestTimeout" + "429": + $ref: "#/components/responses/PlatformTooManyRequests" + "500": + $ref: "#/components/responses/PlatformInternalServerError" + "503": + $ref: "#/components/responses/PlatformServiceUnavailable" + x-speakeasy-group: triggers + x-speakeasy-name-override: listPresets + security: + - APIToken: [] + /api/trigger-presets/{preset_id}: + get: + tags: + - Triggers + summary: Get trigger preset + description: | + Retrieve a single trigger preset by id. + operationId: platform-trigger-presets-get + x-visibility: Public + x-glean-experimental: + id: 5277167d-909b-4eee-95d1-8958b07016bb + introduced: "2026-07-22" + parameters: + - in: path + name: preset_id + description: ID of the preset to retrieve. + required: true + schema: + type: string + minLength: 1 + responses: + "200": + description: Successful response. + content: + application/json: + schema: + $ref: "#/components/schemas/PlatformTriggerPresetGetResponse" + "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: triggers + x-speakeasy-name-override: getPreset + security: + - APIToken: [] + /api/trigger-presets/{preset_id}/input-values: + get: + tags: + - Triggers + summary: Search trigger preset input values + description: | + Return up to 300 selectable values for a single picklist input on a preset. Results are intended for typeahead selection and are not cursor-paginated. When `is_truncated` is true, refine `query` to narrow the result set. + operationId: platform-trigger-presets-input-values-list + x-visibility: Public + x-glean-experimental: + id: 24c5675d-a57a-48cb-9d71-3dece296f28c + introduced: "2026-08-06" + parameters: + - in: path + name: preset_id + description: ID of the preset the input belongs to. + required: true + schema: + type: string + minLength: 1 + - in: query + name: field + description: Field identifier of the input whose values to list. + required: true + schema: + type: string + minLength: 1 + - in: query + name: query + description: | + Prefix filter over the input's option values, for typeahead. Matching is on the option value, not its display name. + required: false + schema: + type: string + responses: + "200": + description: Successful response. + content: + application/json: + schema: + $ref: "#/components/schemas/PlatformTriggerPresetInputValueListResponse" + "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: triggers + x-speakeasy-name-override: listPresetInputValues + security: + - APIToken: [] + /api/trigger-presets/{preset_id}/events/search: + post: + tags: + - Triggers + summary: Search events for a trigger preset + description: | + Search recent content events an unsaved trigger built from this preset would match, to preview it before creating the trigger. Read-only — no trigger is created and no webhook delivery is made. Covers the last seven days. + operationId: platform-trigger-presets-events-search + x-visibility: Public + x-glean-experimental: + id: a48efd80-78d6-46de-9f23-5b8c63ecd157 + introduced: "2026-08-12" + parameters: + - in: path + name: preset_id + description: ID of the preset to preview. + required: true + schema: + type: string + minLength: 1 + requestBody: + required: false + content: + application/json: + schema: + $ref: "#/components/schemas/PlatformTriggerPresetEventSearchRequest" + responses: + "200": + description: Successful response. + content: + application/json: + schema: + $ref: "#/components/schemas/PlatformTriggerEventSearchResponse" + "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: triggers + x-speakeasy-name-override: searchPresetEvents + security: + - APIToken: [] + /rest/api/v1/activity: + post: + operationId: activity + summary: Report document activity + description: Report user activity that occurs on indexed documents such as viewing or editing. This signal improves search quality. + tags: + - Activity + security: + - APIToken: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Activity' + required: true + x-exportParamName: Activity + responses: + "200": + description: OK + "400": + description: Invalid request + "401": + description: Not Authorized + "429": + description: Too Many Requests + x-visibility: Public + x-codegen-request-body-name: payload + x-speakeasy-name-override: report + x-speakeasy-group: client.activity + /rest/api/v1/feedback: + post: + operationId: feedback + summary: Report client activity + description: Report events that happen to results within a Glean client UI, such as search result views and clicks. This signal improves search quality. + tags: + - Activity + security: + - APIToken: [] + parameters: + - name: feedback + in: query + description: A URL encoded versions of Feedback. This is useful for requests. + required: false + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Feedback' + x-exportParamName: Feedback + responses: + "200": + description: OK + "400": + description: Invalid request + "401": + description: Not Authorized + "429": + description: Too Many Requests + x-visibility: Public + x-codegen-request-body-name: payload + x-speakeasy-group: client.activity + /rest/api/v1/createannouncement: + post: + operationId: createannouncement + summary: Create Announcement + description: Create a textual announcement visible to some set of users based on department and location. + tags: + - Announcements + security: + - APIToken: [] + parameters: + - $ref: '#/components/parameters/locale' + requestBody: + description: Announcement content + content: + application/json: + schema: + $ref: '#/components/schemas/CreateAnnouncementRequest' + required: true + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/Announcement' + "400": + description: Invalid request + "401": + description: Not Authorized + "429": + description: Too Many Requests + x-visibility: Public + x-codegen-request-body-name: payload + x-speakeasy-name-override: create + x-speakeasy-group: client.announcements + /rest/api/v1/deleteannouncement: + post: + operationId: deleteannouncement + summary: Delete Announcement + description: Delete an existing user-generated announcement. + tags: + - Announcements + security: + - APIToken: [] + parameters: + - $ref: '#/components/parameters/locale' + requestBody: + description: Delete announcement request + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteAnnouncementRequest' + required: true + x-exportParamName: Request + responses: + "200": + description: OK + "400": + description: Invalid request + "401": + description: Not Authorized + "429": + description: Too Many Requests + x-visibility: Public + x-codegen-request-body-name: payload + x-speakeasy-name-override: delete + x-speakeasy-group: client.announcements + /rest/api/v1/updateannouncement: + post: + operationId: updateannouncement + summary: Update Announcement + description: Update a textual announcement visible to some set of users based on department and location. + tags: + - Announcements + security: + - APIToken: [] + parameters: + - $ref: '#/components/parameters/locale' + requestBody: + description: Announcement content. Id need to be specified for the announcement. + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateAnnouncementRequest' + required: true + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/Announcement' + "400": + description: Invalid request + "401": + description: Not Authorized + "429": + description: Too Many Requests + x-visibility: Public + x-codegen-request-body-name: payload + x-speakeasy-name-override: update + x-speakeasy-group: client.announcements + /rest/api/v1/createanswer: + post: + operationId: createanswer + summary: Create Answer + description: Create a user-generated Answer that contains a question and answer. + tags: + - Answers + security: + - APIToken: [] + parameters: + - $ref: '#/components/parameters/locale' + requestBody: + description: CreateAnswer request + content: + application/json: + schema: + $ref: '#/components/schemas/CreateAnswerRequest' + required: true + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/Answer' + "400": + description: Invalid request + "401": + description: Not Authorized + "429": + description: Too Many Requests + x-visibility: Public + x-codegen-request-body-name: payload + x-speakeasy-name-override: create + x-speakeasy-group: client.answers + /rest/api/v1/deleteanswer: + post: + operationId: deleteanswer + summary: Delete Answer + description: Delete an existing user-generated Answer. + tags: + - Answers + security: + - APIToken: [] + parameters: + - $ref: '#/components/parameters/locale' + requestBody: + description: DeleteAnswer request + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteAnswerRequest' + required: true + x-exportParamName: Request + responses: + "200": + description: OK + "400": + description: Invalid request + "401": + description: Not Authorized + "429": + description: Too Many Requests + x-visibility: Public + x-codegen-request-body-name: payload + x-speakeasy-name-override: delete + x-speakeasy-group: client.answers + /rest/api/v1/editanswer: + post: + operationId: editanswer + summary: Update Answer + description: Update an existing user-generated Answer. + tags: + - Answers + security: + - APIToken: [] + parameters: + - $ref: '#/components/parameters/locale' + requestBody: + description: EditAnswer request + content: + application/json: + schema: + $ref: '#/components/schemas/EditAnswerRequest' + required: true + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/Answer' + "400": + description: Invalid request + "401": + description: Not Authorized + "429": + description: Too Many Requests + x-visibility: Public + x-codegen-request-body-name: payload + x-speakeasy-name-override: update + x-speakeasy-group: client.answers + /rest/api/v1/getanswer: + post: + operationId: getanswer + summary: Read Answer + description: Read the details of a particular Answer given its ID. + tags: + - Answers + security: + - APIToken: [] + parameters: + - $ref: '#/components/parameters/locale' + requestBody: + description: GetAnswer request + content: + application/json: + schema: + $ref: '#/components/schemas/GetAnswerRequest' + required: true + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/GetAnswerResponse' + "400": + description: Invalid request + "401": + description: Not Authorized + "429": + description: Too Many Requests + x-visibility: Public + x-codegen-request-body-name: payload + x-speakeasy-name-override: retrieve + x-speakeasy-group: client.answers + /rest/api/v1/listanswers: + post: + operationId: listanswers + summary: List Answers + description: List Answers created by the current user. + tags: + - Answers + security: + - APIToken: [] + parameters: + - $ref: '#/components/parameters/locale' + requestBody: + description: ListAnswers request + content: + application/json: + schema: + $ref: '#/components/schemas/ListAnswersRequest' + required: true + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ListAnswersResponse' + "400": + description: Invalid request + "401": + description: Not Authorized + "429": + description: Too Many Requests + deprecated: true + x-visibility: Public + x-codegen-request-body-name: payload + x-glean-deprecated: + id: 4c0923bd-64c7-45b9-99a5-b36f2705e618 + introduced: "2026-01-21" + message: Answer boards have been removed and this endpoint no longer serves a purpose + removal: "2026-10-15" + x-speakeasy-deprecation-message: "Deprecated on 2026-01-21, removal scheduled for 2026-10-15: Answer boards have been removed and this endpoint no longer serves a purpose" + x-speakeasy-name-override: list + x-speakeasy-group: client.answers + /rest/api/v1/checkdatasourceauth: + post: + operationId: checkdatasourceauth + summary: Check datasource authorization + description: | + Returns all datasource instances that require per-user OAuth authorization + for the authenticated user, along with a transient auth token that can be + appended to auth URLs to complete OAuth flows. + + Clients construct the full OAuth URL by combining the backend base URL, + the `authUrlRelativePath` from each instance, and the transient auth token: + `/?transient_auth_token=`. + tags: + - Authentication + security: + - APIToken: [] + parameters: [] + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/CheckDatasourceAuthResponse' + "401": + description: Not Authorized + "429": + description: Too Many Requests + x-visibility: Public + x-speakeasy-name-override: checkDatasourceAuth + x-speakeasy-group: client.authentication + /rest/api/v1/createauthtoken: + post: + operationId: createauthtoken + summary: Create authentication token + description: | + Creates an authentication token for the authenticated user. These are + specifically intended to be used with the [Web SDK](https://developers.glean.com/web). + + Note: The tokens generated from this endpoint are **not** valid tokens + for use with the Client API (e.g. `/rest/api/v1/*`). + tags: + - Authentication + security: + - APIToken: [] + parameters: [] + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/CreateAuthTokenResponse' + "400": + description: Invalid Request + "401": + description: Not Authorized + "429": + description: Too Many Requests + x-visibility: Public + x-speakeasy-name-override: createToken + x-speakeasy-group: client.authentication + /rest/api/v1/chat: + post: + operationId: chat + summary: Chat + description: Have a conversation with Glean AI. + tags: + - Chat + security: + - APIToken: [] + parameters: + - $ref: '#/components/parameters/locale' + - $ref: '#/components/parameters/timezoneOffset' + requestBody: + description: Includes chat history for Glean AI to respond to. + content: + application/json: + schema: + $ref: '#/components/schemas/ChatRequest' + examples: + defaultExample: value: - type: string - example: Spreadsheet - relationType: - type: string - enum: - - EQUALS - - ID_EQUALS - - LT - - GT - - NOT_EQUALS - example: EQUALS - x-speakeasy-enum-descriptions: - EQUALS: The value is equal to the specified value. - ID_EQUALS: The value is equal to the specified ID. - LT: The value is less than the specified value. - GT: The value is greater than the specified value. - NOT_EQUALS: The value is not equal to the specified value. - isNegated: - type: boolean - deprecated: true - description: DEPRECATED - please use relationType instead - FacetFilter: - properties: - fieldName: - type: string - example: owner - values: - type: array - items: - $ref: "#/components/schemas/FacetFilterValue" - description: Within a single FacetFilter, the values are to be treated like an OR. For example, fieldName type with values [EQUALS Presentation, EQUALS Spreadsheet] means we want to show a document if it's a Presentation OR a Spreadsheet. - groupName: - type: string - example: Spreadsheet - description: Indicates the value of a facet, if any, that the given facet is grouped under. This is only used for nested facets, for example, fieldName could be owner and groupName would be Spreadsheet if showing all owners for spreadsheets as a nested facet. - example: - fieldName: type - values: - - value: Spreadsheet - relationType: EQUALS - - value: Presentation - relationType: EQUALS - FacetFilterSet: - properties: - filters: - type: array - items: - $ref: "#/components/schemas/FacetFilter" - description: Within a single FacetFilterSet, the filters are treated as AND. For example, owner Sumeet and type Spreadsheet shows documents that are by Sumeet AND are Spreadsheets. - FacetBucketFilter: - properties: - facet: - type: string - description: The facet whose buckets should be filtered. - prefix: - type: string - description: The per-term prefix that facet buckets should be filtered on. - AuthToken: - required: - - accessToken - - datasource - properties: - accessToken: - type: string - datasource: - type: string - scope: - type: string - tokenType: - type: string - authUser: - description: Used by Google to indicate the index of the logged in user. Useful for generating hyperlinks that support multilogin. - type: string - expiration: - description: Unix timestamp when this token expires (in seconds since epoch UTC). - type: integer - format: int64 - example: - accessToken: 123abc - datasource: gmail - scope: email profile https://www.googleapis.com/auth/gmail.readonly - tokenType: Bearer - authUser: "1" - DocumentSpec: - x-multiple-discriminators: true - oneOf: - - type: object - required: - - url - properties: - url: - type: string - x-discriminator: true - description: The URL of the document. - - type: object - required: - - id - properties: - id: - type: string - x-discriminator: true - description: The ID of the document. - - type: object - required: - - contentId - - ugcType - properties: - ugcType: - type: string - enum: - - ANNOUNCEMENTS - - ANSWERS - - COLLECTIONS - - SHORTCUTS - - CHATS - description: The type of the user generated content (UGC datasource). - contentId: - type: integer - x-discriminator: true - description: The numeric id for user generated content. Used for ANNOUNCEMENTS, ANSWERS, COLLECTIONS, SHORTCUTS. - docType: - type: string - description: The specific type of the user generated content type. - - type: object - required: - - ugcType - - ugcId - properties: - ugcType: - type: string - enum: - - ANNOUNCEMENTS - - ANSWERS - - COLLECTIONS - - SHORTCUTS - - CHATS - description: The type of the user generated content (UGC datasource). - ugcId: - type: string - x-discriminator: true - description: The string id for user generated content. Used for CHATS. - docType: - type: string - description: The specific type of the user generated content type. - RestrictionFilters: - properties: - containerSpecs: - description: "Specifications for containers that should be used as part of the restriction (include/exclude). Memberships are recursively defined for a subset of datasources (currently: SharePoint, OneDrive, Google Drive, and Confluence). Please contact the Glean team to enable this for more datasources. Recursive memberships do not apply for Collections." - type: array - items: - $ref: "#/components/schemas/DocumentSpec" - SearchRequestOptions: - required: - - facetBucketSize - properties: - datasourceFilter: - type: string - description: Filter results to a single datasource name (e.g. gmail, slack). All results are returned if missing. - datasourcesFilter: - type: array - items: - type: string - description: Filter results to one or more datasources (e.g. gmail, slack). All results are returned if missing. - queryOverridesFacetFilters: - type: boolean - description: If true, the operators in the query are taken to override any operators in facetFilters in the case of conflict. This is used to correctly set rewrittenFacetFilters and rewrittenQuery. - facetFilters: - type: array - items: - $ref: "#/components/schemas/FacetFilter" - description: A list of filters for the query. An AND is assumed between different facetFilters. For example, owner Sumeet and type Spreadsheet shows documents that are by Sumeet AND are Spreadsheets. - facetFilterSets: - type: array - items: - $ref: "#/components/schemas/FacetFilterSet" - description: A list of facet filter sets that will be OR'ed together. SearchRequestOptions where both facetFilterSets and facetFilters set are considered as bad request. Callers should set only one of these fields. - facetBucketFilter: - $ref: "#/components/schemas/FacetBucketFilter" - facetBucketSize: - type: integer - description: The maximum number of FacetBuckets to return in each FacetResult. - defaultFacets: - type: array - items: - type: string - description: Facets for which FacetResults should be fetched and that don't apply to a particular datasource. If specified, these values will replace the standard default facets (last_updated_at, from, etc.). The requested facets will be returned alongside datasource-specific facets if searching a single datasource. - authTokens: - type: array - description: Auth tokens which may be used for non-indexed, federated results (e.g. Gmail). - items: - $ref: "#/components/schemas/AuthToken" - fetchAllDatasourceCounts: - type: boolean - description: Hints that the QE should return result counts (via the datasource facet result) for all supported datasources, rather than just those specified in the datasource[s]Filter - responseHints: - type: array - description: Array of hints containing which fields should be populated in the response. - items: - type: string - description: Hints for the response content. - enum: - - ALL_RESULT_COUNTS - - FACET_RESULTS - - QUERY_METADATA - - RESULTS - - SPELLCHECK_METADATA - x-speakeasy-enum-descriptions: - ALL_RESULT_COUNTS: Return result counts for each result set which has non-zero results, even when the request itself is limited to a subset. - FACET_RESULTS: Return only facet results. - QUERY_METADATA: Returns result counts for each result set which has non-zero results, as well as other information about the search such as suggested spelling corrections. - RESULTS: Return search result documents. - SPELLCHECK_METADATA: Return metadata pertaining to spellcheck results. - 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. - disableSpellcheck: - type: boolean - description: Whether or not to disable spellcheck. - disableQueryAutocorrect: - type: boolean - description: Disables automatic adjustment of the input query for spelling corrections or other reasons. - returnLlmContentOverSnippets: - type: boolean - description: Enables expanded content to be returned for LLM usage. The size of content per result returned should be modified using maxSnippetSize. Server may return less or more than what is specified in maxSnippetSize. For more details, see https://developers.glean.com/guides/search/llm-content. - inclusions: - $ref: "#/components/schemas/RestrictionFilters" - description: A list of filters which restrict the search results to only the specified content. - exclusions: - $ref: "#/components/schemas/RestrictionFilters" - description: A list of filters specifying content to avoid getting search results from. Exclusions take precendence over inclusions and other query parameters, such as search operators and search facets. - example: - datasourceFilter: JIRA - datasourcesFilter: - - JIRA - queryOverridesFacetFilters: true - facetFilters: - - fieldName: fieldName - values: - - fieldValues - - fieldValues - - fieldName: fieldName - values: - - fieldValues - - fieldValues - TextRange: - required: - - startIndex - description: A subsection of a given string to which some special formatting should be applied. - properties: - startIndex: - type: integer - description: The inclusive start index of the range. - endIndex: - type: integer - description: The exclusive end index of the range. - type: - type: string - enum: - - BOLD - - CITATION - - HIGHLIGHT - - LINK - url: - type: string - description: The URL associated with the range, if applicable. For example, the linked URL for a LINK range. - document: - $ref: "#/components/schemas/Document" - description: A document corresponding to the range, if applicable. For example, the cited document for a CITATION range. - SearchRequestInputDetails: - properties: - hasCopyPaste: - type: boolean - description: Whether the associated query was at least partially copy-pasted. If subsequent requests are issued after a copy-pasted query is constructed (e.g. with facet modifications), this bit should continue to be set for those requests. - example: - hasCopyPaste: true - QuerySuggestion: - required: - - query - properties: - missingTerm: - type: string - description: A query term missing from the original query on which this suggestion is based. - query: - type: string - description: The query being suggested (e.g. enforcing the missing term from the original query). - searchProviderInfo: - $ref: "#/components/schemas/SearchProviderInfo" - description: Information about the search provider that generated this suggestion. - label: - type: string - description: A user-facing description to display for the suggestion. - datasource: - type: string - description: The datasource associated with the suggestion. - resultTab: - $ref: "#/components/schemas/ResultTab" - description: The result tab associated with the suggestion. - requestOptions: - $ref: "#/components/schemas/SearchRequestOptions" - ranges: - type: array - items: - $ref: "#/components/schemas/TextRange" - description: The bolded ranges within the query of the QuerySuggestion. - inputDetails: - $ref: "#/components/schemas/SearchRequestInputDetails" - example: - query: app:github type:pull author:mortimer - label: Mortimer's PRs - datasource: github - Person: - required: - - name - - obfuscatedId - properties: - name: - type: string - description: The display name. - obfuscatedId: - type: string - description: An opaque identifier that can be used to request metadata for a Person. - relatedDocuments: - type: array - items: - $ref: "#/components/schemas/RelatedDocuments" - description: A list of documents related to this person. - metadata: - $ref: "#/components/schemas/PersonMetadata" - example: - name: George Clooney - obfuscatedId: abc123 - Company: - required: - - name - properties: - name: - type: string - description: User-friendly display name. - profileUrl: - type: string - description: Link to internal company company profile. - websiteUrls: - type: array - description: Link to company's associated websites. - items: - type: string - logoUrl: - type: string - description: The URL of the company's logo. Public, Glean-authenticated and Base64 encoded data URLs are all valid (but not third-party-authenticated URLs). - location: - type: string - description: User facing string representing the company's location. - example: New York City - phone: - type: string - description: Phone number as a number string. - fax: - type: string - description: Fax number as a number string. - industry: - type: string - description: User facing string representing the company's industry. - example: Finances - annualRevenue: - type: number - format: double - description: Average company's annual revenue for reference. - numberOfEmployees: - type: integer - format: int64 - description: Average company's number of employees for reference. - stockSymbol: - type: string - description: Company's stock symbol if company is public. - foundedDate: - type: string - format: date - description: The date when the company was founded. - about: - type: string - description: User facing description of company. - example: Financial, software, data, and media company headquartered in Midtown Manhattan, New York City - DocumentCounts: - type: object - description: A map of {string, int} pairs representing counts of each document type associated with this customer. - additionalProperties: - type: integer - CustomDataValue: - properties: - displayLabel: - type: string - stringValue: - type: string - stringListValue: - type: array - description: list of strings for multi-value properties - items: - type: string - numberValue: - type: number - booleanValue: - type: boolean - CustomData: - type: object - description: Custom fields specific to individual datasources - additionalProperties: - $ref: "#/components/schemas/CustomDataValue" - CustomerMetadata: - properties: - datasourceId: - type: string - description: The user visible id of the salesforce customer account. - customData: - $ref: "#/components/schemas/CustomData" - Customer: - required: - - id - - company - properties: - id: - type: string - description: Unique identifier. - domains: - type: array - description: Link to company's associated website domains. - items: - type: string - company: - $ref: "#/components/schemas/Company" - documentCounts: - $ref: "#/components/schemas/DocumentCounts" - poc: - type: array - description: A list of POC for company. - items: - $ref: "#/components/schemas/Person" - metadata: - $ref: "#/components/schemas/CustomerMetadata" - mergedCustomers: - type: array - description: A list of Customers. - items: - $ref: "#/components/schemas/Customer" - startDate: - type: string - format: date - description: The date when the interaction with customer started. - contractAnnualRevenue: - type: number - format: double - description: Average contract annual revenue with that customer. - notes: - type: string - description: User facing (potentially generated) notes about company. - example: CIO is interested in trying out the product. - RelatedObject: - required: - - id - properties: - id: - type: string - description: The ID of the related object - metadata: - type: object - description: Some metadata of the object which can be displayed, while not having the actual object. - properties: - name: - type: string - description: Placeholder name of the object, not the relationship. - RelatedObjectEdge: - properties: - objects: - type: array - items: - $ref: "#/components/schemas/RelatedObject" - RelatedObjects: - properties: - relatedObjects: - type: object - description: A list of objects related to a source object. - additionalProperties: - $ref: "#/components/schemas/RelatedObjectEdge" - ScopeType: - type: string - description: Describes the scope for a ReadPermission, WritePermission, or GrantPermission object - enum: - - GLOBAL - - OWN - WritePermission: - description: Describes the write permissions levels that a user has for a specific feature - properties: - scopeType: - $ref: "#/components/schemas/ScopeType" - create: - type: boolean - description: True if user has create permission for this feature and scope - update: - type: boolean - description: True if user has update permission for this feature and scope - delete: - type: boolean - description: True if user has delete permission for this feature and scope - ObjectPermissions: - properties: - write: - $ref: "#/components/schemas/WritePermission" - PermissionedObject: - properties: - permissions: - $ref: "#/components/schemas/ObjectPermissions" - description: The permissions the current viewer has with respect to a particular object. - PersonToTeamRelationship: - required: - - person - type: object - description: Metadata about the relationship of a person to a team. - properties: - person: - $ref: "#/components/schemas/Person" - relationship: - type: string - description: The team member's relationship to the team. This defaults to MEMBER if not set. - default: MEMBER - enum: - - MEMBER - - MANAGER - - LEAD - - POINT_OF_CONTACT - - OTHER - customRelationshipStr: - type: string - description: Displayed name for the relationship if relationship is set to `OTHER`. - joinDate: - type: string - format: date-time - description: The team member's start date - TeamEmail: - type: object - description: Information about a team's email - properties: - email: - type: string - format: email - description: An email address - type: - type: string - description: An enum of `PRIMARY`, `SECONDARY`, `ONCALL`, `OTHER` - default: OTHER - required: - - email - - type - CustomFieldValueStr: - properties: - strText: - type: string - description: Text field for string value. - CustomFieldValueHyperlink: - properties: - urlAnchor: - type: string - description: Anchor text for hyperlink. - urlLink: - type: string - description: Link for this URL. - CustomFieldValuePerson: - properties: - person: - $ref: "#/components/schemas/Person" - CustomFieldValue: - oneOf: - - $ref: "#/components/schemas/CustomFieldValueStr" - - $ref: "#/components/schemas/CustomFieldValueHyperlink" - - $ref: "#/components/schemas/CustomFieldValuePerson" - CustomFieldData: - required: - - label - - values - - displayable - properties: - label: - type: string - description: A user-facing label for this field. - values: - type: array - items: - $ref: "#/components/schemas/CustomFieldValue" - displayable: - type: boolean - description: Determines whether the client should display this custom field - default: true - DatasourceProfile: - required: - - datasource - - handle - properties: - datasource: - type: string - example: github - description: The datasource the profile is of. - handle: - type: string - description: The display name of the entity in the given datasource. - url: - type: string - description: URL to view the entity's profile. - nativeAppUrl: - type: string - description: A deep link, if available, into the datasource's native application for the entity's platform (i.e. slack://...). - isUserGenerated: - type: boolean - description: For internal use only. True iff the data source profile was manually added by a user from within Glean (aka not from the original data source) - Team: - allOf: - - $ref: "#/components/schemas/RelatedObjects" - - $ref: "#/components/schemas/PermissionedObject" - - type: object - required: - - id - - name - properties: - id: - type: string - description: Unique identifier - name: - type: string - description: Team name - description: - type: string - description: A description of the team - businessUnit: - type: string - description: Typically the highest level organizational unit; generally applies to bigger companies with multiple distinct businesses. - department: - type: string - description: An organizational unit where everyone has a similar task, e.g. `Engineering`. - photoUrl: - type: string - format: url - description: A link to the team's photo. - bannerUrl: - type: string - format: url - description: A link to the team's banner photo. - externalLink: - type: string - format: uri - description: Link to a team page on the internet or your company's intranet - members: - type: array - description: The members on this team - items: - $ref: "#/components/schemas/PersonToTeamRelationship" - memberCount: - type: integer - description: Number of members on this team (recursive; includes all individuals that belong to this team, and all individuals that belong to a subteam within this team) - emails: - type: array - description: The emails for this team - items: - $ref: "#/components/schemas/TeamEmail" - customFields: - type: array - description: Customizable fields for additional team information. - items: - $ref: "#/components/schemas/CustomFieldData" - datasourceProfiles: - type: array - description: The datasource profiles of the team - items: - $ref: "#/components/schemas/DatasourceProfile" - datasource: - type: string - description: the data source of the team, e.g. GDRIVE - createdFrom: - type: string - description: For teams created from docs, the doc title. Otherwise empty. - lastUpdatedAt: - type: string - format: date-time - description: when this team was last updated. - status: - type: string - description: whether this team is fully processed or there are still unprocessed operations that'll affect it - default: PROCESSED - enum: - - PROCESSED - - QUEUED_FOR_CREATION - - QUEUED_FOR_DELETION - canBeDeleted: - type: boolean - description: can this team be deleted. Some manually ingested teams like GCS_CSV or PUSH_API cannot - default: true - loggingId: - type: string - description: The logging id of the team used in scrubbed logs, client analytics, and metrics. - CustomEntityMetadata: - properties: - customData: - $ref: "#/components/schemas/CustomData" - GroupType: - type: string - description: The type of user group - enum: - - DEPARTMENT - - ALL - - TEAM - - JOB_TITLE - - ROLE_TYPE - - LOCATION - - REGION - - EXTERNAL_GROUP - Group: - required: - - type - - id - properties: - type: - $ref: "#/components/schemas/GroupType" - id: - type: string - description: A unique identifier for the group. May be the same as name. - name: - type: string - description: Name of the group. - datasourceInstance: - type: string - description: Datasource instance if the group belongs to one e.g. external groups. - provisioningId: - type: string - description: identifier for greenlist provisioning, aka sciokey - UserRole: - type: string - description: A user's role with respect to a specific document. - enum: - - OWNER - - VIEWER - - ANSWER_MODERATOR - - EDITOR - - VERIFIER - UserRoleSpecification: - required: - - role - properties: - sourceDocumentSpec: - $ref: "#/components/schemas/DocumentSpec" - description: The document spec of the object this role originates from. The object this role is included with will usually have the same information as this document spec, but if the role is inherited, then the document spec refers to the parent document that the role came from. - person: - $ref: "#/components/schemas/Person" - group: - $ref: "#/components/schemas/Group" - role: - $ref: "#/components/schemas/UserRole" - CustomEntity: - allOf: - - $ref: "#/components/schemas/PermissionedObject" - - type: object - properties: - id: - type: string - description: Unique identifier. - title: - type: string - description: Title or name of the custom entity. - datasource: - type: string - description: The datasource the custom entity is from. - objectType: - type: string - description: The type of the entity. Interpretation is specific to each datasource - metadata: - $ref: "#/components/schemas/CustomEntityMetadata" - roles: - type: array - description: A list of user roles for the custom entity explicitly granted by the owner. - items: - $ref: "#/components/schemas/UserRoleSpecification" - AnswerId: - properties: - id: - type: integer - description: The opaque ID of the Answer. - example: 3 - AnswerDocId: - properties: - docId: - type: string - description: Glean Document ID of the Answer. The Glean Document ID is supported for cases where the Answer ID isn't available. If both are available, using the Answer ID is preferred. - example: ANSWERS_answer_3 - AnswerMutableProperties: - properties: - question: - type: string - example: Why is the sky blue? - questionVariations: - type: array - description: Additional ways of phrasing this question. - items: - type: string - bodyText: - type: string - description: The plain text answer to the question. - example: From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light. - boardId: - type: integer - description: The parent board ID of this Answer, or 0 if it's a floating Answer. Adding Answers to Answer Boards is no longer permitted. - deprecated: true - audienceFilters: - type: array - description: Filters which restrict who should see the answer. Values are taken from the corresponding filters in people search. - items: - $ref: "#/components/schemas/FacetFilter" - addedRoles: - type: array - description: A list of user roles for the answer added by the owner. - items: - $ref: "#/components/schemas/UserRoleSpecification" - removedRoles: - type: array - description: A list of user roles for the answer removed by the owner. - items: - $ref: "#/components/schemas/UserRoleSpecification" - roles: - type: array - description: A list of roles for this answer explicitly granted by an owner, editor, or admin. - items: - $ref: "#/components/schemas/UserRoleSpecification" - sourceDocumentSpec: - $ref: "#/components/schemas/DocumentSpec" - sourceType: - type: string - enum: - - DOCUMENT - - ASSISTANT - StructuredText: - allOf: - - $ref: "#/components/schemas/StructuredTextMutableProperties" - - type: object - properties: - structuredList: - type: array - items: - $ref: "#/components/schemas/StructuredTextItem" - description: An array of objects each of which contains either a string or a link which optionally corresponds to a document. - AnswerLike: - properties: - user: - $ref: "#/components/schemas/Person" - createTime: - type: string - format: date-time - description: The time the user liked the answer in ISO format (ISO 8601). - AnswerLikes: - required: - - likedBy - - likedByUser - - numLikes - properties: - likedBy: - type: array - items: - $ref: "#/components/schemas/AnswerLike" - likedByUser: - type: boolean - description: Whether the user in context liked the answer. - numLikes: - type: integer - description: The total number of likes for the answer. - Reminder: - required: - - assignee - - remindAt - properties: - assignee: - $ref: "#/components/schemas/Person" - requestor: - $ref: "#/components/schemas/Person" - remindAt: - type: integer - description: Unix timestamp for when the reminder should trigger (in seconds since epoch UTC). - createdAt: - type: integer - description: Unix timestamp for when the reminder was first created (in seconds since epoch UTC). - reason: - type: string - description: An optional free-text reason for the reminder. This is particularly useful when a reminder is used to ask for verification from another user (for example, "Duplicate", "Incomplete", "Incorrect"). - TimePoint: - properties: - epochSeconds: - type: integer - description: Epoch seconds. Has precedence over daysFromNow. - daysFromNow: - type: integer - description: The number of days from now. Specification relative to current time. Can be negative. - Period: - properties: - minDaysFromNow: - type: integer - description: DEPRECATED - The number of days from now in the past to define upper boundary of time period. - deprecated: true - maxDaysFromNow: - type: integer - description: DEPRECATED - The number of days from now in the past to define lower boundary of time period. - deprecated: true - start: - $ref: "#/components/schemas/TimePoint" - end: - $ref: "#/components/schemas/TimePoint" - CountInfo: - required: - - count - properties: - count: - type: integer - description: The counter value - period: - $ref: "#/components/schemas/Period" - org: - type: string - description: The unit of organization over which we did the count aggregation, e.g. org (department) or company - VerificationMetadata: - required: - - documentId - properties: - lastVerifier: - $ref: "#/components/schemas/Person" - lastVerificationTs: - type: integer - description: The unix timestamp of the verification (in seconds since epoch UTC). - expirationTs: - type: integer - description: The unix timestamp of the verification expiration if applicable (in seconds since epoch UTC). - document: - $ref: "#/components/schemas/Document" - reminders: - type: array - items: - $ref: "#/components/schemas/Reminder" - description: Info about all outstanding verification reminders for the document if exists. - lastReminder: - $ref: "#/components/schemas/Reminder" - visitorCount: - type: array - items: - $ref: "#/components/schemas/CountInfo" - description: Number of visitors to the document during included time periods. - candidateVerifiers: - type: array - items: - $ref: "#/components/schemas/Person" - description: List of potential verifiers for the document e.g. old verifiers and/or users with view/edit permissions. - Verification: - required: - - state - properties: - state: - type: string - enum: - - UNVERIFIED - - VERIFIED - - DEPRECATED - description: The verification state for the document. - metadata: - $ref: "#/components/schemas/VerificationMetadata" - CollectionBaseMutableProperties: - required: - - name - properties: - name: - type: string - description: The unique name of the Collection. - description: - type: string - description: A brief summary of the Collection's contents. - addedRoles: - type: array - description: A list of added user roles for the Collection. - items: - $ref: "#/components/schemas/UserRoleSpecification" - removedRoles: - type: array - description: A list of removed user roles for the Collection. - items: - $ref: "#/components/schemas/UserRoleSpecification" - audienceFilters: - type: array - items: - $ref: "#/components/schemas/FacetFilter" - description: Filters which restrict who should see this Collection. Values are taken from the corresponding filters in people search. - Thumbnail: - properties: - photoId: - type: string - description: Photo id if the thumbnail is from splash. - url: - type: string - description: Thumbnail URL. This can be user provided image and/or from downloaded images hosted by Glean. - CollectionMutableProperties: - allOf: - - $ref: "#/components/schemas/CollectionBaseMutableProperties" - - type: object - required: - - name - properties: - icon: - type: string - description: The emoji icon of this Collection. - adminLocked: - type: boolean - description: Indicates whether edits are allowed for everyone or only admins. - parentId: - type: integer - description: The parent of this Collection, or 0 if it's a top-level Collection. - thumbnail: - $ref: "#/components/schemas/Thumbnail" - allowedDatasource: - type: string - description: The datasource type this Collection can hold. - CollectionItemMutableProperties: - properties: - name: - type: string - description: The optional name of the Collection item. - description: - type: string - description: A helpful description of why this CollectionItem is in the Collection that it's in. - icon: - type: string - description: The emoji icon for this CollectionItem. Only used for Text type items. - UserGeneratedContentId: - properties: - id: - type: integer - description: The opaque id of the user generated content. - ShortcutMutableProperties: - properties: - inputAlias: - type: string - description: Link text following go/ prefix as entered by the user. - destinationUrl: - type: string - description: Destination URL for the shortcut. - destinationDocumentId: - type: string - description: Glean Document ID for the URL, if known. - description: - type: string - description: A short, plain text blurb to help people understand the intent of the shortcut. - unlisted: - type: boolean - description: Whether this shortcut is unlisted or not. Unlisted shortcuts are visible to author + admins only. - urlTemplate: - type: string - description: For variable shortcuts, contains the URL template; note, `destinationUrl` contains default URL. - addedRoles: - type: array - description: A list of user roles added for the Shortcut. - items: - $ref: "#/components/schemas/UserRoleSpecification" - removedRoles: - type: array - description: A list of user roles removed for the Shortcut. - items: - $ref: "#/components/schemas/UserRoleSpecification" - ShortcutMetadata: - properties: - createdBy: - $ref: "#/components/schemas/Person" - createTime: - type: string - format: date-time - description: The time the shortcut was created in ISO format (ISO 8601). - updatedBy: - $ref: "#/components/schemas/Person" - updateTime: - type: string - format: date-time - description: The time the shortcut was updated in ISO format (ISO 8601). - destinationDocument: - $ref: "#/components/schemas/Document" - description: Document that corresponds to the destination URL, if applicable. - intermediateUrl: - type: string - description: The URL from which the user is then redirected to the destination URL. Full replacement for https://go/. - viewPrefix: - type: string - description: The part of the shortcut preceding the input alias when used for showing shortcuts to users. Should end with "/". e.g. "go/" for native shortcuts. - isExternal: - type: boolean - description: Indicates whether a shortcut is native or external. - editUrl: - type: string - description: The URL using which the user can access the edit page of the shortcut. - Shortcut: - allOf: - - $ref: "#/components/schemas/UserGeneratedContentId" - - $ref: "#/components/schemas/ShortcutMutableProperties" - - $ref: "#/components/schemas/PermissionedObject" - - $ref: "#/components/schemas/ShortcutMetadata" - - type: object - required: - - inputAlias - properties: - alias: - type: string - description: canonical link text following go/ prefix where hyphen/underscore is removed. - title: - type: string - description: Title for the Go Link - roles: - type: array - description: A list of user roles for the Go Link. - items: - $ref: "#/components/schemas/UserRoleSpecification" - Collection: - allOf: - - $ref: "#/components/schemas/CollectionMutableProperties" - - $ref: "#/components/schemas/PermissionedObject" - - type: object - required: - - id - - description - properties: - id: - type: integer - description: The unique ID of the Collection. - createTime: - type: string - format: date-time - updateTime: - type: string - format: date-time - creator: - $ref: "#/components/schemas/Person" - updatedBy: - $ref: "#/components/schemas/Person" - itemCount: - type: integer - description: The number of items currently in the Collection. Separated from the actual items so we can grab the count without items. - childCount: - type: integer - description: The number of children Collections. Separated from the actual children so we can grab the count without children. - items: - type: array - items: - $ref: "#/components/schemas/CollectionItem" - description: The items in this Collection. - pinMetadata: - $ref: "#/components/schemas/CollectionPinnedMetadata" - description: Metadata having what categories this Collection is pinned to and the eligible categories to pin to - shortcuts: - type: array - items: - type: string - description: The names of the shortcuts (Go Links) that point to this Collection. - children: - type: array - items: - $ref: "#/components/schemas/Collection" - description: The children Collections of this Collection. - roles: - type: array - description: A list of user roles for the Collection. - items: - $ref: "#/components/schemas/UserRoleSpecification" - CollectionItem: - allOf: - - $ref: "#/components/schemas/CollectionItemMutableProperties" - - type: object - required: - - collectionId - - itemType - properties: - collectionId: - type: integer - description: The Collection ID of the Collection that this CollectionItem belongs in. - documentId: - type: string - description: If this CollectionItem is indexed, the Glean Document ID of that document. - url: - type: string - description: The URL of this CollectionItem. - itemId: - type: string - description: Unique identifier for the item within the Collection it belongs to. - createdBy: - $ref: "#/components/schemas/Person" - description: The person who added this Collection item. - createdAt: - type: string - format: date-time - description: Unix timestamp for when the item was first added (in seconds since epoch UTC). - document: - $ref: "#/components/schemas/Document" - description: The Document this CollectionItem corresponds to (omitted if item is a non-indexed URL). - shortcut: - $ref: "#/components/schemas/Shortcut" - description: The Shortcut this CollectionItem corresponds to (only included if item URL is for a Go Link). - collection: - $ref: "#/components/schemas/Collection" - description: The Collection this CollectionItem corresponds to (only included if item type is COLLECTION). - itemType: - type: string - enum: - - DOCUMENT - - TEXT - - URL - - COLLECTION - CollectionPinnableCategories: - type: string - description: Categories a Collection can be pinned to. - enum: - - COMPANY_RESOURCE - - DEPARTMENT_RESOURCE - - TEAM_RESOURCE - CollectionPinnableTargets: - type: string - description: What targets can a Collection be pinned to. - enum: - - RESOURCE_CARD - - TEAM_PROFILE_PAGE - CollectionPinTarget: - required: - - category - properties: - category: - $ref: "#/components/schemas/CollectionPinnableCategories" - value: - type: string - description: Optional. If category supports values, then the additional value for the category e.g. department name for DEPARTMENT_RESOURCE, team name/id for TEAM_RESOURCE and so on. - target: - $ref: "#/components/schemas/CollectionPinnableTargets" - CollectionPinMetadata: - required: - - id - - target - properties: - id: - type: integer - description: The ID of the Collection. - target: - $ref: "#/components/schemas/CollectionPinTarget" - CollectionPinnedMetadata: - required: - - pinnedCategories - - eligibleCategoriesForPinning - properties: - existingPins: - type: array - items: - $ref: "#/components/schemas/CollectionPinTarget" - description: List of targets this Collection is pinned to. - eligiblePins: - type: array - items: - $ref: "#/components/schemas/CollectionPinMetadata" - description: List of targets this Collection can be pinned to, excluding the targets this Collection is already pinned to. We also include Collection ID already is pinned to each eligible target, which will be 0 if the target has no pinned Collection. - Answer: - allOf: - - $ref: "#/components/schemas/AnswerId" - - $ref: "#/components/schemas/AnswerDocId" - - $ref: "#/components/schemas/AnswerMutableProperties" - - $ref: "#/components/schemas/PermissionedObject" - - type: object - required: - - id - properties: - combinedAnswerText: - $ref: "#/components/schemas/StructuredText" - likes: - $ref: "#/components/schemas/AnswerLikes" - author: - $ref: "#/components/schemas/Person" - createTime: - type: string - format: date-time - description: The time the answer was created in ISO format (ISO 8601). - updateTime: - type: string - format: date-time - description: The time the answer was last updated in ISO format (ISO 8601). - updatedBy: - $ref: "#/components/schemas/Person" - verification: - $ref: "#/components/schemas/Verification" - collections: - type: array - description: The collections to which the answer belongs. - items: - $ref: "#/components/schemas/Collection" - documentCategory: - type: string - description: The document's document_category(.proto). - sourceDocument: - $ref: "#/components/schemas/Document" - FollowupAction: - description: A follow-up action that can be invoked by the user after a response. The action parameters are not included and need to be predicted/filled separately. - properties: - actionRunId: - type: string - description: Unique identifier for this actionRun recommendation event. - actionInstanceId: - type: string - description: The ID of the action instance that will be invoked. - actionId: - type: string - description: The ID of the associated action. - parameters: - type: object - description: Map of assistant predicted parameters and their corresponding values. - additionalProperties: - type: string - recommendationText: - type: string - description: Text to be displayed to the user when recommending the action instance. - actionLabel: - type: string - description: The label to be used when displaying a button to execute this action instance. - userConfirmationRequired: - type: boolean - description: Whether user confirmation is needed before executing this action instance. - GeneratedQna: - properties: - question: - type: string - description: Search query rephrased into a question. - answer: - type: string - description: Answer generated for the given query or the generated question. - followUpPrompts: - type: array - items: - type: string - description: List of all follow-up prompts generated for the given query or the generated question. - followupActions: - description: List of follow-up actions generated for the given query or the generated question. - type: array - items: - $ref: "#/components/schemas/FollowupAction" - ranges: - type: array - items: - $ref: "#/components/schemas/TextRange" - description: Answer subsections to mark with special formatting (citations, bolding etc) - status: - type: string - enum: - - COMPUTING - - DISABLED - - FAILED - - NO_ANSWER - - SKIPPED - - STREAMING - - SUCCEEDED - - TIMEOUT - description: Status of backend generating the answer - cursor: - type: string - description: An opaque cursor representing the search request - trackingToken: - type: string - description: An opaque token that represents this particular result in this particular query. To be used for /feedback reporting. - SearchResult: - required: - - url - allOf: - - $ref: "#/components/schemas/Result" - - type: object - properties: - document: - $ref: "#/components/schemas/Document" - title: - type: string - url: - type: string - nativeAppUrl: - type: string - description: A deep link, if available, into the datasource's native application for the user's platform (e.g. slack://...). - snippets: - type: array - items: - $ref: "#/components/schemas/SearchResultSnippet" - description: Text content from the result document which contains search query terms, if available. - fullText: - type: string - description: The full body text of the result if not already contained in the snippets. Only populated for conversation results (e.g. results from a messaging app such as Slack). - fullTextList: - type: array - description: The full body text of the result if not already contained in the snippets; each item in the array represents a separate line in the original text. Only populated for conversation results (e.g. results from a messaging app such as Slack). - items: - type: string - relatedResults: - type: array - items: - $ref: "#/components/schemas/RelatedDocuments" - description: A list of results related to this search result. Eg. for conversation results it contains individual messages from the conversation document which will be shown on SERP. - clusteredResults: - type: array - description: A list of results that should be displayed as associated with this result. - items: - $ref: "#/components/schemas/SearchResult" - allClusteredResults: - type: array - description: A list of results that should be displayed as associated with this result. - items: - $ref: "#/components/schemas/ClusterGroup" - attachmentCount: - type: integer - description: The total number of attachments. - attachments: - type: array - description: A (potentially partial) list of results representing documents attached to the main result document. - items: - $ref: "#/components/schemas/SearchResult" - backlinkResults: - type: array - description: A list of results that should be displayed as backlinks of this result in reverse chronological order. - items: - $ref: "#/components/schemas/SearchResult" - clusterType: - $ref: "#/components/schemas/ClusterTypeEnum" - mustIncludeSuggestions: - $ref: "#/components/schemas/QuerySuggestionList" - querySuggestion: - $ref: "#/components/schemas/QuerySuggestion" - prominence: - $ref: "#/components/schemas/SearchResultProminenceEnum" - attachmentContext: - type: string - description: Additional context for the relationship between the result and the document it's attached to. - pins: - type: array - description: A list of pins associated with this search result. - items: - $ref: "#/components/schemas/PinDocument" - example: - snippets: - - snippet: snippet - mimeType: mimeType - metadata: - container: container - createTime: "2000-01-23T04:56:07.000Z" - datasource: datasource - author: - name: name - documentId: documentId - updateTime: "2000-01-23T04:56:07.000Z" - mimeType: mimeType - objectType: objectType - title: title - url: https://example.com/foo/bar - nativeAppUrl: slack://foo/bar - mustIncludeSuggestions: - - missingTerm: container - query: container - ExtractedQnA: - properties: - heading: - type: string - description: Heading text that was matched to produce this result. - question: - type: string - description: Question text that was matched to produce this result. - questionResult: - $ref: "#/components/schemas/SearchResult" - CalendarAttendee: - required: - - person - properties: - isOrganizer: - type: boolean - description: Whether or not this attendee is an organizer. - isInGroup: - type: boolean - description: Whether or not this attendee is in a group. Needed temporarily at least to support both flat attendees and tree for compatibility. - person: - $ref: "#/components/schemas/Person" - groupAttendees: - type: array - description: If this attendee is a group, represents the list of individual attendees in the group. - items: - $ref: "#/components/schemas/CalendarAttendee" - responseStatus: - type: string - enum: - - ACCEPTED - - DECLINED - - NO_RESPONSE - - TENTATIVE - CalendarAttendees: - properties: - people: - type: array - items: - $ref: "#/components/schemas/CalendarAttendee" - description: Full details of some of the attendees of this event - isLimit: - type: boolean - description: Whether the total count of the people returned is at the retrieval limit. - total: - type: integer - description: Total number of attendees in this event. - numAccepted: - type: integer - description: Total number of attendees who have accepted this event. - numDeclined: - type: integer - description: Total number of attendees who have declined this event. - numNoResponse: - type: integer - description: Total number of attendees who have not responded to this event. - numTentative: - type: integer - description: Total number of attendees who have responded tentatively (i.e. responded maybe) to this event. - Meeting: - properties: - id: - type: string - title: - type: string - description: - type: string - url: - type: string - startTime: - type: string - format: date-time - endTime: - type: string - format: date-time - attendees: - $ref: "#/components/schemas/CalendarAttendees" - description: The attendee list, including their response status - isCancelled: - type: boolean - description: Whether the meeting has been cancelled - location: - type: string - description: The location/venue of the meeting - responseStatus: - type: string - description: The current user's response status (accepted, declined, tentativelyAccepted, none) - conferenceUri: - type: string - description: The meeting join link (Teams, Zoom, etc.) - conferenceProvider: - type: string - description: The conference provider (e.g., "Microsoft Teams", "Zoom") - AppResult: - required: - - datasource - properties: - datasource: - type: string - description: The app or other repository type this represents - docType: - type: string - description: The datasource-specific type of the document (e.g. for Jira issues, this is the issue type such as Bug or Feature Request). - mimeType: - type: string - description: Mimetype is used to differentiate between sub applications from a datasource (e.g. Sheets, Docs from Gdrive) - iconUrl: - type: string - description: If there is available icon URL. - CodeLine: - properties: - lineNumber: - type: integer - content: - type: string - ranges: - type: array - items: - $ref: "#/components/schemas/TextRange" - description: Index ranges depicting matched sections of the line - Code: - properties: - repoName: - type: string - fileName: - type: string - fileUrl: - type: string - lines: - type: array - items: - $ref: "#/components/schemas/CodeLine" - isLastMatch: - type: boolean - description: Last file match for a repo - example: - repoName: scio - fileName: README.md - matches: - - lineNumber: 1 - content: Welcome to the beginning - ranges: [] - - lineNumber: 2 - content: Second line of the file - ranges: [] - - lineNumber: 3 - content: hello world hello world - ranges: - - startindex: 0 - endIndex: 5 - - startIndex: 12 - endIndex: 17 - QuerySuggestionList: - properties: - suggestions: - type: array - items: - $ref: "#/components/schemas/QuerySuggestion" - person: - $ref: "#/components/schemas/Person" - IconConfig: - description: Defines how to render an icon - properties: - generatedBackgroundColorKey: - type: string - backgroundColor: - type: string - color: - type: string - key: - type: string - iconType: - enum: - - COLLECTION - - CUSTOM - - DATASOURCE - - DATASOURCE_INSTANCE - - FAVICON - - FILE_TYPE - - GENERATED_BACKGROUND - - GLYPH - - MIME_TYPE - - NO_ICON - - PERSON - - REACTIONS - - URL - masked: - type: boolean - description: Whether the icon should be masked based on current theme. - name: - type: string - description: The name of the icon if applicable, e.g. the glyph name for `IconType.GLYPH` icons. - url: - type: string - description: The URL to an image to be displayed if applicable, e.g. the URL for `iconType.URL` icons. - example: - color: "#343CED" - key: person_icon - iconType: GLYPH - name: user - ChatMetadata: - description: Metadata of a Chat a user had with Glean Assistant. This contains no actual conversational content. - properties: - id: - type: string - description: The opaque id of the Chat. - createTime: - type: integer - description: Server Unix timestamp of the creation time (in seconds since epoch UTC). - createdBy: - $ref: "#/components/schemas/Person" - description: The user who created this Chat. - updateTime: - type: integer - description: Server Unix timestamp of the update time (in seconds since epoch UTC). - name: - type: string - description: The name of the Chat. - applicationId: - type: string - description: The ID of the AI App that this Chat is associated to. - applicationName: - type: string - description: The display name of the AI App that this Chat is associated to. - icon: - $ref: "#/components/schemas/IconConfig" - RelatedDocuments: - properties: - relation: - type: string - description: How this document relates to the including entity. - enum: - - ATTACHMENT - - CANONICAL - - CASE - - contact - - CONTACT - - CONVERSATION_MESSAGES - - EXPERT - - FROM - - HIGHLIGHT - - opportunity - - OPPORTUNITY - - RECENT - - SOURCE - - TICKET - - TRANSCRIPT - - WITH - x-speakeasy-enum-descriptions: - CANONICAL: Canonical documents for the entity, such as overview docs, architecture docs elastic. - associatedEntityId: - type: string - description: Which entity in the response that this entity relates to. Relevant when there are multiple entities associated with the response (such as merged customers) - querySuggestion: - $ref: "#/components/schemas/QuerySuggestion" - documents: - type: array - items: - $ref: "#/components/schemas/Document" - description: A truncated list of documents with this relation. TO BE DEPRECATED. - deprecated: true - results: - type: array - items: - $ref: "#/components/schemas/SearchResult" - description: A truncated list of documents associated with this relation. To be used in favor of `documents` because it contains a trackingToken. - RelatedQuestion: - properties: - question: - type: string - description: The text of the related question - answer: - type: string - description: The answer for the related question - ranges: - type: array - items: - $ref: "#/components/schemas/TextRange" - description: Subsections of the answer string to which some special formatting should be applied (eg. bold) - EntityType: - type: string - description: The type of entity. - x-include-enum-class-prefix: true - enum: - - PERSON - - PROJECT - - CUSTOMER - Disambiguation: - type: object - description: A disambiguation between multiple entities with the same name - properties: - name: - type: string - description: Name of the ambiguous entity - id: - type: string - description: The unique id of the entity in the knowledge graph - type: - $ref: "#/components/schemas/EntityType" - SearchResultSnippet: - required: - - snippet - properties: - mimeType: - type: string - description: The mime type of the snippets, currently either text/plain or text/html. - text: - type: string - description: A matching snippet from the document with no highlights. - snippetTextOrdering: - type: integer - description: Used for sorting based off the snippet's location within all_snippetable_text - ranges: - type: array - items: - $ref: "#/components/schemas/TextRange" - description: The bolded ranges within text. - url: - type: string - description: A URL, generated based on availability, that links to the position of the snippet text or to the nearest header above the snippet text. - snippet: - type: string - deprecated: true - description: A matching snippet from the document. Query term matches are marked by the unicode characters uE006 and uE007. Use 'text' field instead. - example: - snippet: snippet - mimeType: mimeType - StructuredResult: - description: A single object that can support any object in the work graph. Only a single object will be populated. - properties: - document: - $ref: "#/components/schemas/Document" - person: - $ref: "#/components/schemas/Person" - customer: - $ref: "#/components/schemas/Customer" - team: - $ref: "#/components/schemas/Team" - customEntity: - $ref: "#/components/schemas/CustomEntity" - answer: - $ref: "#/components/schemas/Answer" - generatedQna: - $ref: "#/components/schemas/GeneratedQna" - extractedQnA: - $ref: "#/components/schemas/ExtractedQnA" - meeting: - $ref: "#/components/schemas/Meeting" - app: - $ref: "#/components/schemas/AppResult" - collection: - $ref: "#/components/schemas/Collection" - code: - $ref: "#/components/schemas/Code" - shortcut: - $ref: "#/components/schemas/Shortcut" - querySuggestions: - $ref: "#/components/schemas/QuerySuggestionList" - chat: - $ref: "#/components/schemas/ChatMetadata" - relatedDocuments: - type: array - items: - $ref: "#/components/schemas/RelatedDocuments" - description: A list of documents related to this structured result. - relatedQuestion: - $ref: "#/components/schemas/RelatedQuestion" - disambiguation: - $ref: "#/components/schemas/Disambiguation" - snippets: - description: Any snippets associated to the populated object. - type: array - items: - $ref: "#/components/schemas/SearchResultSnippet" - trackingToken: - type: string - description: An opaque token that represents this particular result in this particular query. To be used for /feedback reporting. - prominence: - type: string - description: The level of visual distinction that should be given to a result. - enum: - - HERO - - PROMOTED - - STANDARD - x-speakeasy-enum-descriptions: - HERO: A high-confidence result that should feature prominently on the page. - PROMOTED: May not be the best result but should be given additional visual distinction. - STANDARD: Should not be distinct from any other results. - source: - type: string - description: Source context for this result. Possible values depend on the result type. - enum: - - EXPERT_DETECTION - - ENTITY_NLQ - - CALENDAR_EVENT - - AGENT - Result: - properties: - structuredResults: - type: array - description: An array of entities in the work graph retrieved via a data request. - items: - $ref: "#/components/schemas/StructuredResult" - trackingToken: - type: string - description: An opaque token that represents this particular result in this particular query. To be used for /feedback reporting. - ClusterTypeEnum: - type: string - description: The reason for inclusion of clusteredResults. - enum: - - SIMILAR - - FRESHNESS - - TITLE - - CONTENT - - NONE - - THREAD_REPLY - - THREAD_ROOT - - PREFIX - - SUFFIX - - AUTHOR_PREFIX - - AUTHOR_SUFFIX - ClusterGroup: - required: - - visibleCountHint - properties: - clusteredResults: - type: array - description: A list of results that should be displayed as associated with this result. - items: - $ref: "#/components/schemas/SearchResult" - clusterType: - $ref: "#/components/schemas/ClusterTypeEnum" - visibleCountHint: - type: integer - description: The default number of results to display before truncating and showing a "see more" link - SearchResultProminenceEnum: - type: string - description: | - The level of visual distinction that should be given to a result. - enum: - - HERO - - PROMOTED - - STANDARD - x-speakeasy-enum-descriptions: - HERO: A high-confidence result that should feature prominently on the page. - PROMOTED: May not be the best result but should be given additional visual distinction. - STANDARD: Should not be distinct from any other results. - PinDocumentMutableProperties: - properties: - queries: - type: array - description: The query strings for which the pinned result will show. - items: - type: string - audienceFilters: - type: array - description: Filters which restrict who should see the pinned document. Values are taken from the corresponding filters in people search. - items: - $ref: "#/components/schemas/FacetFilter" - PinDocument: - allOf: - - $ref: "#/components/schemas/PinDocumentMutableProperties" - - type: object - required: - - documentId - properties: - id: - type: string - description: The opaque id of the pin. - documentId: - type: string - description: The document which should be a pinned result. - audienceFilters: - type: array - description: Filters which restrict who should see the pinned document. Values are taken from the corresponding filters in people search. - items: - $ref: "#/components/schemas/FacetFilter" - attribution: - $ref: "#/components/schemas/Person" - updatedBy: - $ref: "#/components/schemas/Person" - createTime: - type: string - format: date-time - updateTime: - type: string - format: date-time - PersonTeam: - description: Use `id` if you index teams via Glean, and use `name` and `externalLink` if you want to use your own team pages - properties: - id: - type: string - description: Unique identifier - name: - type: string - description: Team name - externalLink: - type: string - format: uri - description: Link to a team page on the internet or your company's intranet - relationship: - type: string - description: The team member's relationship to the team. This defaults to MEMBER if not set. - default: MEMBER - enum: - - MEMBER - - MANAGER - - LEAD - - POINT_OF_CONTACT - - OTHER - joinDate: - type: string - format: date-time - description: The team member's start date - StructuredLocation: - type: object - description: Detailed location with information about country, state, city etc. - properties: - deskLocation: - type: string - description: Desk number. - timezone: - type: string - description: Location's timezone, e.g. UTC, PST. - address: - type: string - description: Office address or name. - city: - type: string - description: Name of the city. - state: - type: string - description: State code. - region: - type: string - description: Region information, e.g. NORAM, APAC. - zipCode: - type: string - description: ZIP Code for the address. - country: - type: string - description: Country name. - countryCode: - type: string - description: Alpha-2 or Alpha-3 ISO 3166 country code, e.g. US or USA. - SocialNetwork: - required: - - name - - profileUrl - properties: - name: - type: string - description: Possible values are "twitter", "linkedin". - profileName: - type: string - description: Human-readable profile name. - profileUrl: - type: string - format: url - description: Link to profile. - PersonDistance: - required: - - name - - obfuscatedId - - distance - properties: - name: - type: string - description: The display name. - obfuscatedId: - type: string - description: An opaque identifier that can be used to request metadata for a Person. - distance: - type: number - format: float - description: Distance to person, refer to PeopleDistance pipeline on interpretation of the value. - CommunicationChannel: - type: string - enum: - - COMMUNICATION_CHANNEL_EMAIL - - COMMUNICATION_CHANNEL_SLACK - ChannelInviteInfo: - description: Information regarding the invite status of a person for a particular channel. - properties: - channel: - description: Channel through which the invite was sent - $ref: "#/components/schemas/CommunicationChannel" - isAutoInvite: - description: Bit that tracks if this invite was automatically sent or user-sent - type: boolean - inviter: - description: The person that invited this person. - $ref: "#/components/schemas/Person" - inviteTime: - type: string - format: date-time - description: The time this person was invited in ISO format (ISO 8601). - reminderTime: - type: string - format: date-time - description: The time this person was reminded in ISO format (ISO 8601) if a reminder was sent. - InviteInfo: - description: Information regarding the invite status of a person. - properties: - signUpTime: - type: string - format: date-time - description: The time this person signed up in ISO format (ISO 8601). - invites: - type: array - items: - $ref: "#/components/schemas/ChannelInviteInfo" - description: Latest invites received by the user for each channel - inviter: - deprecated: true - description: The person that invited this person. - $ref: "#/components/schemas/Person" - inviteTime: - deprecated: true - type: string - format: date-time - description: The time this person was invited in ISO format (ISO 8601). - reminderTime: - deprecated: true - type: string - format: date-time - description: The time this person was reminded in ISO format (ISO 8601) if a reminder was sent. - ReadPermission: - description: Describes the read permission level that a user has for a specific feature - properties: - scopeType: - $ref: "#/components/schemas/ScopeType" - ReadPermissions: - description: Describes the read permission levels that a user has for permissioned features. Key must be PermissionedFeatureOrObject - additionalProperties: - type: array - description: List of read permissions (for different scopes but same feature) - items: - $ref: "#/components/schemas/ReadPermission" - WritePermissions: - description: Describes the write permissions levels that a user has for permissioned features. Key must be PermissionedFeatureOrObject - additionalProperties: - type: array - description: List of write permissions (for different scopes but same feature) - items: - $ref: "#/components/schemas/WritePermission" - GrantPermission: - description: Describes the grant permission level that a user has for a specific feature - properties: - scopeType: - $ref: "#/components/schemas/ScopeType" - GrantPermissions: - description: Describes the grant permission levels that a user has for permissioned features. Key must be PermissionedFeatureOrObject - additionalProperties: - type: array - description: List of grant permissions (for different scopes but same feature) - items: - $ref: "#/components/schemas/GrantPermission" - Permissions: - description: |- - Describes the permissions levels that a user has for permissioned features. When the client sends this, Permissions.read and Permissions.write are the additional permissions granted to a user on top of what they have via their roles. - When the server sends this, Permissions.read and Permissions.write are the complete (merged) set of permissions the user has, and Permissions.roles is just for display purposes. - properties: - canAdminSearch: - type: boolean - description: TODO--deprecate in favor of the read and write properties. True if the user has access to /adminsearch - canAdminClientApiGlobalTokens: - type: boolean - description: TODO--deprecate in favor of the read and write properties. True if the user can administrate client API tokens with global scope - canDlp: - type: boolean - description: TODO--deprecate in favor of the read and write properties. True if the user has access to data loss prevention (DLP) features - read: - $ref: "#/components/schemas/ReadPermissions" - write: - $ref: "#/components/schemas/WritePermissions" - grant: - $ref: "#/components/schemas/GrantPermissions" - role: - type: string - description: The roleId of the canonical role a user has. The displayName is equal to the roleId. - roles: - type: array - description: The roleIds of the roles a user has. - items: - type: string - TimeInterval: - required: - - start - - end - properties: - start: - type: string - description: The RFC3339 timestamp formatted start time of this event. - end: - type: string - description: The RFC3339 timestamp formatted end time of this event. - AnonymousEvent: - description: A generic, light-weight calendar event. - type: object - properties: - time: - $ref: "#/components/schemas/TimeInterval" - eventType: - description: The nature of the event, for example "out of office". - type: string - enum: - - DEFAULT - - OUT_OF_OFFICE - Badge: - type: object - description: Displays a user's accomplishment or milestone - properties: - key: - type: string - description: An auto generated unique identifier. - displayName: - type: string - description: The badge name displayed to users - iconConfig: - $ref: "#/components/schemas/IconConfig" - pinned: - type: boolean - description: The badge should be shown on the PersonAttribution - example: - key: deployment_name_new_hire - displayName: New hire - iconConfig: - color: "#343CED" - key: person_icon - iconType: GLYPH - name: user - PersonMetadata: - properties: - type: - type: string - enum: - - FULL_TIME - - CONTRACTOR - - NON_EMPLOYEE - - FORMER_EMPLOYEE - example: FULL_TIME - x-speakeasy-enum-descriptions: - FULL_TIME: The person is a current full-time employee of the company. - CONTRACTOR: The person is a current contractor of the company. - NON_EMPLOYEE: The person object represents a non-human actor such as a service or admin account. - FORMER_EMPLOYEE: The person is a previous employee of the company. - firstName: - type: string - description: The first name of the person - lastName: - type: string - description: The last name of the person - title: - type: string - description: Job title. - businessUnit: - type: string - description: Typically the highest level organizational unit; generally applies to bigger companies with multiple distinct businesses. - department: - type: string - description: An organizational unit where everyone has a similar task, e.g. `Engineering`. - teams: - description: Info about the employee's team(s). - type: array - items: - $ref: "#/components/schemas/PersonTeam" - departmentCount: - type: integer - description: The number of people in this person's department. - email: - type: string - description: The user's primary email address - aliasEmails: - type: array - description: Additional email addresses of this user beyond the primary, if any. - items: - type: string - location: - type: string - description: User facing string representing the person's location. - structuredLocation: - $ref: "#/components/schemas/StructuredLocation" - externalProfileLink: - type: string - description: Link to a customer's internal profile page. This is set to '#' when no link is desired. - manager: - $ref: "#/components/schemas/Person" - managementChain: - description: The chain of reporting in the company as far up as it goes. The last entry is this person's direct manager. - type: array - items: - $ref: "#/components/schemas/Person" - phone: - type: string - description: Phone number as a number string. - timezone: - type: string - description: The timezone of the person. E.g. "Pacific Daylight Time". - timezoneOffset: - type: integer - format: int64 - description: The offset of the person's timezone in seconds from UTC. - timezoneIANA: - type: string - description: The IANA timezone identifier, e.g. "America/Los_Angeles". - photoUrl: - type: string - format: url - description: The URL of the person's avatar. Public, glean-authenticated and Base64 encoded data URLs are all valid (but not third-party-authenticated URLs). - uneditedPhotoUrl: - type: string - format: url - description: The original photo URL of the person's avatar before any edits they made are applied - bannerUrl: - type: string - format: url - description: The URL of the person's banner photo. - reports: - type: array - items: - $ref: "#/components/schemas/Person" - startDate: - type: string - description: The date when the employee started. - format: date - endDate: - type: string - format: date - description: If a former employee, the last date of employment. - bio: - type: string - description: Short biography or mission statement of the employee. - pronoun: - type: string - description: She/her, He/his or other pronoun. - orgSizeCount: - type: integer - description: The total recursive size of the people reporting to this person, or 1 - directReportsCount: - type: integer - description: The total number of people who directly report to this person, or 0 - preferredName: - type: string - description: The preferred name of the person, or a nickname. - socialNetwork: - description: List of social network profiles. - type: array - items: - $ref: "#/components/schemas/SocialNetwork" - datasourceProfile: - type: array - description: List of profiles this user has in different datasources / tools that they use. - items: - $ref: "#/components/schemas/DatasourceProfile" - querySuggestions: - $ref: "#/components/schemas/QuerySuggestionList" - peopleDistance: - type: array - items: - $ref: "#/components/schemas/PersonDistance" - description: List of people and distances to those people from this person. Optionally with metadata. - inviteInfo: - $ref: "#/components/schemas/InviteInfo" - isSignedUp: - type: boolean - description: Whether the user has signed into Glean at least once. - lastExtensionUse: - type: string - format: date-time - description: The last time the user has used the Glean extension in ISO 8601 format. - permissions: - $ref: "#/components/schemas/Permissions" - customFields: - type: array - description: User customizable fields for additional people information. - items: - $ref: "#/components/schemas/CustomFieldData" - loggingId: - type: string - description: The logging id of the person used in scrubbed logs, tracking GA metrics. - startDatePercentile: - type: number - format: float - description: Percentage of the company that started strictly after this person. Between [0,100). - busyEvents: - type: array - items: - $ref: "#/components/schemas/AnonymousEvent" - description: Intervals of busy time for this person, along with the type of event they're busy with. - profileBoolSettings: - type: object - additionalProperties: - type: boolean - description: flag settings to indicate user profile settings for certain items - badges: - type: array - items: - $ref: "#/components/schemas/Badge" - description: The badges that a user has earned over their lifetime. - isOrgRoot: - type: boolean - description: Whether this person is a "root" node in their organization's hierarchy. - example: - department: Movies - email: george@example.com - location: Hollywood, CA - phone: 6505551234 - photoUrl: https://example.com/george.jpg - startDate: "2000-01-23" - title: Actor - DocumentVisibility: - type: string - description: The level of visibility of the document as understood by our system. - enum: - - PRIVATE - - SPECIFIC_PEOPLE_AND_GROUPS - - DOMAIN_LINK - - DOMAIN_VISIBLE - - PUBLIC_LINK - - PUBLIC_VISIBLE - x-speakeasy-enum-descriptions: - PRIVATE: Only one person is able to see the document. - SPECIFIC_PEOPLE_AND_GROUPS: Only specific people and/or groups can see the document. - DOMAIN_LINK: Anyone in the domain with the link can see the document. - DOMAIN_VISIBLE: Anyone in the domain can search for the document. - PUBLIC_LINK: Anyone with the link can see the document. - PUBLIC_VISIBLE: Anyone on the internet can search for the document. - Reaction: - properties: - type: - type: string - count: - type: integer - description: The count of the reaction type on the document. - reactors: - type: array - items: - $ref: "#/components/schemas/Person" - reactedByViewer: - type: boolean - description: Whether the user in context reacted with this type to the document. - Share: - description: Search endpoint will only fill out numDays ago since that's all we need to display shared badge; docmetadata endpoint will fill out all the fields so that we can display shared badge tooltip - required: - - numDaysAgo - properties: - numDaysAgo: - type: integer - description: The number of days that has passed since the share happened - sharer: - $ref: "#/components/schemas/Person" - sharingDocument: - $ref: "#/components/schemas/Document" - DocumentInteractions: - properties: - numComments: - type: integer - description: The count of comments (thread replies in the case of slack). - numReactions: - type: integer - description: The count of reactions on the document. - reactions: - type: array - description: To be deprecated in favor of reacts. A (potentially non-exhaustive) list of reactions for the document. - deprecated: true - items: - type: string - reacts: - type: array - items: - $ref: "#/components/schemas/Reaction" - shares: - type: array - items: - $ref: "#/components/schemas/Share" - description: Describes instances of someone posting a link to this document in one of our indexed datasources. - visitorCount: - $ref: "#/components/schemas/CountInfo" - ViewerInfo: - properties: - role: - type: string - enum: - - ANSWER_MODERATOR - - OWNER - - VIEWER - description: DEPRECATED - use permissions instead. Viewer's role on the specific document. - deprecated: true - lastViewedTime: - type: string - format: date-time - IndexStatus: - properties: - lastCrawledTime: - description: When the document was last crawled - type: string - format: date-time - lastIndexedTime: - description: When the document was last indexed - type: string - format: date-time - DocumentMetadata: - properties: - datasource: - type: string - datasourceInstance: - type: string - description: The datasource instance from which the document was extracted. - objectType: - type: string - description: The type of the result. Interpretation is specific to each datasource. (e.g. for Jira issues, this is the issue type such as Bug or Feature Request). - container: - type: string - description: The name of the container (higher level parent, not direct parent) of the result. Interpretation is specific to each datasource (e.g. Channels for Slack, Project for Jira). cf. parentId - containerId: - type: string - description: The Glean Document ID of the container. Uniquely identifies the container. - superContainerId: - type: string - description: The Glean Document ID of the super container. Super container represents a broader abstraction that contains many containers. For example, whereas container might refer to a folder, super container would refer to a drive. - parentId: - type: string - description: The id of the direct parent of the result. Interpretation is specific to each datasource (e.g. parent issue for Jira). cf. container - mimeType: - type: string - documentId: - type: string - description: The index-wide unique identifier. - loggingId: - type: string - description: A unique identifier used to represent the document in any logging or feedback requests in place of documentId. - documentIdHash: - type: string - description: Hash of the Glean Document ID. - createTime: - type: string - format: date-time - updateTime: - type: string - format: date-time - author: - $ref: "#/components/schemas/Person" - owner: - $ref: "#/components/schemas/Person" - mentionedPeople: - type: array - items: - $ref: "#/components/schemas/Person" - description: A list of people mentioned in the document. - visibility: - $ref: "#/components/schemas/DocumentVisibility" - components: - type: array - description: A list of components this result is associated with. Interpretation is specific to each datasource. (e.g. for Jira issues, these are [components](https://confluence.atlassian.com/jirasoftwarecloud/organizing-work-with-components-764478279.html).) - items: - type: string - status: - type: string - description: The status or disposition of the result. Interpretation is specific to each datasource. (e.g. for Jira issues, this is the issue status such as Done, In Progress or Will Not Fix). - statusCategory: - type: string - description: The status category of the result. Meant to be more general than status. Interpretation is specific to each datasource. - pins: - type: array - description: A list of stars associated with this result. "Pin" is an older name. - items: - $ref: "#/components/schemas/PinDocument" - priority: - type: string - description: The document priority. Interpretation is datasource specific. - assignedTo: - $ref: "#/components/schemas/Person" - updatedBy: - $ref: "#/components/schemas/Person" - labels: - type: array - description: A list of tags for the document. Interpretation is datasource specific. - items: - type: string - collections: - type: array - description: A list of collections that the document belongs to. - items: - $ref: "#/components/schemas/Collection" - datasourceId: - type: string - description: The user-visible datasource specific id (e.g. Salesforce case number for example, GitHub PR number). - interactions: - $ref: "#/components/schemas/DocumentInteractions" - verification: - $ref: "#/components/schemas/Verification" - viewerInfo: - $ref: "#/components/schemas/ViewerInfo" - permissions: - $ref: "#/components/schemas/ObjectPermissions" - visitCount: - $ref: "#/components/schemas/CountInfo" - shortcuts: - type: array - description: A list of shortcuts of which destination URL is for the document. - items: - $ref: "#/components/schemas/Shortcut" - path: - type: string - description: For file datasources like onedrive/github etc this has the path to the file - customData: - $ref: "#/components/schemas/CustomData" - documentCategory: - type: string - description: The document's document_category(.proto). - contactPerson: - $ref: "#/components/schemas/Person" - thumbnail: - $ref: "#/components/schemas/Thumbnail" - description: A thumbnail image representing this document. - indexStatus: - $ref: "#/components/schemas/IndexStatus" - ancestors: - type: array - description: A list of documents that are ancestors of this document in the hierarchy of the document's datasource, for example parent folders or containers. Ancestors can be of different types and some may not be indexed. Higher level ancestors appear earlier in the list. - items: - $ref: "#/components/schemas/Document" - example: - container: container - parentId: JIRA_EN-1337 - createTime: "2000-01-23T04:56:07.000Z" - datasource: datasource - author: - name: name - documentId: documentId - updateTime: "2000-01-23T04:56:07.000Z" - mimeType: mimeType - objectType: Feature Request - components: - - Backend - - Networking - status: - - Done - customData: - someCustomField: someCustomValue - DocumentSection: - type: object - properties: - title: - type: string - description: The title of the document section (e.g. the section header). - url: - type: string - description: The permalink of the document section. - StructuredTextItem: - properties: - link: - type: string - example: https://en.wikipedia.org/wiki/Diffuse_sky_radiation - document: - deprecated: true - description: Deprecated. To be gradually migrated to structuredResult. - $ref: "#/components/schemas/Document" - text: - type: string - example: Because its wavelengths are shorter, blue light is more strongly scattered than the longer-wavelength lights, red or green. Hence the result that when looking at the sky away from the direct incident sunlight, the human eye perceives the sky to be blue. - structuredResult: - $ref: "#/components/schemas/StructuredResult" - AnnouncementMutableProperties: - properties: - startTime: - type: string - format: date-time - description: The date and time at which the announcement becomes active. - endTime: - type: string - format: date-time - description: The date and time at which the announcement expires. - title: - type: string - description: The headline of the announcement. - body: - $ref: "#/components/schemas/StructuredText" - emoji: - type: string - description: An emoji used to indicate the nature of the announcement. - thumbnail: - $ref: "#/components/schemas/Thumbnail" - banner: - $ref: "#/components/schemas/Thumbnail" - description: Optional variant of thumbnail cropped for header background. - audienceFilters: - type: array - description: Filters which restrict who should see the announcement. Values are taken from the corresponding filters in people search. - items: - $ref: "#/components/schemas/FacetFilter" - sourceDocumentId: - type: string - description: The Glean Document ID of the source document this Announcement was created from (e.g. Slack thread). - hideAttribution: - type: boolean - description: Whether or not to hide an author attribution. - channel: - type: string - enum: - - MAIN - - SOCIAL_FEED - description: This determines whether this is a Social Feed post or a regular announcement. - postType: - type: string - enum: - - TEXT - - LINK - description: This determines whether this is an external-link post or a regular announcement post. TEXT - Regular announcement that can contain rich text. LINK - Announcement that is linked to an external site. - isPrioritized: - type: boolean - description: Used by the Social Feed to pin posts to the front of the feed. - viewUrl: - type: string - description: URL for viewing the announcement. It will be set to document URL for announcements from other datasources e.g. simpplr. Can only be written when channel="SOCIAL_FEED". - CreateAnnouncementRequest: - allOf: - - $ref: "#/components/schemas/AnnouncementMutableProperties" - - type: object - required: - - title - - startTime - - endTime - DraftProperties: - properties: - draftId: - type: integer - description: The opaque id of the associated draft. - example: - draftId: 342 - Announcement: - allOf: - - $ref: "#/components/schemas/AnnouncementMutableProperties" - - $ref: "#/components/schemas/DraftProperties" - - $ref: "#/components/schemas/PermissionedObject" - - type: object - properties: - id: - type: integer - description: The opaque id of the announcement. - author: - $ref: "#/components/schemas/Person" - createTimestamp: - type: integer - description: Server Unix timestamp of the creation time (in seconds since epoch UTC). - lastUpdateTimestamp: - type: integer - description: Server Unix timestamp of the last update time (in seconds since epoch UTC). - updatedBy: - $ref: "#/components/schemas/Person" - viewerInfo: - type: object - properties: - isDismissed: - type: boolean - description: Whether the viewer has dismissed the announcement. - isRead: - type: boolean - description: Whether the viewer has read the announcement. - sourceDocument: - $ref: "#/components/schemas/Document" - description: The source document if the announcement is created from one. - isPublished: - type: boolean - description: Whether or not the announcement is published. - DeleteAnnouncementRequest: - required: - - id - properties: - id: - type: integer - description: The opaque id of the announcement to be deleted. - UpdateAnnouncementRequest: - allOf: - - $ref: "#/components/schemas/AnnouncementMutableProperties" - - type: object - required: - - id - - title - - startTime - - endTime - properties: - id: - type: integer - description: The opaque id of the announcement. - AddedCollections: - properties: - addedCollections: - type: array - items: - type: integer - description: IDs of Collections to which a document is added. - AnswerCreationData: - allOf: - - $ref: "#/components/schemas/AnswerMutableProperties" - - $ref: "#/components/schemas/AddedCollections" - - type: object - properties: - combinedAnswerText: - $ref: "#/components/schemas/StructuredTextMutableProperties" - CreateAnswerRequest: - required: - - data - properties: - data: - $ref: "#/components/schemas/AnswerCreationData" - DeleteAnswerRequest: - allOf: - - $ref: "#/components/schemas/AnswerId" - - $ref: "#/components/schemas/AnswerDocId" - - type: object - required: - - id - RemovedCollections: - properties: - removedCollections: - type: array - items: - type: integer - description: IDs of Collections from which a document is removed. - EditAnswerRequest: - allOf: - - $ref: "#/components/schemas/AnswerId" - - $ref: "#/components/schemas/AnswerDocId" - - $ref: "#/components/schemas/AnswerMutableProperties" - - $ref: "#/components/schemas/AddedCollections" - - $ref: "#/components/schemas/RemovedCollections" - - type: object - required: - - id - properties: - combinedAnswerText: - $ref: "#/components/schemas/StructuredTextMutableProperties" - GetAnswerRequest: - allOf: - - $ref: "#/components/schemas/AnswerId" - - $ref: "#/components/schemas/AnswerDocId" - AnswerResult: - required: - - answer - properties: - answer: - $ref: "#/components/schemas/Answer" - trackingToken: - type: string - description: An opaque token that represents this particular Answer. To be used for `/feedback` reporting. - GetAnswerError: - properties: - errorType: - type: string - enum: - - NO_PERMISSION - - INVALID_ID - answerAuthor: - $ref: "#/components/schemas/Person" - GetAnswerResponse: - properties: - answerResult: - $ref: "#/components/schemas/AnswerResult" - error: - $ref: "#/components/schemas/GetAnswerError" - ListAnswersRequest: - properties: - boardId: - type: integer - description: The Answer Board Id to list answers on. - ListAnswersResponse: - required: - - answers - - answerResults - properties: - answerResults: - type: array - items: - $ref: "#/components/schemas/AnswerResult" - description: List of answers with tracking tokens. - CreateAuthTokenResponse: - required: - - token - - expirationTime - properties: - token: - type: string - description: An authentication token that can be passed to any endpoint via Bearer Authentication - expirationTime: - description: Unix timestamp for when this token expires (in seconds since epoch UTC). - type: integer - format: int64 - ToolSets: - type: object - description: The types of tools that the agent is allowed to use. Only works with FAST and ADVANCED `agent` values - properties: - enableWebSearch: - type: boolean - description: "Whether the agent is allowed to use web search (default: true)." - enableCompanyTools: - type: boolean - description: "Whether the agent is allowed to search internal company resources (default: true)." - AgentConfig: - description: Describes the agent that executes the request. - properties: - agent: - type: string - description: Name of the agent. - enum: - - DEFAULT - - GPT - - UNIVERSAL - - FAST - - ADVANCED - x-speakeasy-enum-descriptions: - DEFAULT: Integrates with your company's knowledge. This will soon be deprecated in favor of the FAST and ADVANCED `agent` values - GPT: Communicates directly with the LLM. This will soon be deprecated in favor of the FAST and ADVANCED `agent` values - UNIVERSAL: Uses both company and web knowledge. This will soon be deprecated in favor of the FAST and ADVANCED `agent` values - FAST: Uses an agent powered by the agentic engine that responds faster but may have lower quality results. Requires the agentic engine to be enabled in the deployment. - ADVANCED: Uses an agent powered by the agentic engine that thinks for longer and potentially makes more LLM calls to return higher quality results. Requires the agentic engine to be enabled in the deployment. - toolSets: - $ref: "#/components/schemas/ToolSets" - mode: - type: string - description: Top level modes to run GleanChat in. - enum: - - DEFAULT - - QUICK - x-speakeasy-enum-descriptions: - DEFAULT: Used if no mode supplied. - QUICK: Deprecated. - useImageGeneration: - type: boolean - description: Whether the agent should create an image. - ChatFileStatus: - type: string - description: Current status of the file. - x-include-enum-class-prefix: true - enum: - - PROCESSING - - PROCESSED - - FAILED - - DELETED - ChatFileFailureReason: - type: string - description: Reason for failed status. - x-include-enum-class-prefix: true - enum: - - PARSE_FAILED - - AV_SCAN_FAILED - - FILE_TOO_SMALL - - FILE_TOO_LARGE - - FILE_EXTENSION_UNSUPPORTED - - FILE_METADATA_VALIDATION_FAIL - - FILE_PROCESSING_TIMED_OUT - - OAUTH_NEEDED - - URL_FETCH_FAILED - - EMPTY_CONTENT - - AUTH_REQUIRED - ChatFileMetadata: - type: object - description: Metadata of a file uploaded by a user for Chat. - properties: - status: - $ref: "#/components/schemas/ChatFileStatus" - uploadTime: - type: integer - format: int64 - description: Upload time, in epoch seconds. - processedSize: - type: integer - format: int64 - description: Size of the processed file in bytes. - failureReason: - $ref: "#/components/schemas/ChatFileFailureReason" - mimeType: - description: MIME type of the file. - type: string - ChatFile: - type: object - description: Structure for file uploaded by a user for Chat. - properties: - id: - type: string - description: Unique identifier of the file. - example: FILE_1234 - url: - type: string - description: Url of the file. - example: www.google.com - name: - type: string - description: Name of the uploaded file. - example: sample.pdf - metadata: - $ref: "#/components/schemas/ChatFileMetadata" - ReferenceRange: - description: Each text range from the response can correspond to an array of snippets from the citation source. - properties: - textRange: - $ref: "#/components/schemas/TextRange" - snippets: - type: array - items: - $ref: "#/components/schemas/SearchResultSnippet" - ChatMessageCitation: - description: Information about the source for a ChatMessage. - properties: - trackingToken: - type: string - description: An opaque token that represents this particular result in this particular ChatMessage. To be used for /feedback reporting. - sourceDocument: - $ref: "#/components/schemas/Document" - sourceFile: - $ref: "#/components/schemas/ChatFile" - sourcePerson: - $ref: "#/components/schemas/Person" - referenceRanges: - description: Each reference range and its corresponding snippets - type: array - items: - $ref: "#/components/schemas/ReferenceRange" - displayName: - description: Human understandable name of the tool. Max 50 characters. - type: string - logoUrl: - type: string - description: URL used to fetch the logo. - objectName: - type: string - description: Name of the generated object. This will be used to indicate to the end user what the generated object contains. - example: - - HR ticket - - Email - - Chat message - PersonObject: - required: - - name - - obfuscatedId - properties: - name: - type: string - description: The display name. - obfuscatedId: - type: string - description: An opaque identifier that can be used to request metadata for a Person. - AuthConfig: - description: Config for tool's authentication method. - type: object - properties: - isOnPrem: - type: boolean - description: Whether or not this tool is hosted on-premise. - usesCentralAuth: - type: boolean - description: Whether or not this uses central auth. - type: - type: string - enum: - - NONE - - OAUTH_USER - - OAUTH_ADMIN - - API_KEY - - BASIC_AUTH - - DWD - description: | - The type of authentication being used. - Use 'OAUTH_*' when Glean calls an external API (e.g., Jira) on behalf of a user to obtain an OAuth token. - 'OAUTH_ADMIN' utilizes an admin token for external API calls on behalf all users. - 'OAUTH_USER' uses individual user tokens for external API calls. - 'DWD' refers to domain wide delegation. - grantType: - type: string - enum: - - AUTH_CODE - - CLIENT_CREDENTIALS - description: The type of grant type being used. - status: - type: string - description: Auth status of the tool. - enum: - - AWAITING_AUTH - - AUTHORIZED - - AUTH_DISABLED - client_url: - type: string - format: url - description: The URL where users will be directed to start the OAuth flow. - scopes: - type: array - items: - type: string - description: A list of strings denoting the different scopes or access levels required by the tool. - audiences: - type: array - items: - type: string - description: A list of strings denoting the different audience which can access the tool. - authorization_url: - type: string - format: url - description: The OAuth provider's endpoint, where access tokens are requested. - lastAuthorizedAt: - type: string - format: date-time - description: The time the tool was last authorized in ISO format (ISO 8601). - ToolMetadata: - description: The manifest for a tool that can be used to augment Glean Assistant. - required: - - type - - name - - displayName - - displayDescription - properties: - type: - description: The type of tool. - type: string - enum: - - RETRIEVAL - - ACTION - name: - description: Unique identifier for the tool. Name should be understandable by the LLM, and will be used to invoke a tool. - type: string - displayName: - $ref: "#/components/schemas/displayName" - toolId: - type: string - description: An opaque id which is unique identifier for the tool. - displayDescription: - description: Description of the tool meant for a human. - type: string - logoUrl: - $ref: "#/components/schemas/logoUrl" - objectName: - $ref: "#/components/schemas/objectName" - knowledgeType: - type: string - description: Indicates the kind of knowledge a tool would access or modify. - enum: - - NEUTRAL_KNOWLEDGE - - COMPANY_KNOWLEDGE - - WORLD_KNOWLEDGE - createdBy: - $ref: "#/components/schemas/PersonObject" - lastUpdatedBy: - $ref: "#/components/schemas/PersonObject" - createdAt: - type: string - format: date-time - description: The time the tool was created in ISO format (ISO 8601) - lastUpdatedAt: - type: string - format: date-time - description: The time the tool was last updated in ISO format (ISO 8601) - writeActionType: - type: string - description: Valid only for write actions. Represents the type of write action. REDIRECT - The client renders the URL which contains information for carrying out the action. EXECUTION - Send a request to an external server and execute the action. MCP - Send a tools/call request to an MCP server to execute the action. - enum: - - REDIRECT - - EXECUTION - - MCP - authType: - type: string - enum: - - NONE - - OAUTH_USER - - OAUTH_ADMIN - - API_KEY - - BASIC_AUTH - - DWD - description: | - The type of authentication being used. - Use 'OAUTH_*' when Glean calls an external API (e.g., Jira) on behalf of a user to obtain an OAuth token. - 'OAUTH_ADMIN' utilizes an admin token for external API calls on behalf all users. - 'OAUTH_USER' uses individual user tokens for external API calls. - 'DWD' refers to domain wide delegation. - auth: - deprecated: true - $ref: "#/components/schemas/AuthConfig" - permissions: - deprecated: true - $ref: "#/components/schemas/ObjectPermissions" - usageInstructions: - description: Usage instructions for the LLM to use this action. - type: string - isSetupFinished: - type: boolean - description: Whether this action has been fully configured and validated. - PossibleValue: - type: object - description: Possible value of a specific parameter - properties: - value: - type: string - description: Possible value - label: - type: string - description: User-friendly label associated with the value - WriteActionParameter: - type: object - properties: - type: - type: string - description: The type of the value (e.g., integer, string, boolean, etc.) - enum: - - UNKNOWN - - INTEGER - - STRING - - BOOLEAN - displayName: - type: string - description: Human readable display name for the key. - value: - type: string - description: The value of the field. - isRequired: - type: boolean - description: Is the parameter a required field. - description: - type: string - description: Description of the parameter. - possibleValues: - type: array - items: - $ref: "#/components/schemas/PossibleValue" - description: Possible values that the parameter can take. - ToolInfo: - type: object - properties: - metadata: - $ref: "#/components/schemas/ToolMetadata" - parameters: - type: object - description: Parameters supported by the tool. - additionalProperties: - $ref: "#/components/schemas/WriteActionParameter" - ChatMessageFragment: - description: Represents a part of a ChatMessage that originates from a single action/tool. It is designed to support rich data formats beyond simple text, allowing for a more dynamic and interactive chat experience. Each fragment can include various types of content, such as text, search queries, action information, and more. Also, each ChatMessageFragment should only have one of structuredResults, querySuggestion, writeAction, followupAction, agentRecommendation, followupRoutingSuggestion or file. - allOf: - - $ref: "#/components/schemas/Result" - - type: object - properties: - text: - type: string - querySuggestion: - description: The search queries issued while responding. - $ref: "#/components/schemas/QuerySuggestion" - file: - description: Files referenced in the message fragment. This is used to construct rich-text messages with file references. - $ref: "#/components/schemas/ChatFile" - action: - description: Basic information about an action. This can be used to construct rich-text messages with action references. - $ref: "#/components/schemas/ToolInfo" - citation: - description: Inline citation. - $ref: "#/components/schemas/ChatMessageCitation" - ChatMessage: - description: A message that is rendered as one coherent unit with one given sender. - properties: - agentConfig: - $ref: "#/components/schemas/AgentConfig" - description: Describes the agent config that generated this message. Populated on responses and not required on requests. - author: - default: USER - enum: - - USER - - GLEAN_AI - citations: - type: array - items: - $ref: "#/components/schemas/ChatMessageCitation" - description: A list of Citations that were used to generate the response. - uploadedFileIds: - type: array - items: - type: string - description: IDs of files uploaded in the message that are referenced to generate the answer. - fragments: - type: array - description: A list of rich data used to represent the response or formulate a request. These are linearly stitched together to support richer data formats beyond simple text. - items: - $ref: "#/components/schemas/ChatMessageFragment" - ts: - type: string - description: Response timestamp of the message. - messageId: - type: string - description: A unique server-side generated ID used to identify a message, automatically populated for any USER authored messages. - messageTrackingToken: - type: string - description: Opaque tracking token generated server-side. - messageType: - type: string - default: CONTENT - description: Semantically groups content of a certain type. It can be used for purposes such as differential UI treatment. USER authored messages should be of type CONTENT and do not need `messageType` specified. - enum: - - UPDATE - - CONTENT - - CONTEXT - - DEBUG - - DEBUG_EXTERNAL - - ERROR - - HEADING - - WARNING - - SERVER_TOOL - x-speakeasy-enum-descriptions: - UPDATE: An intermediate state message for progress updates. - CONTENT: A user query or response message. - CONTEXT: A message providing context in addition to the user query. - DEBUG: A debug message. Strictly used internally. - DEBUG_EXTERNAL: A debug message to be used while debugging Action creation. - ERROR: A message that describes an error while processing the request. - HEADING: A heading message used to distinguish different sections of the holistic response. - WARNING: A warning message to be shown to the user. - SERVER_TOOL: A message used to for server-side tool auth/use, for request and response. - hasMoreFragments: - deprecated: true - type: boolean - description: Signals there are additional response fragments incoming. - ChatRequestBase: - required: - - messages - description: The minimal set of fields that form a chat request. - properties: - messages: - type: array - description: A list of chat messages, from most recent to least recent. At least one message must specify a USER author. - items: - $ref: "#/components/schemas/ChatMessage" - sessionInfo: - description: Optional object for tracking the session used by the client and for debugging purposes. - $ref: "#/components/schemas/SessionInfo" - saveChat: - type: boolean - description: Save the current interaction as a Chat for the user to access and potentially continue later. - chatId: - type: string - description: The id of the Chat that context should be retrieved from and messages added to. An empty id starts a new Chat, and the Chat is saved if saveChat is true. - agentConfig: - $ref: "#/components/schemas/AgentConfig" - description: Describes the agent that will execute the request. - ChatRestrictionFilters: - allOf: - - $ref: "#/components/schemas/RestrictionFilters" - - type: object - properties: - documentSpecs: - type: array - items: - $ref: "#/components/schemas/DocumentSpec" - datasourceInstances: - type: array - items: - type: string - ChatRequest: - allOf: - - $ref: "#/components/schemas/ChatRequestBase" - - type: object - properties: - inclusions: - $ref: "#/components/schemas/ChatRestrictionFilters" - description: A list of filters which only allows chat to access certain content. - exclusions: - $ref: "#/components/schemas/ChatRestrictionFilters" - description: A list of filters which disallows chat from accessing certain content. If content is in both inclusions and exclusions, it'll be excluded. - timeoutMillis: - type: integer - description: Timeout in milliseconds for the request. A `408` error will be returned if handling the request takes longer. - example: 30000 - applicationId: - type: string - description: The ID of the application this request originates from, used to determine the configuration of underlying chat processes. This should correspond to the ID set during admin setup. If not specified, the default chat experience will be used. - agentId: - type: string - description: The ID of the Agent that should process this chat request. Only Agents with trigger set to 'User chat message' are invokable through this API. If not specified, the default chat experience will be used. - stream: - type: boolean - description: If set, response lines will be streamed one-by-one as they become available. Each will be a ChatResponse, formatted as JSON, and separated by a new line. If false, the entire response will be returned at once. Note that if this is set and the model being used does not support streaming, the model's response will not be streamed, but other messages from the endpoint still will be. - ChatResponse: - description: A single response from the /chat backend. - properties: - messages: - type: array - items: - $ref: "#/components/schemas/ChatMessage" - chatId: - type: string - description: The id of the associated Chat the messages belong to, if one exists. - followUpPrompts: - type: array - items: - type: string - description: Follow-up prompts for the user to potentially use - backendTimeMillis: - type: integer - format: int64 - description: Time in milliseconds the backend took to respond to the request. - example: 1100 - chatSessionTrackingToken: - type: string - description: A token that is used to track the session. - DeleteChatsRequest: - required: - - ids - properties: - ids: - type: array - items: - type: string - description: A non-empty list of ids of the Chats to be deleted. - GetChatRequest: - required: - - id - properties: - id: - type: string - description: The id of the Chat to be retrieved. - Chat: - description: A historical representation of a series of chat messages a user had with Glean Assistant. - allOf: - - $ref: "#/components/schemas/ChatMetadata" - - $ref: "#/components/schemas/PermissionedObject" - properties: - messages: - type: array - items: - $ref: "#/components/schemas/ChatMessage" - description: The chat messages within a Chat. - roles: - type: array - items: - $ref: "#/components/schemas/UserRoleSpecification" - description: A list of roles for this Chat. - ChatResult: - properties: - chat: - $ref: "#/components/schemas/Chat" - trackingToken: - type: string - description: An opaque token that represents this particular Chat. To be used for `/feedback` reporting. - GetChatResponse: - properties: - chatResult: - $ref: "#/components/schemas/ChatResult" - ChatMetadataResult: - properties: - chat: - $ref: "#/components/schemas/ChatMetadata" - trackingToken: - type: string - description: An opaque token that represents this particular Chat. To be used for `/feedback` reporting. - ListChatsResponse: - properties: - chatResults: - type: array - items: - $ref: "#/components/schemas/ChatMetadataResult" - x-includeEmpty: true - GetChatApplicationRequest: - required: - - id - properties: - id: - type: string - description: The id of the Chat application to be retrieved. - ChatApplicationDetails: {} - GetChatApplicationResponse: - properties: - application: - $ref: "#/components/schemas/ChatApplicationDetails" - UploadChatFilesRequest: - required: - - files - properties: - files: - type: array - items: - type: string - format: binary - description: Raw files to be uploaded for chat in binary format. - UploadChatFilesResponse: - properties: - files: - type: array - items: - $ref: "#/components/schemas/ChatFile" - description: Files uploaded for chat. - GetChatFilesRequest: - required: - - fileIds - properties: - fileIds: - type: array - items: - type: string - description: IDs of files to fetch. - GetChatFilesResponse: - properties: - files: - description: A map of file IDs to ChatFile structs. - type: object - additionalProperties: - $ref: "#/components/schemas/ChatFile" - DeleteChatFilesRequest: - required: - - fileIds - properties: - fileIds: - type: array - items: - type: string - description: IDs of files to delete. - Agent: - title: Agent - type: object - required: - - agent_id - - name - - capabilities - properties: - agent_id: - type: string - title: Agent Id - description: The ID of the agent. - example: mho4lwzylcozgoc2 - name: - type: string - title: Agent Name - description: The name of the agent - example: HR Policy Agent - description: - type: string - title: Description - description: The description of the agent. - example: This agent answers questions about the current company HR policies. - metadata: - type: object - title: Metadata - description: The agent metadata. Currently not implemented. - capabilities: - type: object - title: Agent Capabilities - description: |- - Describes features that the agent supports. example: { - "ap.io.messages": true, - "ap.io.streaming": true - } - properties: - ap.io.messages: - type: boolean - title: Messages - description: Whether the agent supports messages as an input. If true, you'll pass `messages` as an input when running the agent. - ap.io.streaming: - type: boolean - title: Streaming - description: Whether the agent supports streaming output. If true, you you can stream agent ouput. All agents currently support streaming. - additionalProperties: true - ErrorResponse: - type: string - title: ErrorResponse - description: Error message returned from the server - AgentSchemas: - properties: - agent_id: - type: string - title: Agent Id - description: The ID of the agent. - example: mho4lwzylcozgoc2 - input_schema: - type: object - title: Input Schema - description: The schema for the agent input. In JSON Schema format. - output_schema: - type: object - title: Output Schema - description: The schema for the agent output. In JSON Schema format. - type: object - required: - - agent_id - - input_schema - - output_schema - title: AgentSchemas - description: Defines the structure and properties of an agent. - SearchAgentsRequest: - type: object - properties: - name: - type: string - description: Filters on the name of the agent. The keyword search is case-insensitive. If search string is ommited or empty, acts as no filter. - example: HR Policy Agent - SearchAgentsResponse: - type: object - title: Response Search Agents - properties: - agents: - type: array - items: - $ref: "#/components/schemas/Agent" - ContentType: - type: string - enum: - - text - Message: - type: object - properties: - role: - type: string - title: Role - description: The role of the message. - example: USER - content: - title: Content - description: The content of the message. - type: array - items: - type: object - properties: - text: - type: string - type: - $ref: "#/components/schemas/ContentType" - required: - - text - - type - title: MessageTextBlock - AgentRunCreate: - description: Payload for creating a run. - type: object - required: - - agent_id - properties: - agent_id: - type: string - title: Agent Id - description: The ID of the agent to run. - input: - type: object - title: Input - description: The input to the agent. - additionalProperties: true - messages: - type: array - items: - $ref: "#/components/schemas/Message" - title: Messages - description: The messages to pass an input to the agent. - metadata: - type: object - title: Metadata - description: The metadata to pass to the agent. - additionalProperties: true - AgentExecutionStatus: - description: The status of the run. One of 'error', 'success'. - type: string - enum: - - error - - success - title: AgentExecutionStatus - AgentRun: - allOf: - - $ref: "#/components/schemas/AgentRunCreate" - - type: object - properties: - status: - $ref: "#/components/schemas/AgentExecutionStatus" - AgentRunWaitResponse: - type: object - properties: - run: - $ref: "#/components/schemas/AgentRun" - title: Run - description: The run information. - messages: - type: array - items: - $ref: "#/components/schemas/Message" - title: Messages - description: The messages returned by the run. - CollectionItemDescriptor: - allOf: - - $ref: "#/components/schemas/CollectionItemMutableProperties" - properties: - url: - type: string - description: The URL of the item being added. - documentId: - type: string - description: The Glean Document ID of the item being added if it's an indexed document. - newNextItemId: - type: string - description: The (optional) ItemId of the next CollectionItem in sequence. If omitted, will be added to the end of the Collection - itemType: - type: string - enum: - - DOCUMENT - - TEXT - - URL - AddCollectionItemsRequest: - required: - - collectionId - properties: - collectionId: - type: number - description: The ID of the Collection to add items to. - addedCollectionItemDescriptors: - type: array - items: - $ref: "#/components/schemas/CollectionItemDescriptor" - description: The CollectionItemDescriptors of the items being added. - AddCollectionItemsError: - properties: - errorType: - type: string - enum: - - EXISTING_ITEM - AddCollectionItemsResponse: - properties: - collection: - $ref: "#/components/schemas/Collection" - description: The modified Collection. Only CollectionItemMutableProperties are set for each item. - error: - $ref: "#/components/schemas/AddCollectionItemsError" - CreateCollectionRequest: - allOf: - - $ref: "#/components/schemas/CollectionMutableProperties" - - type: object - properties: - newNextItemId: - type: string - description: The (optional) ItemId of the next CollectionItem in sequence. If omitted, will be added to the end of the Collection. Only used if parentId is specified. - CollectionError: - required: - - errorCode - properties: - errorCode: - type: string - enum: - - NAME_EXISTS - - NOT_FOUND - - COLLECTION_PINNED - - CONCURRENT_HIERARCHY_EDIT - - HEIGHT_VIOLATION - - WIDTH_VIOLATION - - NO_PERMISSIONS - CreateCollectionResponse: - allOf: - - type: object - anyOf: - - required: - - collection - - required: - - error - properties: - collection: - $ref: "#/components/schemas/Collection" - error: - $ref: "#/components/schemas/CollectionError" - DeleteCollectionRequest: - required: - - ids - properties: - ids: - type: array - items: - type: integer - description: The IDs of the Collections to delete. - allowedDatasource: - type: string - description: The datasource allowed in the Collection to be deleted. - DeleteCollectionItemRequest: - required: - - collectionId - - itemId - properties: - collectionId: - type: number - description: The ID of the Collection to remove an item in. - itemId: - type: string - description: The item ID of the CollectionItem to remove from this Collection. - documentId: - type: string - description: The (optional) Glean Document ID of the CollectionItem to remove from this Collection if this is an indexed document. - DeleteCollectionItemResponse: - properties: - collection: - $ref: "#/components/schemas/Collection" - description: The modified Collection. Only CollectionItemMutableProperties are set for each item. - EditCollectionRequest: - allOf: - - $ref: "#/components/schemas/CollectionMutableProperties" - - type: object - required: - - id - properties: - id: - type: integer - description: The ID of the Collection to modify. - EditCollectionResponse: - allOf: - - $ref: "#/components/schemas/Collection" - - $ref: "#/components/schemas/CollectionError" - - type: object - properties: - collection: - $ref: "#/components/schemas/Collection" - error: - $ref: "#/components/schemas/CollectionError" - EditCollectionItemRequest: - required: - - collectionId - - itemId - allOf: - - $ref: "#/components/schemas/CollectionItemMutableProperties" - - type: object - properties: - collectionId: - type: integer - description: The ID of the Collection to edit CollectionItems in. - itemId: - type: string - description: The ID of the CollectionItem to edit. - EditCollectionItemResponse: - properties: - collection: - $ref: "#/components/schemas/Collection" - description: The modified Collection. Only CollectionItemMutableProperties are set for each item. - GetCollectionRequest: - required: - - id - properties: - id: - type: integer - description: The ID of the Collection to be retrieved. - withItems: - type: boolean - description: Whether or not to include the Collection Items in this Collection. Only request if absolutely required, as this is expensive. - withHierarchy: - type: boolean - description: Whether or not to include the top level Collection in this Collection's hierarchy. - allowedDatasource: - type: string - description: The datasource allowed in the Collection returned. - GetCollectionResponse: - properties: - collection: - $ref: "#/components/schemas/Collection" - rootCollection: - $ref: "#/components/schemas/Collection" - trackingToken: - type: string - description: An opaque token that represents this particular Collection. To be used for `/feedback` reporting. - error: - $ref: "#/components/schemas/CollectionError" - ListCollectionsRequest: - properties: - includeAudience: - type: boolean - description: Whether to include the audience filters with the listed Collections. - includeRoles: - type: boolean - description: Whether to include the editor roles with the listed Collections. - allowedDatasource: - type: string - description: |- - The datasource type this Collection can hold. - ANSWERS - for Collections representing answer boards - ListCollectionsResponse: - required: - - collections - properties: - collections: - type: array - items: - $ref: "#/components/schemas/Collection" - description: List of all Collections, no Collection items are fetched. - GetDocPermissionsRequest: - type: object - properties: - documentId: - type: string - description: The Glean Document ID to retrieve permissions for. - GetDocPermissionsResponse: - type: object - properties: - allowedUserEmails: - type: array - items: - type: string - description: A list of emails of users who have access to the document. If the document is visible to all Glean users, a list with only a single value of 'VISIBLE_TO_ALL'. - GetDocumentsRequest: - required: - - documentSpecs - properties: - documentSpecs: - type: array - items: - $ref: "#/components/schemas/DocumentSpec" - description: The specification for the documents to be retrieved. - includeFields: - description: List of Document fields to return (that aren't returned by default) - type: array - items: - type: string - enum: - - LAST_VIEWED_AT - - VISITORS_COUNT - - RECENT_SHARES - - DOCUMENT_CONTENT - - CUSTOM_METADATA - DocumentOrError: - x-omit-error-on-success: true - oneOf: - - $ref: "#/components/schemas/Document" - - type: object - required: - - error - properties: - error: - type: string - description: The text for error, reason. - x-is-error-field: true - GetDocumentsResponse: - properties: - documents: - type: object - additionalProperties: - $ref: "#/components/schemas/DocumentOrError" - description: The document details or the error if document is not found. - GetDocumentsByFacetsRequest: - required: - - filterSets - properties: - datasourcesFilter: - type: array - items: - type: string - description: Filter results to one or more datasources (e.g. gmail, slack). All results are returned if missing. - filterSets: - type: array - items: - $ref: "#/components/schemas/FacetFilterSet" - description: A list of facet filter sets that will be OR'ed together. An AND is assumed between different filters in each set. - cursor: - type: string - description: Pagination cursor. A previously received opaque token representing the position in the overall results at which to start. - GetDocumentsByFacetsResponse: - properties: - documents: - type: array - items: - $ref: "#/components/schemas/Document" - description: The document details, ordered by score. - hasMoreResults: - type: boolean - description: Whether more results are available. Use cursor to retrieve them. - cursor: - type: string - description: Cursor that indicates the start of the next page of results. To be passed in "more" requests for this query. - InsightsOverviewRequest: - properties: - departments: - type: array - items: - type: string - description: Departments for which Insights are requested. - dayRange: - $ref: "#/components/schemas/Period" - description: Time period for which Insights are requested. - InsightsAssistantRequest: - properties: - departments: - type: array - items: - type: string - description: Departments for which Insights are requested. - dayRange: - $ref: "#/components/schemas/Period" - description: Time period for which Insights are requested. - AgentsInsightsV2Request: - properties: - agentIds: - type: array - items: - type: string - description: IDs of the Agents for which Insights should be returned. An empty array signifies all. - departments: - type: array - items: - type: string - description: Departments for which Insights are requested. - dayRange: - $ref: "#/components/schemas/Period" - description: Time period for which Insights are requested. - InsightsAiAppRequestOptions: - type: object - properties: - aiAppIds: - type: array - items: - type: string - description: IDs of the AI Apps for which Insights should be returned. An empty array signifies all. - InsightsAgentsRequestOptions: - type: object - properties: - agentIds: - type: array - items: - type: string - description: IDs of the Agents for which Insights should be returned. An empty array signifies all. - InsightsRequest: - properties: - overviewRequest: - $ref: "#/components/schemas/InsightsOverviewRequest" - x-visibility: Public - description: If specified, will return data for the Overview section of the Insights Dashboard. - assistantRequest: - $ref: "#/components/schemas/InsightsAssistantRequest" - x-visibility: Public - description: If specified, will return data for the Assistant section of the Insights Dashboard. - agentsRequest: - $ref: "#/components/schemas/AgentsInsightsV2Request" - x-visibility: Public - description: If specified, will return data for the Agents section of the Insights Dashboard. - disablePerUserInsights: - type: boolean - description: If true, suppresses the generation of per-user Insights in the response. Default is false. - categories: - deprecated: true - type: array - items: - type: string - enum: - - AGENTS - - AGENT_USERS - - TOP_AGENTS - - AGENTS_USAGE_BY_DEPARTMENT - - AI - - AI_APPS - - ANNOUNCEMENTS - - ANSWERS - - COLLECTIONS - - CONTENT - - GLEAN_ASSIST - - QUERIES - - SHORTCUTS - - USERS - description: Categories of data requested. Request can include single or multiple types. - departments: - deprecated: true - type: array - items: - type: string - description: Departments that the data is requested for. If this is empty, corresponds to whole company. - dayRange: - deprecated: true - $ref: "#/components/schemas/Period" - aiAppRequestOptions: - deprecated: true - $ref: "#/components/schemas/InsightsAiAppRequestOptions" - agentsRequestOptions: - deprecated: true - $ref: "#/components/schemas/InsightsAgentsRequestOptions" - assistantActivityTypes: - deprecated: true - type: array - items: - type: string - enum: - - GLEAN_CHAT - - AI_SUMMARY - - AI_ANSWER - - GLEANBOT_RESPONSE - description: Types of activity that should count in the definition of an Assistant Active User. Affects only insights for AI category. - LabeledCountInfo: - required: - - label - properties: - label: - type: string - description: Label for the included count information. - countInfo: - type: array - items: - $ref: "#/components/schemas/CountInfo" - description: List of data points for counts for a given date period. - UserActivityInsight: - required: - - user - - activity - properties: - user: - $ref: "#/components/schemas/Person" - activity: - type: string - enum: - - ALL - - SEARCH - description: Activity e.g. search, home page visit or all. - lastActivityTimestamp: - type: integer - description: Unix timestamp of the last activity (in seconds since epoch UTC). - activityCount: - $ref: "#/components/schemas/CountInfo" - activeDayCount: - $ref: "#/components/schemas/CountInfo" - UserInsightsResponse: - properties: - lastLogTimestamp: - type: integer - description: Unix timestamp of the last activity processed to make the response (in seconds since epoch UTC). - activityInsights: - type: array - items: - $ref: "#/components/schemas/UserActivityInsight" - description: Insights for all active users with respect to set of actions. - inactiveInsights: - type: array - items: - $ref: "#/components/schemas/UserActivityInsight" - description: Insights for all in inactive users with respect to set of actions and time period. Activity count will be set to 0. - totalTeammates: - type: integer - description: Total number of teammates that have logged in to the product, that are still valid teammates. - totalActiveUsers: - type: integer - description: Total number of active users in the requested period. - departments: - type: array - items: - type: string - description: list of departments applicable for users tab. - DocumentInsight: - required: - - document - properties: - document: - $ref: "#/components/schemas/Document" - viewCount: - $ref: "#/components/schemas/CountInfo" - visitorCount: - $ref: "#/components/schemas/CountInfo" - ContentInsightsResponse: - properties: - lastLogTimestamp: - type: integer - description: Unix timestamp of the last activity processed to make the response (in seconds since epoch UTC). - documentInsights: - type: array - items: - $ref: "#/components/schemas/DocumentInsight" - description: Insights for documents. - departments: - type: array - items: - type: string - description: list of departments applicable for contents tab. - minDepartmentSizeThreshold: - type: integer - description: Min threshold in size of departments while populating results, otherwise 0. - minVisitorThreshold: - type: integer - description: Minimum number of visitors to a document required to be included in insights. - QueryInsight: - required: - - query - properties: - query: - type: string - description: The query string the information is about. - searchCount: - $ref: "#/components/schemas/CountInfo" - searchorCount: - $ref: "#/components/schemas/CountInfo" - searchWithClickCount: - $ref: "#/components/schemas/CountInfo" - clickCount: - $ref: "#/components/schemas/CountInfo" - similarQueries: - type: array - items: - $ref: "#/components/schemas/QueryInsight" - description: list of similar queries to current one. - QueryInsightsResponse: - properties: - lastLogTimestamp: - type: integer - description: Unix timestamp of the last activity processed to make the response (in seconds since epoch UTC). - queryInsights: - type: array - items: - $ref: "#/components/schemas/QueryInsight" - description: Insights for queries. - lowPerformingQueryInsights: - type: array - items: - $ref: "#/components/schemas/QueryInsight" - description: Insights for low performing queries without good results. - departments: - type: array - items: - type: string - description: list of departments applicable for queries tab. - minVisitorThreshold: - type: integer - description: Min threshold in number of visitors while populating results, otherwise 0. - ShortcutInsight: - required: - - shortcut - properties: - shortcut: - $ref: "#/components/schemas/Shortcut" - visitCount: - $ref: "#/components/schemas/CountInfo" - visitorCount: - $ref: "#/components/schemas/CountInfo" - ShortcutInsightsResponse: - properties: - lastLogTimestamp: - type: integer - description: Unix timestamp of the last activity processed to make the response (in seconds since epoch UTC). - shortcutInsights: - type: array - items: - $ref: "#/components/schemas/ShortcutInsight" - description: Insights for shortcuts. - departments: - type: array - items: - type: string - description: list of departments applicable for shortcuts tab. - minVisitorThreshold: - type: integer - description: Min threshold in number of visitors while populating results, otherwise 0. - AiInsightsResponse: - properties: - lastLogTimestamp: - type: integer - description: Unix timestamp of the last activity processed to make the response (in seconds since epoch UTC). - assistantInsights: - type: array - items: - $ref: "#/components/schemas/UserActivityInsight" - totalActiveAssistantUsers: - type: integer - description: Total number of Active Assistant users (chat, summary, AIA) in requested period. - totalChatMessages: - type: integer - description: Total number of Chat messages sent in requested period. - totalAiSummarizations: - type: integer - description: Total number of AI Document Summarizations invoked in the requested period. - totalAiAnswers: - type: integer - description: Total number of AI Answers generated in the requested period. - totalUpvotes: - type: integer - description: Total number of Chat messages which received upvotes by the user. - totalDownvotes: - type: integer - description: Total number of Chat messages which received downvotes by the user. - totalGleanbotResponses: - type: integer - description: Total number of Gleanbot responses, both proactive and reactive. - totalGleanbotResponsesShared: - type: integer - description: Total number of Gleanbot responses shared publicly (upvoted). - totalGleanbotResponsesNotHelpful: - type: integer - description: Total number of Glean responses rejected as not helpful (downvoted). - departments: - type: array - items: - type: string - description: list of departments applicable for users tab. - AiAppActionCounts: - type: object - additionalProperties: - type: integer - description: Map from action to frequency. - properties: - totalSlackbotResponses: - type: integer - description: Total number of Slackbot responses, both proactive and reactive. - totalSlackbotResponsesShared: - type: integer - description: Total number of Slackbot responses shared publicly (upvoted). - totalSlackbotResponsesNotHelpful: - type: integer - description: Total number of Slackbot responses rejected as not helpful (downvoted). - totalChatMessages: - type: integer - description: Total number of Chat messages sent in requested period. - totalUpvotes: - type: integer - description: Total number of Chat messages which received upvotes by the user. - totalDownvotes: - type: integer - description: Total number of Chat messages which received downvotes by the user. - AiAppsInsightsResponse: - properties: - lastLogTimestamp: - type: integer - description: Unix timestamp of the last activity processed to make the response (in seconds since epoch UTC). - aiAppInsights: - type: array - items: - $ref: "#/components/schemas/UserActivityInsight" - totalActiveUsers: - type: integer - description: Total number of active users on the Ai App in the requested period. - actionCounts: - $ref: "#/components/schemas/AiAppActionCounts" - departments: - type: array - items: - type: string - description: list of departments applicable for users tab. - GleanAssistInsightsResponse: - properties: - lastLogTimestamp: - type: integer - description: Unix timestamp of the last activity processed to make the response (in seconds since epoch UTC). - activityInsights: - type: array - items: - $ref: "#/components/schemas/UserActivityInsight" - description: Insights for all active users with respect to set of actions. - totalActiveUsers: - type: integer - description: Total number of active users in the requested period. - datasourceInstances: - type: array - items: - type: string - description: List of datasource instances for which glean assist is enabled. - departments: - type: array - items: - type: string - description: List of departments applicable for users tab. - CurrentActiveUsers: - properties: - monthlyActiveUsers: - type: integer - description: Number of current Monthly Active Users, in the specified departments. - weeklyActiveUsers: - type: integer - description: Number of current Weekly Active Users, in the specified departments. - InsightsSearchSummary: - allOf: - - $ref: "#/components/schemas/CurrentActiveUsers" - - type: object - properties: - numSearches: - type: integer - description: Total number of searches by users over the specified time period. - numSearchUsers: - type: integer - description: Total number of distinct users who searched over the specified time period. - InsightsChatSummary: - allOf: - - $ref: "#/components/schemas/CurrentActiveUsers" - - type: object - properties: - numChats: - type: integer - description: Total number of chats by users over the specified time period. - numChatUsers: - type: integer - description: Total number of distinct users who used Chat over the specified time period. - InsightsDepartmentsSummary: - allOf: - - $ref: "#/components/schemas/CurrentActiveUsers" - - type: object - properties: - departments: - type: array - items: - type: string - description: Department name(s). - employeeCount: - type: integer - description: Number of current employees in the specified departments, according to the Org Chart. - totalSignups: - type: integer - description: Number of current signed up employees in the specified departments, according to the Org Chart. - searchSummary: - $ref: "#/components/schemas/InsightsSearchSummary" - chatSummary: - $ref: "#/components/schemas/InsightsChatSummary" - extensionSummary: - $ref: "#/components/schemas/CurrentActiveUsers" - ugcSummary: - $ref: "#/components/schemas/CurrentActiveUsers" - PerUserInsight: - properties: - person: - $ref: "#/components/schemas/Person" - numSearches: - type: integer - description: Total number of searches by this user over the specified time period. - numChats: - type: integer - description: Total number of chats by this user over the specified time period. - numActiveSessions: - type: integer - description: Total number of active sessions by this user in a Glean client over the specified time period. - numGleanbotUsefulResponses: - type: integer - description: Total number of Gleanbot responses marked useful by this user over the specified time period. - numDaysActive: - type: integer - description: Total number of days this user was an Active User over the specified time period. - numSummarizations: - type: integer - description: Total number of summarized items by this user over the specified time period. - numAiAnswers: - type: integer - description: Total number of AI Answers interacted with by this user over the specified time period. - numAgentRuns: - type: integer - description: Total number of agent runs for this user over the specified time period. - InsightsOverviewResponse: - allOf: - - $ref: "#/components/schemas/InsightsDepartmentsSummary" - - type: object - properties: - lastUpdatedTs: - type: integer - description: Unix timestamp of the last update for the insights data in the response. - searchSessionSatisfaction: - type: number - format: float - description: Search session satisfaction rate, over the specified time period in the specified departments. - monthlyActiveUserTimeseries: - $ref: "#/components/schemas/LabeledCountInfo" - weeklyActiveUserTimeseries: - $ref: "#/components/schemas/LabeledCountInfo" - dailyActiveUserTimeseries: - $ref: "#/components/schemas/LabeledCountInfo" - searchMonthlyActiveUserTimeseries: - $ref: "#/components/schemas/LabeledCountInfo" - searchWeeklyActiveUserTimeseries: - $ref: "#/components/schemas/LabeledCountInfo" - searchDailyActiveUserTimeseries: - $ref: "#/components/schemas/LabeledCountInfo" - assistantMonthlyActiveUserTimeseries: - $ref: "#/components/schemas/LabeledCountInfo" - assistantWeeklyActiveUserTimeseries: - $ref: "#/components/schemas/LabeledCountInfo" - assistantDailyActiveUserTimeseries: - $ref: "#/components/schemas/LabeledCountInfo" - agentsMonthlyActiveUserTimeseries: - $ref: "#/components/schemas/LabeledCountInfo" - agentsWeeklyActiveUserTimeseries: - $ref: "#/components/schemas/LabeledCountInfo" - agentsDailyActiveUserTimeseries: - $ref: "#/components/schemas/LabeledCountInfo" - searchesTimeseries: - $ref: "#/components/schemas/LabeledCountInfo" - assistantInteractionsTimeseries: - $ref: "#/components/schemas/LabeledCountInfo" - agentRunsTimeseries: - $ref: "#/components/schemas/LabeledCountInfo" - searchDatasourceCounts: - type: object - additionalProperties: - type: integer - description: Counts of search result clicks, by datasource, over the specified time period in the specified departments. - chatDatasourceCounts: - type: object - additionalProperties: - type: integer - description: Counts of cited documents in chat, by datasource, over the specified time period in the specified departments. - perUserInsights: - type: array - items: - $ref: "#/components/schemas/PerUserInsight" - description: Per-user insights, over the specified time period in the specified departments. All current users in the organization who have signed into Glean at least once are included. - PerUserAssistantInsight: - properties: - person: - $ref: "#/components/schemas/Person" - numChatMessages: - type: integer - description: Total number of chat messages sent by this user over the specified time period. - numSummarizations: - type: integer - description: Total number of summarized items by this user over the specified time period. - numAiAnswers: - type: integer - description: Total number of AI Answers interacted with by this user over the specified time period. - numGleanbotInteractions: - type: integer - description: Total number of Gleanbot responses marked useful by this user over the specified time period. - numDaysActive: - type: integer - description: Total number of days this user was active on the Assistant over the specified time period. - AssistantInsightsResponse: - allOf: - - $ref: "#/components/schemas/CurrentActiveUsers" - - type: object - properties: - lastUpdatedTs: - type: integer - description: Unix timestamp of the last update for the insights data in the response. - monthlyActiveUserTimeseries: - $ref: "#/components/schemas/LabeledCountInfo" - weeklyActiveUserTimeseries: - $ref: "#/components/schemas/LabeledCountInfo" - dailyActiveUserTimeseries: - $ref: "#/components/schemas/LabeledCountInfo" - totalSignups: - type: integer - description: Number of current signed up employees in the specified departments, according to the Org Chart. - chatMessagesTimeseries: - $ref: "#/components/schemas/LabeledCountInfo" - summarizationsTimeseries: - $ref: "#/components/schemas/LabeledCountInfo" - aiAnswersTimeseries: - $ref: "#/components/schemas/LabeledCountInfo" - gleanbotInteractionsTimeseries: - $ref: "#/components/schemas/LabeledCountInfo" - perUserInsights: - type: array - items: - $ref: "#/components/schemas/PerUserAssistantInsight" - upvotesTimeseries: - $ref: "#/components/schemas/LabeledCountInfo" - downvotesTimeseries: - $ref: "#/components/schemas/LabeledCountInfo" - PerAgentInsight: - properties: - agentId: - type: string - description: Agent ID - agentName: - type: string - description: Agent name - icon: - $ref: "#/components/schemas/IconConfig" - description: Agent icon configuration - isDeleted: - type: boolean - description: Indicates whether the agent has been deleted - userCount: - type: integer - description: Total number of users for this agent over the specified time period. - runCount: - type: integer - description: Total number of runs for this agent over the specified time period. - upvoteCount: - type: integer - description: Total number of upvotes for this agent over the specified time period. - downvoteCount: - type: integer - description: Total number of downvotes for this agent over the specified time period. - AgentsUsageByDepartmentInsight: - properties: - department: - type: string - description: Name of the department - agentAdoptionRate: - type: number - format: float - description: Percentage of employees in the department who have used agents at least once over the specified time period. - userCount: - type: integer - description: Total number of users in this department who have used any agent over the specified time period. - runCount: - type: integer - description: Total number of runs in this department over the specified time period. - agentId: - type: string - description: ID of the agent to be shown in the agent column in this department over the specified time period. - agentName: - type: string - description: Name of the agent to be shown in the agent column in this department over the specified time period. - icon: - $ref: "#/components/schemas/IconConfig" - description: Agent icon configuration - isDeleted: - type: boolean - description: Indicates whether the agent has been deleted - AgentUsersInsight: - properties: - person: - $ref: "#/components/schemas/Person" - departmentName: - type: string - description: Department name - agentsUsedCount: - type: integer - description: Total number of agents used by this user over the specified time period. - averageRunsPerDayCount: - type: number - format: float - description: Average number of runs per day for this user over the specified time period. - agentsCreatedCount: - type: integer - description: Total number of agents created by this user over the specified time period. - runCount: - type: integer - description: Total number of agent runs for this user over the specified time period. - AgentsInsightsV2Response: - allOf: - - $ref: "#/components/schemas/CurrentActiveUsers" - - type: object - properties: - monthlyActiveUserTimeseries: - $ref: "#/components/schemas/LabeledCountInfo" - weeklyActiveUserTimeseries: - $ref: "#/components/schemas/LabeledCountInfo" - dailyActiveUserTimeseries: - $ref: "#/components/schemas/LabeledCountInfo" - sharedAgentsCount: - type: integer - description: Total number of shared agents. - topAgentsInsights: - type: array - items: - $ref: "#/components/schemas/PerAgentInsight" - agentsUsageByDepartmentInsights: - type: array - items: - $ref: "#/components/schemas/AgentsUsageByDepartmentInsight" - agentUsersInsights: - type: array - items: - $ref: "#/components/schemas/AgentUsersInsight" - dailyAgentRunsTimeseries: - $ref: "#/components/schemas/LabeledCountInfo" - upvotesTimeseries: - $ref: "#/components/schemas/LabeledCountInfo" - downvotesTimeseries: - $ref: "#/components/schemas/LabeledCountInfo" - InsightsResponse: - properties: - timeseries: - deprecated: true - type: array - items: - $ref: "#/components/schemas/LabeledCountInfo" - description: List of timeseries to make charts (if applicable). - users: - deprecated: true - $ref: "#/components/schemas/UserInsightsResponse" - content: - deprecated: true - $ref: "#/components/schemas/ContentInsightsResponse" - queries: - deprecated: true - $ref: "#/components/schemas/QueryInsightsResponse" - collections: - deprecated: true - $ref: "#/components/schemas/ContentInsightsResponse" - collectionsV2: - deprecated: true - $ref: "#/components/schemas/ContentInsightsResponse" - shortcuts: - deprecated: true - $ref: "#/components/schemas/ShortcutInsightsResponse" - announcements: - deprecated: true - $ref: "#/components/schemas/ContentInsightsResponse" - answers: - deprecated: true - $ref: "#/components/schemas/ContentInsightsResponse" - ai: - deprecated: true - $ref: "#/components/schemas/AiInsightsResponse" - aiApps: - deprecated: true - $ref: "#/components/schemas/AiAppsInsightsResponse" - gleanAssist: - deprecated: true - $ref: "#/components/schemas/GleanAssistInsightsResponse" - departments: - deprecated: true - type: array - items: - type: string - description: list of all departments. - overviewResponse: - $ref: "#/components/schemas/InsightsOverviewResponse" - assistantResponse: - $ref: "#/components/schemas/AssistantInsightsResponse" - agentsResponse: - $ref: "#/components/schemas/AgentsInsightsV2Response" - MessagesRequest: - required: - - id - - idType - - datasource - properties: - idType: - type: string - enum: - - CHANNEL_NAME - - THREAD_ID - - CONVERSATION_ID - description: Type of the id in the incoming request. - id: - type: string - description: ID corresponding to the requested idType. Note that channel and threads are represented by the underlying datasource's ID and conversations are represented by their document's ID. - workspaceId: - type: string - description: Id for the for the workspace in case of multiple workspaces. - direction: - type: string - enum: - - OLDER - - NEWER - description: The direction of the results asked with respect to the reference timestamp. Missing field defaults to OLDER. Only applicable when using a message_id. - timestampMillis: - type: integer - format: int64 - description: Timestamp in millis of the reference message. Only applicable when using a message_id. - includeRootMessage: - type: boolean - description: Whether to include root message in response. - datasource: - type: string - enum: - - SLACK - - SLACKENTGRID - - MICROSOFTTEAMS - - GCHAT - - FACEBOOKWORKPLACE - description: The type of the data source. - datasourceInstanceDisplayName: - type: string - description: The datasource instance display name from which the document was extracted. This is used for appinstance facet filter for datasources that support multiple instances. - InvalidOperatorValueError: - properties: - key: - description: The operator key that has an invalid value. - type: string - value: - description: The invalid operator value. - type: string - ErrorMessage: - properties: - source: - description: The datasource this message relates to. - type: string - errorMessage: - type: string - ErrorInfo: - properties: - badGmailToken: - type: boolean - description: Indicates the gmail results could not be fetched due to bad token. - badOutlookToken: - type: boolean - description: Indicates the outlook results could not be fetched due to bad token. - invalidOperators: - type: array - description: Indicates results could not be fetched due to invalid operators in the query. - items: - $ref: "#/components/schemas/InvalidOperatorValueError" - errorMessages: - type: array - items: - $ref: "#/components/schemas/ErrorMessage" - x-speakeasy-name-override: GleanDataError - ResultsResponse: - properties: - trackingToken: - type: string - description: A token that should be passed for additional requests related to this request (such as more results requests). - sessionInfo: - $ref: "#/components/schemas/SessionInfo" - results: - type: array - items: - $ref: "#/components/schemas/SearchResult" - structuredResults: - type: array - items: - $ref: "#/components/schemas/StructuredResult" - generatedQnaResult: - $ref: "#/components/schemas/GeneratedQna" - errorInfo: - $ref: "#/components/schemas/ErrorInfo" - requestID: - type: string - description: A platform-generated request ID to correlate backend logs. - backendTimeMillis: - type: integer - format: int64 - description: Time in milliseconds the backend took to respond to the request. - example: 1100 - BackendExperimentsContext: - properties: - experimentIds: - type: array - items: - type: integer - format: int64 - description: List of experiment ids for the corresponding request. - SearchWarning: - required: - - warningType - properties: - warningType: - type: string - enum: - - LONG_QUERY - - QUOTED_PUNCTUATION - - PUNCTUATION_ONLY - - COPYPASTED_QUOTES - - INVALID_OPERATOR - - MAYBE_INVALID_FACET_QUERY - - TOO_MANY_DATASOURCE_GROUPS - description: The type of the warning. - lastUsedTerm: - type: string - description: The last term we considered in the user's long query. - quotesIgnoredQuery: - type: string - description: The query after ignoring/removing quotes. - ignoredTerms: - type: array - items: - type: string - description: A list of query terms that were ignored when generating search results, if any. For example, terms containing invalid filters such as "updated:invalid_date" will be ignored. - SearchResponseMetadata: - properties: - rewrittenQuery: - type: string - description: A cleaned up or updated version of the query to be displayed in the query box. Useful for mapping visual facets to search operators. - searchedQuery: - type: string - description: The actual query used to perform search and return results. - searchedQueryWithoutNegation: - type: string - description: The query used to perform search and return results, with negated terms and facets removed. - x-includeEmpty: true - searchedQueryRanges: - type: array - items: - $ref: "#/components/schemas/TextRange" - description: The bolded ranges within the searched query. - originalQuery: - type: string - description: The query text sent by the client in the request. - querySuggestion: - $ref: "#/components/schemas/QuerySuggestion" - description: An alternative query to the one provided that may give better results, e.g. a spelling suggestion. - additionalQuerySuggestions: - $ref: "#/components/schemas/QuerySuggestionList" - description: Other alternative queries that may provide better or more specific results than the original query. - negatedTerms: - type: array - items: - type: string - description: A list of terms that were negated when processing the query. - modifiedQueryWasUsed: - type: boolean - description: A different query was performed than the one requested. - originalQueryHadNoResults: - type: boolean - description: No results were found for the original query. The usage of this bit in conjunction with modifiedQueryWasUsed will dictate whether the full page replacement is 0-result or few-result based. - searchWarning: - $ref: "#/components/schemas/SearchWarning" - triggeredExpertDetection: - type: boolean - description: Whether the query triggered expert detection results in the People tab. - isNoQuotesSuggestion: - type: boolean - description: Whether the query was modified to remove quotes - FacetValue: - properties: - stringValue: - type: string - example: engineering - description: The value that should be set in the FacetFilter when applying this filter to a search request. - integerValue: - type: integer - example: 5 - displayLabel: - type: string - example: engineering - description: An optional user-friendly label to display in place of the facet value. - iconConfig: - $ref: "#/components/schemas/IconConfig" - FacetBucket: - properties: - count: - type: integer - description: Estimated number of results in this facet. - example: 1 - datasource: - type: string - example: jira - description: The datasource the value belongs to. This will be used by the all tab to show types across all datasources. - percentage: - type: integer - description: Estimated percentage of results in this facet. - example: 5 - value: - $ref: "#/components/schemas/FacetValue" - FacetResult: - properties: - sourceName: - type: string - description: The source of this facet (e.g. container_name, type, last_updated_at). - example: container_name - operatorName: - type: string - description: How to display this facet. Currently supportes 'SelectSingle' and 'SelectMultiple'. - example: SelectMultiple - buckets: - type: array - description: A list of unique buckets that exist within this result set. - items: - $ref: "#/components/schemas/FacetBucket" - hasMoreBuckets: - type: boolean - description: Returns true if more buckets exist than those returned. Additional buckets can be retrieve by requesting again with a higher facetBucketSize. - example: false - groupName: - type: string - description: For most facets this will be the empty string, meaning the facet is high-level and applies to all documents for the datasource. When non-empty, this is used to group facets together (i.e. group facets for each doctype for a certain datasource) - example: Service Cloud - ResultsDescription: - properties: - text: - type: string - description: Textual description of the results. Can be shown at the top of SERP, e.g. 'People who write about this topic' for experts in people tab. - iconConfig: - $ref: "#/components/schemas/IconConfig" - description: The config for the icon that's displayed with this description - SearchResponse: - allOf: - - $ref: "#/components/schemas/ResultsResponse" - - $ref: "#/components/schemas/BackendExperimentsContext" - - type: object - properties: - metadata: - $ref: "#/components/schemas/SearchResponseMetadata" - facetResults: - type: array - items: - $ref: "#/components/schemas/FacetResult" - resultTabs: - type: array - items: - $ref: "#/components/schemas/ResultTab" - description: All result tabs available for the current query. Populated if QUERY_METADATA is specified in the request. - resultTabIds: - type: array - items: - type: string - description: The unique IDs of the result tabs to which this response belongs. - resultsDescription: - $ref: "#/components/schemas/ResultsDescription" - rewrittenFacetFilters: - type: array - items: - $ref: "#/components/schemas/FacetFilter" - description: The actual applied facet filters based on the operators and facetFilters in the query. Useful for mapping typed operators to visual facets. - cursor: - type: string - description: Cursor that indicates the start of the next page of results. To be passed in "more" requests for this query. - hasMoreResults: - type: boolean - description: Whether more results are available. Use cursor to retrieve them. - example: - trackingToken: trackingToken - suggestedSpellCorrectedQuery: suggestedSpellCorrectedQuery - hasMoreResults: true - errorInfo: - errorMessages: - - source: gmail - errorMessage: invalid token - - source: slack - errorMessage: expired token - requestID: 5e345ae500ff0befa2b9d1a3ba0001737e7363696f312d323535323137000171756572792d656e64706f696e743a323032303031333074313830343032000100 - results: - - snippets: - - snippet: snippet - mimeType: mimeType - metadata: - container: container - createTime: "2000-01-23T04:56:07.000Z" - datasource: datasource - author: - name: name - documentId: documentId - updateTime: "2000-01-23T04:56:07.000Z" - mimeType: mimeType - objectType: objectType - title: title - url: https://www.example.com/ - - snippets: - - snippet: snippet - mimeType: mimeType - metadata: - container: container - createTime: "2000-01-23T04:56:07.000Z" - datasource: datasource - author: - name: name - documentId: documentId - updateTime: "2000-01-23T04:56:07.000Z" - mimeType: mimeType - objectType: objectType - title: title - url: https://www.example.com/ - facetResults: - - buckets: - - percentage: 5 - count: 1 - value: - stringValue: stringValue - integerValue: 5 - - percentage: 5 - count: 1 - value: - stringValue: stringValue - integerValue: 5 - sourceName: sourceName - operatorName: operatorName - objectType: objectType - - buckets: - - percentage: 5 - count: 1 - value: - stringValue: stringValue - integerValue: 5 - - percentage: 5 - count: 1 - value: - stringValue: stringValue - integerValue: 5 - sourceName: sourceName - operatorName: operatorName - objectType: objectType - rewrittenQuery: rewrittenQuery - rewrittenFacetFilters: - - fieldName: fieldName - values: - - fieldValues - - fieldValues - - fieldName: fieldName - values: - - fieldValues - - fieldValues - MessagesResponse: - required: - - hasMore - properties: - hasMore: - type: boolean - description: Whether there are more results for client to continue requesting. - searchResponse: - $ref: "#/components/schemas/SearchResponse" - rootMessage: - $ref: "#/components/schemas/SearchResult" - EditPinRequest: - allOf: - - $ref: "#/components/schemas/PinDocumentMutableProperties" - - type: object - properties: - id: - type: string - description: The opaque id of the pin to be edited. - GetPinRequest: - properties: - id: - type: string - description: The opaque id of the pin to be fetched. - GetPinResponse: - properties: - pin: - $ref: "#/components/schemas/PinDocument" - ListPinsResponse: - required: - - pins - properties: - pins: - type: array - items: - $ref: "#/components/schemas/PinDocument" - description: List of pinned documents. - PinRequest: - allOf: - - $ref: "#/components/schemas/PinDocumentMutableProperties" - - type: object - properties: - documentId: - type: string - description: The document to be pinned. - Unpin: - properties: - id: - type: string - description: The opaque id of the pin to be unpinned. - ResultsRequest: - properties: - timestamp: - type: string - description: The ISO 8601 timestamp associated with the client request. - format: date-time - trackingToken: - type: string - description: A previously received trackingToken for a search associated with the same query. Useful for more requests and requests for other tabs. - sessionInfo: - $ref: "#/components/schemas/SessionInfo" - sourceDocument: - $ref: "#/components/schemas/Document" - description: The document from which the ResultsRequest is issued, if any. - pageSize: - type: integer - example: 100 - description: Hint to the server about how many results to send back. Server may return less or more. Structured results and clustered results don't count towards pageSize. - maxSnippetSize: - type: integer - description: Hint to the server about how many characters long a snippet may be. Server may return less or more. - example: 400 - SearchRequest: - required: - - query - allOf: - - $ref: "#/components/schemas/ResultsRequest" - - type: object - properties: - query: - type: string - description: The search terms. - example: vacation policy - cursor: - type: string - description: Pagination cursor. A previously received opaque token representing the position in the overall results at which to start. - resultTabIds: - type: array - items: - type: string - description: The unique IDs of the result tabs for which to fetch results. This will have precedence over datasource filters if both are specified and in conflict. - inputDetails: - $ref: "#/components/schemas/SearchRequestInputDetails" - requestOptions: - $ref: "#/components/schemas/SearchRequestOptions" - timeoutMillis: - type: integer - description: Timeout in milliseconds for the request. A `408` error will be returned if handling the request takes longer. - example: 5000 - disableSpellcheck: - type: boolean - description: Whether or not to disable spellcheck. - example: - trackingToken: trackingToken - query: vacation policy - pageSize: 10 - requestOptions: - facetFilters: - - fieldName: type - values: - - value: article - relationType: EQUALS - - value: document - relationType: EQUALS - - fieldName: department - values: - - value: engineering - relationType: EQUALS - AutocompleteRequest: - type: object - properties: - trackingToken: - type: string - sessionInfo: - $ref: "#/components/schemas/SessionInfo" - query: - type: string - description: Partially typed query. - example: San Fra - datasourcesFilter: - type: array - items: - type: string - description: Filter results to only those relevant to one or more datasources (e.g. jira, gdrive). Results are unfiltered if missing. - datasource: - type: string - description: Filter to only return results relevant to the given datasource. - resultTypes: - type: array - description: Filter to only return results of the given type(s). All types may be returned if omitted. - items: - type: string - enum: - - ADDITIONAL_DOCUMENT - - APP - - BROWSER_HISTORY - - DATASOURCE - - DOCUMENT - - ENTITY - - GOLINK - - HISTORY - - CHAT_HISTORY - - NEW_CHAT - - OPERATOR - - OPERATOR_VALUE - - QUICKLINK - - SUGGESTION - resultSize: - type: integer - description: | - Maximum number of results to be returned. If no value is provided, the backend will cap at 200. - example: 10 - authTokens: - type: array - description: Auth tokens which may be used for federated results. - items: - $ref: "#/components/schemas/AuthToken" - example: - trackingToken: trackingToken - query: what is a que - datasource: GDRIVE - resultSize: 10 - OperatorScope: - properties: - datasource: - type: string - docType: - type: string - OperatorMetadata: - required: - - name - properties: - name: - type: string - isCustom: - type: boolean - description: Whether this operator is supported by default or something that was created within a workplace app (e.g. custom jira field). - operatorType: - type: string - enum: - - TEXT - - DOUBLE - - DATE - - USER - helpText: - type: string - scopes: - type: array - items: - $ref: "#/components/schemas/OperatorScope" - value: - type: string - description: Raw/canonical value of the operator. Only applies when result is an operator value. - displayValue: - type: string - description: Human readable value of the operator that can be shown to the user. Only applies when result is an operator value. - example: - name: Last Updated - operatorType: DATE - scopes: - - datasource: GDRIVE - docType: Document - - datasource: ZENDESK - Quicklink: - description: An action for a specific datasource that will show up in autocomplete and app card, e.g. "Create new issue" for jira. - properties: - name: - type: string - description: Full action name. Used in autocomplete. - shortName: - type: string - description: Shortened name. Used in app cards. - url: - type: string - description: The URL of the action. - iconConfig: - $ref: "#/components/schemas/IconConfig" - description: The config for the icon for this quicklink - id: - type: string - description: Unique identifier of this quicklink - scopes: - type: array - description: The scopes for which this quicklink is applicable - items: - type: string - enum: - - APP_CARD - - AUTOCOMPLETE_EXACT_MATCH - - AUTOCOMPLETE_FUZZY_MATCH - - AUTOCOMPLETE_ZERO_QUERY - - NEW_TAB_PAGE - AutocompleteResult: - required: - - result - - result_type - properties: - result: - type: string - keywords: - type: array - items: - type: string - description: A list of all possible keywords for given result. - resultType: - type: string - enum: - - ADDITIONAL_DOCUMENT - - APP - - BROWSER_HISTORY - - DATASOURCE - - DOCUMENT - - ENTITY - - GOLINK - - HISTORY - - CHAT_HISTORY - - NEW_CHAT - - OPERATOR - - OPERATOR_VALUE - - QUICKLINK - - SUGGESTION - score: - type: number - description: Higher indicates a more confident match. - operatorMetadata: - $ref: "#/components/schemas/OperatorMetadata" - quicklink: - $ref: "#/components/schemas/Quicklink" - document: - $ref: "#/components/schemas/Document" - url: - type: string - structuredResult: - $ref: "#/components/schemas/StructuredResult" - trackingToken: - type: string - description: A token to be passed in /feedback events associated with this autocomplete result. - ranges: - type: array - items: - $ref: "#/components/schemas/TextRange" - description: Subsections of the result string to which some special formatting should be applied (eg. bold) - example: - result: sample result - resultType: DOCUMENT - score: 4.56 - url: https://www.example.com/ - trackingToken: abcd - metadata: - - datasource: confluence - - objectType: page - AutocompleteResultGroup: - description: A subsection of the results list from which distinct sections should be created. - properties: - startIndex: - type: integer - description: The inclusive start index of the range. - endIndex: - type: integer - description: The exclusive end index of the range. - title: - type: string - description: The title of the result group to be displayed. Empty means no title. - AutocompleteResponse: - allOf: - - $ref: "#/components/schemas/BackendExperimentsContext" - - type: object - properties: - trackingToken: - type: string - description: An opaque token that represents this particular set of autocomplete results. To be used for /feedback reporting. - sessionInfo: - $ref: "#/components/schemas/SessionInfo" - results: - type: array - items: - $ref: "#/components/schemas/AutocompleteResult" - groups: - type: array - items: - $ref: "#/components/schemas/AutocompleteResultGroup" - description: Subsections of the results list from which distinct sections should be created. - errorInfo: - $ref: "#/components/schemas/ErrorInfo" - backendTimeMillis: - type: integer - format: int64 - description: Time in milliseconds the backend took to respond to the request. - example: 1100 - example: - trackingToken: trackingToken - ChatZeroStateSuggestionOptions: - properties: - applicationId: - type: string - description: The Chat Application ID this feed request should be scoped to. Empty means there is no Chat Application ID.. - FeedRequestOptions: - required: - - resultSize - properties: - resultSize: - type: integer - description: Number of results asked in response. If a result is a collection, counts as one. - 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. - categoryToResultSize: - type: object - additionalProperties: - type: object - properties: - resultSize: - type: integer - description: Mapping from category to number of results asked for the category. - datasourceFilter: - type: array - items: - type: string - description: Datasources for which content should be included. Empty is for all. - chatZeroStateSuggestionOptions: - $ref: "#/components/schemas/ChatZeroStateSuggestionOptions" - FeedRequest: - required: - - refreshType - properties: - categories: - type: array - items: - type: string - enum: - - DOCUMENT_SUGGESTION - - DOCUMENT_SUGGESTION_SCENARIO - - TRENDING_DOCUMENT - - VERIFICATION_REMINDER - - EVENT - - ANNOUNCEMENT - - MENTION - - DATASOURCE_AFFINITY - - RECENT - - COMPANY_RESOURCE - - EXPERIMENTAL - - PEOPLE_CELEBRATIONS - - DISPLAYABLE_LIST - - SOCIAL_LINK - - EXTERNAL_TASKS - - WORKFLOW_COLLECTIONS - - ZERO_STATE_CHAT_SUGGESTION - - ZERO_STATE_CHAT_TOOL_SUGGESTION - - ZERO_STATE_WORKFLOW_CREATED_BY_ME - - ZERO_STATE_WORKFLOW_FAVORITES - - ZERO_STATE_WORKFLOW_POPULAR - - ZERO_STATE_WORKFLOW_RECENT - - ZERO_STATE_WORKFLOW_SUGGESTION - - PERSONALIZED_CHAT_SUGGESTION - - DAILY_DIGEST - description: Categories of content requested. An allowlist gives flexibility to request content separately or together. - requestOptions: - $ref: "#/components/schemas/FeedRequestOptions" - timeoutMillis: - type: integer - description: Timeout in milliseconds for the request. A `408` error will be returned if handling the request takes longer. - example: 5000 - sessionInfo: - $ref: "#/components/schemas/SessionInfo" - DisplayableListFormat: - properties: - format: - type: string - enum: - - LIST - description: defines how to render this particular displayable list card - DisplayableListItemUIConfig: - type: object - description: UI configurations for each item of the list - properties: - showNewIndicator: - type: boolean - description: show a "New" pill next to the item - ConferenceData: - required: - - provider - - uri - properties: - provider: - type: string - enum: - - ZOOM - - HANGOUTS - uri: - type: string - description: A permalink for the conference. - source: - type: string - enum: - - NATIVE_CONFERENCE - - LOCATION - - DESCRIPTION - EventClassificationName: - description: The name for a generated classification of an event. - type: string - enum: - - External Event - EventStrategyName: - type: string - description: The name of method used to surface relevant data for a given calendar event. - enum: - - customerCard - - news - - call - - email - - meetingNotes - - linkedIn - - relevantDocuments - - chatFollowUps - - conversations - EventClassification: - description: A generated classification of a given event. - properties: - name: - $ref: "#/components/schemas/EventClassificationName" - strategies: - type: array - items: - $ref: "#/components/schemas/EventStrategyName" - StructuredLink: - description: The display configuration for a link. - properties: - name: - type: string - description: The display name for the link - url: - type: string - description: The URL for the link. - iconConfig: - $ref: "#/components/schemas/IconConfig" - GeneratedAttachmentContent: - description: Content that has been generated or extrapolated from the documents present in the document field. - properties: - displayHeader: - description: The header describing the generated content. - type: string - text: - description: The content that has been generated. - type: string - example: - displayHeader: Action Items - content: You said you'd send over the design document after the meeting. - GeneratedAttachment: - description: These are attachments that aren't natively present on the event, and have been smartly suggested. - properties: - strategyName: - $ref: "#/components/schemas/EventStrategyName" - documents: - type: array - items: - $ref: "#/components/schemas/Document" - person: - $ref: "#/components/schemas/Person" - customer: - $ref: "#/components/schemas/Customer" - externalLinks: - description: A list of links to external sources outside of Glean. - type: array - items: - $ref: "#/components/schemas/StructuredLink" - content: - type: array - items: - $ref: "#/components/schemas/GeneratedAttachmentContent" - CalendarEvent: - required: - - id - - url - allOf: - - $ref: "#/components/schemas/AnonymousEvent" - - type: object - properties: - id: - type: string - description: The calendar event id - url: - type: string - description: A permalink for this calendar event - attendees: - $ref: "#/components/schemas/CalendarAttendees" - location: - type: string - description: The location that this event is taking place at. - conferenceData: - $ref: "#/components/schemas/ConferenceData" - description: - type: string - description: The HTML description of the event. - datasource: - type: string - description: The app or other repository type from which the event was extracted - hasTranscript: - type: boolean - description: The event has a transcript associated with it enabling features like summarization - transcriptUrl: - type: string - description: A link to the transcript of the event - classifications: - type: array - items: - $ref: "#/components/schemas/EventClassification" - generatedAttachments: - type: array - items: - $ref: "#/components/schemas/GeneratedAttachment" - SectionType: - type: string - description: Type of the section. This defines how the section should be interpreted and rendered in the digest. - enum: - - CHANNEL - - MENTIONS - - TOPIC - x-speakeasy-enum-descriptions: - CHANNEL: A standard section for channel-based digests (e.g. from Slack, Teams). - MENTIONS: A dedicated section that surfaces user mentions (actionable, informative, or all). - TOPIC: A section driven by a generic topic, not tied to any specific channel or instance. - UpdateType: - type: string - description: Optional type classification for the update. - enum: - - ACTIONABLE - - INFORMATIVE - x-speakeasy-enum-descriptions: - ACTIONABLE: Updates that require user attention or action - INFORMATIVE: Updates that are purely informational - DigestUpdate: - type: object - properties: - urls: - type: array - description: List of URLs for similar updates that are grouped together and rendered as a single update. - items: - type: string - url: - type: string - description: URL link to the content or document. - title: - type: string - description: Title or headline of the update. - datasource: - type: string - description: Name or identifier of the data source (e.g., slack, confluence, etc.). - summary: - type: string - description: Brief summary or description of the update content. - type: - $ref: "#/components/schemas/UpdateType" - DigestSection: - type: object - required: - - id - - type - - updates - properties: - id: - type: string - description: Unique identifier for the digest section. - type: - $ref: "#/components/schemas/SectionType" - displayName: - type: string - description: Human-readable name for the digest section. - channelName: - type: string - description: Name of the channel (applicable for CHANNEL type sections). Used to display in the frontend. - channelType: - type: string - description: | - Channel visibility/type for CHANNEL sections. For Slack this is typically one of - PublicChannel, PrivateChannel. Omit if not applicable or unknown. - instanceId: - type: string - description: Instance identifier for the channel or workspace. Used for constructing channel URLs to display in the frontend. - url: - type: string - description: Optional URL for the digest section. Should be populated only if the section is a CHANNEL type section. - updates: - type: array - items: - $ref: "#/components/schemas/DigestUpdate" - description: List of updates within this digest section. - Digest: - type: object - properties: - podcastFileId: - type: string - description: Identifier for the podcast file generated from this digest content. - podcastDuration: - type: number - format: float - description: Duration of the podcast file in seconds. - digestDate: - type: string - description: The date this digest covers, in YYYY-MM-DD format. Represents the specific day for which the digest content and updates were compiled. This can be empty if the digest is not yet available. - example: "2025-09-03" - sections: - type: array - items: - $ref: "#/components/schemas/DigestSection" - description: Array of digest sections from which the podcast was created. - ChatSuggestion: - properties: - query: - type: string - description: The actionable chat query to run when the user selects this suggestion. - feature: - type: string - description: Targeted Glean Chat feature for the suggestion. - PromptTemplateMutableProperties: - required: - - template - properties: - name: - type: string - description: The user-given identifier for this prompt template. - template: - type: string - description: The actual template string. - applicationId: - type: string - description: The Application Id the prompt template should be created under. Empty for default assistant. - inclusions: - $ref: "#/components/schemas/ChatRestrictionFilters" - description: A list of filters which only allows the prompt template to access certain content. - addedRoles: - type: array - description: A list of added user roles for the Workflow. - items: - $ref: "#/components/schemas/UserRoleSpecification" - removedRoles: - type: array - description: A list of removed user roles for the Workflow. - items: - $ref: "#/components/schemas/UserRoleSpecification" - AttributionProperties: {} - PromptTemplate: - allOf: - - $ref: "#/components/schemas/PromptTemplateMutableProperties" - - $ref: "#/components/schemas/PermissionedObject" - - $ref: "#/components/schemas/AttributionProperties" - - type: object - properties: - id: - type: string - description: Opaque id for this prompt template - author: - $ref: "#/components/schemas/Person" - createTimestamp: - type: integer - description: Server Unix timestamp of the creation time. - lastUpdateTimestamp: - type: integer - description: Server Unix timestamp of the last update time. - lastUpdatedBy: - $ref: "#/components/schemas/Person" - roles: - type: array - description: A list of roles for this prompt template explicitly granted. - items: - $ref: "#/components/schemas/UserRoleSpecification" - UgcType: - enum: - - ANNOUNCEMENTS_TYPE - - ANSWERS_TYPE - - COLLECTIONS_TYPE - - SHORTCUTS_TYPE - - WORKFLOWS_TYPE - - PROMPT_TEMPLATES_TYPE - FavoriteInfo: - type: object - properties: - ugcType: - $ref: "#/components/schemas/UgcType" - id: - type: string - description: Opaque id of the UGC. - count: - type: integer - x-includeEmpty: true - description: Number of users this object has been favorited by. - favoritedByUser: - type: boolean - x-includeEmpty: true - description: If the requesting user has favorited this object. - PromptTemplateResult: - properties: - promptTemplate: - $ref: "#/components/schemas/PromptTemplate" - trackingToken: - type: string - description: An opaque token that represents this prompt template - favoriteInfo: - $ref: "#/components/schemas/FavoriteInfo" - runCount: - $ref: "#/components/schemas/CountInfo" - description: This tracks how many times this prompt template was run. If user runs a prompt template after modifying the original one, it still counts as a run for the original template. - WorkflowDraftableProperties: - properties: - name: - type: string - description: The name of the workflow. - WorkflowMutableProperties: - type: object - allOf: - - $ref: "#/components/schemas/WorkflowDraftableProperties" - - type: object - WorkflowMetadata: - allOf: - - type: object - properties: - author: - $ref: "#/components/schemas/Person" - createTimestamp: - type: integer - description: Server Unix timestamp of the creation time. - lastUpdateTimestamp: - type: integer - description: Server Unix timestamp of the last update time. - lastUpdatedBy: - $ref: "#/components/schemas/Person" - Workflow: - allOf: - - $ref: "#/components/schemas/PermissionedObject" - - $ref: "#/components/schemas/WorkflowMutableProperties" - - $ref: "#/components/schemas/WorkflowMetadata" - - $ref: "#/components/schemas/AttributionProperties" - - type: object - properties: - id: - type: string - description: The ID of the workflow. - WorkflowResult: - type: object - required: - - workflow - properties: - workflow: - $ref: "#/components/schemas/Workflow" - UserActivity: - properties: - actor: - $ref: "#/components/schemas/Person" - timestamp: - type: integer - description: Unix timestamp of the activity (in seconds since epoch UTC). - action: - type: string - enum: - - ADD - - ADD_REMINDER - - CLICK - - COMMENT - - DELETE - - DISMISS - - EDIT - - MENTION - - MOVE - - OTHER - - RESTORE - - UNKNOWN - - VERIFY - - VIEW - description: The action for the activity - aggregateVisitCount: - $ref: "#/components/schemas/CountInfo" - FeedEntry: - required: - - title - properties: - entryId: - type: string - description: optional ID associated with a single feed entry (displayable_list_id) - title: - type: string - description: Title for the result. Can be document title, event title and so on. - thumbnail: - $ref: "#/components/schemas/Thumbnail" - createdBy: - $ref: "#/components/schemas/Person" - uiConfig: - allOf: - - $ref: "#/components/schemas/DisplayableListFormat" - - type: object - properties: - additionalFlags: - $ref: "#/components/schemas/DisplayableListItemUIConfig" - justificationType: - type: string - enum: - - FREQUENTLY_ACCESSED - - RECENTLY_ACCESSED - - TRENDING_DOCUMENT - - VERIFICATION_REMINDER - - SUGGESTED_DOCUMENT - - EMPTY_STATE_SUGGESTION - - FRECENCY_SCORED - - SERVER_GENERATED - - USE_CASE - - UPDATE_SINCE_LAST_VIEW - - RECENTLY_STARTED - - EVENT - - USER_MENTION - - ANNOUNCEMENT - - EXTERNAL_ANNOUNCEMENT - - POPULARITY_BASED_TRENDING - - COMPANY_RESOURCE - - EVENT_DOCUMENT_FROM_CONTENT - - EVENT_DOCUMENT_FROM_SEARCH - - VISIT_AFFINITY_SCORED - - SUGGESTED_APP - - SUGGESTED_PERSON - - ACTIVITY_HIGHLIGHT - - SAVED_SEARCH - - SUGGESTED_CHANNEL - - PEOPLE_CELEBRATIONS - - SOCIAL_LINK - - ZERO_STATE_CHAT_SUGGESTION - - ZERO_STATE_CHAT_TOOL_SUGGESTION - - ZERO_STATE_PROMPT_TEMPLATE_SUGGESTION - - ZERO_STATE_STATIC_WORKFLOW_SUGGESTION - - ZERO_STATE_AGENT_SUGGESTION - - PERSONALIZED_CHAT_SUGGESTION - - DAILY_DIGEST - description: Type of the justification. - justification: - type: string - description: Server side generated justification string if server provides one. - trackingToken: - type: string - description: An opaque token that represents this particular feed entry in this particular response. To be used for /feedback reporting. - viewUrl: - type: string - description: View URL for the entry if based on links that are not documents in Glean. - document: - $ref: "#/components/schemas/Document" - event: - $ref: "#/components/schemas/CalendarEvent" - announcement: - $ref: "#/components/schemas/Announcement" - digest: - $ref: "#/components/schemas/Digest" - collection: - $ref: "#/components/schemas/Collection" - collectionItem: - $ref: "#/components/schemas/CollectionItem" - person: - $ref: "#/components/schemas/Person" - app: - $ref: "#/components/schemas/AppResult" - chatSuggestion: - $ref: "#/components/schemas/ChatSuggestion" - promptTemplate: - $ref: "#/components/schemas/PromptTemplateResult" - workflow: - $ref: "#/components/schemas/WorkflowResult" - activities: - type: array - items: - $ref: "#/components/schemas/UserActivity" - description: List of activity where each activity has user, action, timestamp. - documentVisitorCount: - $ref: "#/components/schemas/CountInfo" - FeedResult: - required: - - category - - primaryEntry - properties: - category: - type: string - enum: - - DOCUMENT_SUGGESTION - - DOCUMENT_SUGGESTION_SCENARIO - - TRENDING_DOCUMENT - - USE_CASE - - VERIFICATION_REMINDER - - EVENT - - ANNOUNCEMENT - - MENTION - - DATASOURCE_AFFINITY - - RECENT - - COMPANY_RESOURCE - - EXPERIMENTAL - - PEOPLE_CELEBRATIONS - - SOCIAL_LINK - - EXTERNAL_TASKS - - DISPLAYABLE_LIST - - ZERO_STATE_CHAT_SUGGESTION - - ZERO_STATE_CHAT_TOOL_SUGGESTION - - ZERO_STATE_WORKFLOW_CREATED_BY_ME - - ZERO_STATE_WORKFLOW_FAVORITES - - ZERO_STATE_WORKFLOW_POPULAR - - ZERO_STATE_WORKFLOW_RECENT - - ZERO_STATE_WORKFLOW_SUGGESTION - - PERSONALIZED_CHAT_SUGGESTION - - DAILY_DIGEST - description: Category of the result, one of the requested categories in incoming request. - primaryEntry: - $ref: "#/components/schemas/FeedEntry" - secondaryEntries: - type: array - items: - $ref: "#/components/schemas/FeedEntry" - description: Secondary entries for the result e.g. suggested docs for the calendar, carousel. - rank: - type: integer - description: Rank of the result. Rank is suggested by server. Client side rank may differ. - FeedResponse: - required: - - serverTimestamp - allOf: - - $ref: "#/components/schemas/BackendExperimentsContext" - - type: object - properties: - trackingToken: - type: string - description: An opaque token that represents this particular feed response. - serverTimestamp: - type: integer - description: Server unix timestamp (in seconds since epoch UTC). - results: - type: array - items: - $ref: "#/components/schemas/FeedResult" - facetResults: - type: object - additionalProperties: - type: array - items: - $ref: "#/components/schemas/FacetResult" - description: Map from category to the list of facets that can be used to filter the entry's content. - mentionsTimeWindowInHours: - type: integer - description: The time window (in hours) used for generating user mentions. - RecommendationsRequestOptions: - properties: - datasourceFilter: - type: string - description: Filter results to a single datasource name (e.g. gmail, slack). All results are returned if missing. - datasourcesFilter: - type: array - items: - type: string - description: Filter results to only those relevant to one or more datasources (e.g. jira, gdrive). All results are returned if missing. - facetFilterSets: - type: array - items: - $ref: "#/components/schemas/FacetFilterSet" - description: A list of facet filter sets that will be OR'ed together. - context: - $ref: "#/components/schemas/Document" - description: Content for either a new or unindexed document, or additional content for an indexed document, which may be used to generate recommendations. - resultProminence: - description: The types of prominence wanted in results returned. Default is any type. - type: array - items: - $ref: "#/components/schemas/SearchResultProminenceEnum" - RecommendationsRequest: - allOf: - - $ref: "#/components/schemas/ResultsRequest" - - type: object - properties: - recommendationDocumentSpec: - $ref: "#/components/schemas/DocumentSpec" - description: Retrieve recommendations for this document. Glean Document ID is preferred over URL. - requestOptions: - $ref: "#/components/schemas/RecommendationsRequestOptions" - description: Options for adjusting the request for recommendations. - RecommendationsResponse: - allOf: - - $ref: "#/components/schemas/ResultsResponse" - SortOptions: - type: object - properties: - orderBy: - type: string - enum: - - ASC - - DESC - sortBy: - type: string - ListEntitiesRequest: - type: object - properties: - filter: - type: array - items: - $ref: "#/components/schemas/FacetFilter" - sort: - description: Use EntitiesSortOrder enum for SortOptions.sortBy - type: array - items: - $ref: "#/components/schemas/SortOptions" - entityType: - type: string - default: PEOPLE - enum: - - PEOPLE - - TEAMS - - CUSTOM_ENTITIES - datasource: - type: string - description: The datasource associated with the entity type, most commonly used with CUSTOM_ENTITIES - query: - type: string - description: A query string to search for entities that each entity in the response must conform to. An empty query does not filter any entities. - includeFields: - description: List of entity fields to return (that aren't returned by default) - type: array - items: - type: string - enum: - - PEOPLE - - TEAMS - - PEOPLE_DISTANCE - - PERMISSIONS - - FACETS - - INVITE_INFO - - LAST_EXTENSION_USE - - MANAGEMENT_DETAILS - - UNPROCESSED_TEAMS - pageSize: - type: integer - example: 100 - description: Hint to the server about how many results to send back. Server may return less. - cursor: - type: string - description: Pagination cursor. A previously received opaque token representing the position in the overall results at which to start. - source: - type: string - description: A string denoting the search surface from which the endpoint is called. - requestType: - type: string - default: STANDARD - description: The type of request being made. - enum: - - STANDARD - - FULL_DIRECTORY - x-speakeasy-enum-descriptions: - STANDARD: Used by default for all requests and satisfies all standard use cases for list requests. Limited to 10000 entities. - FULL_DIRECTORY: Used exclusively to return a comprehensive list of all people entities in the organization, typically for audit like purposes. The recommended approach is to sort by FIRST_NAME or LAST_NAME, and use pagination for large organizations. - EntitiesSortOrder: - type: string - description: Different ways of sorting entities - enum: - - ENTITY_NAME - - FIRST_NAME - - LAST_NAME - - ORG_SIZE_COUNT - - START_DATE - - TEAM_SIZE - - RELEVANCE - ListEntitiesResponse: - type: object - properties: - results: - type: array - items: - $ref: "#/components/schemas/Person" - teamResults: - type: array - items: - $ref: "#/components/schemas/Team" - customEntityResults: - type: array - items: - $ref: "#/components/schemas/CustomEntity" - facetResults: - type: array - items: - $ref: "#/components/schemas/FacetResult" - cursor: - type: string - description: Pagination cursor. A previously received opaque token representing the position in the overall results at which to start. - totalCount: - type: integer - description: The total number of entities available - hasMoreResults: - type: boolean - description: Whether or not more entities can be fetched. - sortOptions: - type: array - description: Sort options from EntitiesSortOrder supported for this response. Default is empty list. - items: - $ref: "#/components/schemas/EntitiesSortOrder" - customFacetNames: - type: array - description: list of Person attributes that are custom setup by deployment - items: - type: string - PeopleRequest: - type: object - properties: - 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. - obfuscatedIds: - type: array - items: - type: string - description: The Person IDs to retrieve. If no IDs are requested, the current user's details are returned. - emailIds: - type: array - items: - type: string - description: The email IDs to retrieve. The result is the deduplicated union of emailIds and obfuscatedIds. - includeFields: - description: List of PersonMetadata fields to return (that aren't returned by default) - type: array - items: - type: string - enum: - - BADGES - - BUSY_EVENTS - - DOCUMENT_ACTIVITY - - INVITE_INFO - - PEOPLE_DISTANCE - - PERMISSIONS - - PEOPLE_DETAILS - - MANAGEMENT_DETAILS - - PEOPLE_PROFILE_SETTINGS - - PEOPLE_WITHOUT_MANAGER - includeTypes: - description: The types of people entities to include in the response in addition to those returned by default. - type: array - items: - type: string - enum: - - PEOPLE_WITHOUT_MANAGER - - INVALID_ENTITIES - x-speakeasy-enum-descriptions: - PEOPLE_WITHOUT_MANAGER: Returns all people without a manager apart from the requested IDs. - INVALID_ENTITIES: Includes invalid entities in the response if any of the requested IDs are invalid. - source: - type: string - description: A string denoting the search surface from which the endpoint is called. - example: - obfuscatedIds: - - abc123 - - abc456 - PeopleResponse: - properties: - results: - type: array - items: - $ref: "#/components/schemas/Person" - description: A Person for each ID in the request, each with PersonMetadata populated. - relatedDocuments: - type: array - items: - $ref: "#/components/schemas/RelatedDocuments" - description: A list of documents related to this people response. This is only included if DOCUMENT_ACTIVITY is requested and only 1 person is included in the request. - errors: - type: array - items: - type: string - description: A list of IDs that could not be found. - CreateShortcutRequest: - required: - - data - properties: - data: - $ref: "#/components/schemas/ShortcutMutableProperties" - ShortcutError: - properties: - errorType: - type: string - enum: - - NO_PERMISSION - - INVALID_ID - - EXISTING_SHORTCUT - - INVALID_CHARS - CreateShortcutResponse: - properties: - shortcut: - $ref: "#/components/schemas/Shortcut" - error: - $ref: "#/components/schemas/ShortcutError" - DeleteShortcutRequest: - allOf: - - $ref: "#/components/schemas/UserGeneratedContentId" - - type: object - required: - - id - GetShortcutRequest: - oneOf: - - $ref: "#/components/schemas/UserGeneratedContentId" - - type: object - required: - - alias - properties: - alias: - type: string - description: The alias for the shortcut, including any arguments for variable shortcuts. - GetShortcutResponse: - properties: - shortcut: - $ref: "#/components/schemas/Shortcut" - description: Shortcut given the input alias with any provided arguments substituted into the destination URL. - error: - $ref: "#/components/schemas/ShortcutError" - ListShortcutsPaginatedRequest: - required: - - pageSize - properties: - includeFields: - description: Array of fields/data to be included in response that are not included by default - type: array - items: - type: string - enum: - - FACETS - - PEOPLE_DETAILS - pageSize: - type: integer - example: 10 - cursor: - type: string - description: A token specifying the position in the overall results to start at. Received from the endpoint and iterated back. Currently being used as page no (as we implement offset pagination) - filters: - type: array - items: - $ref: "#/components/schemas/FacetFilter" - description: A list of filters for the query. An AND is assumed between different filters. We support filters on Go Link name, author, department and type. - sort: - $ref: "#/components/schemas/SortOptions" - description: Specifies fieldname to sort on and order (ASC|DESC) to sort in - query: - type: string - description: Search query that should be a substring in atleast one of the fields (alias , inputAlias, destinationUrl, description). Empty query does not filter shortcuts. - ShortcutsPaginationMetadata: - properties: - cursor: - type: string - description: Cursor indicates the start of the next page of results - hasNextPage: - type: boolean - totalItemCount: - type: integer - ListShortcutsPaginatedResponse: - required: - - shortcuts - - meta - properties: - shortcuts: - type: array - items: - $ref: "#/components/schemas/Shortcut" - description: List of all shortcuts accessible to the user - facetResults: - type: array - items: - $ref: "#/components/schemas/FacetResult" - meta: - $ref: "#/components/schemas/ShortcutsPaginationMetadata" - description: Contains metadata like total item count and whether next page exists - UpdateShortcutRequest: - allOf: - - $ref: "#/components/schemas/UserGeneratedContentId" - - $ref: "#/components/schemas/ShortcutMutableProperties" - - type: object - required: - - id - UpdateShortcutResponse: - properties: - shortcut: - $ref: "#/components/schemas/Shortcut" - error: - $ref: "#/components/schemas/ShortcutError" - SummarizeRequest: - description: Summary of the document - required: - - documentSpecs - properties: - timestamp: - type: string - description: The ISO 8601 timestamp associated with the client request. - format: date-time - query: - type: string - description: Optional query that the summary should be about - preferredSummaryLength: - type: integer - description: Optional length of summary output. If not given, defaults to 500 chars. - documentSpecs: - type: array - items: - $ref: "#/components/schemas/DocumentSpec" - description: Specifications of documents to summarize - trackingToken: - type: string - description: An opaque token that represents this particular result. To be used for /feedback reporting. - Summary: - properties: - text: - type: string - followUpPrompts: - type: array - items: - type: string - description: Follow-up prompts based on the summarized doc - SummarizeResponse: - properties: - error: - type: object - properties: - message: - type: string - summary: - $ref: "#/components/schemas/Summary" - trackingToken: - type: string - description: An opaque token that represents this summary in this particular query. To be used for /feedback reporting. - ReminderRequest: - required: - - documentId - properties: - documentId: - type: string - description: The document which the verification is for new reminders and/or update. - assignee: - type: string - description: The obfuscated id of the person this verification is assigned to. - remindInDays: - type: integer - description: Reminder for the next verifications in terms of days. For deletion, this will be omitted. - reason: - type: string - description: An optional free-text reason for the reminder. This is particularly useful when a reminder is used to ask for verification from another user (for example, "Duplicate", "Incomplete", "Incorrect"). - VerificationFeed: - properties: - documents: - type: array - items: - $ref: "#/components/schemas/Verification" - description: List of document infos that include verification related information for them. - VerifyRequest: - required: - - documentId - properties: - documentId: - type: string - description: The document which is verified. - action: - type: string - enum: - - VERIFY - - DEPRECATE - - UNVERIFY - description: The verification action requested. - ToolParameter: - type: object - properties: - type: - type: string - description: Parameter type (string, number, boolean, object, array) - enum: - - string - - number - - boolean - - object - - array - name: - type: string - description: The name of the parameter - description: - type: string - description: The description of the parameter - isRequired: - type: boolean - description: Whether the parameter is required - possibleValues: - type: array - description: The possible values for the parameter. Can contain only primitive values or arrays of primitive values. - items: - type: string - items: - type: object - description: When type is 'array', this describes the structure of the item in the array. - $ref: "#/components/schemas/ToolParameter" - properties: - type: object - description: When type is 'object', this describes the structure of the object. - additionalProperties: - $ref: "#/components/schemas/ToolParameter" - Tool: - type: object - properties: - type: - type: string - description: Type of tool (READ, WRITE) - enum: - - READ - - WRITE - name: - type: string - description: Unique identifier for the tool - displayName: - type: string - description: Human-readable name - description: - type: string - description: LLM friendly description of the tool - parameters: - type: object - description: The parameters for the tool. Each key is the name of the parameter and the value is the parameter object. - additionalProperties: - $ref: "#/components/schemas/ToolParameter" - ToolsListResponse: - type: object - properties: - tools: - type: array - items: - $ref: "#/components/schemas/Tool" - ToolsCallParameter: - type: object - required: - - name - - value - properties: - name: - type: string - description: The name of the parameter - value: - type: string - description: The value of the parameter (for primitive types) - items: - type: array - description: The value of the parameter (for array types) - items: - $ref: "#/components/schemas/ToolsCallParameter" - properties: - type: object - description: The value of the parameter (for object types) - additionalProperties: - $ref: "#/components/schemas/ToolsCallParameter" - ToolsCallRequest: - type: object - required: - - name - - parameters - properties: - name: - type: string - description: Required name of the tool to execute - parameters: - type: object - description: The parameters for the tool. Each key is the name of the parameter and the value is the parameter object. - additionalProperties: - $ref: "#/components/schemas/ToolsCallParameter" - ToolsCallResponse: - type: object - properties: - rawResponse: - additionalProperties: true - type: object - description: The raw response from the tool - error: - type: string - description: The error message if applicable - IndexDocumentRequest: - type: object - description: Describes the request body of the /indexdocument API call - properties: - version: - type: integer - format: int64 - description: Version number for document for optimistic concurrency control. If absent or 0 then no version checks are done. - document: - description: Document being added/updated - $ref: "#/components/schemas/DocumentDefinition" - required: - - document - IndexDocumentsRequest: - type: object - description: Describes the request body of the /indexdocuments API call - properties: - uploadId: - type: string - description: Optional id parameter to identify and track a batch of documents. - datasource: - type: string - description: Datasource of the documents - documents: - description: Batch of documents being added/updated - type: array - items: - $ref: "#/components/schemas/DocumentDefinition" - required: - - documents - - datasource - UpdatePermissionsRequest: - type: object - description: Describes the request body of the /updatepermissions API call - properties: - datasource: - type: string - objectType: - type: string - description: The type of the document (Case, KnowledgeArticle for Salesforce for example). It cannot have spaces or _ - id: - type: string - description: The datasource specific id for the document. This field is case insensitive and should not be more than 200 characters in length. - viewURL: - type: string - description: | - The permalink for viewing the document. **Note: viewURL is a required field if id was not set when uploading the document.**' - permissions: - $ref: "#/components/schemas/DocumentPermissionsDefinition" - description: The permissions that define who can view this document in the search results. Please refer to [this](https://developers.glean.com/indexing/documents/permissions) for more details. - required: - - permissions - - datasource - GetDocumentCountRequest: - type: object - description: Describes the request body of the /getdocumentcount API call - properties: - datasource: - type: string - description: Datasource name for which document count is needed. - required: - - datasource - GetDocumentCountResponse: - type: object - description: Describes the response body of the /getdocumentcount API call - properties: - documentCount: - type: integer - description: Number of documents corresponding to the specified custom datasource. - GetDocumentStatusRequest: - type: object - description: Describes the request body for /getdocumentstatus API call - properties: - datasource: - type: string - description: Datasource to get fetch document status for - objectType: - type: string - description: Object type of the document to get the status for - docId: - type: string - description: Glean Document ID within the datasource to get the status for. - required: - - datasource - - objectType - - docId - GetDocumentStatusResponse: - type: object - description: Describes the response body of the /getdocumentstatus API call - properties: - uploadStatus: - type: string - description: Upload status, enum of NOT_UPLOADED, UPLOADED, STATUS_UNKNOWN - lastUploadedAt: - type: integer - format: int64 - description: Time of last successful upload, in epoch seconds - indexingStatus: - type: string - description: Indexing status, enum of NOT_INDEXED, INDEXED, STATUS_UNKNOWN - lastIndexedAt: - type: integer - format: int64 - description: Time of last successful indexing, in epoch seconds - BulkIndexRequest: - type: object - description: Describes the request body of a bulk upload API call - required: - - uploadId - properties: - uploadId: - type: string - description: Unique id that must be used for this bulk upload instance - isFirstPage: - type: boolean - description: true if this is the first page of the upload. Defaults to false - isLastPage: - type: boolean - description: true if this is the last page of the upload. Defaults to false - forceRestartUpload: - type: boolean - description: Flag to discard previous upload attempts and start from scratch. Must be specified with isFirstPage=true - BulkIndexTeamsRequest: - type: object - description: Describes the request body of the /bulkindexteams API call - allOf: - - $ref: "#/components/schemas/BulkIndexRequest" - - type: object - properties: - teams: - description: Batch of team information - type: array - items: - $ref: "#/components/schemas/TeamInfoDefinition" - required: - - teams - BulkIndexEmployeesRequest: - type: object - description: Describes the request body of the /bulkindexemployees API call - allOf: - - $ref: "#/components/schemas/BulkIndexRequest" - - type: object - properties: - employees: - description: Batch of employee information - type: array - items: - $ref: "#/components/schemas/EmployeeInfoDefinition" - disableStaleDataDeletionCheck: - type: boolean - description: True if older employee data needs to be force deleted after the upload completes. Defaults to older data being deleted only if the percentage of data being deleted is less than 20%. This must only be set when `isLastPage = true` - required: - - employees - BulkIndexDocumentsRequest: - type: object - description: Describes the request body of the /bulkindexdocuments API call - allOf: - - $ref: "#/components/schemas/BulkIndexRequest" - - type: object - properties: - datasource: - type: string - description: Datasource of the documents - documents: - description: Batch of documents for the datasource - type: array - items: - $ref: "#/components/schemas/DocumentDefinition" - disableStaleDocumentDeletionCheck: - type: boolean - description: True if older documents need to be force deleted after the upload completes. Defaults to older documents being deleted asynchronously. This must only be set when `isLastPage = true` - required: - - datasource - - documents - ProcessAllDocumentsRequest: - type: object - description: Describes the request body of the /processalldocuments API call - properties: - datasource: - type: string - description: If provided, process documents only for this custom datasource. Otherwise all uploaded documents are processed. - DeleteDocumentRequest: - type: object - description: Describes the request body of the /deletedocument API call - properties: - version: - type: integer - format: int64 - description: Version number for document for optimistic concurrency control. If absent or 0 then no version checks are done. - datasource: - type: string - description: datasource of the document - objectType: - type: string - description: object type of the document - id: - type: string - description: The id of the document - required: - - datasource - - id - - objectType - IndexUserRequest: - type: object - description: Describes the request body of the /indexuser API call - properties: - version: - type: integer - format: int64 - description: Version number for document for optimistic concurrency control. If absent or 0 then no version checks are done. - datasource: - type: string - description: The datasource for which the user is added - user: - description: The user to be added or updated - $ref: "#/components/schemas/DatasourceUserDefinition" - required: - - datasource - - user - GetUserCountRequest: - type: object - description: Describes the request body of the /getusercount API call - properties: - datasource: - type: string - description: Datasource name for which user count is needed. - required: - - datasource - GetUserCountResponse: - type: object - description: Describes the response body of the /getusercount API call - properties: - userCount: - type: integer - description: Number of users corresponding to the specified custom datasource. - BulkIndexUsersRequest: - type: object - description: Describes the request body for the /bulkindexusers API call - properties: - uploadId: - type: string - description: Unique id that must be used for this instance of datasource users upload - isFirstPage: - type: boolean - description: true if this is the first page of the upload. Defaults to false - isLastPage: - type: boolean - description: true if this is the last page of the upload. Defaults to false - forceRestartUpload: - type: boolean - description: Flag to discard previous upload attempts and start from scratch. Must be specified with isFirstPage=true - datasource: - type: string - description: datasource of the users - users: - description: batch of users for the datasource - type: array - items: - $ref: "#/components/schemas/DatasourceUserDefinition" - disableStaleDataDeletionCheck: - type: boolean - description: True if older user data needs to be force deleted after the upload completes. Defaults to older data being deleted only if the percentage of data being deleted is less than a reasonable threshold. This must only be set when `isLastPage = true` - required: - - uploadId - - datasource - - users - GreenlistUsersRequest: - type: object - description: Describes the request body of the /betausers API call - properties: - datasource: - type: string - description: Datasource which needs to be made visible to users specified in the `emails` field. - emails: - type: array - description: The emails of the beta users - items: - type: string - format: email - required: - - datasource - - emails - DatasourceUserDefinition: - type: object - description: describes a user in the datasource - properties: - email: - type: string - userId: - description: To be supplied if the user id in the datasource is not the email - type: string - name: - type: string - isActive: - type: boolean - description: set to false if the user is a former employee or a bot - required: - - email - - name - IndexGroupRequest: - type: object - description: Describes the request body of the /indexgroup API call - properties: - version: - type: integer - format: int64 - description: Version number for document for optimistic concurrency control. If absent or 0 then no version checks are done. - datasource: - type: string - description: The datasource for which the group is added - group: - description: The group to be added or updated - $ref: "#/components/schemas/DatasourceGroupDefinition" - required: - - datasource - - group - BulkIndexGroupsRequest: - type: object - description: Describes the request body for the /bulkindexgroups API call - properties: - uploadId: - type: string - description: Unique id that must be used for this instance of datasource groups upload - isFirstPage: - type: boolean - description: true if this is the first page of the upload. Defaults to false - isLastPage: - type: boolean - description: true if this is the last page of the upload. Defaults to false - forceRestartUpload: - type: boolean - description: Flag to discard previous upload attempts and start from scratch. Must be specified with isFirstPage=true - datasource: - type: string - description: datasource of the groups - groups: - description: batch of groups for the datasource - type: array - items: - $ref: "#/components/schemas/DatasourceGroupDefinition" - disableStaleDataDeletionCheck: - type: boolean - description: True if older group data needs to be force deleted after the upload completes. Defaults to older data being deleted only if the percentage of data being deleted is less than a reasonable threshold. This must only be set when `isLastPage = true` - required: - - uploadId - - datasource - - groups - DatasourceGroupDefinition: - type: object - description: describes a group in the datasource - properties: - name: - type: string - description: name of the group. Should be unique among all groups for the datasource, and cannot have spaces. - required: - - name - IndexMembershipRequest: - type: object - description: Describes the request body of the /indexmembership API call - properties: - version: - type: integer - format: int64 - description: Version number for document for optimistic concurrency control. If absent or 0 then no version checks are done. - datasource: - type: string - description: The datasource for which the membership is added - membership: - description: The membership to be added or updated - $ref: "#/components/schemas/DatasourceMembershipDefinition" - required: - - datasource - - membership - BulkIndexMembershipsRequest: - type: object - description: Describes the request body for the /bulkindexmemberships API call - properties: - uploadId: - type: string - description: Unique id that must be used for this instance of datasource group memberships upload - isFirstPage: - type: boolean - description: true if this is the first page of the upload. Defaults to false - isLastPage: - type: boolean - description: true if this is the last page of the upload. Defaults to false - forceRestartUpload: - type: boolean - description: Flag to discard previous upload attempts and start from scratch. Must be specified with isFirstPage=true - datasource: - type: string - description: datasource of the memberships - group: - type: string - description: group who's memberships are specified - memberships: - description: batch of memberships for the group - type: array - items: - $ref: "#/components/schemas/DatasourceBulkMembershipDefinition" - required: - - uploadId - - datasource - - memberships - ProcessAllMembershipsRequest: - type: object - description: Describes the request body of the /processallmemberships API call - properties: - datasource: - type: string - description: If provided, process group memberships only for this custom datasource. Otherwise all uploaded memberships are processed. - DatasourceMembershipDefinition: - type: object - description: describes the membership row of a group. Only one of memberUserId and memberGroupName can be specified. - properties: - groupName: - description: The group for which the membership is specified - type: string - memberUserId: - description: If the member is a user, then the email or datasource id for the user - type: string - memberGroupName: - description: If the member is a group, then the name of the member group - type: string - required: - - groupName - DatasourceBulkMembershipDefinition: - type: object - description: describes the membership row of a group in the bulk uploaded. Only one of memberUserId and memberGroupName can be specified. - properties: - memberUserId: - description: If the member is a user, then the email or datasource id for the user - type: string - memberGroupName: - description: If the member is a group, then the name of the member group - type: string - DeleteUserRequest: - type: object - description: Describes the request body of the /deleteuser API call - properties: - version: - type: integer - format: int64 - description: Version number for document for optimistic concurrency control. If absent or 0 then no version checks are done. - datasource: - type: string - description: The datasource for which the user is removed - email: - description: The email of the user to be deleted - type: string - required: - - datasource - - email - DeleteGroupRequest: - type: object - description: Describes the request body of the /deletegroup API call - properties: - version: - type: integer - format: int64 - description: Version number for document for optimistic concurrency control. If absent or 0 then no version checks are done. - datasource: - type: string - description: The datasource for which the group is removed - groupName: - description: the name of the group to be deleted - type: string - required: - - datasource - - groupName - DeleteMembershipRequest: - type: object - description: Describes the request body of the /deletemembership API call - properties: - version: - type: integer - format: int64 - description: Version number for document for optimistic concurrency control. If absent or 0 then no version checks are done. - datasource: - type: string - description: The datasource for which the membership is removed - membership: - description: the name of the membership to be deleted - $ref: "#/components/schemas/DatasourceMembershipDefinition" - required: - - datasource - - membership - DeleteEmployeeRequest: - type: object - description: Describes the request body of the /deleteemployee API call - properties: - version: - type: integer - format: int64 - description: Version number for document for optimistic concurrency control. If absent or 0 then no version checks are done. - employeeEmail: - description: The deleted employee's email - type: string - required: - - employeeEmail - DeleteTeamRequest: - type: object - description: Describes the request body of the /deleteteam API call - properties: - id: - description: The deleted team's id - type: string - required: - - id - DocumentDefinition: - type: object - description: Indexable document structure - properties: - title: - type: string - description: Document title, in plain text, if present. If not present, the title would be attempted to be extracted from the content. - filename: - type: string - description: Source filename, in plain text, for the document. May be used as a fallback title for the document, if the title is not provided and cannot be extracted from the content. Populate this if there is no explicit title for the document and the content is sourced from a file. - container: - type: string - description: The container name for the content (Folder for example for file content). - containerDatasourceId: - type: string - description: This represents the datasource sepcific id of the container. - containerObjectType: - type: string - description: This represents the object type of the container. It cannot have spaces or _ - datasource: - type: string - objectType: - type: string - description: The type of the document (Case, KnowledgeArticle for Salesforce for example). It cannot have spaces or _ - viewURL: - type: string - description: | - The permalink for viewing the document. **Note: viewURL is a required field for non-entity datasources, but not required if the datasource is used to push custom entities (ie. datasources where isEntityDatasource is false).**' - id: - type: string - description: | - The datasource specific id for the document. This field is case insensitive and should not be more than 200 characters in length. Note: id is a required field for datasources created after 1st March 2025 - summary: - $ref: "#/components/schemas/ContentDefinition" - body: - $ref: "#/components/schemas/ContentDefinition" - author: - $ref: "#/components/schemas/UserReferenceDefinition" - owner: - $ref: "#/components/schemas/UserReferenceDefinition" - description: The current owner of the document, if not the author. - permissions: - $ref: "#/components/schemas/DocumentPermissionsDefinition" - description: The permissions that define who can view this document in the search results. Please refer to [this](https://developers.glean.com/indexing/documents/permissions) for more details. - createdAt: - type: integer - format: int64 - description: The creation time, in epoch seconds. - updatedAt: - type: integer - format: int64 - description: The last update time, in epoch seconds. - updatedBy: - $ref: "#/components/schemas/UserReferenceDefinition" - tags: - type: array - items: - type: string - description: Labels associated with the document. - interactions: - $ref: "#/components/schemas/DocumentInteractionsDefinition" - status: - type: string - additionalUrls: - type: array - items: - type: string - description: Additional variations of the URL that this document points to. - comments: - type: array - items: - $ref: "#/components/schemas/CommentDefinition" - description: Comments associated with the document. - customProperties: - type: array - items: - $ref: "#/components/schemas/CustomProperty" - description: Additional metadata properties of the document. These can surface as [facets and operators](https://developers.glean.com/indexing/datasource/custom-properties/operators_and_facets). - required: - - datasource - CommentDefinition: - type: object - description: Describes a comment on a document - properties: - id: - type: string - description: The document specific id for the comment. This field is case insensitive and should not be more than 200 characters in length. - author: - $ref: "#/components/schemas/UserReferenceDefinition" - description: The author of the comment. - content: - $ref: "#/components/schemas/ContentDefinition" - description: The content of the comment. - createdAt: - type: integer - format: int64 - description: The creation time, in epoch seconds. - updatedAt: - type: integer - format: int64 - description: The last updated time, in epoch seconds. - updatedBy: - $ref: "#/components/schemas/UserReferenceDefinition" - description: The user who last updated the comment. - required: - - id - ContentDefinition: - type: object - description: Describes text content or base64 encoded binary content - properties: - mimeType: - type: string - textContent: - type: string - description: text content. Only one of textContent or binary content can be specified - binaryContent: - type: string - description: base64 encoded binary content. Only one of textContent or binary content can be specified - required: - - mimeType - UserReferenceDefinition: - type: object - description: Describes how a user is referenced in a document. The user can be referenced by email or by a datasource specific id. - properties: - email: - type: string - datasourceUserId: - type: string - description: some datasources refer to the user by the datasource user id in the document - name: - type: string - PermissionsGroupIntersectionDefinition: - type: object - description: describes a list of groups that are all required in a permissions constraint - properties: - requiredGroups: - type: array - items: - type: string - DocumentPermissionsDefinition: - type: object - description: describes the access control details of the document - properties: - allowedUsers: - description: List of users who can view the document - type: array - items: - $ref: "#/components/schemas/UserReferenceDefinition" - allowedGroups: - description: List of groups that can view the document - type: array - items: - type: string - allowedGroupIntersections: - description: List of allowed group intersections. This describes a permissions constraint of the form ((GroupA AND GroupB AND GroupC) OR (GroupX AND GroupY) OR ... - type: array - items: - $ref: "#/components/schemas/PermissionsGroupIntersectionDefinition" - allowAnonymousAccess: - description: If true, then any Glean user can view the document - type: boolean - allowAllDatasourceUsersAccess: - description: If true, then any user who has an account in the datasource can view the document. - type: boolean - DocumentInteractionsDefinition: - type: object - description: describes the interactions on the document - properties: - numViews: - type: integer - numLikes: - type: integer - numComments: - type: integer - CheckDocumentAccessRequest: - type: object - description: Describes the request body of the /checkdocumentaccess API call - properties: - datasource: - type: string - description: Datasource of document to check access for. - objectType: - type: string - description: Object type of document to check access for. - docId: - type: string - description: Glean Document ID to check access for. - userEmail: - type: string - description: Email of user to check access for. - required: - - datasource - - objectType - - docId - - userEmail - CheckDocumentAccessResponse: - type: object - description: Describes the response body of the /checkdocumentaccess API call - properties: - hasAccess: - type: boolean - description: If true, user has access to document for search - CustomProperty: - type: object - description: Describes the custom properties of the object. - properties: - name: - type: string - value: - description: Must either be a string or an array of strings. An integer, boolean, etc. is not valid. When OpenAPI Generator supports `oneOf`, we can semantically enforce this. - DatasourceConfig: - $ref: "#/components/schemas/SharedDatasourceConfig" - GetDatasourceConfigRequest: - type: object - description: Describes the request body of the /getdatasourceconfig API call - properties: - datasource: - type: string - description: Datasource name for which config is needed. - required: - - datasource - DatasourceConfigList: - description: List of datasource configurations. - required: - - datasourceConfig - properties: - datasourceConfig: - type: array - description: Datasource configuration. - items: - $ref: "#/components/schemas/SharedDatasourceConfig" - RotateTokenResponse: - description: Describes the response body of the /rotatetoken API call - properties: - rawSecret: - type: string - description: New raw secret - createdAt: - type: integer - format: int64 - description: Unix timestamp in seconds when the new secret value is assigned to the token. The token needs to be rotated before `rotationPeriodMinutes` past the createdAt timestamp otherwise it would be rendered unusable. - rotationPeriodMinutes: - type: integer - format: int64 - description: Refers to the time period in minutes before which this token needs to be rotated. It is required to rotate the token within the specified `rotationPeriodMinutes` after each `/rotatetoken` call, otherwise the tokens would expire. Note that the token would still expire at `expiresAt` timestamp provided during token creation even if the token is being regularly rotated. `rotationPeriodMinutes` property is inherited from the parent token being rotated - IndexEmployeeRequest: - type: object - description: Info about an employee and optional version for that info - properties: - employee: - description: Info about the employee - $ref: "#/components/schemas/EmployeeInfoDefinition" - version: - description: Version number for the employee object. If absent or 0 then no version checks are done - type: integer - format: int64 - required: - - employee - IndexEmployeeListRequest: - type: object - description: Describes the request body of the /indexemployeelist API call - properties: - employees: - description: List of employee info and version. - type: array - items: - $ref: "#/components/schemas/IndexEmployeeRequest" - SocialNetworkDefinition: - type: object - description: Employee's social network profile - properties: - name: - type: string - description: Possible values are "twitter", "linkedin". - profileName: - type: string - description: Human-readable profile name. - profileUrl: - type: string - description: Link to profile. - AdditionalFieldDefinition: - type: object - description: Additional information about the employee or team. - properties: - key: - type: string - description: Key to reference this field, e.g. "languages". Note that the key should be all lowercase alphabetic characters with no numbers, spaces, hyphens or underscores. + messages: + - author: USER + messageType: CONTENT + fragments: + - text: What are the company holidays this year? + gptAgentExample: value: - type: array - description: | - List of type string or HypertextField. + agentConfig: + agent: GPT + messages: + - author: USER + messageType: CONTENT + fragments: + - text: Who was the first person to land on the moon? + required: true + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatResponse' + examples: + defaultExample: + value: + messages: + - author: GLEAN_AI + messageType: CONTENT + hasMoreFragments: false + agentConfig: + agent: DEFAULT + mode: DEFAULT + fragments: + - text: There are no holidays! + streamingExample: + value: + messages: + - author: GLEAN_AI + messageType: CONTENT + agentConfig: + agent: DEFAULT + mode: DEFAULT + hasMoreFragments: true + fragments: null + - author: GLEAN_AI + messageType: CONTENT + agentConfig: + agent: DEFAULT + mode: DEFAULT + hasMoreFragments: true + fragments: null + - author: GLEAN_AI + messageType: CONTENT + agentConfig: + agent: DEFAULT + mode: DEFAULT + hasMoreFragments: true + fragments: + - text: e are + - author: GLEAN_AI + messageType: CONTENT + agentConfig: + agent: DEFAULT + mode: DEFAULT + hasMoreFragments: true + fragments: + - text: no hol + - author: GLEAN_AI + messageType: CONTENT + agentConfig: + agent: DEFAULT + mode: DEFAULT + hasMoreFragments: false + fragments: + - text: idays! + updateResponse: + value: + messages: + - author: GLEAN_AI + messageType: UPDATE + agentConfig: + agent: DEFAULT + mode: DEFAULT + fragments: + - text: '**Reading:**' + - structuredResults: + - document: + id: '123' + title: Company Handbook + citationResponse: + value: + messages: + - author: GLEAN_AI + messageType: CONTENT + agentConfig: + agent: DEFAULT + mode: DEFAULT + citations: + - sourceDocument: + id: '123' + title: Company Handbook + referenceRanges: + - textRange: + startIndex: 0 + endIndex: 12 + type: CITATION + "202": + description: | + Request accepted but not yet processed. Returned when another + in-flight request is already running for the same chat session; + the body's `queuedRequestId` identifies the deferred run and + output will be persisted to the chat session referenced by + `chatId`. + content: + application/json: + schema: + $ref: '#/components/schemas/ChatResponse' + examples: + queuedExample: + value: + chatId: abc123 + queuedRequestId: qr-xyz + isSavedToChatHistory: true + "400": + description: Invalid request + "401": + description: Not Authorized + "408": + description: Request Timeout + "429": + description: Too Many Requests + x-visibility: Public + x-codegen-request-body-name: payload + x-speakeasy-group: client.chat + x-speakeasy-name-override: create + x-speakeasy-usage-example: true + /rest/api/v1/deleteallchats: + post: + operationId: deleteallchats + summary: Deletes all saved Chats owned by a user + description: Deletes all saved Chats a user has had and all their contained conversational content. + tags: + - Chat + security: + - APIToken: [] + parameters: + - $ref: '#/components/parameters/locale' + - $ref: '#/components/parameters/timezoneOffset' + responses: + "200": + description: OK + "400": + description: Invalid request + "401": + description: Not Authorized + "403": + description: Forbidden + x-visibility: Public + x-codegen-request-body-name: payload + x-speakeasy-name-override: deleteAll + x-speakeasy-group: client.chat + /rest/api/v1/deletechats: + post: + operationId: deletechats + summary: Deletes saved Chats + description: Deletes saved Chats and all their contained conversational content. + tags: + - Chat + security: + - APIToken: [] + parameters: + - $ref: '#/components/parameters/locale' + - $ref: '#/components/parameters/timezoneOffset' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteChatsRequest' + required: true + x-exportParamName: Request + responses: + "200": + description: OK + "400": + description: Invalid request + "401": + description: Not Authorized + "403": + description: Forbidden + "429": + description: Too Many Requests + x-visibility: Public + x-codegen-request-body-name: payload + x-speakeasy-name-override: delete + x-speakeasy-group: client.chat + /rest/api/v1/getchat: + post: + operationId: getchat + summary: Retrieves a Chat + description: Retrieves the chat history between Glean Assistant and the user for a given Chat. + tags: + - Chat + security: + - APIToken: [] + parameters: + - $ref: '#/components/parameters/locale' + - $ref: '#/components/parameters/timezoneOffset' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GetChatRequest' + required: true + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/GetChatResponse' + "400": + description: Invalid request + "401": + description: Not Authorized + "403": + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/AccessRequestPermissionDeniedResponse' + "429": + description: Too Many Requests + x-visibility: Public + x-codegen-request-body-name: payload + x-speakeasy-name-override: retrieve + x-speakeasy-group: client.chat + /rest/api/v1/listchats: + post: + operationId: listchats + summary: Retrieves all saved Chats + description: Retrieves all the saved Chats between Glean Assistant and the user. The returned Chats contain only metadata and no conversational content. + tags: + - Chat + security: + - APIToken: [] + parameters: + - $ref: '#/components/parameters/locale' + - $ref: '#/components/parameters/timezoneOffset' + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ListChatsResponse' + "401": + description: Not Authorized + "403": + description: Forbidden + "429": + description: Too Many Requests + x-visibility: Public + x-codegen-request-body-name: payload + x-speakeasy-name-override: list + x-speakeasy-group: client.chat + /rest/api/v1/getchatapplication: + post: + operationId: getchatapplication + summary: Gets the metadata for a custom Chat application + description: Gets the Chat application details for the specified application ID. + tags: + - Chat + security: + - APIToken: [] + parameters: + - $ref: '#/components/parameters/locale' + - $ref: '#/components/parameters/timezoneOffset' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GetChatApplicationRequest' + required: true + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/GetChatApplicationResponse' + "400": + description: Invalid request + "401": + description: Not Authorized + "403": + description: Forbidden + x-visibility: Preview + x-codegen-request-body-name: payload + x-speakeasy-name-override: retrieveApplication + x-speakeasy-group: client.chat + /rest/api/v1/uploadchatfiles: + post: + operationId: uploadchatfiles + summary: Upload files for Chat + description: Upload files for Chat. + tags: + - Chat + security: + - APIToken: [] + parameters: + - $ref: '#/components/parameters/locale' + - $ref: '#/components/parameters/timezoneOffset' + requestBody: + content: + multipart/form-data: + schema: + $ref: '#/components/schemas/UploadChatFilesRequest' + required: true + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/UploadChatFilesResponse' + "400": + description: Invalid request + "401": + description: Not Authorized + "403": + description: Forbidden + "429": + description: Too Many Requests + x-visibility: Public + x-speakeasy-name-override: uploadFiles + x-speakeasy-group: client.chat + /rest/api/v1/getchatfiles: + post: + operationId: getchatfiles + summary: Get files uploaded by a user for Chat + description: Get files uploaded by a user for Chat. + tags: + - Chat + security: + - APIToken: [] + parameters: + - $ref: '#/components/parameters/locale' + - $ref: '#/components/parameters/timezoneOffset' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GetChatFilesRequest' + required: true + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/GetChatFilesResponse' + "400": + description: Invalid request + "401": + description: Not Authorized + "403": + description: Forbidden + "429": + description: Too Many Requests + x-visibility: Public + x-speakeasy-name-override: retrieveFiles + x-speakeasy-group: client.chat + /rest/api/v1/deletechatfiles: + post: + operationId: deletechatfiles + summary: Delete files uploaded by a user for chat + description: Delete files uploaded by a user for Chat. + tags: + - Chat + security: + - APIToken: [] + parameters: + - $ref: '#/components/parameters/locale' + - $ref: '#/components/parameters/timezoneOffset' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteChatFilesRequest' + required: true + responses: + "200": + description: OK + "400": + description: Invalid request + "401": + description: Not Authorized + "403": + description: Forbidden + "429": + description: Too Many Requests + x-visibility: Public + x-speakeasy-name-override: deleteFiles + x-speakeasy-group: client.chat + /rest/api/v1/chat-files/{fileId}: + get: + operationId: getChatFile + summary: Download a chat file + description: | + Download the raw content of a file generated or uploaded during a chat session (for example, an image produced by the assistant). Returns the file bytes with a Content-Type header matching the file's MIME type. + tags: + - Chat + security: + - APIToken: [] + parameters: + - name: fileId + in: path + description: Identifier of the chat file to download. + required: true + schema: + type: string + - name: preview + in: query + description: | + When true and the file is a PDF, the response is served inline (Content-Disposition: inline) instead of as an attachment. + required: false + schema: + type: boolean + responses: + "200": + description: File content. + content: + application/octet-stream: + schema: + type: string + format: binary + "400": + description: File ID missing from path. + "401": + description: Missing or invalid API token. + "403": + description: Caller does not have access to the file. + "404": + description: File not found. + "500": + description: Internal server error. + x-visibility: Public + x-speakeasy-name-override: retrieveFile + x-speakeasy-group: client.chat + /rest/api/v1/agents: + post: + operationId: createAgent + summary: Create an agent + description: Create an agent. + tags: + - Agents + security: + - APIToken: [] + parameters: + - $ref: '#/components/parameters/locale' + - $ref: '#/components/parameters/timezoneOffset' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateWorkflowRequest' + required: true + responses: + "200": + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/CreateWorkflowResponse' + "400": + description: Bad request + "401": + description: Not Authorized + "403": + description: Forbidden + "500": + description: Internal server error + x-visibility: Preview + x-speakeasy-group: client.agents + x-speakeasy-name-override: create + /rest/api/v1/agents/{agent_id}: + get: + operationId: getAgent + summary: Retrieve an agent + description: Returns details of an [agent](https://developers.glean.com/agents/agents-api) created in the Agent Builder. + tags: + - Agents + security: + - APIToken: [] + parameters: + - $ref: '#/components/parameters/locale' + - $ref: '#/components/parameters/timezoneOffset' + - name: agent_id + in: path + description: The ID of the agent. + required: true + schema: + type: string + title: Agent ID + description: The ID of the agent. + responses: + "200": + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/Agent' + "400": + description: Bad request + "403": + description: Forbidden + "404": + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + "500": + description: Internal server error + x-visibility: Preview + x-speakeasy-group: client.agents + x-speakeasy-name-override: retrieve + post: + operationId: editAgent + summary: Edit an agent + description: Creates a draft or publishes an [agent](https://developers.glean.com/agents/agents-api). Use `isDraft=true` to save a draft, or `isDraft=false` (or omit) to publish immediately. Only draft and publish modes are supported. + tags: + - Agents + security: + - APIToken: [] + parameters: + - $ref: '#/components/parameters/locale' + - $ref: '#/components/parameters/timezoneOffset' + - name: agent_id + in: path + description: The ID of the agent. + required: true + schema: + type: string + title: Agent ID + description: The ID of the agent. + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EditWorkflowRequest' + required: true + responses: + "200": + description: Success + "400": + description: Bad request + "401": + description: Not Authorized + "403": + description: Forbidden + "404": + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + "500": + description: Internal server error + x-visibility: Preview + x-speakeasy-group: client.agents + x-speakeasy-name-override: update + /rest/api/v1/agents/{agent_id}/schemas: + get: + operationId: getAgentSchemas + summary: List an agent's schemas + description: Return [agent](https://developers.glean.com/agents/agents-api)'s input and output schemas. You can use these schemas to detect changes to an agent's input or output structure. + tags: + - Agents + security: + - APIToken: [] + parameters: + - $ref: '#/components/parameters/locale' + - $ref: '#/components/parameters/timezoneOffset' + - name: agent_id + in: path + description: The ID of the agent. + required: true + schema: + type: string + title: Agent Id + description: The ID of the agent. + responses: + "200": + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/AgentSchemas' + "400": + description: Bad request + "403": + description: Forbidden + "404": + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + "422": + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + "500": + description: Internal server error + x-visibility: Preview + x-speakeasy-group: client.agents + x-speakeasy-name-override: retrieveSchemas + /rest/api/v1/agents/{agent_id}/import: + post: + operationId: importAgent + summary: Import an agent + description: 'Imports an [agent](https://developers.glean.com/agents/agents-api) from its on-disk folder representation (spec.yaml, instructions.md, skills/, subagents/) packaged as a zip, and creates or updates the agent. Inverse of the export flow: the folder-to-schema conversion runs server-side. The bundle must contain only regular files; symlinks are resolved by the caller at packaging time.' + tags: + - Agents + security: + - APIToken: [] + parameters: + - $ref: '#/components/parameters/locale' + - $ref: '#/components/parameters/timezoneOffset' + - name: agent_id + in: path + description: The ID of the agent to create or update. + required: true + schema: + type: string + title: Agent ID + description: The ID of the agent to create or update. + requestBody: + content: + multipart/form-data: + schema: + $ref: '#/components/schemas/ImportAgentRequest' + required: true + responses: + "200": + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/ImportAgentResponse' + "400": + description: Bad request + "401": + description: Not Authorized + "403": + description: Forbidden + "404": + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + "500": + description: Internal server error + x-visibility: Preview + x-speakeasy-group: client.agents + x-speakeasy-name-override: import + /rest/api/v1/agents/search: + post: + operationId: searchAgents + summary: Search agents + description: Search for [agents](https://developers.glean.com/agents/agents-api) by agent name. + tags: + - Agents + security: + - APIToken: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SearchAgentsRequest' + required: true + responses: + "200": + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/SearchAgentsResponse' + "400": + description: Bad request + "403": + description: Forbidden + "404": + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + "422": + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + "500": + description: Internal server error + x-visibility: Preview + x-speakeasy-group: client.agents + x-speakeasy-name-override: list + /rest/api/v1/agents/runs/stream: + post: + operationId: createAndStreamRun + summary: Create an agent run and stream the response + description: 'Executes an [agent](https://developers.glean.com/agents/agents-api) run and returns the result as a stream of server-sent events (SSE). **Note**: If the agent uses an input form trigger, all form fields (including optional fields) must be included in the `input` object.' + tags: + - Agents + security: + - APIToken: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AgentRunCreate' + required: true + responses: + "200": + description: Success + content: + text/event-stream: + schema: + type: string + description: The server will send a stream of events in server-sent events (SSE) format. If execution fails after the stream has started, the stream may terminate with an error message in a normal `message` event. + example: | + id: 1 + event: message + data: {"messages":[{"role":"GLEAN_AI","content":[{"text":"Hello","type":"text"}]}]} - HypertextField is defined as - ``` - { - anchor: string, // Anchor text for the hypertext field. - hyperlink: string, // URL for the hypertext field. - } - ``` - Example: ```{"anchor":"Glean","hyperlink":"https://glean.com"}``` + id: 2 + event: message + data: {"messages":[{"role":"GLEAN_AI","content":[{"text":",","type":"text"}]}]} - When OpenAPI Generator supports oneOf, we will semantically enforce this in the docs. + id: 3 + event: message + data: {"messages":[{"role":"GLEAN_AI","content":[{"text":" I'm","type":"text"}]}]} - **Note**: If using the Python SDK to pass in a list of strings, the value may need to be a list of dictionaries. In that case, the key in that dictionary will be ignored. - Example: ```"languages": [{"lang":"English","lang":"Spanish",...}]```. In this case, the key "lang" will be ignored and can even be passed in as an empty string. - items: - type: object - description: Either a string or HypertextField. When OpenAPI Generator supports oneOf, we can semantically enforce this in the docs. - HypertextField: - type: object - properties: - anchor: - type: string - description: Anchor text for the hypertext field. - hyperlink: - type: string - description: URL for the hypertext field. - EmployeeInfoDefinition: - type: object - description: Describes employee info - properties: - email: - type: string - description: The employee's email - firstName: - type: string - description: | - The first name of the employee. **Note**: The value cannot be empty - lastName: - type: string - description: | - The last name of the employee. **Note**: The value cannot be empty - preferredName: - type: string - description: The preferred name or nickname of the employee - id: - type: string - description: | - **[Advanced]** A unique universal internal identifier for the employee. This is solely used for understanding manager relationships along with `managerId`. - phoneNumber: - type: string - description: The employee's phone number. - location: - type: string - description: The employee's location (city/office name etc). - deprecated: true - structuredLocation: - description: Detailed location with information about country, state, city etc. - $ref: "#/components/schemas/StructuredLocation" - title: - type: string - description: The employee's role title. - photoUrl: - type: string - format: uri - description: The employee's profile pic - businessUnit: - type: string - description: Typically the highest level organizational unit; generally applies to bigger companies with multiple distinct businesses. - department: - type: string - description: An organizational unit where everyone has a similar task, e.g. `Engineering`. - datasourceProfiles: - type: array - description: The datasource profiles of the employee, e.g. `Slack`,`Github`. - items: - $ref: "#/components/schemas/DatasourceProfile" - teams: - type: array - description: Info about the employee's team(s) - items: - $ref: "#/components/schemas/EmployeeTeamInfo" - startDate: - type: string - format: date - description: The date when the employee started - endDate: - type: string - format: date - description: If a former employee, the last date of employment. - bio: - type: string - description: Short biography or mission statement of the employee. - pronoun: - type: string - description: She/her, He/his or other pronoun. - alsoKnownAs: - type: array - description: Other names associated with the employee. - items: - type: string - profileUrl: - type: string - description: Link to internal company person profile. - socialNetworks: - type: array - description: List of social network profiles. - items: - $ref: "#/components/schemas/SocialNetworkDefinition" - managerEmail: - type: string - description: The email of the employee's manager - managerId: - type: string - description: | - **[Advanced]** A unique universal internal identifier for the employee's manager. This is solely used in conjunction with `id`. - type: - type: string - description: The type of the employee, an enum of `FULL_TIME`, `CONTRACTOR`, `NON_EMPLOYEE` - default: FULL_TIME - relationships: - type: array - description: List of unidirectional relationships with other employees. E.g. this employee (`A`) is a CHIEF_OF_STAFF to another employee (`B`); or this employee (`A`) is an EXECUTIVE_ASSISTANT of another employee (`C`). The mapping should be attached to `A`'s profile. - items: - $ref: "#/components/schemas/EntityRelationship" - status: - type: string - description: The status of the employee, an enum of `CURRENT`, `FUTURE`, `EX` - default: CURRENT - additionalFields: - type: array - description: List of additional fields with more information about the employee. - items: - $ref: "#/components/schemas/AdditionalFieldDefinition" - required: - - department - - email - EmployeeAndVersionDefinition: - type: object - description: describes info about an employee and optional version for that info - properties: - employee: - description: Info about the employee - $ref: "#/components/schemas/EmployeeInfoDefinition" - version: - description: Version number for the employee object. If absent or 0 then no version checks are done - type: integer - format: int64 - required: - - info - EmployeeTeamInfo: - type: object - description: Information about which team an employee belongs to - properties: - id: - type: string - description: unique identifier for this team - name: - type: string - description: Team name - url: - type: string - format: uri - description: Link to internal company team page - EntityRelationship: - type: object - description: Describes a relationship edge between a source and destination entity - required: - - name - - email - properties: - name: - type: string - description: The title or type of relationship. Currently an enum of `CHIEF_OF_STAFF`, `EXECUTIVE_ASSISTANT` - email: - type: string - description: Email of the person with whom the relationship exists. Per the example above, either `B` or `C`'s email depending on the relationship. - TeamMember: - type: object - description: Information about a team's member - properties: - email: - type: string - description: The member's email - format: email - relationship: - type: string - description: The member's relationship to the team, an enum of `MEMBER`, `MANAGER`, `LEAD`, `POINT_OF_CONTACT`, `OTHER` - default: MEMBER - join_date: - type: string - format: date - description: The member's start date - required: - - email - TeamInfoDefinition: - type: object - description: Information about an employee's team - properties: - id: - type: string - description: The unique ID of the team - name: - type: string - description: Human-readable team name - description: - type: string - description: The description of this team - businessUnit: - type: string - description: Typically the highest level organizational unit; generally applies to bigger companies with multiple distinct businesses. - department: - type: string - description: An organizational unit where everyone has a similar task, e.g. `Engineering`. - photoUrl: - type: string - format: uri - description: A link to the team's photo - externalLink: - type: string - format: uri - description: | - A link to an external team page. If set, team results will link to it. - emails: - type: array - description: The emails of the team - items: - $ref: "#/components/schemas/TeamEmail" - datasourceProfiles: - type: array - description: The datasource profiles of the team, e.g. `Slack`,`Github`. - items: - $ref: "#/components/schemas/DatasourceProfile" - members: - type: array - description: The members of the team - items: - $ref: "#/components/schemas/TeamMember" - additionalFields: - type: array - description: List of additional fields with more information about the team. - items: - $ref: "#/components/schemas/AdditionalFieldDefinition" - required: - - id - - members - - name - IndexTeamRequest: - type: object - description: Info about a team and optional version for that info - properties: - team: - description: Info about the team - $ref: "#/components/schemas/TeamInfoDefinition" - version: - description: Version number for the team object. If absent or 0 then no version checks are done - type: integer - format: int64 - required: - - team - BulkIndexShortcutsRequest: - type: object - description: Describes the request body of the /bulkindexshortcuts API call - allOf: - - $ref: "#/components/schemas/BulkIndexRequest" - - type: object - properties: - shortcuts: - description: Batch of shortcuts information - type: array - items: - $ref: "#/components/schemas/ExternalShortcut" - required: - - shortcuts - UploadShortcutsRequest: - type: object - description: Describes the request body of the /uploadshortcuts API call - allOf: - - $ref: "#/components/schemas/BulkIndexRequest" - - type: object - properties: - shortcuts: - description: Batch of shortcuts information - type: array - items: - $ref: "#/components/schemas/IndexingShortcut" - required: - - shortcuts - DebugDatasourceStatusResponse: - type: object - description: Describes the response body of the /debug/{datasource}/status API call - properties: - documents: - type: object - properties: - bulkUploadHistory: - type: object - $ref: "#/components/schemas/BulkUploadHistoryEventList" - counts: - type: object - properties: - uploaded: - type: array - items: - $ref: "#/components/schemas/DatasourceObjectTypeDocumentCountEntry" - description: | - A list of object types and corresponding upload counts. Note: This data may be cached and could be up to 3 hours stale. - indexed: - type: array - description: The number of documents indexed, grouped by objectType - items: - $ref: "#/components/schemas/DatasourceObjectTypeDocumentCountEntry" - processingHistory: - $ref: "#/components/schemas/ProcessingHistoryEventList" - identity: - type: object - properties: - processingHistory: - $ref: "#/components/schemas/ProcessingHistoryEventList" - users: - $ref: "#/components/schemas/DebugDatasourceStatusIdentityResponseComponent" - groups: - $ref: "#/components/schemas/DebugDatasourceStatusIdentityResponseComponent" - memberships: - $ref: "#/components/schemas/DebugDatasourceStatusIdentityResponseComponent" - datasourceVisibility: - type: string - description: The visibility of the datasource, an enum of VISIBLE_TO_ALL, VISIBLE_TO_TEST_GROUP, NOT_VISIBLE - enum: - - ENABLED_FOR_ALL - - ENABLED_FOR_TEST_GROUP - - NOT_ENABLED - example: ENABLED_FOR_ALL - DebugDatasourceStatusIdentityResponseComponent: - type: object - properties: - bulkUploadHistory: - type: object - $ref: "#/components/schemas/BulkUploadHistoryEventList" - counts: - type: object - properties: - uploaded: - type: integer - description: The number of users/groups/memberships uploaded - example: 15 - DatasourceObjectTypeDocumentCountEntry: - type: object - properties: - objectType: - type: string - description: The object type of the document - example: Article - count: - type: integer - description: The number of documents of the corresponding objectType - example: 15 - BulkUploadHistoryEvent: - type: object - description: Information about a successful bulk upload - properties: - uploadId: - type: string - description: The unique ID of the upload - example: upload-id-content-1707403081 - startTime: - type: string - description: The start time of the upload in ISO 8601 format - example: "2021-08-06T17:58:01.000Z" - endTime: - type: string - description: The end time of the upload in ISO 8601 format, 'NA' if the upload is still active - example: "2021-08-06T18:58:01.000Z" - status: - type: string - description: The status of the upload, an enum of ACTIVE, SUCCESSFUL - enum: - - ACTIVE - - SUCCESSFUL - example: SUCCESSFUL - processingState: - type: string - description: The current state of the upload, an enum of UNAVAILABLE, UPLOAD STARTED, UPLOAD IN PROGRESS, UPLOAD COMPLETED, DELETION PAUSED, INDEXING COMPLETED - enum: - - UNAVAILABLE - - UPLOAD STARTED - - UPLOAD IN PROGRESS - - UPLOAD COMPLETED - - DELETION PAUSED - - INDEXING COMPLETED - example: UPLOAD COMPLETED - BulkUploadHistoryEventList: - description: Information about active and recent successful uploads for the datasource + id: 4 + event: message + data: {"messages":[{"role":"GLEAN_AI","content":[{"text":" your","type":"text"}]}]} + "400": + description: Bad request + "403": + description: Forbidden + "404": + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + "409": + description: Conflict + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + "422": + description: Returned when the agent has tools the caller has not authorized. The response body enumerates the tools that need connecting. + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedAgentToolsError' + "500": + description: Internal server error + x-visibility: Preview + x-speakeasy-group: client.agents + x-speakeasy-name-override: runStream + /rest/api/v1/agents/runs/wait: + post: + operationId: createAndWaitRun + summary: Create an agent run and wait for the response + description: 'Executes an [agent](https://developers.glean.com/agents/agents-api) run and returns the final response. **Note**: If the agent uses an input form trigger, all form fields (including optional fields) must be included in the `input` object.' + tags: + - Agents + security: + - APIToken: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AgentRunCreate' + required: true + responses: + "200": + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/AgentRunWaitResponse' + "400": + description: Bad request + "403": + description: Forbidden + "404": + description: Not Found + "409": + description: Conflict + "422": + description: Returned when the agent has tools the caller has not authorized. The response body enumerates the tools that need connecting. + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedAgentToolsError' + "500": + description: Internal server error + x-visibility: Preview + x-speakeasy-group: client.agents + x-speakeasy-name-override: run + /rest/api/v1/addcollectionitems: + post: + operationId: addcollectionitems + summary: Add Collection item + description: Add items to a Collection. + tags: + - Collections + security: + - APIToken: [] + parameters: + - $ref: '#/components/parameters/locale' + requestBody: + description: Data describing the add operation. + content: + application/json: + schema: + $ref: '#/components/schemas/AddCollectionItemsRequest' + required: true + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AddCollectionItemsResponse' + "400": + description: Invalid request + "401": + description: Not Authorized + "429": + description: Too Many Requests + x-visibility: Public + x-codegen-request-body-name: payload + x-speakeasy-name-override: addItems + x-speakeasy-group: client.collections + /rest/api/v1/createcollection: + post: + operationId: createcollection + summary: Create Collection + description: Create a publicly visible (empty) Collection of documents. + tags: + - Collections + security: + - APIToken: [] + parameters: + - $ref: '#/components/parameters/locale' + requestBody: + description: Collection content plus any additional metadata for the request. + content: + application/json: + schema: + $ref: '#/components/schemas/CreateCollectionRequest' + required: true + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/CreateCollectionResponse' + "400": + description: Invalid request + "401": + description: Not Authorized + "422": + description: Semantic error + content: + application/json: + schema: + $ref: '#/components/schemas/CollectionError' + "429": + description: Too Many Requests + x-visibility: Public + x-codegen-request-body-name: payload + x-speakeasy-group: client.collections + x-speakeasy-name-override: create + /rest/api/v1/deletecollection: + post: + operationId: deletecollection + summary: Delete Collection + description: Delete a Collection given the Collection's ID. + tags: + - Collections + security: + - APIToken: [] + parameters: + - $ref: '#/components/parameters/locale' + requestBody: + description: DeleteCollection request + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteCollectionRequest' + required: true + x-exportParamName: Request + responses: + "200": + description: OK + "400": + description: Invalid request + "401": + description: Not Authorized + "422": + description: Semantic error + content: + application/json: + schema: + $ref: '#/components/schemas/CollectionError' + "429": + description: Too Many Requests + x-visibility: Public + x-codegen-request-body-name: payload + x-speakeasy-name-override: delete + x-speakeasy-group: client.collections + /rest/api/v1/deletecollectionitem: + post: + operationId: deletecollectionitem + summary: Delete Collection item + description: Delete a single item from a Collection. + tags: + - Collections + security: + - APIToken: [] + parameters: + - $ref: '#/components/parameters/locale' + requestBody: + description: Data describing the delete operation. + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteCollectionItemRequest' + required: true + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteCollectionItemResponse' + "400": + description: Invalid request + "401": + description: Not Authorized + "422": + description: Failed to save deletion + "429": + description: Too Many Requests + x-visibility: Public + x-codegen-request-body-name: payload + x-speakeasy-name-override: deleteItem + x-speakeasy-group: client.collections + /rest/api/v1/editcollection: + post: + operationId: editcollection + summary: Update Collection + description: Update the properties of an existing Collection. + tags: + - Collections + security: + - APIToken: [] + parameters: + - $ref: '#/components/parameters/locale' + requestBody: + description: Collection content plus any additional metadata for the request. + content: + application/json: + schema: + $ref: '#/components/schemas/EditCollectionRequest' + required: true + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/EditCollectionResponse' + "400": + description: Invalid request + "401": + description: Not Authorized + "422": + description: Semantic error + content: + application/json: + schema: + $ref: '#/components/schemas/CollectionError' + "429": + description: Too Many Requests + x-visibility: Public + x-codegen-request-body-name: payload + x-speakeasy-name-override: update + x-speakeasy-group: client.collections + /rest/api/v1/editcollectionitem: + post: + operationId: editcollectionitem + summary: Update Collection item + description: Update the URL, Glean Document ID, description of an item within a Collection given its ID. + tags: + - Collections + security: + - APIToken: [] + parameters: + - $ref: '#/components/parameters/locale' + requestBody: + description: Edit Collection Items request + content: + application/json: + schema: + $ref: '#/components/schemas/EditCollectionItemRequest' + required: true + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/EditCollectionItemResponse' + "400": + description: Invalid request + "401": + description: Not Authorized + "429": + description: Too Many Requests + x-visibility: Public + x-codegen-request-body-name: payload + x-speakeasy-name-override: updateItem + x-speakeasy-group: client.collections + /rest/api/v1/getcollection: + post: + operationId: getcollection + summary: Read Collection + description: Read the details of a Collection given its ID. Does not fetch items in this Collection. + tags: + - Collections + security: + - APIToken: [] + parameters: + - $ref: '#/components/parameters/locale' + requestBody: + description: GetCollection request + content: + application/json: + schema: + $ref: '#/components/schemas/GetCollectionRequest' + required: true + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/GetCollectionResponse' + "400": + description: Invalid request + "401": + description: Not Authorized + "429": + description: Too Many Requests + x-visibility: Preview + x-codegen-request-body-name: payload + x-speakeasy-name-override: retrieve + x-speakeasy-group: client.collections + /rest/api/v1/listcollections: + post: + operationId: listcollections + summary: List Collections + description: List all existing Collections. + tags: + - Collections + security: + - APIToken: [] + parameters: + - $ref: '#/components/parameters/locale' + requestBody: + description: ListCollections request + content: + application/json: + schema: + $ref: '#/components/schemas/ListCollectionsRequest' + required: true + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ListCollectionsResponse' + "400": + description: Invalid request + "401": + description: Not Authorized + "429": + description: Too Many Requests + x-visibility: Public + x-codegen-request-body-name: payload + x-speakeasy-name-override: list + x-speakeasy-group: client.collections + /rest/api/v1/getdocpermissions: + post: + operationId: getdocpermissions + summary: Read document permissions + description: Read the emails of all users who have access to the given document. + tags: + - Documents + security: + - APIToken: [] + parameters: + - $ref: '#/components/parameters/locale' + requestBody: + description: Document permissions request + content: + application/json: + schema: + $ref: '#/components/schemas/GetDocPermissionsRequest' + required: true + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/GetDocPermissionsResponse' + "400": + description: Invalid request + "401": + description: Not Authorized + "403": + description: Forbidden + "429": + description: Too Many Requests + x-visibility: Preview + x-codegen-request-body-name: payload + x-speakeasy-name-override: retrievePermissions + x-speakeasy-group: client.documents + /rest/api/v1/getdocuments: + post: + operationId: getdocuments + summary: Read documents + description: Read the documents including metadata (does not include enhanced metadata via `/documentmetadata`) for the given list of Glean Document IDs or URLs specified in the request. + tags: + - Documents + security: + - APIToken: [] + parameters: + - $ref: '#/components/parameters/locale' + requestBody: + description: Information about documents requested. + content: + application/json: + schema: + $ref: '#/components/schemas/GetDocumentsRequest' + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/GetDocumentsResponse' + "400": + description: Invalid request + "401": + description: Not Authorized + "403": + description: Documents does not exist, or user cannot access documents. + "429": + description: Too Many Requests + x-visibility: Public + x-codegen-request-body-name: payload + x-speakeasy-name-override: retrieve + x-speakeasy-group: client.documents + /rest/api/v1/getdocumentsbyfacets: + post: + operationId: getdocumentsbyfacets + summary: Read documents by facets + description: Read the documents including metadata (does not include enhanced metadata via `/documentmetadata`) macthing the given facet conditions. + tags: + - Documents + security: + - APIToken: [] + parameters: + - $ref: '#/components/parameters/locale' + requestBody: + description: Information about facet conditions for documents to be retrieved. + content: + application/json: + schema: + $ref: '#/components/schemas/GetDocumentsByFacetsRequest' + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/GetDocumentsByFacetsResponse' + "400": + description: Invalid request + "401": + description: Not Authorized + "404": + description: Not Found + "429": + description: Too Many Requests + x-visibility: Preview + x-codegen-request-body-name: payload + x-speakeasy-name-override: retrieveByFacets + x-speakeasy-group: client.documents + /rest/api/v1/insights: + post: + operationId: insights + summary: Get insights + description: Gets the aggregate usage insights data displayed in the Insights Dashboards. + tags: + - Insights + security: + - APIToken: [] + parameters: + - $ref: '#/components/parameters/locale' + requestBody: + description: Includes request parameters for insights requests. + content: + application/json: + schema: + $ref: '#/components/schemas/InsightsRequest' + required: true + x-exportParamName: InsightsRequest + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/InsightsResponse' + "400": + description: Invalid request + "401": + description: Not Authorized + "429": + description: Too Many Requests + x-visibility: Public + x-codegen-request-body-name: payload + x-speakeasy-name-override: retrieve + x-speakeasy-group: client.insights + /rest/api/v1/messages: + post: + operationId: messages + summary: Read messages + description: Retrieves list of messages from messaging/chat datasources (e.g. Slack, Teams). + tags: + - Messages + security: + - APIToken: [] + parameters: + - $ref: '#/components/parameters/locale' + requestBody: + description: Includes request params such as the id for channel/message and direction. + content: + application/json: + schema: + $ref: '#/components/schemas/MessagesRequest' + required: true + x-exportParamName: MessagesRequest + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/MessagesResponse' + "400": + description: Invalid request + "401": + description: Not Authorized + "429": + description: Too Many Requests + x-visibility: Preview + x-codegen-request-body-name: payload + x-speakeasy-name-override: retrieve + x-speakeasy-group: client.messages + /rest/api/v1/editpin: + post: + operationId: editpin + summary: Update pin + description: Update an existing user-generated pin. + tags: + - Pins + security: + - APIToken: [] + parameters: + - $ref: '#/components/parameters/locale' + requestBody: + description: Edit pins request + content: + application/json: + schema: + $ref: '#/components/schemas/EditPinRequest' + required: true + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PinDocument' + "400": + description: Invalid request + "401": + description: Not Authorized + "429": + description: Too Many Requests + x-visibility: Public + x-codegen-request-body-name: payload + x-speakeasy-name-override: update + x-speakeasy-group: client.pins + /rest/api/v1/getpin: + post: + operationId: getpin + summary: Read pin + description: Read pin details given its ID. + tags: + - Pins + security: + - APIToken: [] + parameters: + - $ref: '#/components/parameters/locale' + requestBody: + description: Get pin request + content: + application/json: + schema: + $ref: '#/components/schemas/GetPinRequest' + required: true + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/GetPinResponse' + "400": + description: Invalid request + "401": + description: Not Authorized + "429": + description: Too Many Requests + x-visibility: Public + x-codegen-request-body-name: payload + x-speakeasy-name-override: retrieve + x-speakeasy-group: client.pins + /rest/api/v1/listpins: + post: + operationId: listpins + summary: List pins + description: Lists all pins. + tags: + - Pins + security: + - APIToken: [] + parameters: + - $ref: '#/components/parameters/locale' + requestBody: + description: List pins request + content: + application/json: + schema: + type: object + required: true + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ListPinsResponse' + "400": + description: Invalid request + "401": + description: Not Authorized + "429": + description: Too Many Requests + x-visibility: Public + x-codegen-request-body-name: payload + x-speakeasy-name-override: list + x-speakeasy-group: client.pins + /rest/api/v1/pin: + post: + operationId: pin + summary: Create pin + description: Pin a document as a result for a given search query.Pin results that are known to be a good match. + tags: + - Pins + security: + - APIToken: [] + parameters: + - $ref: '#/components/parameters/locale' + requestBody: + description: Details about the document and query for the pin. + content: + application/json: + schema: + $ref: '#/components/schemas/PinRequest' + required: true + x-exportParamName: PinDocument + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PinDocument' + "400": + description: Invalid request + "401": + description: Not Authorized + "429": + description: Too Many Requests + x-visibility: Public + x-codegen-request-body-name: payload + x-speakeasy-name-override: create + x-speakeasy-group: client.pins + /rest/api/v1/unpin: + post: + operationId: unpin + summary: Delete pin + description: Unpin a previously pinned result. + tags: + - Pins + security: + - APIToken: [] + parameters: + - $ref: '#/components/parameters/locale' + requestBody: + description: Details about the pin being unpinned. + content: + application/json: + schema: + $ref: '#/components/schemas/Unpin' + required: true + x-exportParamName: Unpin + responses: + "200": + description: OK + "400": + description: Invalid request + "401": + description: Not Authorized + "403": + description: Forbidden from unpinning someone else's pin + "429": + description: Too Many Requests + x-visibility: Public + x-codegen-request-body-name: payload + x-speakeasy-name-override: remove + x-speakeasy-group: client.pins + /rest/api/v1/adminsearch: + post: + operationId: adminsearch + summary: Search the index (admin) + description: Retrieves results for search query without respect for permissions. This is available only to privileged users. + tags: + - Search + security: + - APIToken: [] + parameters: + - $ref: '#/components/parameters/locale' + requestBody: + description: Admin search request + content: + application/json: + schema: + $ref: '#/components/schemas/SearchRequest' + required: true + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/SearchResponse' + "400": + description: Invalid request + "401": + description: Not Authorized + "403": + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorInfo' + "422": + description: Invalid Query + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorInfo' + "429": + description: Too Many Requests + x-visibility: Preview + x-codegen-request-body-name: payload + x-speakeasy-group: client.search + x-speakeasy-name-override: queryAsAdmin + /rest/api/v1/autocomplete: + post: + operationId: autocomplete + summary: Autocomplete + description: Retrieve query suggestions, operators and documents for the given partially typed query. + tags: + - Search + security: + - APIToken: [] + parameters: + - $ref: '#/components/parameters/locale' + requestBody: + description: Autocomplete request + content: + application/json: + schema: + $ref: '#/components/schemas/AutocompleteRequest' + required: true + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AutocompleteResponse' + "400": + description: Invalid request + "401": + description: Not Authorized + "429": + description: Too Many Requests + x-visibility: Public + x-codegen-request-body-name: payload + x-speakeasy-group: client.search + x-speakeasy-name-override: autocomplete + /rest/api/v1/feed: + post: + operationId: feed + summary: Feed of documents and events + description: The personalized feed/home includes different types of contents including suggestions, recents, calendar events and many more. + tags: + - Search + security: + - APIToken: [] + parameters: + - $ref: '#/components/parameters/locale' + requestBody: + description: Includes request params, client data and more for making user's feed. + content: + application/json: + schema: + $ref: '#/components/schemas/FeedRequest' + required: true + x-exportParamName: FeedRequest + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/FeedResponse' + "400": + description: Invalid request + "401": + description: Not Authorized + "408": + description: Request Timeout + "429": + description: Too Many Requests + x-visibility: Public + x-codegen-request-body-name: payload + x-speakeasy-name-override: retrieveFeed + x-speakeasy-group: client.search + /rest/api/v1/recommendations: + post: + operationId: recommendations + summary: Recommend documents + description: Retrieve recommended documents for the given URL or Glean Document ID. + tags: + - Search + security: + - APIToken: [] + parameters: + - $ref: '#/components/parameters/locale' + requestBody: + description: Recommendations request + content: + application/json: + schema: + $ref: '#/components/schemas/RecommendationsRequest' + required: true + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/RecommendationsResponse' + "202": + description: Accepted. The Retry-After header has a hint about when the response will be available + "204": + description: There are no recommendations for this URL + "400": + description: Invalid request + "401": + description: Not Authorized + "403": + description: Document does not exist or user cannot access document + "429": + description: Too Many Requests + x-visibility: Preview + x-codegen-request-body-name: payload + x-speakeasy-group: client.search + x-speakeasy-name-override: recommendations + /rest/api/v1/search: + post: + operationId: search + summary: Search + description: Retrieve results from the index for the given query and filters. + tags: + - Search + security: + - APIToken: [] + parameters: + - $ref: '#/components/parameters/locale' + requestBody: + description: Search request + content: + application/json: + schema: + $ref: '#/components/schemas/SearchRequest' + required: true + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/SearchResponse' + "400": + description: Invalid request + "401": + description: Not Authorized + "403": + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorInfo' + "408": + description: Request Timeout + "422": + description: Invalid Query + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorInfo' + "429": + description: Too Many Requests + x-visibility: Public + x-codegen-request-body-name: payload + x-speakeasy-group: client.search + x-speakeasy-name-override: query + /rest/api/v1/listentities: + post: + operationId: listentities + summary: List entities + description: List some set of details for all entities that fit the given criteria and return in the requested order. Does not support negation in filters, assumes relation type EQUALS. There is a limit of 10000 entities that can be retrieved via this endpoint, except when using FULL_DIRECTORY request type for people entities. + tags: + - Entities + security: + - APIToken: [] + parameters: + - $ref: '#/components/parameters/locale' + requestBody: + description: List people request + content: + application/json: + schema: + $ref: '#/components/schemas/ListEntitiesRequest' + required: true + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ListEntitiesResponse' + "400": + description: Invalid request + "401": + description: Not Authorized + "429": + description: Too Many Requests + x-visibility: Public + x-codegen-request-body-name: payload + x-speakeasy-group: client.entities + x-speakeasy-name-override: list + /rest/api/v1/people: + post: + operationId: people + summary: Read people + description: Read people details for the given IDs. + tags: + - Entities + security: + - APIToken: [] + parameters: + - $ref: '#/components/parameters/locale' + requestBody: + description: People request + content: + application/json: + schema: + $ref: '#/components/schemas/PeopleRequest' + required: true + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PeopleResponse' + "400": + description: Invalid request + "401": + description: Not Authorized + "429": + description: Too Many Requests + x-visibility: Public + x-codegen-request-body-name: payload + x-speakeasy-name-override: readPeople + x-speakeasy-group: client.entities + /rest/api/v1/people/{person_id}/photo: + get: + operationId: getPersonPhoto + summary: Get person photo + description: | + Returns the profile photo bytes for a person whose photo is stored in Glean (crawled from an identity source or user-uploaded via admin console). Photos hosted externally (e.g. Slack CDN) are not served by this endpoint; callers should follow the photoUrl from /people or /listentities directly. Responses include a Cache-Control header (max-age=3600) to reduce redundant fetches. + tags: + - Entities + security: + - APIToken: [] + parameters: + - name: person_id + in: path + description: The obfuscated ID of the person whose photo to retrieve. + required: true + schema: + type: string + - name: ds + in: query + description: | + Optional datasource override for crawled photos (e.g. AZURE, GDRIVE, OKTA). When omitted, the datasource is derived from the person's stored photo URL or the deployment's primary person datasource. + required: false + schema: + type: string + responses: + "200": + description: Photo bytes returned successfully. + headers: + Cache-Control: + description: Caching directive for the photo response. + schema: + type: string + example: public, max-age=3600 + content: + image/png: + schema: + type: string + format: binary + image/jpeg: + schema: + type: string + format: binary + "400": + description: Missing person_id parameter. + "401": + description: Not Authorized. + "404": + description: | + Person not found, person has no photo, or photo is not hosted by Glean (follow photoUrl from /people or /listentities directly). + "429": + description: Too Many Requests. + x-visibility: Public + x-speakeasy-name-override: retrievePersonPhoto + x-speakeasy-group: client.entities + /rest/api/v1/createshortcut: + post: + operationId: createshortcut + summary: Create shortcut + description: Create a user-generated shortcut that contains an alias and destination URL. + tags: + - Shortcuts + security: + - APIToken: [] + parameters: + - $ref: '#/components/parameters/locale' + requestBody: + description: CreateShortcut request + content: + application/json: + schema: + $ref: '#/components/schemas/CreateShortcutRequest' + required: true + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/CreateShortcutResponse' + "400": + description: Invalid request + "401": + description: Not Authorized + "429": + description: Too Many Requests + x-visibility: Public + x-codegen-request-body-name: payload + x-speakeasy-name-override: create + x-speakeasy-group: client.shortcuts + /rest/api/v1/deleteshortcut: + post: + operationId: deleteshortcut + summary: Delete shortcut + description: Delete an existing user-generated shortcut. + tags: + - Shortcuts + security: + - APIToken: [] + parameters: + - $ref: '#/components/parameters/locale' + requestBody: + description: DeleteShortcut request + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteShortcutRequest' + required: true + x-exportParamName: Request + responses: + "200": + description: OK + "400": + description: Invalid request + "401": + description: Not Authorized + "429": + description: Too Many Requests + x-visibility: Public + x-codegen-request-body-name: payload + x-speakeasy-name-override: delete + x-speakeasy-group: client.shortcuts + /rest/api/v1/getshortcut: + post: + operationId: getshortcut + summary: Read shortcut + description: Read a particular shortcut's details given its ID. + tags: + - Shortcuts + security: + - APIToken: [] + parameters: + - $ref: '#/components/parameters/locale' + requestBody: + description: GetShortcut request + content: + application/json: + schema: + $ref: '#/components/schemas/GetShortcutRequest' + required: true + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/GetShortcutResponse' + "400": + description: Invalid request + "401": + description: Not Authorized + "429": + description: Too Many Requests + x-visibility: Public + x-codegen-request-body-name: payload + x-speakeasy-group: client.shortcuts + x-speakeasy-name-override: retrieve + /rest/api/v1/listshortcuts: + post: + operationId: listshortcuts + summary: List shortcuts + description: List shortcuts editable/owned by the currently authenticated user. + tags: + - Shortcuts + security: + - APIToken: [] + parameters: + - $ref: '#/components/parameters/locale' + requestBody: + description: Filters, sorters, paging params required for pagination + content: + application/json: + schema: + $ref: '#/components/schemas/ListShortcutsPaginatedRequest' + required: true + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ListShortcutsPaginatedResponse' + "400": + description: Invalid request + "401": + description: Not Authorized + "429": + description: Too Many Requests + x-visibility: Public + x-codegen-request-body-name: payload + x-speakeasy-group: client.shortcuts + x-speakeasy-name-override: list + /rest/api/v1/updateshortcut: + post: + operationId: updateshortcut + summary: Update shortcut + description: Updates the shortcut with the given ID. + tags: + - Shortcuts + security: + - APIToken: [] + parameters: + - $ref: '#/components/parameters/locale' + requestBody: + description: Shortcut content. Id need to be specified for the shortcut. + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateShortcutRequest' + required: true + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateShortcutResponse' + "400": + description: Invalid request + "401": + description: Not Authorized + "429": + description: Too Many Requests + x-visibility: Public + x-codegen-request-body-name: payload + x-speakeasy-group: client.shortcuts + x-speakeasy-name-override: update + /rest/api/v1/summarize: + post: + operationId: summarize + summary: Summarize documents + description: Generate an AI summary of the requested documents. + tags: + - Summarize + security: + - APIToken: [] + parameters: + - $ref: '#/components/parameters/locale' + requestBody: + description: Includes request params such as the query and specs of the documents to summarize. + content: + application/json: + schema: + $ref: '#/components/schemas/SummarizeRequest' + required: true + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/SummarizeResponse' + "400": + description: Invalid request + "401": + description: Not Authorized + "429": + description: Too Many Requests + x-visibility: Public + x-codegen-request-body-name: payload + x-speakeasy-name-override: summarize + x-speakeasy-group: client.documents + /rest/api/v1/addverificationreminder: + post: + operationId: addverificationreminder + summary: Create verification + description: Creates a verification reminder for the document. Users can create verification reminders from different product surfaces. + tags: + - Verification + security: + - APIToken: [] + parameters: + - $ref: '#/components/parameters/locale' + requestBody: + description: Details about the reminder. + content: + application/json: + schema: + $ref: '#/components/schemas/ReminderRequest' + required: true + x-exportParamName: ReminderRequest + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/Verification' + "400": + description: Invalid request + "401": + description: Not Authorized + "403": + description: Document does not exist, does not support verification or user cannot access document + "429": + description: Too Many Requests + x-visibility: Public + x-codegen-request-body-name: payload + x-speakeasy-name-override: addReminder + x-speakeasy-group: client.verification + /rest/api/v1/listverifications: + post: + operationId: listverifications + summary: List verifications + description: Returns the information to be rendered in verification dashboard. Includes information for each document owned by user regarding their verifications. + tags: + - Verification + security: + - APIToken: [] + parameters: + - name: count + in: query + description: Maximum number of documents to return + required: false + schema: + type: integer + - $ref: '#/components/parameters/locale' + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/VerificationFeed' + "400": + description: Invalid request + "401": + description: Not Authorized + "429": + description: Too Many Requests + x-visibility: Public + x-codegen-request-body-name: payload + x-speakeasy-name-override: list + x-speakeasy-group: client.verification + /rest/api/v1/verify: + post: + operationId: verify + summary: Update verification + description: Verify documents to keep the knowledge up to date within customer corpus. + tags: + - Verification + security: + - APIToken: [] + parameters: + - $ref: '#/components/parameters/locale' + requestBody: + description: Details about the verification request. + content: + application/json: + schema: + $ref: '#/components/schemas/VerifyRequest' + required: true + x-exportParamName: VerifyRequest + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/Verification' + "400": + description: Invalid request + "401": + description: Not Authorized + "403": + description: Document does not exist, does not support verification or user cannot access document + "429": + description: Too Many Requests + x-visibility: Public + x-codegen-request-body-name: payload + x-speakeasy-name-override: verify + x-speakeasy-group: client.verification + /rest/api/v1/tools/list: + get: + summary: List available tools + description: Returns a filtered set of available tools based on optional tool name parameters. If no filters are provided, all available tools are returned. + tags: + - Tools + - Tools + security: + - APIToken: [] + parameters: + - name: toolNames + in: query + description: Optional array of tool names to filter by + required: false + style: form + explode: false + schema: type: array items: - $ref: "#/components/schemas/BulkUploadHistoryEvent" - DebugDocumentRequest: - type: object - description: Describes the request body of the /debug/{datasource}/document API call. - properties: - objectType: - type: string - description: Object type of the document to get the status for. - example: Article - docId: - type: string - description: Glean Document ID within the datasource to get the status for. - example: art123 - required: - - objectType - - docId - DebugDocumentResponse: - type: object - description: Describes the response body of the /debug/{datasource}/document API call - properties: - status: - type: object - description: Upload and indexing status of the document - $ref: "#/components/schemas/DocumentStatusResponse" - uploadedPermissions: - $ref: "#/components/schemas/DocumentPermissionsDefinition" - DebugDocumentsRequest: - type: object - description: Describes the request body of the /debug/{datasource}/documents API call. - properties: - debugDocuments: - type: array - description: Documents to fetch debug information for - items: - $ref: "#/components/schemas/DebugDocumentRequest" - required: - - debugDocuments - DebugDocumentsResponseItem: - type: object - description: Describes the response body of a single document in the /debug/{datasource}/documents API call - properties: - docId: - type: string - description: Id of the document - objectType: - type: string - description: objectType of the document - debugInfo: - type: object - description: Debug information of the document - $ref: "#/components/schemas/DebugDocumentResponse" - DebugDocumentsResponse: - type: object - description: Describes the response body of a single document in the /debug/{datasource}/documents API call - properties: - documentStatuses: - type: array - description: List of document ids/urls and their debug information - items: - $ref: "#/components/schemas/DebugDocumentsResponseItem" - DocumentStatusResponse: - type: object - description: Describes the document status response body - properties: - uploadStatus: - type: string - description: Upload status, enum of NOT_UPLOADED, UPLOADED, STATUS_UNKNOWN - example: UPLOADED - lastUploadedAt: - type: string - description: Time of last successful upload for the document, in ISO 8601 format - example: "2021-08-06T17:58:01.000Z" - indexingStatus: - type: string - description: Indexing status, enum of NOT_INDEXED, INDEXED, STATUS_UNKNOWN - example: INDEXED - lastIndexedAt: - type: string - description: Time of last successful indexing for the document, in ISO 8601 format - example: "2021-08-06T17:58:01.000Z" - permissionIdentityStatus: - type: string - description: Permission identity status, enum of NOT_UPLOADED, UPLOADED, STATUS_UNKNOWN (Always unknown if `identityDatasourceName` is set). Document visibility may be affected status is `NOT_UPLOADED`. - example: UPLOADED - LifeCycleEvent: - type: object - properties: - event: - type: string - description: Type of event - enum: - - UPLOADED - - INDEXED - - DELETION_REQUESTED - - DELETED - example: INDEXED - timestamp: - type: string - description: Timestamp of the event - example: "2021-08-06T17:58:01.000Z" - ProcessingHistoryEvent: - type: object - description: Processing history event for a datasource - properties: - startTime: - type: string - description: The start time of the processing in ISO 8601 format - example: "2021-08-06T17:58:01.000Z" - endTime: - type: string - description: The end time of the processing in ISO 8601 format, 'NA' if still in progress - example: "2021-08-06T18:58:01.000Z" - ProcessingHistoryEventList: - description: Information about processing history for the datasource + type: string + responses: + "200": + description: Successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/ToolsListResponse' + "400": + description: Bad Request + "401": + description: Unauthorized + "404": + description: Not Found + "429": + description: Too Many Requests + x-visibility: Preview + x-speakeasy-name-override: list + x-speakeasy-group: client.tools + /rest/api/v1/tools/call: + post: + summary: Execute the specified tool + description: Execute the specified tool with provided parameters + tags: + - Tools + - Tools + security: + - APIToken: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ToolsCallRequest' + required: true + responses: + "200": + description: Successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/ToolsCallResponse' + "400": + description: Bad Request + "401": + description: Unauthorized + "404": + description: Not Found + "429": + description: Too Many Requests + x-visibility: Preview + x-speakeasy-name-override: run + x-speakeasy-group: client.tools + /rest/api/v1/actions/actionpack/{actionPackId}/auth: + get: + operationId: getActionPackAuthStatus + summary: Get end-user authentication status for an action pack. + description: | + Reports whether the calling user is already authenticated against the third-party + tool backing the specified action pack. Intended for headless / server-driven clients + that render an "Authorize" prompt when the user has not yet consented to the tool. + tags: + - Tools + security: + - APIToken: [] + responses: + "200": + description: Successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/ActionPackAuthStatusResponse' + "400": + description: Bad Request + "401": + description: Unauthorized + "404": + description: Action pack not found + "429": + description: Too Many Requests + x-visibility: Preview + x-speakeasy-name-override: retrieveActionPackAuthStatus + x-speakeasy-group: client.tools + post: + operationId: authorizeActionPack + summary: Start the OAuth authorization flow for an action pack. + description: | + Starts the third-party OAuth flow for the specified action pack and returns the + redirect URL that the client should navigate the end user to. After the OAuth + callback completes, the user's browser is redirected back to `returnUrl` with a + status query parameter (`?glean_action_auth=success|error&actionPackId=...`). + + `returnUrl` must match the tenant's configured return URL allowlist; otherwise the + request is rejected with 400. + tags: + - Tools + security: + - APIToken: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AuthorizeActionPackRequest' + required: true + responses: + "200": + description: Successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/AuthorizeActionPackResponse' + "400": + description: Invalid request (e.g. returnUrl not in allowlist, unsupported auth type) + "401": + description: Unauthorized + "403": + description: User not entitled to the action pack + "404": + description: Action pack not found + "429": + description: Too Many Requests + x-visibility: Preview + x-speakeasy-name-override: authorizeActionPack + x-speakeasy-group: client.tools + parameters: + - name: actionPackId + in: path + description: ID of the action pack to query or authorize. + required: true + schema: + type: string + /rest/api/v1/tool-servers/{serverId}/auth: + get: + operationId: getToolServerAuthStatus + summary: Get end-user authentication status for a tool server. + description: | + Returns display information and the calling user's current authentication status + for the specified tool server. + tags: + - Tools + security: + - APIToken: [] + responses: + "200": + description: Successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/ToolServerAuthStatusResponse' + "400": + description: Bad Request + "401": + description: Unauthorized + "404": + description: Tool server not found + "429": + description: Too Many Requests + x-visibility: Preview + x-glean-experimental: + id: 52fde6ec-c18b-4de6-b761-f82008542ae7 + introduced: "2026-07-02" + x-speakeasy-name-override: retrieveToolServerAuthStatus + x-speakeasy-group: client.tools + post: + operationId: authorizeToolServer + summary: Start the OAuth authorization flow for a tool server. + description: | + Initiates the third-party OAuth flow for the specified tool server and returns the + authorization URL that the client should navigate the end user to. After the OAuth + callback completes, the user's browser is redirected back to `returnUrl` with query + parameters indicating the result. + + `returnUrl` must match the tenant's configured return URL allowlist; otherwise the + request is rejected with 400. + tags: + - Tools + security: + - APIToken: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AuthorizeToolServerRequest' + required: true + responses: + "200": + description: Successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/AuthorizeToolServerResponse' + "400": + description: Invalid request (e.g. returnUrl not in allowlist, unsupported auth type) + "401": + description: Unauthorized + "403": + description: User not entitled to the tool server + "404": + description: Tool server not found + "429": + description: Too Many Requests + x-visibility: Preview + x-glean-experimental: + id: 1935476e-ecaf-4c1f-a9fd-1e768cf68f30 + introduced: "2026-07-02" + x-speakeasy-name-override: authorizeToolServer + x-speakeasy-group: client.tools + parameters: + - name: serverId + in: path + description: Unique identifier of the tool server. + required: true + schema: + type: string + /rest/api/v1/tool-servers/{serverId}/tools: + get: + operationId: getToolServerTools + summary: Get tool definitions from a tool server. + description: | + Returns the name, description and JSON input schema for the named tools on the + specified tool server. Works for Glean's built-in tools, tool packs and MCP + servers. + + `toolNames` is required. Names that do not exist on the server are returned in + `notFound` rather than failing the request, so a single bad name does not force + callers into one-at-a-time retries. Matching is case-insensitive and treats `-` + and `_` as equivalent. + + Use `serverId=native` for Glean's built-in tools. + tags: + - Tools + security: + - APIToken: [] + parameters: + - name: toolNames + in: query + description: Tool names to look up on this server. Maximum 100. + required: true + style: form + explode: false + schema: type: array items: - $ref: "#/components/schemas/ProcessingHistoryEvent" - DebugUserRequest: - type: object - description: Describes the request body of the /debug/{datasource}/user API call - properties: - email: - type: string - description: Email ID of the user to get the status for - example: u1@foo.com - required: - - email - DebugUserResponse: - type: object - description: Describes the response body of the /debug/{datasource}/user API call - properties: - status: - type: object - description: Upload and indexing status of the user - $ref: "#/components/schemas/UserStatusResponse" - uploadedGroups: - type: array - description: List of groups the user is a member of, as uploaded via permissions API. - items: - $ref: "#/components/schemas/DatasourceGroupDefinition" - UserStatusResponse: - type: object - description: Describes the user status response body - properties: - isActiveUser: - type: boolean - description: Whether the user is active or not - example: true - uploadStatus: - $ref: "#/components/schemas/UploadStatusEnum" - lastUploadedAt: - type: string - description: Time of last successful upload for the user, in ISO 8601 format - example: "2021-08-06T17:58:01.000Z" - UploadStatusEnum: + type: string + responses: + "200": + description: Successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/ToolDefinitionsResponse' + "400": + description: Invalid request (e.g. missing toolNames, or more than 100 names) + "401": + description: Unauthorized + "404": + description: Tool server not found + "429": + description: Too Many Requests + "503": + description: Tool schemas could not be resolved from the server + x-visibility: Preview + x-glean-experimental: + id: 332eb38f-1b5d-4896-88e3-59db5e96e4e1 + introduced: "2026-07-30" + x-speakeasy-name-override: getToolServerTools + x-speakeasy-group: client.tools + parameters: + - name: serverId + in: path + description: Unique identifier of the tool server. + required: true + schema: + type: string + /api/index/v1/indexdocument: + post: + summary: Index document + description: Adds a document to the index or updates an existing document. + tags: + - Documents + security: + - APIToken: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/IndexDocumentRequest' + required: true + x-exportParamName: IndexDocumentRequest + responses: + "200": + description: OK + "400": + description: Bad Request + "401": + description: Not Authorized + "409": + description: Conflict + "429": + description: Too Many Requests + x-speakeasy-name-override: addOrUpdate + x-speakeasy-group: indexing.documents + /api/index/v1/indexdocuments: + post: + summary: Index documents + description: Adds or updates multiple documents in the index. Please refer to the [bulk indexing](https://developers.glean.com/indexing/documents/bulk-indexing/choosing-indexdocuments-vs-bulkindexdocuments) documentation for an explanation of when to use this endpoint. + tags: + - Documents + security: + - APIToken: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/IndexDocumentsRequest' + required: true + x-exportParamName: IndexDocumentsRequest + responses: + "200": + description: OK + "400": + description: Bad Request + "401": + description: Not Authorized + "409": + description: Conflict + "429": + description: Too Many Requests + x-speakeasy-name-override: index + x-speakeasy-group: indexing.documents + /api/index/v1/bulkindexdocuments: + post: + summary: Bulk index documents + description: Replaces the documents in a datasource using paginated batch API calls. Please refer to the [bulk indexing](https://developers.glean.com/indexing/documents/bulk-upload-model) documentation for an explanation of how to use bulk endpoints. + tags: + - Documents + security: + - APIToken: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/BulkIndexDocumentsRequest' + required: true + x-exportParamName: BulkIndexDocumentsRequest + responses: + "200": + description: OK + "400": + description: Bad Request + "401": + description: Not Authorized + "409": + description: Conflict + x-speakeasy-name-override: bulkIndex + x-speakeasy-group: indexing.documents + /api/index/v1/updatepermissions: + post: + summary: Update document permissions + description: Updates the permissions for a given document without modifying document content. + tags: + - Documents + security: + - APIToken: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdatePermissionsRequest' + required: true + x-exportParamName: UpdatePermissionsRequest + responses: + "200": + description: OK + "400": + description: Bad Request + "401": + description: Not Authorized + "409": + description: Conflict + "429": + description: Too Many Requests + x-speakeasy-name-override: updatePermissions + x-speakeasy-group: indexing.permissions + /api/index/v1/processalldocuments: + post: + summary: Schedules the processing of uploaded documents + description: | + Schedules the immediate processing of documents uploaded through the indexing API. By default the uploaded documents will be processed asynchronously but this API can be used to schedule processing of all documents on demand. + + If a `datasource` parameter is specified, processing is limited to that custom datasource. Without it, processing applies to all documents across all custom datasources. + #### Rate Limits + This endpoint is rate-limited to one usage every 3 hours. Exceeding this limit results in a 429 response code. Here's how the rate limit works: + 1. Calling `/processalldocuments` for datasource `foo` prevents another call for `foo` for 3 hours. + 2. Calling `/processalldocuments` for datasource `foo` doesn't affect immediate calls for `bar`. + 3. Calling `/processalldocuments` for all datasources prevents any datasource calls for 3 hours. + 4. Calling `/processalldocuments` for datasource `foo` doesn't affect immediate calls for all datasources. + + For more frequent document processing, contact Glean support. + tags: + - Documents + security: + - APIToken: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ProcessAllDocumentsRequest' + x-exportParamName: ProcessAllDocumentsRequest + responses: + "200": + description: OK + "400": + description: Bad Request + "401": + description: Not Authorized + "429": + description: Too Many Requests + x-speakeasy-name-override: processAll + x-speakeasy-group: indexing.documents + /api/index/v1/deletedocument: + post: + summary: Delete document + description: Deletes the specified document from the index. Succeeds if document is not present. + tags: + - Documents + security: + - APIToken: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteDocumentRequest' + required: true + x-exportParamName: DeleteDocumentRequest + responses: + "200": + description: OK + "400": + description: Bad Request + "401": + description: Not Authorized + "409": + description: Conflict + x-speakeasy-name-override: delete + x-speakeasy-group: indexing.documents + /api/index/v1/indexuser: + post: + summary: Index user + description: Adds a datasource user or updates an existing user. + tags: + - Permissions + security: + - APIToken: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/IndexUserRequest' + required: true + x-exportParamName: IndexUserRequest + responses: + "200": + description: OK + "400": + description: Bad Request + "401": + description: Not Authorized + "409": + description: Conflict + x-speakeasy-name-override: indexUser + x-speakeasy-group: indexing.permissions + /api/index/v1/bulkindexusers: + post: + summary: Bulk index users + description: | + Replaces the users in a datasource using paginated batch API calls. Please refer to the [bulk indexing](https://developers.glean.com/indexing/documents/bulk-upload-model) documentation for an explanation of how to use bulk endpoints. + Note: Any users deleted from the existing set will have their associated memberships deleted as well. + tags: + - Permissions + security: + - APIToken: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/BulkIndexUsersRequest' + required: true + x-exportParamName: BulkIndexUsersRequest + responses: + "200": + description: OK + "400": + description: Bad Request + "401": + description: Not Authorized + "409": + description: Conflict + x-speakeasy-name-override: bulkIndexUsers + x-speakeasy-group: indexing.permissions + /api/index/v1/indexgroup: + post: + summary: Index group + description: Add or update a group in the datasource. + tags: + - Permissions + security: + - APIToken: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/IndexGroupRequest' + required: true + x-exportParamName: IndexGroupRequest + responses: + "200": + description: OK + "400": + description: Bad Request + "401": + description: Not Authorized + "409": + description: Conflict + x-speakeasy-name-override: indexGroup + x-speakeasy-group: indexing.permissions + /api/index/v1/bulkindexgroups: + post: + summary: Bulk index groups + description: | + Replaces the groups in a datasource using paginated batch API calls. Please refer to the [bulk indexing](https://developers.glean.com/indexing/documents/bulk-upload-model) documentation for an explanation of how to use bulk endpoints. + Note: Any groups deleted from the existing set will have their associated memberships deleted as well. + tags: + - Permissions + security: + - APIToken: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/BulkIndexGroupsRequest' + required: true + x-exportParamName: BulkIndexGroupsRequest + responses: + "200": + description: OK + "400": + description: Bad Request + "401": + description: Not Authorized + "409": + description: Conflict + x-speakeasy-name-override: bulkIndexGroups + x-speakeasy-group: indexing.permissions + /api/index/v1/indexmembership: + post: + summary: Index membership + description: Add the memberships of a group in the datasource. + tags: + - Permissions + security: + - APIToken: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/IndexMembershipRequest' + required: true + x-exportParamName: IndexMembershipRequest + responses: + "200": + description: OK + "400": + description: Bad Request + "401": + description: Not Authorized + "409": + description: Conflict + x-speakeasy-name-override: indexMembership + x-speakeasy-group: indexing.permissions + /api/index/v1/bulkindexmemberships: + post: + summary: Bulk index memberships for a group + description: Replaces the memberships for a group in a datasource using paginated batch API calls. Please refer to the [bulk indexing](https://developers.glean.com/indexing/documents/bulk-upload-model) documentation for an explanation of how to use bulk endpoints. + tags: + - Permissions + security: + - APIToken: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/BulkIndexMembershipsRequest' + required: true + x-exportParamName: BulkIndexMembershipsRequest + responses: + "200": + description: OK + "400": + description: Bad Request + "401": + description: Not Authorized + "409": + description: Conflict + x-speakeasy-name-override: bulkIndexMemberships + x-speakeasy-group: indexing.permissions + /api/index/v1/processallmemberships: + post: + summary: Schedules the processing of group memberships + description: | + Schedules the immediate processing of all group memberships uploaded through the indexing API. By default the uploaded group memberships will be processed asynchronously but this API can be used to schedule processing of all memberships on demand. + tags: + - Permissions + security: + - APIToken: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ProcessAllMembershipsRequest' + x-exportParamName: ProcessAllMembershipsRequest + responses: + "200": + description: OK + "400": + description: Bad Request + "401": + description: Not Authorized + x-speakeasy-name-override: processMemberships + x-speakeasy-group: indexing.permissions + /api/index/v1/deleteuser: + post: + summary: Delete user + description: | + Delete the user from the datasource. Silently succeeds if user is not present. + Note: All memberships associated with the deleted user will also be deleted. + tags: + - Permissions + security: + - APIToken: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteUserRequest' + required: true + x-exportParamName: DeleteUserRequest + responses: + "200": + description: OK + "400": + description: Bad Request + "401": + description: Not Authorized + "409": + description: Conflict + x-speakeasy-name-override: deleteUser + x-speakeasy-group: indexing.permissions + /api/index/v1/deletegroup: + post: + summary: Delete group + description: | + Delete group from the datasource. Silently succeeds if group is not present. + Note: All memberships associated with the deleted group will also be deleted. + tags: + - Permissions + security: + - APIToken: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteGroupRequest' + required: true + x-exportParamName: DeleteGroupRequest + responses: + "200": + description: OK + "400": + description: Bad Request + "401": + description: Not Authorized + "409": + description: Conflict + x-speakeasy-name-override: deleteGroup + x-speakeasy-group: indexing.permissions + /api/index/v1/deletemembership: + post: + summary: Delete membership + description: Delete membership to a group in the specified datasource. Silently succeeds if membership is not present. + tags: + - Permissions + security: + - APIToken: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteMembershipRequest' + required: true + x-exportParamName: DeleteMembershipRequest + responses: + "200": + description: OK + "400": + description: Bad Request + "401": + description: Not Authorized + "409": + description: Conflict + x-speakeasy-name-override: deleteMembership + x-speakeasy-group: indexing.permissions + /api/index/v1/debug/{datasource}/status: + post: + summary: | + Beta: Get datasource status + description: | + Gather information about the datasource's overall status. Currently in beta, might undergo breaking changes without prior notice. + + Tip: Refer to the [Troubleshooting tutorial](https://developers.glean.com/indexing/debugging/datasource-config) for more information. + tags: + - Troubleshooting + security: + - APIToken: [] + parameters: + - name: datasource + in: path + description: The datasource to get debug status for. + required: true + schema: + type: string + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/DebugDatasourceStatusResponse' + "400": + description: Bad Request + "401": + description: Not Authorized + x-beta: true + x-speakeasy-name-override: status + x-speakeasy-group: indexing.datasource + /api/index/v1/debug/{datasource}/document: + post: + summary: | + Beta: Get document information + description: | + Gives various information that would help in debugging related to a particular document. Currently in beta, might undergo breaking changes without prior notice. + + Tip: Refer to the [Troubleshooting tutorial](https://developers.glean.com/indexing/debugging/datasource-config) for more information. + tags: + - Troubleshooting + security: + - APIToken: [] + parameters: + - name: datasource + in: path + description: The datasource to which the document belongs + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DebugDocumentRequest' + required: true + x-exportParamName: DebugDocumentRequest + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/DebugDocumentResponse' + "400": + description: Bad Request + "401": + description: Not Authorized + x-beta: true + x-speakeasy-group: indexing.documents + x-speakeasy-name-override: debug + /api/index/v1/debug/{datasource}/documents: + post: + summary: | + Beta: Get information of a batch of documents + description: | + Gives various information that would help in debugging related to a batch of documents. Currently in beta, might undergo breaking changes without prior notice. + + Tip: Refer to the [Troubleshooting tutorial](https://developers.glean.com/indexing/debugging/datasource-config) for more information. + tags: + - Troubleshooting + security: + - APIToken: [] + parameters: + - name: datasource + in: path + description: The datasource to which the document belongs + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DebugDocumentsRequest' + required: true + x-exportParamName: DebugDocumentsRequest + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/DebugDocumentsResponse' + "400": + description: Bad Request + "401": + description: Not Authorized + x-beta: true + x-speakeasy-group: indexing.documents + x-speakeasy-name-override: debugMany + /api/index/v1/debug/{datasource}/user: + post: + summary: | + Beta: Get user information + description: | + Gives various information that would help in debugging related to a particular user. Currently in beta, might undergo breaking changes without prior notice. + + Tip: Refer to the [Troubleshooting tutorial](https://developers.glean.com/indexing/debugging/datasource-config) for more information. + tags: + - Troubleshooting + security: + - APIToken: [] + parameters: + - name: datasource + in: path + description: The datasource to which the user belongs + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DebugUserRequest' + required: true + x-exportParamName: DebugUserRequest + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/DebugUserResponse' + "400": + description: Bad Request + "401": + description: Not Authorized + x-beta: true + x-speakeasy-name-override: debug + x-speakeasy-group: indexing.people + /api/index/v1/checkdocumentaccess: + post: + summary: Check document access + description: | + Check if a given user has access to access a document in a custom datasource + + Tip: Refer to the [Troubleshooting tutorial](https://developers.glean.com/indexing/debugging/datasource-config) for more information. + tags: + - Troubleshooting + security: + - APIToken: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CheckDocumentAccessRequest' + required: true + x-exportParamName: CheckDocumentAccessRequest + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/CheckDocumentAccessResponse' + "400": + description: Bad Request + "401": + description: Not Authorized + "429": + description: Too Many Requests + x-speakeasy-group: indexing.documents + x-speakeasy-name-override: checkAccess + /api/index/v1/getdocumentstatus: + post: + summary: Get document upload and indexing status + description: | + Intended for debugging/validation. Fetches the current upload and indexing status of documents. + + Tip: Use [/debug/{datasource}/document](https://developers.glean.com/indexing/debugging/datasource-document) for richer information. + tags: + - Troubleshooting + security: + - APIToken: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GetDocumentStatusRequest' + required: true + x-exportParamName: GetDocumentStatusRequest + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/GetDocumentStatusResponse' + "400": + description: Bad Request + "401": + description: Not Authorized + "429": + description: Too Many Requests + deprecated: true + x-glean-deprecated: + id: 7eec0433-78fd-49f9-a34f-cca83640ec24 + introduced: "2026-02-03" + message: Endpoint is deprecated + removal: "2026-10-15" + x-speakeasy-deprecation-message: "Deprecated on 2026-02-03, removal scheduled for 2026-10-15: Endpoint is deprecated" + x-speakeasy-group: indexing.documents + x-speakeasy-name-override: status + /api/index/v1/getdocumentcount: + post: + summary: Get document count + description: | + Fetches document count for the specified custom datasource. + + Tip: Use [/debug/{datasource}/status](https://developers.glean.com/indexing/debugging/datasource-status) for richer information. + tags: + - Troubleshooting + security: + - APIToken: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GetDocumentCountRequest' + required: true + x-exportParamName: GetDocumentCountRequest + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/GetDocumentCountResponse' + "400": + description: Bad Request + "401": + description: Not Authorized + "409": + description: Conflict + deprecated: true + x-glean-deprecated: + id: c164089c-9412-4724-acf6-caf3b0d2a527 + introduced: "2026-02-03" + message: Endpoint is deprecated + removal: "2026-10-15" + x-speakeasy-deprecation-message: "Deprecated on 2026-02-03, removal scheduled for 2026-10-15: Endpoint is deprecated" + x-speakeasy-group: indexing.documents + x-speakeasy-name-override: count + /api/index/v1/getusercount: + post: + summary: Get user count + description: | + Fetches user count for the specified custom datasource. + + Tip: Use [/debug/{datasource}/status](https://developers.glean.com/indexing/debugging/datasource-status) for richer information. + tags: + - Troubleshooting + security: + - APIToken: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GetUserCountRequest' + required: true + x-exportParamName: GetUserCountRequest + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/GetUserCountResponse' + "400": + description: Bad Request + "401": + description: Not Authorized + "409": + description: Conflict + deprecated: true + x-glean-deprecated: + id: 4f5df873-385e-4539-8183-cb764b0f06b9 + introduced: "2026-02-03" + message: Endpoint is deprecated + removal: "2026-10-15" + x-speakeasy-deprecation-message: "Deprecated on 2026-02-03, removal scheduled for 2026-10-15: Endpoint is deprecated" + x-speakeasy-name-override: count + x-speakeasy-group: indexing.people + /api/index/v1/betausers: + post: + summary: Beta users + description: Allow the datasource be visible to the specified beta users. The default behaviour is datasource being visible to all users if it is enabled and not visible to any user if it is not enabled. + tags: + - Permissions + security: + - APIToken: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GreenlistUsersRequest' + required: true + x-exportParamName: GreenlistUsersRequest + responses: + "200": + description: OK + "400": + description: Bad Request + "401": + description: Not Authorized + "409": + description: Conflict + x-speakeasy-name-override: authorizeBetaUsers + x-speakeasy-group: indexing.permissions + /api/index/v1/adddatasource: + post: + summary: Add or update datasource + description: Add or update a custom datasource and its schema. + tags: + - Datasources + security: + - APIToken: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CustomDatasourceConfig' + required: true + x-exportParamName: DatasourceConfig + responses: + "200": + description: OK + "400": + description: Bad Request + "401": + description: Not Authorized + x-speakeasy-name-override: add + x-speakeasy-group: indexing.datasources + /api/index/v1/getdatasourceconfig: + post: + summary: Get datasource config + description: Fetches the datasource config for the specified custom datasource. + tags: + - Datasources + security: + - APIToken: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GetDatasourceConfigRequest' + required: true + x-exportParamName: GetDatasourceConfigRequest + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/CustomDatasourceConfig' + "400": + description: Bad Request + "401": + description: Not Authorized + "409": + description: Conflict + x-speakeasy-name-override: retrieveConfig + x-speakeasy-group: indexing.datasources + /api/index/v1/rotatetoken: + post: + summary: Rotate token + description: Rotates the secret value inside the Indexing API token and returns the new raw secret. All other properties of the token are unchanged. In order to rotate the secret value, include the token as the bearer token in the `/rotatetoken` request. Please refer to [Token rotation](https://developers.glean.com/indexing/authentication/token-rotation) documentation for more information. + tags: + - Authentication + security: + - APIToken: [] + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/RotateTokenResponse' + "400": + description: Bad Request + "401": + description: Not Authorized + x-speakeasy-name-override: rotateToken + x-speakeasy-group: indexing.authentication + /api/index/v1/indexemployee: + post: + summary: Index employee + description: Adds an employee or replaces the existing information about an employee. + tags: + - People + security: + - APIToken: [] + requestBody: + content: + application/json; charset=UTF-8: + schema: + $ref: '#/components/schemas/IndexEmployeeRequest' + required: true + x-exportParamName: IndexEmployeeRequest + responses: + "200": + description: OK + "400": + description: Bad Request + "401": + description: Not Authorized + "409": + description: Conflict + x-speakeasy-name-override: index + x-speakeasy-group: indexing.people + /api/index/v1/bulkindexemployees: + post: + summary: Bulk index employees + description: Replaces all the currently indexed employees using paginated batch API calls. Please refer to the [bulk indexing](https://developers.glean.com/indexing/documents/bulk-upload-model) documentation for an explanation of how to use bulk endpoints. + tags: + - People + security: + - APIToken: [] + requestBody: + content: + application/json; charset=UTF-8: + schema: + $ref: '#/components/schemas/BulkIndexEmployeesRequest' + required: true + x-exportParamName: BulkIndexEmployeesRequest + responses: + "200": + description: OK + "400": + description: Bad Request + "401": + description: Not Authorized + "409": + description: Conflict + deprecated: true + x-glean-deprecated: + id: ce596f49-55c4-465e-bf3c-5a3a33906e1f + introduced: "2026-02-03" + message: Endpoint is deprecated + removal: "2026-10-15" + x-speakeasy-deprecation-message: "Deprecated on 2026-02-03, removal scheduled for 2026-10-15: Endpoint is deprecated" + x-speakeasy-name-override: bulkIndex + x-speakeasy-group: indexing.people + /api/index/v1/indexemployeelist: {} + /api/index/v1/processallemployeesandteams: + post: + summary: Schedules the processing of uploaded employees and teams + description: | + Schedules the immediate processing of employees and teams uploaded through the indexing API. By default all uploaded people data will be processed asynchronously but this API can be used to schedule its processing on demand. + tags: + - People + security: + - APIToken: [] + responses: + "200": + description: OK + "400": + description: Bad Request + "401": + description: Not Authorized + "429": + description: Too Many Requests + x-speakeasy-name-override: processAllEmployeesAndTeams + x-speakeasy-group: indexing.people + /api/index/v1/deleteemployee: + post: + summary: Delete employee + description: Delete an employee. Silently succeeds if employee is not present. + tags: + - People + security: + - APIToken: [] + requestBody: + content: + application/json; charset=UTF-8: + schema: + $ref: '#/components/schemas/DeleteEmployeeRequest' + required: true + x-exportParamName: DeleteEmployeeRequest + responses: + "200": + description: OK + "400": + description: Bad Request + "401": + description: Not Authorized + "409": + description: Conflict + x-speakeasy-name-override: delete + x-speakeasy-group: indexing.people + /api/index/v1/indexteam: + post: + summary: Index team + description: Adds a team or updates information about a team + tags: + - People + security: + - APIToken: [] + requestBody: + content: + application/json; charset=UTF-8: + schema: + $ref: '#/components/schemas/IndexTeamRequest' + required: true + x-exportParamName: IndexTeamRequest + responses: + "200": + description: OK + "400": + description: Bad Request + "401": + description: Not Authorized + "409": + description: Conflict + x-speakeasy-name-override: indexTeam + x-speakeasy-group: indexing.people + /api/index/v1/deleteteam: + post: + summary: Delete team + description: Delete a team based on provided id. + tags: + - People + security: + - APIToken: [] + requestBody: + content: + application/json; charset=UTF-8: + schema: + $ref: '#/components/schemas/DeleteTeamRequest' + required: true + x-exportParamName: DeleteTeamRequest + responses: + "200": + description: OK + "400": + description: Bad Request + "401": + description: Not Authorized + "409": + description: Conflict + x-speakeasy-name-override: deleteTeam + x-speakeasy-group: indexing.people + /api/index/v1/bulkindexteams: + post: + summary: Bulk index teams + description: Replaces all the currently indexed teams using paginated batch API calls. Please refer to the [bulk indexing](https://developers.glean.com/indexing/documents/bulk-upload-model) documentation for an explanation of how to use bulk endpoints. + tags: + - People + security: + - APIToken: [] + requestBody: + content: + application/json; charset=UTF-8: + schema: + $ref: '#/components/schemas/BulkIndexTeamsRequest' + required: true + x-exportParamName: BulkIndexTeamsRequest + responses: + "200": + description: OK + "400": + description: Bad Request + "401": + description: Not Authorized + "409": + description: Conflict + x-speakeasy-name-override: bulkIndexTeams + x-speakeasy-group: indexing.people + /api/index/v1/bulkindexshortcuts: + post: + summary: Bulk index external shortcuts + description: Replaces all the currently indexed shortcuts using paginated batch API calls. Note that this endpoint is used for indexing shortcuts not hosted by Glean. If you want to upload shortcuts that would be hosted by Glean, please use the `/uploadshortcuts` endpoint. For information on what you can do with Golinks, which are Glean-hosted shortcuts, please refer to [this](https://docs.glean.com/user-guide/knowledge/go-links/how-go-links-work) page. + tags: + - Shortcuts + security: + - APIToken: [] + requestBody: + content: + application/json; charset=UTF-8: + schema: + $ref: '#/components/schemas/BulkIndexShortcutsRequest' + required: true + x-exportParamName: BulkIndexShortcutsRequest + responses: + "200": + description: OK + "400": + description: Bad Request + "401": + description: Not Authorized + "409": + description: Conflict + x-speakeasy-name-override: bulkIndex + x-speakeasy-group: indexing.shortcuts + /api/index/v1/uploadshortcuts: + post: + summary: Upload shortcuts + description: Creates glean shortcuts for uploaded shortcuts info. Glean would host the shortcuts, and they can be managed in the knowledge tab once uploaded. + tags: + - Shortcuts + security: + - APIToken: [] + requestBody: + content: + application/json; charset=UTF-8: + schema: + $ref: '#/components/schemas/UploadShortcutsRequest' + required: true + x-exportParamName: UploadShortcutsRequest + responses: + "200": + description: OK + "400": + description: Bad Request + "401": + description: Not Authorized + "409": + description: Conflict + x-speakeasy-name-override: upload + x-speakeasy-group: indexing.shortcuts + /api/index/v1/debug/{datasource}/document/events: + post: + summary: | + Beta: Get document lifecycle events + description: | + Retrieves lifecycle events for a specific document including upload time, index times and deletions. Rate limited to 1 request per minute per datasource. Currently in beta, might undergo breaking changes without prior notice. + tags: + - Troubleshooting + security: + - APIToken: [] + parameters: + - name: datasource + in: path + description: The datasource to which the document belongs + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DebugDocumentLifecycleRequest' + required: true + x-exportParamName: DebugDocumentLifecycleRequest + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/DebugDocumentLifecycleResponse' + "400": + description: Bad Request + "401": + description: Not Authorized + "429": + description: Too Many Requests + x-beta: true + x-speakeasy-group: indexing.documents + x-speakeasy-name-override: debugEvents + /rest/api/index/submissions/{datasourceInstance}/{type}: + post: + summary: Submit datasource data + description: Validates and asynchronously processes a datasource-specific submission. + tags: + - Datasources + security: + - APIToken: [] + requestBody: + content: + application/json: + schema: + type: object + additionalProperties: true + required: true + x-exportParamName: SubmissionRequest + responses: + "202": + description: Accepted + content: + application/json: + schema: + type: object + properties: + requestId: + type: string + required: + - requestId + "400": + $ref: '#/components/responses/BadRequestError' + "401": + $ref: '#/components/responses/UnauthorizedError' + "404": + $ref: '#/components/responses/NotFoundError' + "405": + description: Method Not Allowed + "413": + description: Payload Too Large + "500": + $ref: '#/components/responses/InternalServerError' + "503": + description: Service Unavailable + x-speakeasy-name-override: submit + x-speakeasy-group: indexing.datasources + servers: + - url: https://{instance}-be.glean.com + variables: + instance: + default: instance-name + description: The instance name (typically the email domain without the TLD) that determines the deployment backend. + parameters: + - name: datasourceInstance + in: path + description: Datasource instance that should process the submission + required: true + schema: + type: string + - name: type + in: path + description: Submission type registered for the datasource + required: true + schema: + type: string + /rest/api/index/document/{docId}/custom-metadata/{groupName}: + put: + summary: Add or update custom metadata + description: Associates custom metadata with a specific document. Custom metadata enables you to enrich documents with additional structured information that can be used for search, filtering, and faceting. + tags: + - Custom Metadata + security: + - APIToken: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CustomMetadataPutRequest' + required: true + x-exportParamName: CustomMetadataPutRequest + responses: + "200": + $ref: '#/components/responses/SuccessResponse' + "400": + $ref: '#/components/responses/BadRequestError' + "401": + $ref: '#/components/responses/UnauthorizedError' + "404": + $ref: '#/components/responses/NotFoundError' + "429": + $ref: '#/components/responses/TooManyRequestsError' + "500": + $ref: '#/components/responses/InternalServerError' + x-speakeasy-name-override: upsert + x-speakeasy-group: indexing.customMetadata + delete: + summary: Remove custom metadata + description: Removes all custom metadata for the specified metadata group from a document. + tags: + - Custom Metadata + security: + - APIToken: [] + responses: + "200": + $ref: '#/components/responses/SuccessResponse' + "400": + $ref: '#/components/responses/BadRequestError' + "401": + $ref: '#/components/responses/UnauthorizedError' + "404": + $ref: '#/components/responses/NotFoundError' + "429": + $ref: '#/components/responses/TooManyRequestsError' + "500": + $ref: '#/components/responses/InternalServerError' + x-speakeasy-name-override: delete + x-speakeasy-group: indexing.customMetadata + servers: + - url: https://{instance}-be.glean.com + variables: + instance: + default: instance-name + description: The instance name (typically the email domain without the TLD) that determines the deployment backend. + parameters: + - name: docId + in: path + description: Unique Glean identifier of the document + required: true + schema: + type: string + - name: groupName + in: path + description: Name of the metadata group as specified while adding schema + required: true + schema: + type: string + /rest/api/index/custom-metadata/schema/{groupName}: + get: + summary: Retrieve metadata schema + description: Retrieves the current schema definition for a metadata group. + tags: + - Custom Metadata + security: + - APIToken: [] + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/CustomMetadataSchema' + "401": + $ref: '#/components/responses/UnauthorizedError' + "404": + $ref: '#/components/responses/NotFoundError' + "429": + $ref: '#/components/responses/TooManyRequestsError' + "500": + $ref: '#/components/responses/InternalServerError' + x-speakeasy-name-override: getSchema + x-speakeasy-group: indexing.customMetadata + put: + summary: Create or update metadata schema + description: Defines or updates the schema for a metadata group. Schemas should be defined before indexing metadata. + tags: + - Custom Metadata + security: + - APIToken: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CustomMetadataSchema' + required: true + x-exportParamName: CustomMetadataSchema + responses: + "200": + $ref: '#/components/responses/SuccessResponse' + "400": + $ref: '#/components/responses/BadRequestError' + "401": + $ref: '#/components/responses/UnauthorizedError' + "409": + description: Conflict - Schema already exists with incompatible changes + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorInfoResponse' + "429": + $ref: '#/components/responses/TooManyRequestsError' + "500": + $ref: '#/components/responses/InternalServerError' + x-speakeasy-name-override: upsertSchema + x-speakeasy-group: indexing.customMetadata + delete: + summary: Remove metadata schema + description: Deletes the schema definition for a metadata group. This does not delete existing metadata values on documents. + tags: + - Custom Metadata + security: + - APIToken: [] + responses: + "200": + $ref: '#/components/responses/SuccessResponse' + "400": + $ref: '#/components/responses/BadRequestError' + "401": + $ref: '#/components/responses/UnauthorizedError' + "404": + $ref: '#/components/responses/NotFoundError' + "429": + $ref: '#/components/responses/TooManyRequestsError' + "500": + $ref: '#/components/responses/InternalServerError' + x-speakeasy-name-override: deleteSchema + x-speakeasy-group: indexing.customMetadata + servers: + - url: https://{instance}-be.glean.com + variables: + instance: + default: instance-name + description: The instance name (typically the email domain without the TLD) that determines the deployment backend. + parameters: + - name: groupName + in: path + description: Name of the metadata group schema + required: true + schema: + type: string + /rest/api/v1/governance/data/policies/{id}: + get: + operationId: getpolicy + summary: Gets specified policy + description: Fetches the specified policy version, or the latest if no version is provided. + tags: + - Governance + security: + - APIToken: [] + parameters: + - name: id + in: path + description: The id of the policy to fetch. + required: true + schema: + type: string + - name: version + in: query + description: The version of the policy to fetch. Each time a policy is updated, the older version is still stored. If this is left empty, the latest policy is fetched. + required: false + schema: + type: integer + format: int64 + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/GetDlpReportResponse' + "403": + description: Permissions error + "500": + description: Internal error + x-visibility: Public + x-speakeasy-group: client.governance.data.policies + x-speakeasy-name-override: retrieve + post: + operationId: updatepolicy + summary: Updates an existing policy + description: Updates an existing policy. + tags: + - Governance + security: + - APIToken: [] + parameters: + - name: id + in: path + description: The id of the policy to fetch. + required: true + schema: + type: string + requestBody: + content: + application/json; charset=UTF-8: + schema: + $ref: '#/components/schemas/UpdateDlpReportRequest' + required: true + responses: + "200": + description: OK + content: + application/json; charset=UTF-8: + schema: + $ref: '#/components/schemas/UpdateDlpReportResponse' + "403": + description: Permissions error + "500": + description: Internal error + x-speakeasy-group: client.governance.data.policies + x-speakeasy-name-override: update + /rest/api/v1/governance/data/policies: + get: + operationId: listpolicies + summary: Lists policies + description: Lists policies with filtering. + tags: + - Governance + security: + - APIToken: [] + parameters: + - name: autoHide + in: query + description: Filter to return reports with a given value of auto-hide. + required: false + schema: + type: boolean + - name: frequency + in: query + description: Filter to return reports with a given frequency. + required: false + schema: + type: string + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ListDlpReportsResponse' + "403": + description: Permissions error + "500": + description: Internal error + x-visibility: Public + x-speakeasy-group: client.governance.data.policies + x-speakeasy-name-override: list + post: + operationId: createpolicy + summary: Creates new policy + description: Creates a new policy with specified specifications and returns its id. + tags: + - Governance + security: + - APIToken: [] + requestBody: + content: + application/json; charset=UTF-8: + schema: + $ref: '#/components/schemas/CreateDlpReportRequest' + required: true + responses: + "200": + description: OK + content: + application/json; charset=UTF-8: + schema: + $ref: '#/components/schemas/CreateDlpReportResponse' + "403": + description: Permissions error + "500": + description: Internal error + x-visibility: Public + x-speakeasy-group: client.governance.data.policies + x-speakeasy-name-override: create + /rest/api/v1/governance/data/policies/{id}/download: + get: + operationId: downloadpolicycsv + summary: Downloads violations CSV for policy + description: Downloads CSV violations report for a specific policy id. This does not support continuous policies. + tags: + - Governance + security: + - APIToken: [] + parameters: + - name: id + in: path + description: The id of the policy to download violations for. + required: true + schema: + type: string + responses: + "200": + description: Downloads csv of batch policy violations. + content: + text/csv; charset=UTF-8: + schema: + type: string + description: CSV of all the violations found for this policy. + "400": + description: Bad request error (e.g., continuous policies are not supported). + "403": + description: Permissions error + "500": + description: Internal error + x-visibility: Public + x-speakeasy-group: client.governance.data.policies + x-speakeasy-name-override: download + /rest/api/v1/governance/data/reports: + post: + operationId: createreport + summary: Creates new one-time report + description: Creates a new one-time report and executes its batch job. + tags: + - Governance + security: + - APIToken: [] + requestBody: + content: + application/json; charset=UTF-8: + schema: + $ref: '#/components/schemas/UpdateDlpConfigRequest' + required: true + responses: + "200": + description: OK + content: + application/json; charset=UTF-8: + schema: + $ref: '#/components/schemas/UpdateDlpConfigResponse' + "403": + description: Permissions error + "500": + description: Internal error + x-visibility: Public + x-speakeasy-group: client.governance.data.reports + x-speakeasy-name-override: create + /rest/api/v1/governance/data/reports/{id}/download: + get: + operationId: downloadreportcsv + summary: Downloads violations CSV for report + description: Downloads CSV violations report for a specific report id. + tags: + - Governance + security: + - APIToken: [] + parameters: + - name: id + in: path + description: The id of the report to download violations for. + required: true + schema: + type: string + responses: + "200": + description: Downloads csv of one-time report violations. + content: + text/csv; charset=UTF-8: + schema: + type: string + description: CSV of all the violations found for this report. + "403": + description: Permissions error + "500": + description: Internal error + x-visibility: Public + x-speakeasy-group: client.governance.data.reports + x-speakeasy-name-override: download + /rest/api/v1/governance/data/reports/{id}/status: + get: + operationId: getreportstatus + summary: Fetches report run status + description: Fetches the status of the run corresponding to the report-id. + tags: + - Governance + security: + - APIToken: [] + parameters: + - name: id + in: path + description: The id of the report to get run status for. + required: true + schema: + type: string + responses: + "200": + description: Fetches status of report run. + content: + application/json; charset=UTF-8: + schema: + $ref: '#/components/schemas/ReportStatusResponse' + "403": + description: Permissions error + "500": + description: Internal error + x-visibility: Public + x-speakeasy-group: client.governance.data.reports + x-speakeasy-name-override: status + /rest/api/v1/governance/documents/visibilityoverrides: + get: + operationId: getdocvisibility + summary: Fetches documents visibility + description: Fetches the visibility override status of the documents passed. + tags: + - Governance + security: + - APIToken: [] + parameters: + - name: docIds + in: query + description: List of doc-ids which will have their hide status fetched. + schema: + type: array + items: + type: string + responses: + "200": + description: The visibility status of documents + content: + application/json; charset=UTF-8: + schema: + $ref: '#/components/schemas/GetDocumentVisibilityOverridesResponse' + "403": + description: Permissions error + "500": + description: Internal error + x-visibility: Public + x-speakeasy-group: client.governance.documents.visibilityoverrides + x-speakeasy-name-override: list + post: + operationId: setdocvisibility + summary: Hide or unhide docs + description: Sets the visibility-override state of the documents specified, effectively hiding or un-hiding documents. + tags: + - Governance + security: + - APIToken: [] + requestBody: + content: + application/json; charset=UTF-8: + schema: + $ref: '#/components/schemas/UpdateDocumentVisibilityOverridesRequest' + required: true + responses: + "200": + description: OK + content: + application/json; charset=UTF-8: + schema: + $ref: '#/components/schemas/UpdateDocumentVisibilityOverridesResponse' + "403": + description: Permissions error + "500": + description: Internal error + x-visibility: Public + x-speakeasy-group: client.governance.documents.visibilityoverrides + x-speakeasy-name-override: create + /rest/api/v1/governance/data/findings/exports: + post: + operationId: createfindingsexport + summary: Creates findings export + description: Creates a new DLP findings export job. + tags: + - Governance + security: + - APIToken: [] + requestBody: + content: + application/json; charset=UTF-8: + schema: + $ref: '#/components/schemas/DlpExportFindingsRequest' + required: true + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ExportInfo' + "403": + description: Permissions error + "500": + description: Internal error + x-visibility: Public + x-speakeasy-group: client.governance.data.findings + x-speakeasy-name-override: create + get: + operationId: listfindingsexports + summary: Lists findings exports + description: Lists all DLP findings exports. + tags: + - Governance + security: + - APIToken: [] + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ListDlpFindingsExportsResponse' + "403": + description: Permissions error + "500": + description: Internal error + x-visibility: Public + x-speakeasy-group: client.governance.data.findings + x-speakeasy-name-override: list + /rest/api/v1/governance/data/findings/exports/{id}: + get: + operationId: downloadfindingsexport + summary: Downloads findings export + description: Downloads a DLP findings export as a CSV file. + tags: + - Governance + security: + - APIToken: [] + parameters: + - name: id + in: path + description: The ID of the export to download. + required: true + schema: + type: string + responses: + "200": + description: Downloads CSV of exported findings. + content: + text/csv; charset=UTF-8: + schema: + type: string + description: CSV of all the exported findings. + "403": + description: Permissions error + "500": + description: Internal error + x-visibility: Public + x-speakeasy-group: client.governance.data.findings + x-speakeasy-name-override: download + delete: + operationId: deletefindingsexport + summary: Deletes findings export + description: Deletes a DLP findings export. + tags: + - Governance + security: + - APIToken: [] + parameters: + - name: id + in: path + description: The ID of the export to delete. + required: true + schema: + type: integer + format: int64 + responses: + "200": + description: OK + "403": + description: Permissions error + "500": + description: Internal error + x-visibility: Public + x-speakeasy-group: client.governance.data.findings + x-speakeasy-name-override: delete + /rest/api/v1/configure/datasources/{datasourceId}/instances/{instanceId}: + get: + operationId: getDatasourceInstanceConfiguration + summary: Get datasource instance configuration + description: | + Gets the greenlisted configuration values for a datasource instance. Returns only configuration keys that are exposed via the public API greenlist. + tags: + - Datasources + security: + - APIToken: [] + parameters: + - $ref: '#/components/parameters/datasourceId' + - $ref: '#/components/parameters/instanceId' + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/DatasourceConfigurationResponse' + "400": + description: Invalid request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + "401": + description: Not authorized + "403": + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + "404": + description: Datasource instance not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + x-visibility: Preview + x-speakeasy-group: client.datasources + x-speakeasy-name-override: retrieveConfiguration + patch: + operationId: updateDatasourceInstanceConfiguration + summary: Update datasource instance configuration + description: | + Updates the greenlisted configuration values for a datasource instance. Only configuration keys that are exposed via the public API greenlist may be set. Returns the full greenlisted configuration after the update is applied. + tags: + - Datasources + security: + - APIToken: [] + parameters: + - $ref: '#/components/parameters/datasourceId' + - $ref: '#/components/parameters/instanceId' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateDatasourceConfigurationRequest' + required: true + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/DatasourceConfigurationResponse' + "400": + description: Invalid request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + "401": + description: Not authorized + "403": + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + "404": + description: Datasource instance not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + x-visibility: Preview + x-speakeasy-group: client.datasources + x-speakeasy-name-override: updateConfiguration + /rest/api/v1/datasource/{datasourceInstanceId}/credentialstatus: + get: + operationId: getDatasourceCredentialStatus + summary: Get datasource instance credential status + description: | + Returns the current credential status for a datasource instance. Access is limited to callers with the ADMIN scope; the handler enforces this check. + tags: + - Datasources + security: + - APIToken: [] + parameters: + - $ref: '#/components/parameters/datasourceInstanceId' + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/DatasourceCredentialStatusResponse' + "400": + description: Invalid request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + "401": + description: Not authorized + "403": + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + "404": + description: Datasource instance not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + x-visibility: Preview + x-speakeasy-group: client.datasources + x-speakeasy-name-override: retrieveCredentialStatus + /rest/api/v1/datasource/{datasourceInstanceId}/credentials: + post: + operationId: rotateDatasourceCredentials + summary: Rotate datasource instance credentials + description: | + Rotates the credentials that a datasource instance uses to connect to its upstream system. Replaces the active credential material with the supplied values and returns the credential status after rotation. Access is limited to callers with the ADMIN scope; the handler enforces this check. + Only keys recognized as credential material for the datasource type may be set in `credentials.values` (e.g. `clientSecret`, `apiToken`, `privateKey`, depending on the configured auth method). Unrecognized keys, or keys that correspond to non-credential configuration, cause a 400; other instance configuration must be updated via PATCH /configure/datasources/{datasourceId}/instances/{instanceId}. + tags: + - Datasources + security: + - APIToken: [] + parameters: + - $ref: '#/components/parameters/datasourceInstanceId' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RotateDatasourceCredentialsRequest' + required: true + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/DatasourceCredentialStatusResponse' + "400": + description: Invalid request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + "401": + description: Not authorized + "403": + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + "404": + description: Datasource instance not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + x-visibility: Preview + x-speakeasy-group: client.datasources + x-speakeasy-name-override: rotateCredentials + /rest/api/v1/chat#stream: + post: + tags: + - Chat + summary: Chat + description: Have a conversation with Glean AI. + operationId: chatStream + security: + - APIToken: [] + x-visibility: Public + x-codegen-request-body-name: payload + parameters: + - $ref: '#/components/parameters/timezoneOffset' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ChatRequest' + examples: + defaultExample: + value: + messages: + - author: USER + messageType: CONTENT + fragments: + - text: What are the company holidays this year? + gptAgentExample: + value: + agentConfig: + agent: GPT + messages: + - author: USER + messageType: CONTENT + fragments: + - text: Who was the first person to land on the moon? + description: Includes chat history for Glean AI to respond to. + required: true + x-exportParamName: Request + responses: + '200': + description: OK + content: + text/plain: + schema: + $ref: '#/components/schemas/ChatRequestStream' + examples: + defaultExample: + value: + messages: + - author: GLEAN_AI + messageType: CONTENT + hasMoreFragments: false + agentConfig: + agent: DEFAULT + mode: DEFAULT + fragments: + - text: There are no holidays! + streamingExample: + value: + messages: + - author: GLEAN_AI + messageType: CONTENT + agentConfig: + agent: DEFAULT + mode: DEFAULT + hasMoreFragments: true + fragments: null + - author: GLEAN_AI + messageType: CONTENT + agentConfig: + agent: DEFAULT + mode: DEFAULT + hasMoreFragments: true + fragments: null + - author: GLEAN_AI + messageType: CONTENT + agentConfig: + agent: DEFAULT + mode: DEFAULT + hasMoreFragments: true + fragments: + - text: e are + - author: GLEAN_AI + messageType: CONTENT + agentConfig: + agent: DEFAULT + mode: DEFAULT + hasMoreFragments: true + fragments: + - text: no hol + - author: GLEAN_AI + messageType: CONTENT + agentConfig: + agent: DEFAULT + mode: DEFAULT + hasMoreFragments: false + fragments: + - text: idays! + updateResponse: + value: + messages: + - author: GLEAN_AI + messageType: UPDATE + agentConfig: + agent: DEFAULT + mode: DEFAULT + fragments: + - text: '**Reading:**' + - structuredResults: + - document: + id: '123' + title: Company Handbook + citationResponse: + value: + messages: + - author: GLEAN_AI + messageType: CONTENT + agentConfig: + agent: DEFAULT + mode: DEFAULT + citations: + - sourceDocument: + id: '123' + title: Company Handbook + referenceRanges: + - textRange: + startIndex: 0 + endIndex: 12 + type: CITATION + '400': + description: Invalid request + '401': + description: Not Authorized + '408': + description: Request Timeout + '429': + description: Too Many Requests + x-speakeasy-group: client.chat + x-speakeasy-name-override: createStream + x-speakeasy-usage-example: true +components: + securitySchemes: + APIToken: + type: http + scheme: bearer + description: >- + HTTP bearer token. Accepts a Glean-issued API token, an OAuth access token from the Glean OAuth Authorization Server (including Dynamic Client Registration clients), or an OAuth access token issued by an external identity provider. External-IdP OAuth tokens must also include the `X-Glean-Auth-Type: OAUTH` request header. OAuth is supported on the Client API only; the Indexing API requires a Glean-issued token. + schemas: + PlatformWarning: + type: object + additionalProperties: false + required: + - code + - message + description: Non-blocking warning attached to a successful Platform response. + properties: + code: + type: string + minLength: 1 + description: | + Open snake_case warning code. Clients must tolerate unknown values; the set of codes is not a closed enum. + example: results_incomplete + message: + type: string + minLength: 1 + description: Human-readable warning message. + PlatformAgentsSearchRequest: + type: object + additionalProperties: false + properties: + name: + type: string + description: Case-insensitive substring to match against agent names. If omitted or empty, no name filter is applied. + example: HR Policy Agent + PlatformAgentCapabilities: + type: object + additionalProperties: true + properties: + ap.io.messages: + type: boolean + description: Whether the agent supports messages as input. + ap.io.streaming: + type: boolean + description: Whether the agent supports streaming output. + PlatformAgent: + type: object + required: + - agent_id + - name + - capabilities + properties: + agent_id: + type: string + description: ID of the agent. + example: mho4lwzylcozgoc2 + name: + type: string + description: Name of the agent. + example: HR Policy Agent + description: + type: string + description: Description of the agent. + metadata: + type: object + description: Agent metadata. + additionalProperties: true + capabilities: + $ref: "#/components/schemas/PlatformAgentCapabilities" + PlatformAgentsSearchResponse: + type: object + required: + - agents + - request_id + properties: + agents: + type: array + description: Agents matching the search request. + items: + $ref: "#/components/schemas/PlatformAgent" + request_id: + type: string + description: Platform-generated request ID for support correlation. + PlatformProblemDetailCode: + type: string + description: Stable machine-readable error code. + enum: + - invalid_request + - missing_required_field + - invalid_parameter + - invalid_cursor + - expired_cursor + - invalid_filter + - invalid_datasource + - authentication_required + - token_expired + - insufficient_permissions + - spend_limit_exceeded + - resource_not_found + - method_not_allowed + - request_timeout + - request_too_large + - token_limit_exceeded + - conflict + - gone + - unprocessable_query + - tools_unauthorized + - rate_limit_exceeded + - internal_error + - service_unavailable + x-glean-problem-detail-codes: + invalid_request: + status: 400 + title: Invalid Request + missing_required_field: + status: 400 + title: Missing Required Field + invalid_parameter: + status: 400 + title: Invalid Parameter + invalid_cursor: + status: 400 + title: Invalid Pagination Cursor + expired_cursor: + status: 400 + title: Expired Pagination Cursor + invalid_filter: + status: 400 + title: Invalid Filter + invalid_datasource: + status: 400 + title: Invalid Datasource + authentication_required: + status: 401 + title: Authentication Required + token_expired: + status: 401 + title: Token Expired + insufficient_permissions: + status: 403 + title: Insufficient Permissions + spend_limit_exceeded: + status: 403 + title: Spend Limit Exceeded + resource_not_found: + status: 404 + title: Resource Not Found + method_not_allowed: + status: 405 + title: Method Not Allowed + request_timeout: + status: 408 + title: Request Timeout + request_too_large: + status: 413 + title: Request Too Large + token_limit_exceeded: + status: 413 + title: Token Limit Exceeded + conflict: + status: 409 + title: Conflict + gone: + status: 410 + title: Gone + unprocessable_query: + status: 422 + title: Unprocessable Query + tools_unauthorized: + status: 422 + title: Tools Unauthorized + rate_limit_exceeded: + status: 429 + title: Rate Limit Exceeded + internal_error: + status: 500 + title: Internal Error + service_unavailable: + status: 503 + title: Service Unavailable + example: invalid_cursor + PlatformProblemDetailError: + type: object + required: + - pointer + - detail + description: Field-level validation problem for a single offending field. + properties: + pointer: + type: string + description: RFC 6901 JSON Pointer to the offending field. + example: /messages/0/role + detail: + type: string + description: Human-readable explanation for this field. + example: "Must be one of: USER, GLEAN_AI." + code: + $ref: "#/components/schemas/PlatformProblemDetailCode" + PlatformProblemDetail: + type: object + required: + - type + - title + - status + - detail + - code + - request_id + description: | + Error response following RFC 9457, extended with `code` and `documentation_url` for machine-readable classification and self-service remediation. + properties: + type: + type: string + format: uri + description: URI identifying the error type. + example: https://developers.glean.com/errors/invalid-cursor + title: + type: string + description: Short, human-readable summary of the error. + example: Invalid Pagination Cursor + status: + type: integer + description: HTTP status code mirrored from the response. + example: 400 + detail: + type: string + description: Human-readable explanation specific to this occurrence. + example: | + The provided cursor has expired. Start a new search to get a fresh cursor. + code: + $ref: "#/components/schemas/PlatformProblemDetailCode" + documentation_url: + type: string + format: uri + description: Direct URL to documentation for this error code. + example: https://developers.glean.com/errors/invalid-cursor + request_id: + type: string + description: Platform-generated request ID for support correlation. + example: req_7f8a9b0c1d2e + errors: + type: array + description: Field-level validation problems, one entry per offending field. + items: + $ref: "#/components/schemas/PlatformProblemDetailError" + PlatformAgentGetResponse: + type: object + required: + - agent + - request_id + properties: + agent: + $ref: "#/components/schemas/PlatformAgent" + request_id: + type: string + description: Platform-generated request ID for support correlation. + PlatformActionSummary: + type: object + required: + - tool_id + - display_name + properties: + tool_id: + type: string + description: Unique identifier of the action. + display_name: + type: string + description: Display name of the action. + type: + type: string + description: Tool type. + auth_type: + type: string + description: Authentication type required by the action. + write_action_type: + type: string + description: Write-action execution type. + is_setup_finished: + type: boolean + description: Whether this action has been fully configured. + data_source: + type: string + description: Kind of knowledge the action accesses or modifies. + PlatformAgentSchemasResponse: + type: object + required: + - agent_id + - input_schema + - output_schema + - request_id + properties: + agent_id: + type: string + description: ID of the agent. + name: + type: string + description: Name of the agent. + input_schema: + type: object + description: Agent input schema in JSON Schema format. + additionalProperties: true + output_schema: + type: object + description: Agent output schema in JSON Schema format. + additionalProperties: true + tools: + type: array + description: Tools that the agent can invoke, when requested. + items: + $ref: "#/components/schemas/PlatformActionSummary" + request_id: + type: string + description: Platform-generated request ID for support correlation. + PlatformMessageRole: + type: string + description: Role of the message author. + example: USER + enum: + - USER + - GLEAN_AI + PlatformContentType: + type: string + enum: + - text + PlatformMessageTextBlock: + type: object + required: + - text + - type + properties: + text: + type: string + description: Text content. + type: + $ref: "#/components/schemas/PlatformContentType" + PlatformMessage: + type: object + required: + - role + - content + properties: + role: + $ref: "#/components/schemas/PlatformMessageRole" + content: + type: array + minItems: 1 + description: Content blocks in the message. + items: + $ref: "#/components/schemas/PlatformMessageTextBlock" + PlatformAgentRunCreateRequest: + type: object + additionalProperties: false + description: | + Request to run an agent. A request MUST supply either `messages` (a non-empty conversation) or `input` (for input-form triggered agents). + properties: + input: + type: object + description: Input fields for an input-form triggered agent. + additionalProperties: true + messages: + type: array + minItems: 1 + description: | + Messages to pass to the agent. When provided, the array MUST contain at least one message and each message MUST specify a valid `role` and non-empty `content`. + items: + $ref: "#/components/schemas/PlatformMessage" + metadata: + type: object + description: Metadata to pass to the agent. + additionalProperties: true + stream: + type: boolean + description: Whether to stream the run response as server-sent events. + default: false + PlatformAgentRunCreate: + type: object + required: + - agent_id + properties: + agent_id: + type: string + description: ID of the agent being run. + input: + type: object + description: Input fields for an input-form triggered agent. + additionalProperties: true + messages: + type: array + description: Messages passed to the agent. + items: + $ref: "#/components/schemas/PlatformMessage" + metadata: + type: object + description: Metadata passed to the agent. + additionalProperties: true + PlatformAgentExecutionStatus: + type: string + description: Status of the agent run. + enum: + - error + - success + PlatformAgentRun: + allOf: + - $ref: "#/components/schemas/PlatformAgentRunCreate" + - type: object + required: + - status + properties: + status: + $ref: "#/components/schemas/PlatformAgentExecutionStatus" + PlatformAgentRunWaitResponse: + type: object + required: + - request_id + properties: + run: + $ref: "#/components/schemas/PlatformAgentRun" + messages: + type: array + description: Messages returned by the completed run. + items: + $ref: "#/components/schemas/PlatformMessage" + request_id: + type: string + description: Platform-generated request ID for support correlation. + PlatformAuthenticationSuggestion: + type: object + description: One tool the caller must authorize before the agent can run. + required: + - server_id + properties: + tool_name: + type: string + description: Human-readable tool name. + server_id: + type: string + description: Identifier to POST to `/tool-servers/{serverId}/auth` (Client API) with `returnUrl` in the request body to obtain an `authorizationUrl` to redirect the end user to. + PlatformUnauthorizedAgentToolsProblem: + description: Problem detail extended with `authentication_suggestions` naming each tool the caller must authorize. + allOf: + - $ref: "#/components/schemas/PlatformProblemDetail" + - type: object + required: + - authentication_suggestions + properties: + authentication_suggestions: + type: array + description: One entry per tool the caller must authorize. + items: + $ref: "#/components/schemas/PlatformAuthenticationSuggestion" + PlatformChatInputMessage: + type: object + additionalProperties: false + required: + - role + - content + properties: + role: + type: string + enum: + - USER + - ASSISTANT + content: + type: string + minLength: 1 + PlatformChatCreateRequest: + type: object + additionalProperties: false + required: + - input + properties: + input: + description: | + Either a plain string (single user turn) or a chronological array of `USER`/`ASSISTANT` messages. The final array message must be `USER`. + oneOf: + - type: string + minLength: 1 + - type: array + minItems: 1 + items: + $ref: "#/components/schemas/PlatformChatInputMessage" + stream: + type: boolean + description: | + When true, respond with `text/event-stream`. When false or omitted, respond with `application/json`. + default: false + store: + type: boolean + description: | + When true (default), persist the interaction and return a `conversation_id`. When false, run ephemerally with no persistence. + default: true + conversation_id: + type: string + minLength: 1 + description: | + Continue an existing stored conversation. Incompatible with message-array `input` and with `store: false`. + PlatformChatStreamResponseId: + type: string + minLength: 1 + pattern: ^resp_[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$ + description: | + Platform-owned, non-persisted response envelope identifier in `resp_` form. The same identifier is used for every event in one streamed response. + PlatformChatDocumentSource: + type: object + additionalProperties: false + required: + - type + properties: + type: + type: string + enum: + - DOCUMENT + document_id: + type: string + minLength: 1 + url: + type: string + minLength: 1 + title: + type: string + datasource: + type: string + anyOf: + - required: + - document_id + - required: + - url + PlatformChatPersonSource: + type: object + additionalProperties: false + required: + - type + - person_id + properties: + type: + type: string + enum: + - PERSON + person_id: + type: string + minLength: 1 + name: + type: string + url: + type: string + PlatformChatFileSource: + type: object + additionalProperties: false + required: + - type + - file_id + properties: + type: + type: string + enum: + - FILE + file_id: + type: string + minLength: 1 + title: + type: string + url: + type: string + datasource: + type: string + PlatformChatCustomEntitySource: + type: object + additionalProperties: false + required: + - type + - entity_id + properties: + type: + type: string + enum: + - CUSTOM_ENTITY + entity_id: + type: string + minLength: 1 + name: + type: string + title: + type: string + url: + type: string + datasource: + type: string + PlatformChatCitationSource: + description: Four-variant citation source union. + oneOf: + - $ref: "#/components/schemas/PlatformChatDocumentSource" + - $ref: "#/components/schemas/PlatformChatPersonSource" + - $ref: "#/components/schemas/PlatformChatFileSource" + - $ref: "#/components/schemas/PlatformChatCustomEntitySource" + discriminator: + propertyName: type + mapping: + DOCUMENT: "#/components/schemas/PlatformChatDocumentSource" + PERSON: "#/components/schemas/PlatformChatPersonSource" + FILE: "#/components/schemas/PlatformChatFileSource" + CUSTOM_ENTITY: "#/components/schemas/PlatformChatCustomEntitySource" + PlatformChatCitationSnippet: + type: object + additionalProperties: false + required: + - text + properties: + text: + type: string + minLength: 1 + page_number: + type: integer + nullable: true + PlatformChatCitationAnnotation: + type: object + additionalProperties: false + required: + - type + - sources + properties: + type: + type: string + enum: + - CITATION + sources: + type: array + minItems: 1 + items: + $ref: "#/components/schemas/PlatformChatCitationSource" + start_index: + type: integer + minimum: 0 + nullable: true + end_index: + type: integer + minimum: 0 + nullable: true + snippets: + type: array + nullable: true + items: + $ref: "#/components/schemas/PlatformChatCitationSnippet" + PlatformChatOutputTextContent: + type: object + additionalProperties: false + required: + - type + - text + properties: + type: + type: string + enum: + - OUTPUT_TEXT + text: + type: string + annotations: + type: array + items: + $ref: "#/components/schemas/PlatformChatCitationAnnotation" + PlatformChatOutputMessage: + type: object + additionalProperties: false + required: + - type + - role + - content + properties: + type: + type: string + enum: + - MESSAGE + role: + type: string + enum: + - ASSISTANT + content: + type: array + minItems: 1 + maxItems: 1 + items: + $ref: "#/components/schemas/PlatformChatOutputTextContent" + PlatformChatCompletedResponse: + type: object + additionalProperties: false + required: + - id + - object + - created_at + - status + - output + - store + - request_id + properties: + id: + $ref: "#/components/schemas/PlatformChatStreamResponseId" + object: + type: string + enum: + - RESPONSE + created_at: + type: string + format: date-time + description: RFC 3339 UTC timestamp when the response was created. + status: + type: string + enum: + - COMPLETED + output: + type: array + minItems: 1 + maxItems: 1 + items: + $ref: "#/components/schemas/PlatformChatOutputMessage" + store: + type: boolean + conversation_id: + type: string + minLength: 1 + nullable: true + description: Present when the interaction was persisted. + request_id: + type: string + minLength: 1 + PlatformSkillStatus: + type: string + enum: + - DRAFT + - ENABLED + - DISABLED + description: Current skill status. + PlatformSkillOrigin: + type: string + enum: + - CUSTOM + description: Source category for the skill. + PlatformSkillSyncStatus: + type: string + enum: + - UP_TO_DATE + - UPDATE_AVAILABLE + - SYNC_FAILED + description: Current external-source sync status. + PlatformSkillSourceProvenance: + type: object + properties: + source_url: + type: string + description: URL of the external source the skill was imported from. + commit_sha: + type: string + description: Source commit SHA for the imported skill. + imported_at: + type: string + format: date-time + description: Time the skill was imported. + last_synced_at: + type: string + format: date-time + description: Time the skill was last synced from its source. + sync_status: + $ref: "#/components/schemas/PlatformSkillSyncStatus" + sync_error: + type: string + description: Human-readable sync failure reason, present only when sync_status is SYNC_FAILED. + PlatformPersonReference: + type: object + description: A lightweight reference to a person, used where a payload merely points at someone. + required: + - name + properties: + id: + type: string + description: Opaque Glean person ID. + name: + type: string + description: Display name. + PlatformSkill: + type: object + required: + - id + - display_name + - description + - latest_version + - latest_minor_version + - status + - origin + - owner + - created_at + - updated_at + properties: + id: + type: string + description: Glean skill ID. + display_name: + type: string + description: Human-readable skill name. + description: + type: string + description: Human-readable skill description. + latest_version: + type: integer + description: Latest major version number for the skill. + latest_minor_version: + type: integer + description: Latest minor version number for the skill. + status: + $ref: "#/components/schemas/PlatformSkillStatus" + origin: + $ref: "#/components/schemas/PlatformSkillOrigin" + source_provenance: + $ref: "#/components/schemas/PlatformSkillSourceProvenance" + owner: + $ref: "#/components/schemas/PlatformPersonReference" + created_at: + type: string + format: date-time + description: Time the skill was created. + updated_at: + type: string + format: date-time + description: Time the skill was last updated. + PlatformSkillsListResponse: + type: object + required: + - skills + - has_more + - next_cursor + - request_id + properties: + skills: + type: array + description: Skills available to the user. + items: + $ref: "#/components/schemas/PlatformSkill" + has_more: + type: boolean + description: Whether additional results are available. + next_cursor: + type: string + nullable: true + description: Cursor for the next page, or null when no more results are available. + request_id: + type: string + description: Platform-generated request ID for support correlation. + PlatformSkillCreateRequest: + type: object + additionalProperties: false + required: + - file + properties: + file: + type: string + format: binary + description: SKILL.md, .zip, or .skill bundle to create. + PlatformSkillCreateResponse: + type: object + required: + - skill + - request_id + properties: + skill: + $ref: "#/components/schemas/PlatformSkill" + request_id: + type: string + description: Platform-generated request ID for support correlation. + PlatformSkillImportRequest: + type: object + additionalProperties: false + required: + - source_urls + properties: + source_urls: + type: array + minItems: 1 + maxItems: 100 + uniqueItems: true + description: Resolved GitHub skill URLs selected from a source preview. + items: + type: string + minLength: 1 + maxLength: 2048 + PlatformSkillImportResponse: + type: object + required: + - skills + - request_id + properties: + skills: + type: array + minItems: 1 + description: Independently persisted skills in request order. + items: + $ref: "#/components/schemas/PlatformSkill" + request_id: + type: string + description: Platform-generated request ID for support correlation. + PlatformSkillValidationRequest: + type: object + additionalProperties: false + required: + - file + properties: + file: + type: string + format: binary + description: SKILL.md, .zip, or .skill bundle to validate. + PlatformSkillValidationMetadata: + type: object + required: + - display_name + - description + properties: + display_name: + type: string + description: Skill name parsed from SKILL.md frontmatter. + description: + type: string + description: Skill description parsed from SKILL.md frontmatter. + PlatformSkillValidationFile: + type: object + required: + - path + - size_bytes + - is_manifest + properties: + path: + type: string + description: Normalized relative path in the skill bundle. + size_bytes: + type: integer + description: File size in bytes. + is_manifest: + type: boolean + description: Whether this file is the skill manifest. + PlatformSkillValidationResponse: + type: object + required: + - metadata + - files + - warnings + - request_id + properties: + metadata: + $ref: "#/components/schemas/PlatformSkillValidationMetadata" + files: + type: array + description: Normalized files in the bundle after stripping an optional single root folder. + items: + $ref: "#/components/schemas/PlatformSkillValidationFile" + warnings: + type: array + description: Non-blocking validation warnings. + items: + $ref: "#/components/schemas/PlatformWarning" + request_id: + type: string + description: Platform-generated request ID for support correlation. + PlatformSkillSourcePreviewRequest: + type: object + additionalProperties: false + required: + - source_url + properties: + source_url: + type: string + minLength: 1 + maxLength: 2048 + description: GitHub URL for a skill directory, SKILL.md file, or repository to inspect. + stream: + type: boolean + default: false + description: Whether to stream repository scan progress using server-sent events. + PlatformSkillSourcePreviewFile: + type: object + required: + - path + - content + properties: + path: + type: string + description: Relative path within the skill bundle. + content: + type: string + description: UTF-8 file content. + PlatformSkillSourcePreview: + type: object + required: + - display_name + - description + - source_url + - commit_sha + - main_content + - files + - file_tree + properties: + display_name: + type: string + description: Skill name parsed from SKILL.md frontmatter. + description: + type: string + description: Skill description parsed from SKILL.md frontmatter. + source_url: + type: string + description: Resolved URL for this skill within the source. + commit_sha: + type: string + description: Commit SHA used to produce the preview. + main_content: + type: string + description: SKILL.md content fetched as part of the preview. + files: + type: array + description: Supporting files fetched with the skill. + items: + $ref: "#/components/schemas/PlatformSkillSourcePreviewFile" + file_tree: + type: array + description: Relative paths discovered for the skill. + items: + type: string + PlatformSkillSourcePreviewFailureCode: + type: string + enum: + - INVALID_SKILL + - SKILL_FETCH_FAILED + description: Stable machine-readable reason a discovered entry was excluded. + PlatformSkillSourcePreviewFailure: + type: object + required: + - source_url + - code + - detail + properties: + source_url: + type: string + description: Resolved URL for the entry that could not be previewed. + code: + $ref: "#/components/schemas/PlatformSkillSourcePreviewFailureCode" + detail: + type: string + description: Safe explanation of why the entry was excluded. + PlatformSkillSourcePreviewResponse: + type: object + required: + - skills + - failures + - request_id + properties: + skills: + type: array + minItems: 1 + description: Valid skills discovered at the source URL. + items: + $ref: "#/components/schemas/PlatformSkillSourcePreview" + failures: + type: array + description: Discovered entries that could not be included in the preview. + items: + $ref: "#/components/schemas/PlatformSkillSourcePreviewFailure" + request_id: + type: string + description: Platform-generated request ID for support correlation. + PlatformSkillGetResponse: + type: object + required: + - skill + - request_id + properties: + skill: + $ref: "#/components/schemas/PlatformSkill" + request_id: + type: string + description: Platform-generated request ID for support correlation. + PlatformSkillUpdateStatus: + type: string + enum: + - ENABLED + - DISABLED + description: New status for the skill. + PlatformSkillUpdateRequest: + type: object + additionalProperties: false + required: + - status + properties: + status: + $ref: "#/components/schemas/PlatformSkillUpdateStatus" + PlatformSkillUpdateResponse: + type: object + required: + - skill + - request_id + properties: + skill: + $ref: "#/components/schemas/PlatformSkill" + 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 + - 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: + type: boolean + description: Whether this request created a new skill version. + request_id: + type: string + description: Platform-generated request ID for support correlation. + PlatformSkillVersion: + type: object + required: + - skill_id + - version + - minor_version + - is_latest + - created_by + - created_at + - updated_at + properties: + skill_id: + type: string + description: Glean skill ID. + version: + type: integer + description: Major version number. + minor_version: + type: integer + description: Minor version number. + is_latest: + type: boolean + description: Whether this is the latest version of the skill. + created_by: + $ref: "#/components/schemas/PlatformPersonReference" + created_at: + type: string + format: date-time + description: Time this version was created. + updated_at: + type: string + format: date-time + description: Time this version was last updated. + source_provenance: + $ref: "#/components/schemas/PlatformSkillSourceProvenance" + PlatformSkillVersionsListResponse: + type: object + required: + - versions + - has_more + - next_cursor + - request_id + properties: + versions: + type: array + description: Versions available for the skill. + items: + $ref: "#/components/schemas/PlatformSkillVersion" + has_more: + type: boolean + description: Whether additional results are available. + next_cursor: + type: string + nullable: true + description: Cursor for the next page, or null when no more results are available. + request_id: + type: string + description: Platform-generated request ID for support correlation. + PlatformSkillVersionCreateRequest: + type: object + additionalProperties: false + required: + - file + properties: + file: + type: string + format: binary + description: SKILL.md, .zip, or .skill bundle to store as a new version. + PlatformSkillVersionCreateResponse: + type: object + required: + - version + - request_id + properties: + version: + $ref: "#/components/schemas/PlatformSkillVersion" + request_id: + type: string + description: Platform-generated request ID for support correlation. + PlatformSkillVersionGetResponse: + type: object + required: + - version + - request_id + properties: + version: + $ref: "#/components/schemas/PlatformSkillVersion" + request_id: + type: string + description: Platform-generated request ID for support correlation. + PlatformFilterOperator: + type: string + description: Supported filter operator. + enum: + - EQUALS + - NOT_EQUALS + - GT + - GTE + - LT + - LTE + PlatformFilter: + type: object + additionalProperties: false + required: + - field + - values + description: | + A single filter criterion. For `EQUALS`, multiple values within a filter are OR'd; for `NOT_EQUALS`, listed values are excluded. Separate filters are AND'd with each other and with inline operators in `query`. Repeated same-field `EQUALS` filters are rejected. + properties: + field: + type: string + minLength: 1 + description: | + Filter field name. Built-in names (case-sensitive, lowercase only): `type`, `owner`, `from`, `author`, `channel`, `status`, `assignee`, `reporter`, `component`, `mentions`, and `collection`. Built-ins accept only `EQUALS` and `NOT_EQUALS`. Any other nonblank name is accepted as a custom filter without spelling, existence, or type checks; behavior depends on your connected sources. + example: type + values: + type: array + minItems: 1 + items: + type: string + minLength: 1 + description: | + One or more values to match. Prefer values returned by filter discovery unchanged. For people (`USER`) fields, values may be email addresses or display names. + example: + - spreadsheet + - presentation + operator: + allOf: + - $ref: "#/components/schemas/PlatformFilterOperator" + description: | + Comparison operator. Defaults to `EQUALS`. Built-in fields support only `EQUALS` and `NOT_EQUALS`. Range operators (`GT`, `GTE`, `LT`, `LTE`) require exactly one value; express ranges with multiple filters on the same field. Custom fields may support different operators depending on the data source. + PlatformTimeRange: + type: object + additionalProperties: false + description: Filter results to those last updated within this range. + properties: + start: + type: string + format: date-time + description: Inclusive lower bound in ISO 8601 format. + end: + type: string + format: date-time + description: Exclusive upper bound in ISO 8601 format. + PlatformSearchRequest: + type: object + additionalProperties: false + required: + - query + example: + query: quarterly planning 2026 + datasources: + - confluence + - google_drive + filters: + - field: type + values: + - spreadsheet + - presentation + properties: + query: + type: string + minLength: 1 + description: | + The search query string. Supports inline operators such as `from:jane type:document app:confluence`. Inline operators are AND'd with structured `filters`. + page_size: + type: integer + minimum: 1 + maximum: 100 + default: 10 + description: Number of results to return per page. + cursor: + type: string + nullable: true + description: | + Opaque pagination token from a previous response's `next_cursor` field. Omit on the first request. + example: "" + datasources: + type: array + minItems: 1 + items: + type: string + minLength: 1 + description: | + Restrict results to specific datasource identifiers returned by `GET /api/search/filters`. Scopes by datasource type and may include results from multiple instances of that type. + filters: + type: array + minItems: 1 + items: + $ref: "#/components/schemas/PlatformFilter" + description: | + Structured filters applied to search results. Multiple values within a filter with `EQUALS` are OR'd; separate filters are AND'd. Conflicting constraints on the same field (for example, `type:document` in `query` and `type:spreadsheet` in a filter) return an empty result set. See `Filter.field` for built-in field names and operators. Other nonblank field names are accepted as custom filters without validation; behavior depends on your connected sources. + time_range: + $ref: "#/components/schemas/PlatformTimeRange" + PlatformResult: + type: object + additionalProperties: false + required: + - url + - title + - datasource + properties: + url: + type: string + format: uri + minLength: 1 + description: Canonical URL of the result. + example: https://company.atlassian.net/wiki/spaces/ENG/pages/12345 + title: + type: string + minLength: 1 + description: Result title. + example: Q2 2026 Platform Roadmap + snippets: + type: array + items: + type: string + minLength: 1 + description: Query-relevant plain-text excerpts from the result body. + example: + - The platform team will focus on API stability and... + datasource: + type: string + minLength: 1 + description: The datasource this result originates from. + example: confluence + document_type: + type: string + nullable: true + minLength: 1 + description: The document type within the datasource. + example: page + creator: + $ref: "#/components/schemas/PlatformPersonReference" + owner: + $ref: "#/components/schemas/PlatformPersonReference" + updated_at: + type: string + format: date-time + nullable: true + description: When the result was last modified. + created_at: + type: string + format: date-time + nullable: true + description: When the result was created. + PlatformSearchResponse: + type: object + additionalProperties: false + required: + - results + - has_more + - 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 + nullable: true + 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. + PlatformTriggerStatus: + type: string + description: Current trigger lifecycle state. + example: ENABLED + enum: + - ENABLED + - DISABLED + PlatformTriggerAuth: + type: object + additionalProperties: false + required: + - type + - secret + description: Optional caller credential sent as an HTTP auth header on each delivery, in addition to the HMAC signature. Lets the receiving endpoint authenticate the request. On update, omit `auth` to preserve the existing credential; there is no in-place removal — recreate the trigger to remove auth. + properties: + type: + type: string + description: Credential scheme. + enum: + - BEARER + secret: + type: string + writeOnly: true + description: Secret credential value. Write-only; never returned on reads. + example: secret_test_123 + PlatformTriggerDelivery: + type: object + additionalProperties: false + required: + - webhook_url + properties: + webhook_url: + type: string + format: uri + pattern: ^https:// + description: HTTPS URL that signed events are delivered to. + example: https://customer.app/webhook + auth: + $ref: "#/components/schemas/PlatformTriggerAuth" + PlatformTrigger: + type: object + required: + - trigger_id + - preset_id + - status + - delivery + - created_at + - updated_at + properties: + trigger_id: + type: string + description: ID of the trigger. + example: trigger_test_123 + preset_id: + type: string + description: ID of the preset this trigger was created from. + example: GITHUB_1 + description: + type: string + description: Optional caller-supplied note describing this trigger. + example: Reviews I am tagged on, sent to my team's review channel + status: + $ref: "#/components/schemas/PlatformTriggerStatus" + inputs: + type: object + additionalProperties: true + description: Values supplied for the preset's inputs. + example: + repository: acme/payments-api + delivery: + $ref: "#/components/schemas/PlatformTriggerDelivery" + created_at: + type: string + format: date-time + description: Time the trigger was created. + updated_at: + type: string + format: date-time + description: Time the trigger was last updated. + PlatformTriggerListResponse: + type: object + required: + - results + - has_more + - next_cursor + - request_id + properties: + results: + type: array + description: Triggers owned by the caller. + items: + $ref: "#/components/schemas/PlatformTrigger" + has_more: + type: boolean + description: Whether additional results are available. + next_cursor: + type: string + nullable: true + description: Cursor for the next page, or null when no more results are available. + request_id: + type: string + description: Platform-generated request ID for support correlation. + PlatformTriggerCreateRequest: + type: object + additionalProperties: false + required: + - preset_id + - delivery + properties: + preset_id: + type: string + description: ID of the preset to instantiate. + example: GITHUB_1 + description: + type: string + description: Optional note describing this trigger. + example: Reviews I am tagged on, sent to my team's review channel + inputs: + type: object + additionalProperties: true + description: Values for the preset's inputs. + example: + repository: acme/payments-api + delivery: + $ref: "#/components/schemas/PlatformTriggerDelivery" + PlatformTriggerWithSecret: + allOf: + - $ref: "#/components/schemas/PlatformTrigger" + - type: object + required: + - signing_secret + properties: + signing_secret: + type: string + pattern: ^whsec_[A-Za-z0-9+/=]+$ + example: whsec_xxx + description: Secret for verifying webhook signatures, serialized as `whsec_` following Standard Webhooks. Returned only when the trigger is created and cannot be retrieved later. Store it securely. + PlatformTriggerCreateResponse: + type: object + required: + - trigger + - request_id + properties: + trigger: + $ref: "#/components/schemas/PlatformTriggerWithSecret" + request_id: + type: string + description: Platform-generated request ID for support correlation. + PlatformTriggerWebhookEventBase: + type: object + required: + - version + - trigger_id + - event_type + - datasource + - reason + - doc_type + - doc_id + - view_url + - title + properties: + version: + type: string + description: Webhook payload schema version. + pattern: ^1$ + trigger_id: + type: string + description: ID of the Platform trigger that produced the event. + example: trigger_test_123 + event_type: + type: string + description: Kind of trigger event. + datasource: + type: string + description: Datasource the event originated from. + example: GITHUB + reason: + type: string + description: Why the event fired. + example: REVIEW_REQUESTED + doc_type: + type: string + description: Datasource-specific object type. + example: pull + doc_id: + type: string + description: Identifier of the document the event is about. + example: GITHUB_pull_123 + view_url: + type: string + description: Link to the document in its source system. + example: https://github.com/acme/payments-api/pull/123 + title: + type: string + description: Title of the document, or the subject for email. + example: "Bug: login fails on Safari" + event_time: + type: string + format: date-time + description: Relevant event time. Document changes use the source-observed time when available and otherwise the document ingestion time; content schedules use the scheduled time. Omitted when no timestamp is available. + PlatformDocumentChangeWebhookEvent: + allOf: + - $ref: "#/components/schemas/PlatformTriggerWebhookEventBase" + - type: object + required: + - event_type + properties: + event_type: + type: string + pattern: ^DOCUMENT_CHANGE$ + content: + type: string + description: Email body content when the event is for an email document. + content_truncated: + type: boolean + description: Present and true when source content exceeded the delivery size limit. + example: + version: "1" + trigger_id: trigger_test_123 + event_type: DOCUMENT_CHANGE + datasource: GITHUB + reason: REVIEW_REQUESTED + doc_type: pull + doc_id: GITHUB_pull_123 + view_url: https://github.com/acme/payments-api/pull/123 + title: Add retry backoff to the crawler + event_time: "2025-04-23T11:00:00Z" + PlatformContentScheduleWebhookEvent: + allOf: + - $ref: "#/components/schemas/PlatformTriggerWebhookEventBase" + - type: object + required: + - event_type + - time_offset_seconds + properties: + event_type: + type: string + pattern: ^CONTENT_SCHEDULE$ + time_offset_seconds: + type: integer + format: int32 + description: Offset in seconds from the scheduled time at which the trigger fired. + example: + version: "1" + trigger_id: trigger_test_123 + event_type: CONTENT_SCHEDULE + datasource: GOOGLECALENDAR + reason: CONTENT_SCHEDULE + doc_type: event + doc_id: GCAL_event_123 + view_url: https://calendar.google.com/event?eid=abc + title: Weekly Sync + event_time: "2025-04-23T12:00:00Z" + time_offset_seconds: 1800 + PlatformTriggerWebhookEvent: + description: Every delivered webhook is one of these two variants. A trigger with a cron schedule carries no document and so cannot be delivered over a webhook. + oneOf: + - $ref: "#/components/schemas/PlatformDocumentChangeWebhookEvent" + - $ref: "#/components/schemas/PlatformContentScheduleWebhookEvent" + discriminator: + propertyName: event_type + mapping: + DOCUMENT_CHANGE: "#/components/schemas/PlatformDocumentChangeWebhookEvent" + CONTENT_SCHEDULE: "#/components/schemas/PlatformContentScheduleWebhookEvent" + PlatformTriggerGetResponse: + type: object + required: + - trigger + - request_id + properties: + trigger: + $ref: "#/components/schemas/PlatformTrigger" + request_id: + type: string + description: Platform-generated request ID for support correlation. + PlatformTriggerUpdateRequest: + type: object + additionalProperties: false + description: Partial update. Only the supplied fields are changed. + properties: + status: + $ref: "#/components/schemas/PlatformTriggerStatus" + description: + type: string + description: Optional note describing this trigger. + example: Reviews I am tagged on, sent to my team's review channel + inputs: + type: object + additionalProperties: true + description: Values for the preset's inputs. + example: + repository: acme/payments-api + delivery: + $ref: "#/components/schemas/PlatformTriggerDelivery" + PlatformTriggerEventSearchRequest: + type: object + additionalProperties: false + properties: + page_size: + type: integer + description: Maximum number of events to return. + minimum: 1 + maximum: 100 + default: 10 + PlatformTriggerEventType: + type: string + description: The kind of event. + example: DOCUMENT_CHANGE + enum: + - DOCUMENT_CHANGE + x-enumDescriptions: + DOCUMENT_CHANGE: A document was created, updated, or deleted. + x-speakeasy-enum-descriptions: + DOCUMENT_CHANGE: A document was created, updated, or deleted. + PlatformTriggerEventReason: + type: string + description: Why the event fired. + example: REVIEW_REQUESTED + enum: + - CREATED + - UPDATED + - DELETED + - MEETS_CONDITION + - ASSIGNED + - UNASSIGNED + - LABELED + - UNLABELED + - REVIEW_REQUESTED + - REVIEW_REQUEST_REMOVED + - READY_FOR_REVIEW + - CONVERTED_TO_DRAFT + - WEBHOOK_UPDATED + x-enumDescriptions: + CREATED: The document was created. + UPDATED: The document was updated. + DELETED: The document was deleted. + MEETS_CONDITION: The document started matching the trigger's conditions. + ASSIGNED: The item was assigned to someone. + UNASSIGNED: The item was unassigned. + LABELED: A label was added. + UNLABELED: A label was removed. + REVIEW_REQUESTED: A review was requested. + REVIEW_REQUEST_REMOVED: A review request was withdrawn. + READY_FOR_REVIEW: A draft was marked ready for review. + CONVERTED_TO_DRAFT: The item was converted back to a draft. + WEBHOOK_UPDATED: The source system sent a webhook update. + x-speakeasy-enum-descriptions: + CREATED: The document was created. + UPDATED: The document was updated. + DELETED: The document was deleted. + MEETS_CONDITION: The document started matching the trigger's conditions. + ASSIGNED: The item was assigned to someone. + UNASSIGNED: The item was unassigned. + LABELED: A label was added. + UNLABELED: A label was removed. + REVIEW_REQUESTED: A review was requested. + REVIEW_REQUEST_REMOVED: A review request was withdrawn. + READY_FOR_REVIEW: A draft was marked ready for review. + CONVERTED_TO_DRAFT: The item was converted back to a draft. + WEBHOOK_UPDATED: The source system sent a webhook update. + PlatformTriggerEvent: + type: object + required: + - event_type + - doc_id + - datasource + - doc_type + - view_url + - title + - reason + - event_time + description: A content event a trigger can fire on. + properties: + event_type: + $ref: "#/components/schemas/PlatformTriggerEventType" + datasource: + type: string + description: Datasource the event originated from. + example: GITHUB + reason: + $ref: "#/components/schemas/PlatformTriggerEventReason" + doc_type: + type: string + description: Datasource-specific object type. + example: pull + doc_id: + type: string + description: Identifier of the document the event is about. + view_url: + type: string + description: Link to the document in its source system. + title: + type: string + description: Title of the document, or the subject for email. + event_time: + type: string + format: date-time + description: "When the event happened at the source: the document's own change timestamp for a document change, and the scheduled time for a content schedule. Omitted when the source did not supply one." + PlatformTriggerEventSearchResponse: + type: object + required: + - results + - has_more + - request_id + properties: + results: + type: array + description: Matching events, most recent first. + items: + $ref: "#/components/schemas/PlatformTriggerEvent" + has_more: + type: boolean + description: | + Whether more events matched than were returned. Raise `page_size` to see more; cursor-based paging is not offered yet. + request_id: + type: string + description: Unique identifier for this request, for support and debugging. + PlatformTriggerPresetSummary: + type: object + required: + - preset_id + - datasource + - display_name + properties: + preset_id: + type: string + description: ID of the preset. Pass this when creating a trigger. + example: GITHUB_1 + datasource: + type: string + description: Datasource the preset fires on. + example: github + display_name: + type: string + description: Human-readable preset name. + example: Review requested from me + description: + type: string + description: Human-readable description of when the preset fires. + example: A review is requested from the trigger creator on a pull request + PlatformTriggerPresetListResponse: + type: object + required: + - results + - has_more + - next_cursor + - request_id + properties: + results: + type: array + description: Trigger presets available to the caller. + items: + $ref: "#/components/schemas/PlatformTriggerPresetSummary" + has_more: + type: boolean + description: Whether additional results are available. + next_cursor: + type: string + nullable: true + description: Cursor for the next page, or null when no more results are available. + request_id: + type: string + description: Platform-generated request ID for support correlation. + PlatformTriggerPresetInputType: + type: string + description: Type of a preset input. + example: PICKLIST + enum: + - PICKLIST + - TEXT + - USER + PlatformTriggerPresetInputValue: + type: object + required: + - value + - display_name + properties: + value: + type: string + description: | + The exact value to send in the trigger's `inputs` for this choice (e.g. a channel name, a user's email, etc). + example: acme/payments-api + display_name: + type: string + description: Human-readable name for this value. + example: acme/payments-api + PlatformTriggerPresetInput: + type: object + required: + - field + - type + - display_name + - is_required + properties: + field: + type: string + description: Identifier of the input, supplied as a key in the trigger's `inputs`. + example: repository + type: + $ref: "#/components/schemas/PlatformTriggerPresetInputType" + display_name: + type: string + description: Human-readable name for the input. + example: Repository + is_required: + type: boolean + description: Whether the caller must supply a value for this input. + values: + type: array + description: | + Bounded initial set of selectable values for a picklist input. Omitted entirely for free-text inputs. + items: + $ref: "#/components/schemas/PlatformTriggerPresetInputValue" + is_truncated: + type: boolean + description: | + Whether additional selectable values were omitted from `values`. When true, use GET /trigger-presets/{preset_id}/input-values with a query to narrow the result set. + PlatformTriggerPreset: + allOf: + - $ref: "#/components/schemas/PlatformTriggerPresetSummary" + - type: object + required: + - inputs + properties: + inputs: + type: array + description: Inputs the caller may supply when creating a trigger from this preset. + items: + $ref: "#/components/schemas/PlatformTriggerPresetInput" + PlatformTriggerPresetGetResponse: + type: object + required: + - trigger_preset + - request_id + properties: + trigger_preset: + $ref: "#/components/schemas/PlatformTriggerPreset" + request_id: + type: string + description: Platform-generated request ID for support correlation. + PlatformTriggerPresetInputValueListResponse: + type: object + required: + - results + - is_truncated + - request_id + properties: + results: + type: array + description: The bounded set of selectable values matching the query. + items: + $ref: "#/components/schemas/PlatformTriggerPresetInputValue" + is_truncated: + type: boolean + description: | + Whether additional matches were omitted. When true, refine `query` to narrow the result set. + request_id: + type: string + description: Platform-generated request ID for support correlation. + PlatformTriggerPresetEventSearchRequest: + type: object + additionalProperties: false + properties: + inputs: + type: object + description: | + Values for the preset's input fields, keyed by field name. + additionalProperties: + type: string + example: + repository: acme/payments-api + page_size: + type: integer + description: Maximum number of events to return. + minimum: 1 + maximum: 100 + default: 10 + ActivityEventParams: + properties: + bodyContent: + type: string + description: The HTML content of the page body. + datasourceInstance: + type: string + description: The full datasource instance name inferred from the URL of the event + datasource: + type: string + description: The datasource without the instance inferred from the URL of the event + instanceOnlyName: + type: string + description: The instance only name of the datasource instance, e.g. 1 for jira_1, inferred from the URL of the event + duration: + type: integer + description: Length in seconds of the activity. For VIEWS, this represents the amount the page was visible in the foreground. + query: + type: string + description: The user's search query associated with a SEARCH. + referrer: + type: string + description: The referring URL of the VIEW or SEARCH. + title: + type: string + description: The page title associated with the URL of the event + truncated: + type: boolean + description: Indicates that the parameters are incomplete and more parameters may be sent with the same action+timestamp+URL in the future. This is used for sending the duration when a `VIEW` is finished. + ActivityEvent: + properties: + id: + type: string + description: Universally unique identifier of the event. To allow for reliable retransmission, only the earliest received event of a given UUID is considered valid by the server and subsequent are ignored. + action: + type: string + enum: + - VIEW + - EDIT + - SEARCH + - COMMENT + - CRAWL + - HISTORICAL_SEARCH + - HISTORICAL_VIEW + description: The type of activity this represents. + x-enumDescriptions: + VIEW: Represents a visit to the given `url`. + EDIT: Represents an edit of the document represented by the `url`. + SEARCH: Represents a search performed at the given `url`. + COMMENT: Represents a comment on the document represented by the `url`. + CRAWL: Represents an explicit request to index the given `url` along with associated attributes in this payload. + HISTORICAL_SEARCH: Represents a search performed at the given `url` as indicated by the user's history. + HISTORICAL_VIEW: Represents a visit to the given `url` as indicated by the user's history. + x-speakeasy-enum-descriptions: + VIEW: Represents a visit to the given `url`. + EDIT: Represents an edit of the document represented by the `url`. + SEARCH: Represents a search performed at the given `url`. + COMMENT: Represents a comment on the document represented by the `url`. + CRAWL: Represents an explicit request to index the given `url` along with associated attributes in this payload. + HISTORICAL_SEARCH: Represents a search performed at the given `url` as indicated by the user's history. + HISTORICAL_VIEW: Represents a visit to the given `url` as indicated by the user's history. + params: + $ref: '#/components/schemas/ActivityEventParams' + timestamp: + type: string + format: date-time + description: The ISO 8601 timestamp when the activity began. + url: + type: string + description: The URL of the activity. + required: + - action + - source + - timestamp + - url + Activity: + properties: + events: + type: array + items: + $ref: '#/components/schemas/ActivityEvent' + required: + - events + example: + events: + - url: https://example.com/ + action: HISTORICAL_VIEW + timestamp: "2000-01-23T04:56:07.000Z" + - url: https://example.com/search?q=query + action: SEARCH + timestamp: "2000-01-23T04:56:07.000Z" + params: + query: query + - url: https://example.com/ + action: VIEW + timestamp: "2000-01-23T04:56:07.000Z" + params: + duration: 20 + referrer: https://example.com/document + SessionInfo: + properties: + sessionTrackingToken: + type: string + description: A unique token for this session. A new session (and token) is created when the user issues a request from a new tab or when our server hasn't seen activity for more than 10 minutes from a tab. + tabId: + type: string + description: A unique id for all requests a user makes from a given tab, no matter how far apart. A new tab id is only generated when a user issues a request from a new tab. + lastSeen: + type: string + format: date-time + description: The last time the server saw this token. + lastQuery: + type: string + description: The last query seen by the server. + User: + properties: + userID: + type: string + description: An opaque user ID for the claimed authority (i.e., the actas param, or the origid if actas is not specified). + origID: + type: string + description: An opaque user ID for the authenticated user (ignores actas). + FeedbackChatExchange: + properties: + timestamp: + type: integer + format: int64 + description: Unix timestamp in millis for the chat request. + agent: + type: string + description: Either DEFAULT (company knowledge) or GPT (world knowledge). + userQuery: + type: string + description: Initial query entered by the user. + searchQuery: + type: string + description: Search query performed by the agent. + resultDocuments: + type: array + items: + properties: + title: + type: string + url: + type: string + description: List of documents read by the agent. + response: + type: string + ManualFeedbackInfo: + properties: + email: + type: string + description: The email address of the user who submitted the Feedback.event.MANUAL_FEEDBACK event. + deprecated: true + source: + type: string + enum: + - AUTOCOMPLETE + - CALENDAR + - CHAT + - CHAT_GENERAL + - CONCEPT_CARD + - DESKTOP_APP + - DISAMBIGUATION_CARD + - EXPERT_DETECTION + - FEED + - GENERATED_Q_AND_A + - INLINE_MENU + - NATIVE_RESULT + - PRISM + - Q_AND_A + - RELATED_QUESTIONS + - REPORT_ISSUE + - SCIOBOT + - SEARCH + - SIDEBAR + - SUMMARY + - TASKS + - TASK_EXECUTION + description: The source associated with the Feedback.event.MANUAL_FEEDBACK event. + issue: + type: string + description: The issue the user indicated in the feedback. + deprecated: true + issues: + type: array + items: type: string - description: Upload status, enum of NOT_UPLOADED, UPLOADED, STATUS_UNKNOWN enum: - - UPLOADED - - NOT_UPLOADED - - STATUS_UNKNOWN - example: UPLOADED - DebugDocumentLifecycleRequest: - type: object - description: Describes the request body of the /debug/{datasource}/document/events API call. - properties: - objectType: - type: string - description: Object type of the document to get lifecycle events for. - example: Article - docId: - type: string - description: Glean Document ID within the datasource to get lifecycle events for. - example: art123 - startDate: - type: string - description: The start date for events to be fetched. Cannot be more than 30 days (default 7 days) in the past. - example: "2025-05-01" - maxEvents: - type: integer - description: Max number of events to be fetched. Cannot be more than 100 (default 20). - example: 50 - required: - - objectType - - docId - DebugDocumentLifecycleResponse: - type: object - description: Describes the response body of the /debug/{datasource}/document/events API call - properties: - lifeCycleEvents: - type: array - description: List of lifecycle events corresponding to the document - items: - $ref: "#/components/schemas/LifeCycleEvent" - SuccessResponse: - type: object - description: Success response for custom metadata operations - properties: - success: - type: boolean - description: Indicates if the operation was successful - default: true - ErrorInfoResponse: - type: object - description: Error response for custom metadata operations - properties: - error: - type: string - description: Error message describing what went wrong - message: - type: string - description: Additional details about the error - required: - - error - PropertyDefinition: - properties: - name: - type: string - description: The name of the property in the `DocumentMetadata` (e.g. 'createTime', 'updateTime', 'author', 'container'). In the future, this will support custom properties too. - displayLabel: - type: string - description: The user friendly label for the property. - displayLabelPlural: - type: string - description: The user friendly label for the property that will be used if a plural context. - propertyType: - type: string - enum: - - TEXT - - DATE - - INT - - USERID - - PICKLIST - - TEXTLIST - - MULTIPICKLIST - description: The type of custom property - this governs the search and faceting behavior. Note that MULTIPICKLIST is not yet supported. - uiOptions: - type: string - enum: - - NONE - - SEARCH_RESULT - - DOC_HOVERCARD - hideUiFacet: - type: boolean - description: If true then the property will not show up as a facet in the UI. - uiFacetOrder: - type: integer - description: Will be used to set the order of facets in the UI, if present. If set for one facet, must be set for all non-hidden UI facets. Must take on an integer value from 1 (shown at the top) to N (shown last), where N is the number of non-hidden UI facets. These facets will be ordered below the built-in "Type" and "Tag" operators. - skipIndexing: - type: boolean - description: If true then the property will not be indexed for retrieval and ranking. - group: - type: string - description: The unique identifier of the `PropertyGroup` to which this property belongs. - PropertyGroup: - description: A grouping for multiple PropertyDefinition. Grouped properties will be displayed together in the UI. - properties: - name: - type: string - description: The unique identifier of the group. - displayLabel: - type: string - description: The user-friendly group label to display. - ObjectDefinition: - description: The definition for an `DocumentMetadata.objectType` within a datasource. - properties: - name: - type: string - description: Unique identifier for this `DocumentMetadata.objectType`. If omitted, this definition is used as a default for all unmatched `DocumentMetadata.objectType`s in this datasource. - displayLabel: - type: string - description: The user-friendly name of the object for display. - docCategory: - type: string - enum: - - UNCATEGORIZED - - TICKETS - - CRM - - PUBLISHED_CONTENT - - COLLABORATIVE_CONTENT - - QUESTION_ANSWER - - MESSAGING - - CODE_REPOSITORY - - CHANGE_MANAGEMENT - - PEOPLE - - EMAIL - - SSO - - ATS - - KNOWLEDGE_HUB - - EXTERNAL_SHORTCUT - - ENTITY - - CALENDAR - - AGENTS - description: The document category of this object type. - propertyDefinitions: - type: array - items: - $ref: "#/components/schemas/PropertyDefinition" - propertyGroups: - type: array - description: A list of `PropertyGroup`s belonging to this object type, which will group properties to be displayed together in the UI. - items: - $ref: "#/components/schemas/PropertyGroup" - summarizable: - description: Whether or not the object is summarizable - type: boolean - CanonicalizingRegexType: - description: Regular expression to apply to an arbitrary string to transform it into a canonical string. - properties: - matchRegex: - type: string - description: Regular expression to match to an arbitrary string. - rewriteRegex: - type: string - description: Regular expression to transform into a canonical string. - SharedDatasourceConfigNoInstance: + - AGENT_CANVAS_FAILED + - AGENT_CLARIFYING_QUESTIONS + - AGENT_INTERMEDIATE_STEPS_FAILED + - AGENT_TOOL_CALL_FAILED + - INACCURATE_RESPONSE + - INCOMPLETE_OR_NO_ANSWER + - INCORRECT_CITATION + - MISSING_CITATION + - OTHER + - OUTDATED_RESPONSE + - RESULT_MISSING + - RESULT_SHOULD_NOT_APPEAR + - RESULTS_HELPFUL + - RESULTS_POOR_ORDER + - TOO_MUCH_ONE_KIND + - NOT_A_QUESTION + - UNSURE_IF_CORRECT + description: The issue(s) the user indicated in the feedback. + imageUrls: + type: array + items: + type: string + description: URLs of images uploaded by user when providing feedback + query: + type: string + description: The query associated with the Feedback.event.MANUAL_FEEDBACK event. + obscuredQuery: + type: string + description: The query associated with the Feedback.event.MANUAL_FEEDBACK event, but obscured such that the vowels are replaced with special characters. For search feedback events only. + activeTab: + type: string + description: Which tabs the user had chosen at the time of the Feedback.event.MANUAL_FEEDBACK event. For search feedback events only. + comments: + type: string + description: The comments users can optionally add to the Feedback.event.MANUAL_FEEDBACK events. + searchResults: + type: array + items: + type: string + description: The array of search result Glean Document IDs, ordered by top to bottom result. + previousMessages: + type: array + items: + type: string + description: The array of previous messages in a chat session, ordered by oldest to newest. + chatTranscript: + type: array + items: + $ref: '#/components/schemas/FeedbackChatExchange' + description: Array of previous request/response exchanges, ordered by oldest to newest. + numQueriesFromFirstRun: + type: integer + description: How many times this query has been run in the past. + vote: + type: string + enum: + - UPVOTE + - DOWNVOTE + description: The vote associated with the Feedback.event.MANUAL_FEEDBACK event. + rating: + type: integer + description: A rating associated with the user feedback. The value will be between one and the maximum given by ratingScale, inclusive. + ratingKey: + type: string + description: A description of the rating that contextualizes how it appeared to the user, e.g. "satisfied". + ratingScale: + type: integer + description: The scale of comparison for a rating associated with the feedback. Rating values start from one and go up to the maximum specified by ratingScale. For example, a five-option satisfaction rating will have a ratingScale of 5 and a thumbs-up/thumbs-down rating will have a ratingScale of 2. + SideBySideImplementation: + properties: + implementationId: + type: string + description: Unique identifier for this implementation variant. + implementationName: + type: string + description: Human-readable name for this implementation (e.g., "Variant A", "GPT-4", "Claude"). + searchParams: + type: object + additionalProperties: + type: string + description: The search/chat parameters used for this implementation. + response: + type: string + description: The full response generated by this implementation. + responseMetadata: + type: object + properties: + latencyMs: + type: integer + description: Time taken to generate the response in milliseconds. + tokenCount: + type: integer + description: Number of tokens in the response. + modelUsed: + type: string + description: The specific model version used. + description: Metadata about the response (e.g., latency, token count). + ManualFeedbackSideBySideInfo: + properties: + email: + type: string + description: The email address of the user who submitted the side-by-side feedback. + source: + type: string + enum: + - LIVE_EVAL + - CHAT + - SEARCH + description: The source associated with the side-by-side feedback event. + query: + type: string + description: The query or prompt that was evaluated across multiple implementations. + implementations: + type: array + items: + $ref: '#/components/schemas/SideBySideImplementation' + description: Array of implementations that were compared side-by-side. + evaluationSessionId: + type: string + description: Unique identifier for this evaluation session to group related feedback events. + implementationId: + type: string + description: The ID of the implementation this specific feedback event is for. + vote: + type: string + enum: + - UPVOTE + - DOWNVOTE + - NEUTRAL + description: The vote for this specific implementation. + comments: + type: string + description: Specific feedback comments for this implementation. + SeenFeedbackInfo: + properties: + isExplicit: + type: boolean + description: The confidence of the user seeing the object is high because they explicitly interacted with it e.g. answer impression in SERP with additional user interaction. + UserViewInfo: + properties: + docId: + type: string + description: Unique Glean Document ID of the associated document. + docTitle: + type: string + description: Title of associated document. + docUrl: + type: string + description: URL of associated document. + WorkflowFeedbackInfo: + properties: + source: + type: string + enum: + - ZERO_STATE + - LIBRARY + - HOMEPAGE + description: Where the feedback of the workflow originated from + Feedback: + properties: + id: + type: string + description: Universally unique identifier of the event. To allow for reliable retransmission, only the earliest received event of a given UUID is considered valid by the server and subsequent are ignored. + category: + type: string + enum: + - ANNOUNCEMENT + - ANSWERS + - ARTIFACTS + - AUTOCOMPLETE + - COLLECTIONS + - FEED + - SEARCH + - CHAT + - NTP + - WORKFLOWS + - SUMMARY + - GENERAL + - PRISM + - PROMPTS + description: The feature category to which the feedback applies. These should be broad product areas such as Announcements, Answers, Search, etc. rather than specific components or UI treatments within those areas. + trackingTokens: + type: array + items: + type: string + description: A list of server-generated trackingTokens to which this event applies. + event: + type: string + enum: + - CLICK + - CONTAINER_CLICK + - COPY_LINK + - CREATE + - DISMISS + - DOWNVOTE + - EMAIL + - EXECUTE + - FILTER + - FIRST_TOKEN + - FOCUS_IN + - LAST_TOKEN + - MANUAL_FEEDBACK + - MANUAL_FEEDBACK_SIDE_BY_SIDE + - FEEDBACK_TIME_SAVED + - MARK_AS_READ + - MESSAGE + - MIDDLE_CLICK + - PAGE_BLUR + - PAGE_FOCUS + - PAGE_LEAVE + - PREVIEW + - RELATED_CLICK + - RIGHT_CLICK + - SECTION_CLICK + - SEEN + - SELECT + - SHARE + - SHOW_MORE + - UPVOTE + - VIEW + - VISIBLE + description: The action the user took within a Glean client with respect to the object referred to by the given `trackingToken`. + x-enumDescriptions: + CLICK: The object's primary link was clicked with the intent to view its full representation. Depending on the object type, this may imply an external navigation or navigating to a new page or view within the Glean app. + CONTAINER_CLICK: A link to the object's parent container (e.g. the folder in which it's located) was clicked. + COPY_LINK: The user copied a link to the primary link. + CREATE: The user creates a document. + DISMISS: The user dismissed the object such that it was hidden from view. + DOWNVOTE: The user gave feedback that the object was not useful. + EMAIL: The user attempted to send an email. + EXECUTE: The user executed the object (e.g. ran a workflow). + FILTER: The user applied a filter. + FIRST_TOKEN: The first token of a streaming response is received. + FOCUS_IN: The user clicked into an interactive element, e.g. the search box. + LAST_TOKEN: The final token of a streaming response is received. + MANUAL_FEEDBACK: The user submitted textual manual feedback regarding the object. + MANUAL_FEEDBACK_SIDE_BY_SIDE: The user submitted comparative feedback for multiple side-by-side implementations. + FEEDBACK_TIME_SAVED: The user submitted feedback about time saved by an agent or workflow. + MARK_AS_READ: The user explicitly marked the content as read. + MESSAGE: The user attempted to send a message using their default messaing app. + MIDDLE_CLICK: The user middle clicked the object's primary link with the intent to open its full representation in a new tab. + PAGE_BLUR: The user puts a page out of focus but keeps it in the background. + PAGE_FOCUS: The user puts a page in focus, meaning it is the first to receive keyboard events. + PAGE_LEAVE: The user leaves a page and it is unloaded (by clicking a link, closing the tab/window, etc). + PREVIEW: The user clicked the object's inline preview affordance. + RIGHT_CLICK: The user right clicked the object's primary link. This may indicate an intent to open it in a new tab or copy it. + SECTION_CLICK: The user clicked a link to a subsection of the primary object. + SEEN: The user has likely seen the object (e.g. took action to make the object visible within the user's viewport). + SELECT: The user explicitly selected something, eg. a chat response variant they prefer. + SHARE: The user shared the object with another user. + SHOW_MORE: The user clicked the object's show more affordance. + UPVOTE: The user gave feedback that the object was useful. + VIEW: The object was visible within the user's viewport. + VISIBLE: The object was visible within the user's viewport. + x-speakeasy-enum-descriptions: + CLICK: The object's primary link was clicked with the intent to view its full representation. Depending on the object type, this may imply an external navigation or navigating to a new page or view within the Glean app. + CONTAINER_CLICK: A link to the object's parent container (e.g. the folder in which it's located) was clicked. + COPY_LINK: The user copied a link to the primary link. + CREATE: The user creates a document. + DISMISS: The user dismissed the object such that it was hidden from view. + DOWNVOTE: The user gave feedback that the object was not useful. + EMAIL: The user attempted to send an email. + EXECUTE: The user executed the object (e.g. ran a workflow). + FILTER: The user applied a filter. + FIRST_TOKEN: The first token of a streaming response is received. + FOCUS_IN: The user clicked into an interactive element, e.g. the search box. + LAST_TOKEN: The final token of a streaming response is received. + MANUAL_FEEDBACK: The user submitted textual manual feedback regarding the object. + MANUAL_FEEDBACK_SIDE_BY_SIDE: The user submitted comparative feedback for multiple side-by-side implementations. + FEEDBACK_TIME_SAVED: The user submitted feedback about time saved by an agent or workflow. + MARK_AS_READ: The user explicitly marked the content as read. + MESSAGE: The user attempted to send a message using their default messaing app. + MIDDLE_CLICK: The user middle clicked the object's primary link with the intent to open its full representation in a new tab. + PAGE_BLUR: The user puts a page out of focus but keeps it in the background. + PAGE_FOCUS: The user puts a page in focus, meaning it is the first to receive keyboard events. + PAGE_LEAVE: The user leaves a page and it is unloaded (by clicking a link, closing the tab/window, etc). + PREVIEW: The user clicked the object's inline preview affordance. + RIGHT_CLICK: The user right clicked the object's primary link. This may indicate an intent to open it in a new tab or copy it. + SECTION_CLICK: The user clicked a link to a subsection of the primary object. + SEEN: The user has likely seen the object (e.g. took action to make the object visible within the user's viewport). + SELECT: The user explicitly selected something, eg. a chat response variant they prefer. + SHARE: The user shared the object with another user. + SHOW_MORE: The user clicked the object's show more affordance. + UPVOTE: The user gave feedback that the object was useful. + VIEW: The object was visible within the user's viewport. + VISIBLE: The object was visible within the user's viewport. + position: + type: integer + description: Position of the element in the case that the client controls order (such as feed and autocomplete). + payload: + type: string + description: For type MANUAL_FEEDBACK, contains string of user feedback. For autocomplete, partial query string. For feed, string of user feedback in addition to manual feedback signals extracted from all suggested content. + sessionInfo: + $ref: '#/components/schemas/SessionInfo' + timestamp: + type: string + format: date-time + description: The ISO 8601 timestamp when the event occured. + user: + $ref: '#/components/schemas/User' + pathname: + type: string + description: The path the client was at when the feedback event triggered. + channels: + type: array + items: + type: string + enum: + - COMPANY + - GLEAN + description: Where the feedback will be sent, e.g. to Glean, the user's company, or both. If no channels are specified, feedback will go only to Glean. + url: + type: string + description: The URL the client was at when the feedback event triggered. + uiTree: + type: array + items: + type: string + description: The UI element tree associated with the event, if any. + uiElement: + type: string + description: The UI element associated with the event, if any. + manualFeedbackInfo: + $ref: '#/components/schemas/ManualFeedbackInfo' + manualFeedbackSideBySideInfo: + $ref: '#/components/schemas/ManualFeedbackSideBySideInfo' + seenFeedbackInfo: + $ref: '#/components/schemas/SeenFeedbackInfo' + userViewInfo: + $ref: '#/components/schemas/UserViewInfo' + workflowFeedbackInfo: + $ref: '#/components/schemas/WorkflowFeedbackInfo' + applicationId: + type: string + description: The application ID of the client that sent the feedback event. + agentId: + type: string + description: The agent ID of the client that sent the feedback event. + required: + - event + - trackingTokens + example: + trackingTokens: + - trackingTokens + event: VIEW + StructuredTextMutableProperties: + properties: + text: + type: string + example: From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light. + required: + - text + ConnectorType: + type: string + enum: + - API_CRAWL + - BROWSER_CRAWL + - BROWSER_HISTORY + - BUILTIN + - FEDERATED_SEARCH + - PUSH_API + - WEB_CRAWL + - NATIVE_HISTORY + description: The source from which document content was pulled, e.g. an API crawl or browser history + DocumentContent: + properties: + fullTextList: + type: array + items: + type: string + description: The plaintext content of the document. + Document: + properties: + id: + type: string + description: The Glean Document ID. + datasource: + type: string + description: The app or other repository type from which the document was extracted + connectorType: + $ref: '#/components/schemas/ConnectorType' + docType: + type: string + description: The datasource-specific type of the document (e.g. for Jira issues, this is the issue type such as Bug or Feature Request). + content: + $ref: '#/components/schemas/DocumentContent' + containerDocument: + $ref: '#/components/schemas/Document' + parentDocument: + $ref: '#/components/schemas/Document' + title: + type: string + description: The title of the document. + url: + type: string + description: A permalink for the document. + metadata: + $ref: '#/components/schemas/DocumentMetadata' + sections: + type: array + items: + $ref: '#/components/schemas/DocumentSection' + description: A list of content sub-sections in the document, e.g. text blocks with different headings in a Drive doc or Confluence page. + SearchProviderInfo: + properties: + name: + type: string + description: Name of the search provider. + logoUrl: + type: string + description: URL to the provider's logo. + searchLinkUrlTemplate: + type: string + description: URL template that can be used to perform the suggested search by replacing the {query} placeholder with the query suggestion. + example: + name: Google + logo: https://app.glean.com/images/feather/globe.svg + searchLinkUrlTemplate: https://www.google.com/search?q={query}&hl=en + ResultTab: + properties: + id: + type: string + description: The unique ID of the tab. Can be passed in a search request to get results for that tab. + count: + type: integer + description: The number of results in this tab for the current query. + datasource: + type: string + description: The datasource associated with the tab, if any. + datasourceInstance: + type: string + description: The datasource instance associated with the tab, if any. + FacetFilterValue: + properties: + value: + type: string + example: Spreadsheet + relationType: + type: string + enum: + - EQUALS + - ID_EQUALS + - LT + - GT + - NOT_EQUALS + example: EQUALS + x-enumDescriptions: + EQUALS: The value is equal to the specified value. + ID_EQUALS: The value is equal to the specified ID. + LT: The value is less than the specified value. + GT: The value is greater than the specified value. + NOT_EQUALS: The value is not equal to the specified value. + x-speakeasy-enum-descriptions: + EQUALS: The value is equal to the specified value. + ID_EQUALS: The value is equal to the specified ID. + LT: The value is less than the specified value. + GT: The value is greater than the specified value. + NOT_EQUALS: The value is not equal to the specified value. + isNegated: + type: boolean + description: DEPRECATED - please use relationType instead + deprecated: true + x-glean-deprecated: + id: 75a48c79-b36a-4171-a0a0-4af7189da66e + introduced: "2026-02-05" + message: Use relationType instead + removal: "2026-10-15" + x-speakeasy-deprecation-message: "Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use relationType instead" + FacetFilter: + properties: + fieldName: + type: string + example: owner + values: + type: array + items: + $ref: '#/components/schemas/FacetFilterValue' + description: Within a single FacetFilter, the values are to be treated like an OR. For example, fieldName type with values [EQUALS Presentation, EQUALS Spreadsheet] means we want to show a document if it's a Presentation OR a Spreadsheet. + groupName: + type: string + description: Indicates the value of a facet, if any, that the given facet is grouped under. This is only used for nested facets, for example, fieldName could be owner and groupName would be Spreadsheet if showing all owners for spreadsheets as a nested facet. + example: Spreadsheet + example: + fieldName: type + values: + - value: Spreadsheet + relationType: EQUALS + - value: Presentation + relationType: EQUALS + FacetFilterSet: + properties: + filters: + type: array + items: + $ref: '#/components/schemas/FacetFilter' + description: Within a single FacetFilterSet, the filters are treated as AND. For example, owner Sumeet and type Spreadsheet shows documents that are by Sumeet AND are Spreadsheets. + FacetBucketFilter: + properties: + facet: + type: string + description: The facet whose buckets should be filtered. + prefix: + type: string + description: The per-term prefix that facet buckets should be filtered on. + AuthToken: + properties: + accessToken: + type: string + datasource: + type: string + scope: + type: string + tokenType: + type: string + authUser: + type: string + description: Used by Google to indicate the index of the logged in user. Useful for generating hyperlinks that support multilogin. + expiration: + type: integer + format: int64 + description: Unix timestamp when this token expires (in seconds since epoch UTC). + required: + - accessToken + - datasource + example: + accessToken: 123abc + datasource: gmail + scope: email profile https://www.googleapis.com/auth/gmail.readonly + tokenType: Bearer + authUser: "1" + DocumentSpec: + oneOf: + - type: object + properties: + url: + type: string + description: The URL of the document. + x-discriminator: true + required: + - url + - type: object + properties: + id: + type: string + description: The ID of the document. + x-discriminator: true + required: + - id + - type: object + properties: + ugcType: + type: string + enum: + - ANNOUNCEMENTS + - ANSWERS + - COLLECTIONS + - SHORTCUTS + - CHATS + description: The type of the user generated content (UGC datasource). + contentId: + type: integer + description: The numeric id for user generated content. Used for ANNOUNCEMENTS, ANSWERS, COLLECTIONS, SHORTCUTS. + x-discriminator: true + docType: + type: string + description: The specific type of the user generated content type. + required: + - contentId + - ugcType + - type: object + properties: + ugcType: + type: string + enum: + - ANNOUNCEMENTS + - ANSWERS + - ARTIFACTS + - COLLECTIONS + - SHORTCUTS + - CHATS + description: The type of the user generated content (UGC datasource). + ugcId: + type: string + description: The string id for user generated content. Used for CHATS. + x-discriminator: true + docType: + type: string + description: The specific type of the user generated content type. + required: + - ugcType + - ugcId + x-multiple-discriminators: true + RestrictionFilters: + properties: + containerSpecs: + type: array + items: + $ref: '#/components/schemas/DocumentSpec' + description: 'Specifications for containers that should be used as part of the restriction (include/exclude). Memberships are recursively defined for a subset of datasources (currently: SharePoint, OneDrive, Google Drive, and Confluence). Please contact the Glean team to enable this for more datasources. Recursive memberships do not apply for Collections.' + SearchRequestOptions: + properties: + datasourceFilter: + type: string + description: Filter results to a single datasource name (e.g. gmail, slack). All results are returned if missing. + datasourcesFilter: + type: array + items: + type: string + description: Filter results to one or more datasources (e.g. gmail, slack). All results are returned if missing. + queryOverridesFacetFilters: + type: boolean + description: If true, the operators in the query are taken to override any operators in facetFilters in the case of conflict. This is used to correctly set rewrittenFacetFilters and rewrittenQuery. + facetFilters: + type: array + items: + $ref: '#/components/schemas/FacetFilter' + description: A list of filters for the query. An AND is assumed between different facetFilters. For example, owner Sumeet and type Spreadsheet shows documents that are by Sumeet AND are Spreadsheets. + facetFilterSets: + type: array + items: + $ref: '#/components/schemas/FacetFilterSet' + description: A list of facet filter sets that will be OR'ed together. SearchRequestOptions where both facetFilterSets and facetFilters set are considered as bad request. Callers should set only one of these fields. + facetBucketFilter: + $ref: '#/components/schemas/FacetBucketFilter' + facetBucketSize: + type: integer + description: The maximum number of FacetBuckets to return in each FacetResult. + defaultFacets: + type: array + items: + type: string + description: Facets for which FacetResults should be fetched and that don't apply to a particular datasource. If specified, these values will replace the standard default facets (last_updated_at, from, etc.). The requested facets will be returned alongside datasource-specific facets if searching a single datasource. + authTokens: + type: array + items: + $ref: '#/components/schemas/AuthToken' + description: Auth tokens which may be used for non-indexed, federated results (e.g. Gmail). + fetchAllDatasourceCounts: + type: boolean + description: Hints that the QE should return result counts (via the datasource facet result) for all supported datasources, rather than just those specified in the datasource[s]Filter + responseHints: + type: array + items: + type: string + enum: + - ALL_RESULT_COUNTS + - FACET_RESULTS + - QUERY_METADATA + - RESULTS + - SPELLCHECK_METADATA + description: Hints for the response content. + x-enumDescriptions: + ALL_RESULT_COUNTS: Return result counts for each result set which has non-zero results, even when the request itself is limited to a subset. + FACET_RESULTS: Return only facet results. + QUERY_METADATA: Returns result counts for each result set which has non-zero results, as well as other information about the search such as suggested spelling corrections. + RESULTS: Return search result documents. + SPELLCHECK_METADATA: Return metadata pertaining to spellcheck results. + x-speakeasy-enum-descriptions: + ALL_RESULT_COUNTS: Return result counts for each result set which has non-zero results, even when the request itself is limited to a subset. + FACET_RESULTS: Return only facet results. + QUERY_METADATA: Returns result counts for each result set which has non-zero results, as well as other information about the search such as suggested spelling corrections. + RESULTS: Return search result documents. + SPELLCHECK_METADATA: Return metadata pertaining to spellcheck results. + description: Array of hints containing which fields should be populated in the response. + 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. + disableSpellcheck: + type: boolean + description: Whether or not to disable spellcheck. + disableQueryAutocorrect: + type: boolean + description: Disables automatic adjustment of the input query for spelling corrections or other reasons. + returnLlmContentOverSnippets: + type: boolean + description: Enables expanded content to be returned for LLM usage. The size of content per result returned should be modified using maxSnippetSize. Server may return less or more than what is specified in maxSnippetSize. For more details, see https://developers.glean.com/guides/search/llm-content. + inclusions: + $ref: '#/components/schemas/RestrictionFilters' + description: A list of filters which restrict the search results to only the specified content. + exclusions: + $ref: '#/components/schemas/RestrictionFilters' + description: A list of filters specifying content to avoid getting search results from. Exclusions take precendence over inclusions and other query parameters, such as search operators and search facets. + required: + - facetBucketSize + example: + datasourceFilter: JIRA + datasourcesFilter: + - JIRA + queryOverridesFacetFilters: true + facetFilters: + - fieldName: fieldName + values: + - value: fieldValues + relationType: EQUALS + - value: fieldValues + relationType: EQUALS + - fieldName: fieldName + values: + - value: fieldValues + relationType: EQUALS + - value: fieldValues + relationType: EQUALS + TextRange: + properties: + startIndex: + type: integer + description: The inclusive start index of the range. + endIndex: + type: integer + description: The exclusive end index of the range. + type: + type: string + enum: + - BOLD + - CITATION + - HIGHLIGHT + - LINK + url: + type: string + description: The URL associated with the range, if applicable. For example, the linked URL for a LINK range. + document: + $ref: '#/components/schemas/Document' + description: A document corresponding to the range, if applicable. For example, the cited document for a CITATION range. + required: + - startIndex + description: A subsection of a given string to which some special formatting should be applied. + SearchRequestInputDetails: + properties: + hasCopyPaste: + type: boolean + description: Whether the associated query was at least partially copy-pasted. If subsequent requests are issued after a copy-pasted query is constructed (e.g. with facet modifications), this bit should continue to be set for those requests. + example: + hasCopyPaste: true + QuerySuggestion: + properties: + missingTerm: + type: string + description: A query term missing from the original query on which this suggestion is based. + query: + type: string + description: The query being suggested (e.g. enforcing the missing term from the original query). + searchProviderInfo: + $ref: '#/components/schemas/SearchProviderInfo' + description: Information about the search provider that generated this suggestion. + label: + type: string + description: A user-facing description to display for the suggestion. + datasource: + type: string + description: The datasource associated with the suggestion. + resultTab: + $ref: '#/components/schemas/ResultTab' + description: The result tab associated with the suggestion. + requestOptions: + $ref: '#/components/schemas/SearchRequestOptions' + ranges: + type: array + items: + $ref: '#/components/schemas/TextRange' + description: The bolded ranges within the query of the QuerySuggestion. + inputDetails: + $ref: '#/components/schemas/SearchRequestInputDetails' + required: + - query + example: + query: app:github type:pull author:mortimer + label: Mortimer's PRs + datasource: github + Person: + properties: + name: + type: string + description: The display name. + obfuscatedId: + type: string + description: An opaque identifier that can be used to request metadata for a Person. + relatedDocuments: + type: array + items: + $ref: '#/components/schemas/RelatedDocuments' + description: A list of documents related to this person. + metadata: + $ref: '#/components/schemas/PersonMetadata' + required: + - name + - obfuscatedId + example: + name: George Clooney + obfuscatedId: abc123 + Company: + properties: + name: + type: string + description: User-friendly display name. + profileUrl: + type: string + description: Link to internal company company profile. + websiteUrls: + type: array + items: + type: string + description: Link to company's associated websites. + logoUrl: + type: string + description: The URL of the company's logo. Public, Glean-authenticated and Base64 encoded data URLs are all valid (but not third-party-authenticated URLs). + location: + type: string + description: User facing string representing the company's location. + example: New York City + phone: + type: string + description: Phone number as a number string. + fax: + type: string + description: Fax number as a number string. + industry: + type: string + description: User facing string representing the company's industry. + example: Finances + annualRevenue: + type: number + format: double + description: Average company's annual revenue for reference. + numberOfEmployees: + type: integer + format: int64 + description: Average company's number of employees for reference. + stockSymbol: + type: string + description: Company's stock symbol if company is public. + foundedDate: + type: string + format: date + description: The date when the company was founded. + about: + type: string + description: User facing description of company. + example: Financial, software, data, and media company headquartered in Midtown Manhattan, New York City + required: + - name + DocumentCounts: + type: object + additionalProperties: + type: integer + description: A map of {string, int} pairs representing counts of each document type associated with this customer. + CustomDataValue: + properties: + displayLabel: + type: string + stringValue: + type: string + stringListValue: + type: array + items: + type: string + description: list of strings for multi-value properties + numberValue: + type: number + booleanValue: + type: boolean + CustomData: + type: object + additionalProperties: + $ref: '#/components/schemas/CustomDataValue' + description: Custom fields specific to individual datasources + CustomerMetadata: + properties: + datasourceId: + type: string + description: The user visible id of the salesforce customer account. + customData: + $ref: '#/components/schemas/CustomData' + Customer: + properties: + id: + type: string + description: Unique identifier. + domains: + type: array + items: + type: string + description: Link to company's associated website domains. + company: + $ref: '#/components/schemas/Company' + documentCounts: + $ref: '#/components/schemas/DocumentCounts' + poc: + type: array + items: + $ref: '#/components/schemas/Person' + description: A list of POC for company. + metadata: + $ref: '#/components/schemas/CustomerMetadata' + mergedCustomers: + type: array + items: + $ref: '#/components/schemas/Customer' + description: A list of Customers. + startDate: + type: string + format: date + description: The date when the interaction with customer started. + contractAnnualRevenue: + type: number + format: double + description: Average contract annual revenue with that customer. + notes: + type: string + description: User facing (potentially generated) notes about company. + example: CIO is interested in trying out the product. + required: + - id + - company + RelatedObject: + properties: + id: + type: string + description: The ID of the related object + metadata: + type: object + properties: + name: + type: string + description: Placeholder name of the object, not the relationship. + description: Some metadata of the object which can be displayed, while not having the actual object. + required: + - id + RelatedObjectEdge: + properties: + objects: + type: array + items: + $ref: '#/components/schemas/RelatedObject' + RelatedObjects: + properties: + relatedObjects: + type: object + additionalProperties: + $ref: '#/components/schemas/RelatedObjectEdge' + description: A list of objects related to a source object. + ScopeType: + type: string + enum: + - GLOBAL + - OWN + description: Describes the scope for a ReadPermission, WritePermission, or GrantPermission object + WritePermission: + properties: + scopeType: + $ref: '#/components/schemas/ScopeType' + create: + type: boolean + description: True if user has create permission for this feature and scope + update: + type: boolean + description: True if user has update permission for this feature and scope + delete: + type: boolean + description: True if user has delete permission for this feature and scope + description: Describes the write permissions levels that a user has for a specific feature + ObjectPermissions: + properties: + write: + $ref: '#/components/schemas/WritePermission' + PermissionedObject: + properties: + permissions: + $ref: '#/components/schemas/ObjectPermissions' + description: The permissions the current viewer has with respect to a particular object. + PersonToTeamRelationship: + type: object + properties: + person: + $ref: '#/components/schemas/Person' + relationship: + type: string + enum: + - MEMBER + - MANAGER + - LEAD + - POINT_OF_CONTACT + - OTHER + description: The team member's relationship to the team. This defaults to MEMBER if not set. + default: MEMBER + customRelationshipStr: + type: string + description: Displayed name for the relationship if relationship is set to `OTHER`. + joinDate: + type: string + format: date-time + description: The team member's start date + required: + - person + description: Metadata about the relationship of a person to a team. + TeamEmail: + type: object + properties: + email: + type: string + format: email + description: An email address + type: + type: string + description: An enum of `PRIMARY`, `SECONDARY`, `ONCALL`, `OTHER` + default: OTHER + required: + - email + - type + description: Information about a team's email + CustomFieldValueStr: + properties: + strText: + type: string + description: Text field for string value. + CustomFieldValueHyperlink: + properties: + urlAnchor: + type: string + description: Anchor text for hyperlink. + urlLink: + type: string + description: Link for this URL. + CustomFieldValuePerson: + properties: + person: + $ref: '#/components/schemas/Person' + CustomFieldValue: + oneOf: + - $ref: '#/components/schemas/CustomFieldValueStr' + - $ref: '#/components/schemas/CustomFieldValueHyperlink' + - $ref: '#/components/schemas/CustomFieldValuePerson' + CustomFieldData: + properties: + label: + type: string + description: A user-facing label for this field. + values: + type: array + items: + $ref: '#/components/schemas/CustomFieldValue' + displayable: + type: boolean + description: Determines whether the client should display this custom field + default: true + required: + - label + - values + - displayable + DatasourceProfile: + properties: + datasource: + type: string + description: The datasource the profile is of. + example: github + handle: + type: string + description: The display name of the entity in the given datasource. + url: + type: string + description: URL to view the entity's profile. + nativeAppUrl: + type: string + description: A deep link, if available, into the datasource's native application for the entity's platform (i.e. slack://...). + isUserGenerated: + type: boolean + description: For internal use only. True iff the data source profile was manually added by a user from within Glean (aka not from the original data source) + required: + - datasource + - handle + Team: + allOf: + - $ref: '#/components/schemas/RelatedObjects' + - $ref: '#/components/schemas/PermissionedObject' + - type: object + properties: + id: + type: string + description: Unique identifier + name: + type: string + description: Team name + description: + type: string + description: A description of the team + businessUnit: + type: string + description: Typically the highest level organizational unit; generally applies to bigger companies with multiple distinct businesses. + department: + type: string + description: An organizational unit where everyone has a similar task, e.g. `Engineering`. + photoUrl: + type: string + format: url + description: A link to the team's photo. + bannerUrl: + type: string + format: url + description: A link to the team's banner photo. + externalLink: + type: string + format: uri + description: Link to a team page on the internet or your company's intranet + members: + type: array + items: + $ref: '#/components/schemas/PersonToTeamRelationship' + description: The members on this team + memberCount: + type: integer + description: Number of members on this team (recursive; includes all individuals that belong to this team, and all individuals that belong to a subteam within this team) + emails: + type: array + items: + $ref: '#/components/schemas/TeamEmail' + description: The emails for this team + customFields: + type: array + items: + $ref: '#/components/schemas/CustomFieldData' + description: Customizable fields for additional team information. + datasourceProfiles: + type: array + items: + $ref: '#/components/schemas/DatasourceProfile' + description: The datasource profiles of the team + datasource: + type: string + description: the data source of the team, e.g. GDRIVE + createdFrom: + type: string + description: For teams created from docs, the doc title. Otherwise empty. + lastUpdatedAt: + type: string + format: date-time + description: when this team was last updated. + status: + type: string + enum: + - PROCESSED + - QUEUED_FOR_CREATION + - QUEUED_FOR_DELETION + description: whether this team is fully processed or there are still unprocessed operations that'll affect it + default: PROCESSED + canBeDeleted: + type: boolean + description: can this team be deleted. Some manually ingested teams like GCS_CSV or PUSH_API cannot + default: true + loggingId: + type: string + description: The logging id of the team used in scrubbed logs, client analytics, and metrics. + required: + - id + - name + CustomEntityMetadata: + properties: + customData: + $ref: '#/components/schemas/CustomData' + GroupType: + type: string + enum: + - DEPARTMENT + - ALL + - TEAM + - JOB_TITLE + - ROLE_TYPE + - LOCATION + - REGION + - EXTERNAL_GROUP + - COLLECTION_AUDIENCE + description: The type of user group + x-enumDescriptions: + COLLECTION_AUDIENCE: Refers to any viewers of the Collection. + x-speakeasy-enum-descriptions: + COLLECTION_AUDIENCE: Refers to any viewers of the Collection. + Group: + properties: + type: + $ref: '#/components/schemas/GroupType' + id: + type: string + description: A unique identifier for the group. May be the same as name. + name: + type: string + description: Name of the group. + datasourceInstance: + type: string + description: Datasource instance if the group belongs to one e.g. external groups. + provisioningId: + type: string + description: identifier for greenlist provisioning, aka sciokey + required: + - type + - id + UserRole: + type: string + enum: + - OWNER + - VIEWER + - ANSWER_MODERATOR + - EDITOR + - VERIFIER + description: A user's role with respect to a specific document. + UserRoleSpecification: + properties: + sourceDocumentSpec: + $ref: '#/components/schemas/DocumentSpec' + description: The document spec of the object this role originates from. The object this role is included with will usually have the same information as this document spec, but if the role is inherited, then the document spec refers to the parent document that the role came from. + person: + $ref: '#/components/schemas/Person' + group: + $ref: '#/components/schemas/Group' + role: + $ref: '#/components/schemas/UserRole' + required: + - role + CustomEntity: + allOf: + - $ref: '#/components/schemas/PermissionedObject' + - type: object + properties: + id: + type: string + description: Unique identifier. + title: + type: string + description: Title or name of the custom entity. + datasource: + type: string + description: The datasource the custom entity is from. + objectType: + type: string + description: The type of the entity. Interpretation is specific to each datasource + metadata: + $ref: '#/components/schemas/CustomEntityMetadata' + roles: + type: array + items: + $ref: '#/components/schemas/UserRoleSpecification' + description: A list of user roles for the custom entity explicitly granted by the owner. + AnswerId: + properties: + id: + type: integer + description: The opaque ID of the Answer. + example: 3 + AnswerDocId: + properties: + docId: + type: string + description: Glean Document ID of the Answer. The Glean Document ID is supported for cases where the Answer ID isn't available. If both are available, using the Answer ID is preferred. + example: ANSWERS_answer_3 + AnswerMutableProperties: + properties: + question: + type: string + example: Why is the sky blue? + questionVariations: + type: array + items: + type: string + description: Additional ways of phrasing this question. + bodyText: + type: string + description: The plain text answer to the question. + example: From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light. + boardId: + type: integer + description: The parent board ID of this Answer, or 0 if it's a floating Answer. Adding Answers to Answer Boards is no longer permitted. + deprecated: true + x-glean-deprecated: + id: 3729bc64-8859-4159-b93c-ce2d5f0e7304 + introduced: "2026-02-05" + message: Answer Boards no longer supported + removal: "2026-10-15" + x-speakeasy-deprecation-message: "Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Answer Boards no longer supported" + audienceFilters: + type: array + items: + $ref: '#/components/schemas/FacetFilter' + description: Filters which restrict who should see the answer. Values are taken from the corresponding filters in people search. + addedRoles: + type: array + items: + $ref: '#/components/schemas/UserRoleSpecification' + description: A list of user roles for the answer added by the owner. + removedRoles: + type: array + items: + $ref: '#/components/schemas/UserRoleSpecification' + description: A list of user roles for the answer removed by the owner. + roles: + type: array + items: + $ref: '#/components/schemas/UserRoleSpecification' + description: A list of roles for this answer explicitly granted by an owner, editor, or admin. + sourceDocumentSpec: + $ref: '#/components/schemas/DocumentSpec' + sourceType: + type: string + enum: + - DOCUMENT + - ASSISTANT + UgcTrackingSignals: + type: object + properties: + trackingToken: + type: string + description: An opaque token that represents this particular UGC. To be used for `/feedback` reporting. + StructuredText: + allOf: + - $ref: '#/components/schemas/StructuredTextMutableProperties' + - type: object + properties: + structuredList: + type: array + items: + $ref: '#/components/schemas/StructuredTextItem' + description: An array of objects each of which contains either a string or a link which optionally corresponds to a document. + AnswerLike: + properties: + user: + $ref: '#/components/schemas/Person' + createTime: + type: string + format: date-time + description: The time the user liked the answer in ISO format (ISO 8601). + AnswerLikes: + properties: + likedBy: + type: array + items: + $ref: '#/components/schemas/AnswerLike' + likedByUser: + type: boolean + description: Whether the user in context liked the answer. + numLikes: + type: integer + description: The total number of likes for the answer. + required: + - likedBy + - likedByUser + - numLikes + Reminder: + properties: + assignee: + $ref: '#/components/schemas/Person' + requestor: + $ref: '#/components/schemas/Person' + remindAt: + type: integer + description: Unix timestamp for when the reminder should trigger (in seconds since epoch UTC). + createdAt: + type: integer + description: Unix timestamp for when the reminder was first created (in seconds since epoch UTC). + reason: + type: string + description: An optional free-text reason for the reminder. This is particularly useful when a reminder is used to ask for verification from another user (for example, "Duplicate", "Incomplete", "Incorrect"). + required: + - assignee + - remindAt + TimePoint: + properties: + epochSeconds: + type: integer + description: Epoch seconds. Has precedence over daysFromNow. + daysFromNow: + type: integer + description: Number of days in the past, relative to the current date. + Period: + properties: + minDaysFromNow: + type: integer + description: DEPRECATED - The number of days from now in the past to define upper boundary of time period. + deprecated: true + maxDaysFromNow: + type: integer + description: DEPRECATED - The number of days from now in the past to define lower boundary of time period. + deprecated: true + start: + $ref: '#/components/schemas/TimePoint' + end: + $ref: '#/components/schemas/TimePoint' + CountInfo: + properties: + count: + type: integer + format: int64 + description: The counter value + period: + $ref: '#/components/schemas/Period' + org: + type: string + description: The unit of organization over which we did the count aggregation, e.g. org (department) or company + required: + - count + VerificationMetadata: + properties: + lastVerifier: + $ref: '#/components/schemas/Person' + lastVerificationTs: + type: integer + description: The unix timestamp of the verification (in seconds since epoch UTC). + expirationTs: + type: integer + description: The unix timestamp of the verification expiration if applicable (in seconds since epoch UTC). + document: + $ref: '#/components/schemas/Document' + reminders: + type: array + items: + $ref: '#/components/schemas/Reminder' + description: Info about all outstanding verification reminders for the document if exists. + lastReminder: + $ref: '#/components/schemas/Reminder' + visitorCount: + type: array + items: + $ref: '#/components/schemas/CountInfo' + description: Number of visitors to the document during included time periods. + candidateVerifiers: + type: array + items: + $ref: '#/components/schemas/Person' + description: List of potential verifiers for the document e.g. old verifiers and/or users with view/edit permissions. + required: + - documentId + Verification: + properties: + state: + type: string + enum: + - UNVERIFIED + - VERIFIED + - DEPRECATED + description: The verification state for the document. + metadata: + $ref: '#/components/schemas/VerificationMetadata' + required: + - state + CollectionBaseMutableProperties: + properties: + name: + type: string + description: The unique name of the Collection. + description: + type: string + description: A brief summary of the Collection's contents. + addedRoles: + type: array + items: + $ref: '#/components/schemas/UserRoleSpecification' + description: A list of added user roles for the Collection. + removedRoles: + type: array + items: + $ref: '#/components/schemas/UserRoleSpecification' + description: A list of removed user roles for the Collection. + audienceFilters: + type: array + items: + $ref: '#/components/schemas/FacetFilter' + description: Filters which restrict who should see this Collection. Values are taken from the corresponding filters in people search. + required: + - name + Thumbnail: + properties: + photoId: + type: string + description: Photo id if the thumbnail is from splash. + url: + type: string + description: Thumbnail URL. This can be user provided image and/or from downloaded images hosted by Glean. + CollectionMutableProperties: + allOf: + - $ref: '#/components/schemas/CollectionBaseMutableProperties' + - type: object + properties: + icon: + type: string + description: The emoji icon of this Collection. + adminLocked: + type: boolean + description: Indicates whether edits are allowed for everyone or only admins. + parentId: + type: integer + description: The parent of this Collection, or 0 if it's a top-level Collection. + thumbnail: + $ref: '#/components/schemas/Thumbnail' + allowedDatasource: + type: string + description: The datasource type this Collection can hold. + required: + - name + CollectionItemMutableProperties: + properties: + name: + type: string + description: The optional name of the Collection item. + description: + type: string + description: A helpful description of why this CollectionItem is in the Collection that it's in. + icon: + type: string + description: The emoji icon for this CollectionItem. Only used for Text type items. + UserGeneratedContentId: + properties: + id: + type: integer + description: The opaque id of the user generated content. + ShortcutMutableProperties: + properties: + inputAlias: + type: string + description: Link text following go/ prefix as entered by the user. + destinationUrl: + type: string + description: Destination URL for the shortcut. + destinationDocumentId: + type: string + description: Glean Document ID for the URL, if known. + description: + type: string + description: A short, plain text blurb to help people understand the intent of the shortcut. + unlisted: + type: boolean + description: Whether this shortcut is unlisted or not. Unlisted shortcuts are visible to author + admins only. + urlTemplate: + type: string + description: For variable shortcuts, contains the URL template; note, `destinationUrl` contains default URL. + addedRoles: + type: array + items: + $ref: '#/components/schemas/UserRoleSpecification' + description: A list of user roles added for the Shortcut. + removedRoles: + type: array + items: + $ref: '#/components/schemas/UserRoleSpecification' + description: A list of user roles removed for the Shortcut. + ShortcutMetadata: + properties: + createdBy: + $ref: '#/components/schemas/Person' + createTime: + type: string + format: date-time + description: The time the shortcut was created in ISO format (ISO 8601). + updatedBy: + $ref: '#/components/schemas/Person' + updateTime: + type: string + format: date-time + description: The time the shortcut was updated in ISO format (ISO 8601). + destinationDocument: + $ref: '#/components/schemas/Document' + description: Document that corresponds to the destination URL, if applicable. + intermediateUrl: + type: string + description: The URL from which the user is then redirected to the destination URL. Full replacement for https://go/. + viewPrefix: + type: string + description: The part of the shortcut preceding the input alias when used for showing shortcuts to users. Should end with "/". e.g. "go/" for native shortcuts. + isExternal: + type: boolean + description: Indicates whether a shortcut is native or external. + editUrl: + type: string + description: The URL using which the user can access the edit page of the shortcut. + UgcType: + enum: + - AGENT_TYPE + - ANNOUNCEMENTS_TYPE + - ANSWERS_TYPE + - CHATS_TYPE + - COLLECTIONS_TYPE + - EMAIL_TYPE + - HTML_CODE_TYPE + - IMAGE_TYPE + - MESSAGE_TYPE + - PAPER_TYPE + - PRISM_VIEWS_TYPE + - PROMPT_TEMPLATES_TYPE + - PINS_TYPE + - SCRIBES_TYPE + - SHORTCUTS_TYPE + - SLIDE_TYPE + - SPREADSHEET_TYPE + - INLINE_HTML_TYPE + - PODCAST_TYPE + - WORKFLOWS_TYPE + FavoriteInfo: + type: object + properties: + ugcType: + $ref: '#/components/schemas/UgcType' + id: + type: string + description: Opaque id of the UGC. + count: + type: integer + description: Number of users this object has been favorited by. + x-includeEmpty: true + favoritedByUser: + type: boolean + description: If the requesting user has favorited this object. + x-includeEmpty: true + Shortcut: + allOf: + - $ref: '#/components/schemas/UserGeneratedContentId' + - $ref: '#/components/schemas/ShortcutMutableProperties' + - $ref: '#/components/schemas/PermissionedObject' + - $ref: '#/components/schemas/ShortcutMetadata' + - type: object + properties: + alias: + type: string + description: canonical link text following go/ prefix where hyphen/underscore is removed. + title: + type: string + description: Title for the Go Link + roles: + type: array + items: + $ref: '#/components/schemas/UserRoleSpecification' + description: A list of user roles for the Go Link. + favoriteInfo: + $ref: '#/components/schemas/FavoriteInfo' + required: + - inputAlias + Collection: + allOf: + - $ref: '#/components/schemas/CollectionMutableProperties' + - $ref: '#/components/schemas/PermissionedObject' + - $ref: '#/components/schemas/UgcTrackingSignals' + - type: object + properties: + id: + type: integer + description: The unique ID of the Collection. + createTime: + type: string + format: date-time + updateTime: + type: string + format: date-time + creator: + $ref: '#/components/schemas/Person' + updatedBy: + $ref: '#/components/schemas/Person' + itemCount: + type: integer + description: The number of items currently in the Collection. Separated from the actual items so we can grab the count without items. + childCount: + type: integer + description: The number of children Collections. Separated from the actual children so we can grab the count without children. + items: + type: array + items: + $ref: '#/components/schemas/CollectionItem' + description: The items in this Collection. + pinMetadata: + $ref: '#/components/schemas/CollectionPinnedMetadata' + description: Metadata having what categories this Collection is pinned to and the eligible categories to pin to + shortcuts: + type: array + items: + type: string + description: The names of the shortcuts (Go Links) that point to this Collection. + children: + type: array + items: + $ref: '#/components/schemas/Collection' + description: The children Collections of this Collection. + roles: + type: array + items: + $ref: '#/components/schemas/UserRoleSpecification' + description: A list of user roles for the Collection. + favoriteInfo: + $ref: '#/components/schemas/FavoriteInfo' + required: + - id + - description + CollectionItem: + allOf: + - $ref: '#/components/schemas/CollectionItemMutableProperties' + - type: object + properties: + collectionId: + type: integer + description: The Collection ID of the Collection that this CollectionItem belongs in. + documentId: + type: string + description: If this CollectionItem is indexed, the Glean Document ID of that document. + url: + type: string + description: The URL of this CollectionItem. + itemId: + type: string + description: Unique identifier for the item within the Collection it belongs to. + createdBy: + $ref: '#/components/schemas/Person' + description: The person who added this Collection item. + createdAt: + type: string + format: date-time + description: Unix timestamp for when the item was first added (in seconds since epoch UTC). + document: + $ref: '#/components/schemas/Document' + description: The Document this CollectionItem corresponds to (omitted if item is a non-indexed URL). + shortcut: + $ref: '#/components/schemas/Shortcut' + description: The Shortcut this CollectionItem corresponds to (only included if item URL is for a Go Link). + collection: + $ref: '#/components/schemas/Collection' + description: The Collection this CollectionItem corresponds to (only included if item type is COLLECTION). + itemType: + type: string + enum: + - DOCUMENT + - TEXT + - URL + - COLLECTION + required: + - collectionId + - itemType + CollectionPinnableCategories: + type: string + enum: + - COMPANY_RESOURCE + - DEPARTMENT_RESOURCE + - TEAM_RESOURCE + description: Categories a Collection can be pinned to. + CollectionPinnableTargets: + type: string + enum: + - RESOURCE_CARD + - TEAM_PROFILE_PAGE + description: What targets can a Collection be pinned to. + CollectionPinTarget: + properties: + category: + $ref: '#/components/schemas/CollectionPinnableCategories' + value: + type: string + description: Optional. If category supports values, then the additional value for the category e.g. department name for DEPARTMENT_RESOURCE, team name/id for TEAM_RESOURCE and so on. + target: + $ref: '#/components/schemas/CollectionPinnableTargets' + required: + - category + CollectionPinMetadata: + properties: + id: + type: integer + description: The ID of the Collection. + target: + $ref: '#/components/schemas/CollectionPinTarget' + required: + - id + - target + CollectionPinnedMetadata: + properties: + existingPins: + type: array + items: + $ref: '#/components/schemas/CollectionPinTarget' + description: List of targets this Collection is pinned to. + eligiblePins: + type: array + items: + $ref: '#/components/schemas/CollectionPinMetadata' + description: List of targets this Collection can be pinned to, excluding the targets this Collection is already pinned to. We also include Collection ID already is pinned to each eligible target, which will be 0 if the target has no pinned Collection. + Answer: + allOf: + - $ref: '#/components/schemas/AnswerId' + - $ref: '#/components/schemas/AnswerDocId' + - $ref: '#/components/schemas/AnswerMutableProperties' + - $ref: '#/components/schemas/PermissionedObject' + - $ref: '#/components/schemas/UgcTrackingSignals' + - type: object + properties: + combinedAnswerText: + $ref: '#/components/schemas/StructuredText' + likes: + $ref: '#/components/schemas/AnswerLikes' + author: + $ref: '#/components/schemas/Person' + createTime: + type: string + format: date-time + description: The time the answer was created in ISO format (ISO 8601). + updateTime: + type: string + format: date-time + description: The time the answer was last updated in ISO format (ISO 8601). + updatedBy: + $ref: '#/components/schemas/Person' + verification: + $ref: '#/components/schemas/Verification' + collections: + type: array + items: + $ref: '#/components/schemas/Collection' + description: The collections to which the answer belongs. + documentCategory: + type: string + description: The document's document_category(.proto). + sourceDocument: + $ref: '#/components/schemas/Document' + required: + - id + FollowupAction: + properties: + actionRunId: + type: string + description: Unique identifier for this actionRun recommendation event. + actionInstanceId: + type: string + description: The ID of the action instance that will be invoked. + actionId: + type: string + description: The ID of the associated action. + parameters: + type: object + additionalProperties: + type: string + description: Map of assistant predicted parameters and their corresponding values. + recommendationText: + type: string + description: Text to be displayed to the user when recommending the action instance. + actionLabel: + type: string + description: The label to be used when displaying a button to execute this action instance. + userConfirmationRequired: + type: boolean + description: Whether user confirmation is needed before executing this action instance. + description: A follow-up action that can be invoked by the user after a response. The action parameters are not included and need to be predicted/filled separately. + GeneratedQna: + properties: + question: + type: string + description: Search query rephrased into a question. + answer: + type: string + description: Answer generated for the given query or the generated question. + followUpPrompts: + type: array + items: + type: string + description: List of all follow-up prompts generated for the given query or the generated question. + followupActions: + type: array + items: + $ref: '#/components/schemas/FollowupAction' + description: List of follow-up actions generated for the given query or the generated question. + ranges: + type: array + items: + $ref: '#/components/schemas/TextRange' + description: Answer subsections to mark with special formatting (citations, bolding etc) + status: + type: string + enum: + - COMPUTING + - DISABLED + - FAILED + - NO_ANSWER + - SKIPPED + - STREAMING + - SUCCEEDED + - TIMEOUT + description: Status of backend generating the answer + cursor: + type: string + description: An opaque cursor representing the search request + example: "" + trackingToken: + type: string + description: An opaque token that represents this particular result in this particular query. To be used for /feedback reporting. + SearchResult: + allOf: + - $ref: '#/components/schemas/Result' + - type: object + properties: + document: + $ref: '#/components/schemas/Document' + title: + type: string + url: + type: string + nativeAppUrl: + type: string + description: A deep link, if available, into the datasource's native application for the user's platform (e.g. slack://...). + snippets: + type: array + items: + $ref: '#/components/schemas/SearchResultSnippet' + description: Text content from the result document which contains search query terms, if available. + fullText: + type: string + description: The full body text of the result if not already contained in the snippets. Only populated for conversation results (e.g. results from a messaging app such as Slack). + fullTextList: + type: array + items: + type: string + description: The full body text of the result if not already contained in the snippets; each item in the array represents a separate line in the original text. Only populated for conversation results (e.g. results from a messaging app such as Slack). + relatedResults: + type: array + items: + $ref: '#/components/schemas/RelatedDocuments' + description: A list of results related to this search result. Eg. for conversation results it contains individual messages from the conversation document which will be shown on SERP. + clusteredResults: + type: array + items: + $ref: '#/components/schemas/SearchResult' + description: A list of results that should be displayed as associated with this result. + allClusteredResults: + type: array + items: + $ref: '#/components/schemas/ClusterGroup' + description: A list of results that should be displayed as associated with this result. + attachmentCount: + type: integer + description: The total number of attachments. + attachments: + type: array + items: + $ref: '#/components/schemas/SearchResult' + description: A (potentially partial) list of results representing documents attached to the main result document. + backlinkResults: + type: array + items: + $ref: '#/components/schemas/SearchResult' + description: A list of results that should be displayed as backlinks of this result in reverse chronological order. + clusterType: + $ref: '#/components/schemas/ClusterTypeEnum' + mustIncludeSuggestions: + $ref: '#/components/schemas/QuerySuggestionList' + querySuggestion: + $ref: '#/components/schemas/QuerySuggestion' + prominence: + $ref: '#/components/schemas/SearchResultProminenceEnum' + attachmentContext: + type: string + description: Additional context for the relationship between the result and the document it's attached to. + pins: + type: array + items: + $ref: '#/components/schemas/PinDocument' + description: A list of pins associated with this search result. + required: + - url + example: + snippets: + - snippet: snippet + mimeType: mimeType + metadata: + container: container + createTime: "2000-01-23T04:56:07.000Z" + datasource: datasource + author: + name: name + documentId: documentId + updateTime: "2000-01-23T04:56:07.000Z" + mimeType: mimeType + objectType: objectType + title: title + url: https://example.com/foo/bar + nativeAppUrl: slack://foo/bar + mustIncludeSuggestions: + suggestions: + - missingTerm: container + query: container + ExtractedQnA: + properties: + heading: + type: string + description: Heading text that was matched to produce this result. + question: + type: string + description: Question text that was matched to produce this result. + questionResult: + $ref: '#/components/schemas/SearchResult' + CalendarAttendee: + properties: + isOrganizer: + type: boolean + description: Whether or not this attendee is an organizer. + isInGroup: + type: boolean + description: Whether or not this attendee is in a group. Needed temporarily at least to support both flat attendees and tree for compatibility. + person: + $ref: '#/components/schemas/Person' + groupAttendees: + type: array + items: + $ref: '#/components/schemas/CalendarAttendee' + description: If this attendee is a group, represents the list of individual attendees in the group. + responseStatus: + type: string + enum: + - ACCEPTED + - DECLINED + - NO_RESPONSE + - TENTATIVE + required: + - person + CalendarAttendees: + properties: + people: + type: array + items: + $ref: '#/components/schemas/CalendarAttendee' + description: Full details of some of the attendees of this event + isLimit: + type: boolean + description: Whether the total count of the people returned is at the retrieval limit. + total: + type: integer + description: Total number of attendees in this event. + numAccepted: + type: integer + description: Total number of attendees who have accepted this event. + numDeclined: + type: integer + description: Total number of attendees who have declined this event. + numNoResponse: + type: integer + description: Total number of attendees who have not responded to this event. + numTentative: + type: integer + description: Total number of attendees who have responded tentatively (i.e. responded maybe) to this event. + Meeting: + properties: + id: + type: string + title: + type: string + description: + type: string + url: + type: string + startTime: + type: string + format: date-time + endTime: + type: string + format: date-time + attendees: + $ref: '#/components/schemas/CalendarAttendees' + description: The attendee list, including their response status + isCancelled: + type: boolean + description: Whether the meeting has been cancelled + location: + type: string + description: The location/venue of the meeting + responseStatus: + type: string + description: The current user's response status (accepted, declined, tentativelyAccepted, none) + conferenceUri: + type: string + description: The meeting join link (Teams, Zoom, etc.) + conferenceProvider: + type: string + description: The conference provider (e.g., "Microsoft Teams", "Zoom") + AppResult: + properties: + datasource: + type: string + description: The app or other repository type this represents + docType: + type: string + description: The datasource-specific type of the document (e.g. for Jira issues, this is the issue type such as Bug or Feature Request). + mimeType: + type: string + description: Mimetype is used to differentiate between sub applications from a datasource (e.g. Sheets, Docs from Gdrive) + iconUrl: + type: string + description: If there is available icon URL. + required: + - datasource + CodeLine: + properties: + lineNumber: + type: integer + content: + type: string + ranges: + type: array + items: + $ref: '#/components/schemas/TextRange' + description: Index ranges depicting matched sections of the line + Code: + properties: + repoName: + type: string + fileName: + type: string + fileUrl: + type: string + lines: + type: array + items: + $ref: '#/components/schemas/CodeLine' + isLastMatch: + type: boolean + description: Last file match for a repo + example: + repoName: scio + fileName: README.md + matches: + - lineNumber: 1 + content: Welcome to the beginning + ranges: [] + - lineNumber: 2 + content: Second line of the file + ranges: [] + - lineNumber: 3 + content: hello world hello world + ranges: + - startindex: 0 + endIndex: 5 + - startIndex: 12 + endIndex: 17 + QuerySuggestionList: + properties: + suggestions: + type: array + items: + $ref: '#/components/schemas/QuerySuggestion' + person: + $ref: '#/components/schemas/Person' + IconConfig: + properties: + generatedBackgroundColorKey: + type: string + backgroundColor: + type: string + color: + type: string + key: + type: string + iconType: + enum: + - COLLECTION + - CUSTOM + - DATASOURCE + - DATASOURCE_INSTANCE + - FAVICON + - FILE_TYPE + - GENERATED_BACKGROUND + - GLYPH + - MIME_TYPE + - NO_ICON + - PERSON + - REACTIONS + - URL + masked: + type: boolean + description: Whether the icon should be masked based on current theme. + name: + type: string + description: The name of the icon if applicable, e.g. the glyph name for `IconType.GLYPH` icons. + url: + type: string + description: The URL to an image to be displayed if applicable, e.g. the URL for `iconType.URL` icons. + description: Defines how to render an icon + example: + color: "#343CED" + key: person_icon + iconType: GLYPH + name: user + ChatMetadata: + properties: + id: + type: string + description: The opaque id of the Chat. + createTime: + type: integer + description: Server Unix timestamp of the creation time (in seconds since epoch UTC). + createdBy: + $ref: '#/components/schemas/Person' + description: The user who created this Chat. + updateTime: + type: integer + description: Server Unix timestamp of the update time (in seconds since epoch UTC). + name: + type: string + description: The name of the Chat. + applicationId: + type: string + description: The ID of the AI App that this Chat is associated to. + applicationName: + type: string + description: The display name of the AI App that this Chat is associated to. + icon: + $ref: '#/components/schemas/IconConfig' + description: Metadata of a Chat a user had with Glean Assistant. This contains no actual conversational content. + RelatedDocuments: + properties: + relation: + type: string + enum: + - ATTACHMENT + - CANONICAL + - CASE + - contact + - CONTACT + - CONVERSATION_MESSAGES + - EXPERT + - FROM + - HIGHLIGHT + - opportunity + - OPPORTUNITY + - RECENT + - SOURCE + - TICKET + - TRANSCRIPT + - WITH + description: How this document relates to the including entity. + x-enum-varnames: + - ATTACHMENT + - CANONICAL + - CASE + - CONTACT_LOWERCASE + - CONTACT + - CONVERSATION_MESSAGES + - EXPERT + - FROM + - HIGHLIGHT + - OPPORTUNITY_LOWERCASE + - OPPORTUNITY + - RECENT + - SOURCE + - TICKET + - TRANSCRIPT + - WITH + x-enumDescriptions: + CANONICAL: Canonical documents for the entity, such as overview docs, architecture docs elastic. + x-speakeasy-enum-descriptions: + CANONICAL: Canonical documents for the entity, such as overview docs, architecture docs elastic. + associatedEntityId: + type: string + description: Which entity in the response that this entity relates to. Relevant when there are multiple entities associated with the response (such as merged customers) + querySuggestion: + $ref: '#/components/schemas/QuerySuggestion' + documents: + type: array + items: + $ref: '#/components/schemas/Document' + description: A truncated list of documents with this relation. TO BE DEPRECATED. + deprecated: true + x-glean-deprecated: + id: 68de0429-b0cc-4b40-8061-f848788079a2 + introduced: "2026-02-05" + message: Field is deprecated + removal: "2026-10-15" + x-speakeasy-deprecation-message: "Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Field is deprecated" + results: + type: array + items: + $ref: '#/components/schemas/SearchResult' + description: A truncated list of documents associated with this relation. To be used in favor of `documents` because it contains a trackingToken. + RelatedQuestion: + properties: + question: + type: string + description: The text of the related question + answer: + type: string + description: The answer for the related question + ranges: + type: array + items: + $ref: '#/components/schemas/TextRange' + description: Subsections of the answer string to which some special formatting should be applied (eg. bold) + EntityType: + type: string + enum: + - PERSON + - PROJECT + - CUSTOMER + description: The type of entity. + x-include-enum-class-prefix: true + Disambiguation: + type: object + properties: + name: + type: string + description: Name of the ambiguous entity + id: + type: string + description: The unique id of the entity in the knowledge graph + type: + $ref: '#/components/schemas/EntityType' + description: A disambiguation between multiple entities with the same name + SearchResultSnippet: + properties: + mimeType: + type: string + description: The mime type of the snippets, currently either text/plain or text/html. + text: + type: string + description: A matching snippet from the document with no highlights. + snippetTextOrdering: + type: integer + description: Used for sorting based off the snippet's location within all_snippetable_text + ranges: + type: array + items: + $ref: '#/components/schemas/TextRange' + description: The bolded ranges within text. + url: + type: string + description: A URL, generated based on availability, that links to the position of the snippet text or to the nearest header above the snippet text. + snippet: + type: string + description: A matching snippet from the document. Query term matches are marked by the unicode characters uE006 and uE007. Use 'text' field instead. + deprecated: true + x-glean-deprecated: + id: e55ddf30-7c47-43a5-b775-d78f8b29411a + introduced: "2026-02-05" + message: Use 'text' field instead + removal: "2026-10-15" + x-includeEmpty: true + x-speakeasy-deprecation-message: "Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use 'text' field instead" + example: + snippet: snippet + mimeType: mimeType + StructuredResult: + properties: + document: + $ref: '#/components/schemas/Document' + person: + $ref: '#/components/schemas/Person' + customer: + $ref: '#/components/schemas/Customer' + team: + $ref: '#/components/schemas/Team' + customEntity: + $ref: '#/components/schemas/CustomEntity' + answer: + $ref: '#/components/schemas/Answer' + generatedQna: + $ref: '#/components/schemas/GeneratedQna' + extractedQnA: + $ref: '#/components/schemas/ExtractedQnA' + meeting: + $ref: '#/components/schemas/Meeting' + app: + $ref: '#/components/schemas/AppResult' + collection: + $ref: '#/components/schemas/Collection' + code: + $ref: '#/components/schemas/Code' + shortcut: + $ref: '#/components/schemas/Shortcut' + querySuggestions: + $ref: '#/components/schemas/QuerySuggestionList' + chat: + $ref: '#/components/schemas/ChatMetadata' + relatedDocuments: + type: array + items: + $ref: '#/components/schemas/RelatedDocuments' + description: A list of documents related to this structured result. + relatedQuestion: + $ref: '#/components/schemas/RelatedQuestion' + disambiguation: + $ref: '#/components/schemas/Disambiguation' + snippets: + type: array + items: + $ref: '#/components/schemas/SearchResultSnippet' + description: Any snippets associated to the populated object. + trackingToken: + type: string + description: An opaque token that represents this particular result in this particular query. To be used for /feedback reporting. + prominence: + type: string + enum: + - HERO + - PROMOTED + - STANDARD + description: The level of visual distinction that should be given to a result. + x-enumDescriptions: + HERO: A high-confidence result that should feature prominently on the page. + PROMOTED: May not be the best result but should be given additional visual distinction. + STANDARD: Should not be distinct from any other results. + x-speakeasy-enum-descriptions: + HERO: A high-confidence result that should feature prominently on the page. + PROMOTED: May not be the best result but should be given additional visual distinction. + STANDARD: Should not be distinct from any other results. + source: + type: string + enum: + - EXPERT_DETECTION + - ENTITY_NLQ + - CALENDAR_EVENT + - AGENT + description: Source context for this result. Possible values depend on the result type. + description: A single object that can support any object in the work graph. Only a single object will be populated. + Result: + properties: + structuredResults: + type: array + items: + $ref: '#/components/schemas/StructuredResult' + description: An array of entities in the work graph retrieved via a data request. + trackingToken: + type: string + description: An opaque token that represents this particular result in this particular query. To be used for /feedback reporting. + ClusterTypeEnum: + type: string + enum: + - SIMILAR + - FRESHNESS + - TITLE + - CONTENT + - NONE + - THREAD_REPLY + - THREAD_ROOT + - PREFIX + - SUFFIX + - AUTHOR_PREFIX + - AUTHOR_SUFFIX + description: The reason for inclusion of clusteredResults. + ClusterGroup: + properties: + clusteredResults: + type: array + items: + $ref: '#/components/schemas/SearchResult' + description: A list of results that should be displayed as associated with this result. + clusterType: + $ref: '#/components/schemas/ClusterTypeEnum' + visibleCountHint: + type: integer + description: The default number of results to display before truncating and showing a "see more" link + required: + - visibleCountHint + SearchResultProminenceEnum: + type: string + enum: + - HERO + - PROMOTED + - STANDARD + description: | + The level of visual distinction that should be given to a result. + x-enumDescriptions: + HERO: A high-confidence result that should feature prominently on the page. + PROMOTED: May not be the best result but should be given additional visual distinction. + STANDARD: Should not be distinct from any other results. + x-speakeasy-enum-descriptions: + HERO: A high-confidence result that should feature prominently on the page. + PROMOTED: May not be the best result but should be given additional visual distinction. + STANDARD: Should not be distinct from any other results. + PinDocumentMutableProperties: + properties: + queries: + type: array + items: + type: string + description: The query strings for which the pinned result will show. + audienceFilters: + type: array + items: + $ref: '#/components/schemas/FacetFilter' + description: Filters which restrict who should see the pinned document. Values are taken from the corresponding filters in people search. + PinDocument: + allOf: + - $ref: '#/components/schemas/PinDocumentMutableProperties' + - type: object + properties: + id: + type: string + description: The opaque id of the pin. + documentId: + type: string + description: The document which should be a pinned result. + audienceFilters: + type: array + items: + $ref: '#/components/schemas/FacetFilter' + description: Filters which restrict who should see the pinned document. Values are taken from the corresponding filters in people search. + attribution: + $ref: '#/components/schemas/Person' + updatedBy: + $ref: '#/components/schemas/Person' + createTime: + type: string + format: date-time + updateTime: + type: string + format: date-time + favoriteInfo: + $ref: '#/components/schemas/FavoriteInfo' + required: + - documentId + PersonTeam: + properties: + id: + type: string + description: Unique identifier + name: + type: string + description: Team name + externalLink: + type: string + format: uri + description: Link to a team page on the internet or your company's intranet + relationship: + type: string + enum: + - MEMBER + - MANAGER + - LEAD + - POINT_OF_CONTACT + - OTHER + description: The team member's relationship to the team. This defaults to MEMBER if not set. + default: MEMBER + joinDate: + type: string + format: date-time + description: The team member's start date + description: Use `id` if you index teams via Glean, and use `name` and `externalLink` if you want to use your own team pages + StructuredLocation: + type: object + properties: + deskLocation: + type: string + description: Desk number. + timezone: + type: string + description: Location's timezone, e.g. UTC, PST. + address: + type: string + description: Office address or name. + city: + type: string + description: Name of the city. + state: + type: string + description: State code. + region: + type: string + description: Region information, e.g. NORAM, APAC. + zipCode: + type: string + description: ZIP Code for the address. + country: + type: string + description: Country name. + countryCode: + type: string + description: Alpha-2 or Alpha-3 ISO 3166 country code, e.g. US or USA. + description: Detailed location with information about country, state, city etc. + SocialNetwork: + properties: + name: + type: string + description: Possible values are "twitter", "linkedin". + profileName: + type: string + description: Human-readable profile name. + profileUrl: + type: string + format: url + description: Link to profile. + required: + - name + - profileUrl + PersonDistance: + properties: + name: + type: string + description: The display name. + obfuscatedId: + type: string + description: An opaque identifier that can be used to request metadata for a Person. + distance: + type: number + format: float + description: Distance to person, refer to PeopleDistance pipeline on interpretation of the value. + required: + - name + - obfuscatedId + - distance + CommunicationChannel: + type: string + enum: + - COMMUNICATION_CHANNEL_EMAIL + - COMMUNICATION_CHANNEL_SLACK + ChannelInviteInfo: + properties: + channel: + $ref: '#/components/schemas/CommunicationChannel' + description: Channel through which the invite was sent + isAutoInvite: + type: boolean + description: Bit that tracks if this invite was automatically sent or user-sent + inviter: + $ref: '#/components/schemas/Person' + description: The person that invited this person. + inviteTime: + type: string + format: date-time + description: The time this person was invited in ISO format (ISO 8601). + reminderTime: + type: string + format: date-time + description: The time this person was reminded in ISO format (ISO 8601) if a reminder was sent. + description: Information regarding the invite status of a person for a particular channel. + InviteInfo: + properties: + signUpTime: + type: string + format: date-time + description: The time this person signed up in ISO format (ISO 8601). + invites: + type: array + items: + $ref: '#/components/schemas/ChannelInviteInfo' + description: Latest invites received by the user for each channel + inviter: + $ref: '#/components/schemas/Person' + description: The person that invited this person. + deprecated: true + x-glean-deprecated: + id: 1d3cd23f-9085-4378-b466-9bdc2e344a71 + introduced: "2026-02-05" + message: Use ChannelInviteInfo instead + removal: "2026-10-15" + x-speakeasy-deprecation-message: "Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use ChannelInviteInfo instead" + inviteTime: + type: string + format: date-time + description: The time this person was invited in ISO format (ISO 8601). + deprecated: true + x-glean-deprecated: + id: 2dc3f572-cded-483d-af07-fc9fc7fd0ae4 + introduced: "2026-02-05" + message: Use ChannelInviteInfo instead + removal: "2026-10-15" + x-speakeasy-deprecation-message: "Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use ChannelInviteInfo instead" + reminderTime: + type: string + format: date-time + description: The time this person was reminded in ISO format (ISO 8601) if a reminder was sent. + deprecated: true + x-glean-deprecated: + id: d02d58cf-eb90-45d0-ab90-f7a9d707ae3c + introduced: "2026-02-05" + message: Use ChannelInviteInfo instead + removal: "2026-10-15" + x-speakeasy-deprecation-message: "Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use ChannelInviteInfo instead" + description: Information regarding the invite status of a person. + ReadPermission: + properties: + scopeType: + $ref: '#/components/schemas/ScopeType' + description: Describes the read permission level that a user has for a specific feature + ReadPermissions: + additionalProperties: + type: array + items: + $ref: '#/components/schemas/ReadPermission' + description: List of read permissions (for different scopes but same feature) + description: Describes the read permission levels that a user has for permissioned features. Key must be PermissionedFeatureOrObject + WritePermissions: + additionalProperties: + type: array + items: + $ref: '#/components/schemas/WritePermission' + description: List of write permissions (for different scopes but same feature) + description: Describes the write permissions levels that a user has for permissioned features. Key must be PermissionedFeatureOrObject + GrantPermission: + properties: + scopeType: + $ref: '#/components/schemas/ScopeType' + description: Describes the grant permission level that a user has for a specific feature + GrantPermissions: + additionalProperties: + type: array + items: + $ref: '#/components/schemas/GrantPermission' + description: List of grant permissions (for different scopes but same feature) + description: Describes the grant permission levels that a user has for permissioned features. Key must be PermissionedFeatureOrObject + Permissions: + properties: + canAdminSearch: + type: boolean + description: TODO--deprecate in favor of the read and write properties. True if the user has access to /adminsearch + canAdminClientApiGlobalTokens: + type: boolean + description: TODO--deprecate in favor of the read and write properties. True if the user can administrate client API tokens with global scope + canDlp: + type: boolean + description: TODO--deprecate in favor of the read and write properties. True if the user has access to data loss prevention (DLP) features + read: + $ref: '#/components/schemas/ReadPermissions' + write: + $ref: '#/components/schemas/WritePermissions' + grant: + $ref: '#/components/schemas/GrantPermissions' + role: + type: string + description: The roleId of the canonical role a user has. The displayName is equal to the roleId. + roles: + type: array + items: + type: string + description: The roleIds of the roles a user has. + description: |- + Describes the permissions levels that a user has for permissioned features. When the client sends this, Permissions.read and Permissions.write are the additional permissions granted to a user on top of what they have via their roles. + When the server sends this, Permissions.read and Permissions.write are the complete (merged) set of permissions the user has, and Permissions.roles is just for display purposes. + TimeInterval: + properties: + start: + type: string + description: The RFC3339 timestamp formatted start time of this event. + end: + type: string + description: The RFC3339 timestamp formatted end time of this event. + required: + - start + - end + AnonymousEvent: + type: object + properties: + time: + $ref: '#/components/schemas/TimeInterval' + eventType: + type: string + enum: + - DEFAULT + - OUT_OF_OFFICE + description: The nature of the event, for example "out of office". + description: A generic, light-weight calendar event. + Badge: + type: object + properties: + key: + type: string + description: An auto generated unique identifier. + displayName: + type: string + description: The badge name displayed to users + iconConfig: + $ref: '#/components/schemas/IconConfig' + pinned: + type: boolean + description: The badge should be shown on the PersonAttribution + description: Displays a user's accomplishment or milestone + example: + key: deployment_name_new_hire + displayName: New hire + iconConfig: + color: "#343CED" + key: person_icon + iconType: GLYPH + name: user + PersonMetadata: + properties: + type: + type: string + enum: + - FULL_TIME + - CONTRACTOR + - NON_EMPLOYEE + - FORMER_EMPLOYEE + example: FULL_TIME + x-enumDescriptions: + FULL_TIME: The person is a current full-time employee of the company. + CONTRACTOR: The person is a current contractor of the company. + NON_EMPLOYEE: The person object represents a non-human actor such as a service or admin account. + FORMER_EMPLOYEE: The person is a previous employee of the company. + x-speakeasy-enum-descriptions: + FULL_TIME: The person is a current full-time employee of the company. + CONTRACTOR: The person is a current contractor of the company. + NON_EMPLOYEE: The person object represents a non-human actor such as a service or admin account. + FORMER_EMPLOYEE: The person is a previous employee of the company. + firstName: + type: string + description: The first name of the person + lastName: + type: string + description: The last name of the person + title: + type: string + description: Job title. + businessUnit: + type: string + description: Typically the highest level organizational unit; generally applies to bigger companies with multiple distinct businesses. + department: + type: string + description: An organizational unit where everyone has a similar task, e.g. `Engineering`. + jobFunction: + type: string + description: Normalized job-function category assigned by Entity Builder from the source department and, when available, job title. Unlike `department`, which preserves the company-specific organizational unit, this field groups departments into configured categories such as `Engineering`, `Sales`, or `IT`; it may be `Unknown` when the mapping is inconclusive. + teams: + type: array + items: + $ref: '#/components/schemas/PersonTeam' + description: Info about the employee's team(s). + departmentCount: + type: integer + description: The number of people in this person's department. + email: + type: string + description: The user's primary email address + aliasEmails: + type: array + items: + type: string + description: Additional email addresses of this user beyond the primary, if any. + location: + type: string + description: User facing string representing the person's location. + structuredLocation: + $ref: '#/components/schemas/StructuredLocation' + externalProfileLink: + type: string + description: Link to a customer's internal profile page. This is set to '#' when no link is desired. + manager: + $ref: '#/components/schemas/Person' + managementChain: + type: array + items: + $ref: '#/components/schemas/Person' + description: The chain of reporting in the company as far up as it goes. The last entry is this person's direct manager. + phone: + type: string + description: Phone number as a number string. + timezone: + type: string + description: The timezone of the person. E.g. "Pacific Daylight Time". + timezoneOffset: + type: integer + format: int64 + description: The offset of the person's timezone in seconds from UTC. + timezoneIANA: + type: string + description: The IANA timezone identifier, e.g. "America/Los_Angeles". + photoUrl: + type: string + format: url + description: The URL of the person's avatar. Public, glean-authenticated and Base64 encoded data URLs are all valid (but not third-party-authenticated URLs). + uneditedPhotoUrl: + type: string + format: url + description: The original photo URL of the person's avatar before any edits they made are applied + bannerUrl: + type: string + format: url + description: The URL of the person's banner photo. + reports: + type: array + items: + $ref: '#/components/schemas/Person' + startDate: + type: string + format: date + description: The date when the employee started. + endDate: + type: string + format: date + description: If a former employee, the last date of employment. + bio: + type: string + description: Short biography or mission statement of the employee. + pronoun: + type: string + description: She/her, He/his or other pronoun. + orgSizeCount: + type: integer + description: The total recursive size of the people reporting to this person, or 1 + directReportsCount: + type: integer + description: The total number of people who directly report to this person, or 0 + preferredName: + type: string + description: The preferred name of the person, or a nickname. + socialNetwork: + type: array + items: + $ref: '#/components/schemas/SocialNetwork' + description: List of social network profiles. + datasourceProfile: + type: array + items: + $ref: '#/components/schemas/DatasourceProfile' + description: List of profiles this user has in different datasources / tools that they use. + querySuggestions: + $ref: '#/components/schemas/QuerySuggestionList' + peopleDistance: + type: array + items: + $ref: '#/components/schemas/PersonDistance' + description: List of people and distances to those people from this person. Optionally with metadata. + inviteInfo: + $ref: '#/components/schemas/InviteInfo' + isSignedUp: + type: boolean + description: Whether the user has signed into Glean at least once. + lastExtensionUse: + type: string + format: date-time + description: The last time the user has used the Glean extension in ISO 8601 format. + permissions: + $ref: '#/components/schemas/Permissions' + customFields: + type: array + items: + $ref: '#/components/schemas/CustomFieldData' + description: User customizable fields for additional people information. + loggingId: + type: string + description: The logging id of the person used in scrubbed logs, tracking GA metrics. + startDatePercentile: + type: number + format: float + description: Percentage of the company that started strictly after this person. Between [0,100). + busyEvents: + type: array + items: + $ref: '#/components/schemas/AnonymousEvent' + description: Intervals of busy time for this person, along with the type of event they're busy with. + profileBoolSettings: + type: object + additionalProperties: + type: boolean + description: flag settings to indicate user profile settings for certain items + badges: + type: array + items: + $ref: '#/components/schemas/Badge' + description: The badges that a user has earned over their lifetime. + isOrgRoot: + type: boolean + description: Whether this person is a "root" node in their organization's hierarchy. + example: + department: Movies + email: george@example.com + location: Hollywood, CA + phone: "6505551234" + photoUrl: https://example.com/george.jpg + startDate: "2000-01-23" + title: Actor + DocumentVisibility: + type: string + enum: + - PRIVATE + - SPECIFIC_PEOPLE_AND_GROUPS + - DOMAIN_LINK + - DOMAIN_VISIBLE + - PUBLIC_LINK + - PUBLIC_VISIBLE + description: The level of visibility of the document as understood by our system. + x-enumDescriptions: + PRIVATE: Only one person is able to see the document. + SPECIFIC_PEOPLE_AND_GROUPS: Only specific people and/or groups can see the document. + DOMAIN_LINK: Anyone in the domain with the link can see the document. + DOMAIN_VISIBLE: Anyone in the domain can search for the document. + PUBLIC_LINK: Anyone with the link can see the document. + PUBLIC_VISIBLE: Anyone on the internet can search for the document. + x-speakeasy-enum-descriptions: + PRIVATE: Only one person is able to see the document. + SPECIFIC_PEOPLE_AND_GROUPS: Only specific people and/or groups can see the document. + DOMAIN_LINK: Anyone in the domain with the link can see the document. + DOMAIN_VISIBLE: Anyone in the domain can search for the document. + PUBLIC_LINK: Anyone with the link can see the document. + PUBLIC_VISIBLE: Anyone on the internet can search for the document. + Reaction: + properties: + type: + type: string + count: + type: integer + description: The count of the reaction type on the document. + reactors: + type: array + items: + $ref: '#/components/schemas/Person' + reactedByViewer: + type: boolean + description: Whether the user in context reacted with this type to the document. + Share: + properties: + numDaysAgo: + type: integer + description: The number of days that has passed since the share happened + sharer: + $ref: '#/components/schemas/Person' + sharingDocument: + $ref: '#/components/schemas/Document' + required: + - numDaysAgo + description: Search endpoint will only fill out numDays ago since that's all we need to display shared badge; docmetadata endpoint will fill out all the fields so that we can display shared badge tooltip + DocumentInteractions: + properties: + numComments: + type: integer + description: The count of comments (thread replies in the case of slack). + numReactions: + type: integer + description: The count of reactions on the document. + reactions: + type: array + items: + type: string + description: To be deprecated in favor of reacts. A (potentially non-exhaustive) list of reactions for the document. + deprecated: true + x-glean-deprecated: + id: cd754845-6eec-480f-b395-c93478aff563 + introduced: "2026-02-05" + message: Use reacts instead + removal: "2026-10-15" + x-speakeasy-deprecation-message: "Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use reacts instead" + reacts: + type: array + items: + $ref: '#/components/schemas/Reaction' + shares: + type: array + items: + $ref: '#/components/schemas/Share' + description: Describes instances of someone posting a link to this document in one of our indexed datasources. + visitorCount: + $ref: '#/components/schemas/CountInfo' + ViewerInfo: + properties: + role: + type: string + enum: + - ANSWER_MODERATOR + - OWNER + - VIEWER + description: DEPRECATED - use permissions instead. Viewer's role on the specific document. + deprecated: true + x-glean-deprecated: + - id: fbc55efe-3e6c-485c-8b60-bab574c3813b + introduced: "2026-02-05" + kind: property + message: Use permissions instead + removal: "2026-10-15" + x-speakeasy-deprecation-message: "Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use permissions instead" + lastViewedTime: + type: string + format: date-time + IndexStatus: + properties: + lastCrawledTime: + type: string + format: date-time + description: When the document was last crawled + lastIndexedTime: + type: string + format: date-time + description: When the document was last indexed + DocumentMetadata: + properties: + datasource: + type: string + datasourceInstance: + type: string + description: The datasource instance from which the document was extracted. + objectType: + type: string + description: The type of the result. Interpretation is specific to each datasource. (e.g. for Jira issues, this is the issue type such as Bug or Feature Request). + container: + type: string + description: The name of the container (higher level parent, not direct parent) of the result. Interpretation is specific to each datasource (e.g. Channels for Slack, Project for Jira). cf. parentId + containerId: + type: string + description: The Glean Document ID of the container. Uniquely identifies the container. + superContainerId: + type: string + description: The Glean Document ID of the super container. Super container represents a broader abstraction that contains many containers. For example, whereas container might refer to a folder, super container would refer to a drive. + parentId: + type: string + description: The id of the direct parent of the result. Interpretation is specific to each datasource (e.g. parent issue for Jira). cf. container + mimeType: + type: string + documentId: + type: string + description: The index-wide unique identifier. + loggingId: + type: string + description: A unique identifier used to represent the document in any logging or feedback requests in place of documentId. + documentIdHash: + type: string + description: Hash of the Glean Document ID. + createTime: + type: string + format: date-time + updateTime: + type: string + format: date-time + author: + $ref: '#/components/schemas/Person' + owner: + $ref: '#/components/schemas/Person' + mentionedPeople: + type: array + items: + $ref: '#/components/schemas/Person' + description: A list of people mentioned in the document. + visibility: + $ref: '#/components/schemas/DocumentVisibility' + components: + type: array + items: + type: string + description: A list of components this result is associated with. Interpretation is specific to each datasource. (e.g. for Jira issues, these are [components](https://confluence.atlassian.com/jirasoftwarecloud/organizing-work-with-components-764478279.html).) + status: + type: string + description: The status or disposition of the result. Interpretation is specific to each datasource. (e.g. for Jira issues, this is the issue status such as Done, In Progress or Will Not Fix). + statusCategory: + type: string + description: The status category of the result. Meant to be more general than status. Interpretation is specific to each datasource. + pins: + type: array + items: + $ref: '#/components/schemas/PinDocument' + description: A list of stars associated with this result. "Pin" is an older name. + priority: + type: string + description: The document priority. Interpretation is datasource specific. + assignedTo: + $ref: '#/components/schemas/Person' + updatedBy: + $ref: '#/components/schemas/Person' + labels: + type: array + items: + type: string + description: A list of tags for the document. Interpretation is datasource specific. + collections: + type: array + items: + $ref: '#/components/schemas/Collection' + description: A list of collections that the document belongs to. + datasourceId: + type: string + description: The user-visible datasource specific id (e.g. Salesforce case number for example, GitHub PR number). + interactions: + $ref: '#/components/schemas/DocumentInteractions' + verification: + $ref: '#/components/schemas/Verification' + viewerInfo: + $ref: '#/components/schemas/ViewerInfo' + permissions: + $ref: '#/components/schemas/ObjectPermissions' + visitCount: + $ref: '#/components/schemas/CountInfo' + shortcuts: + type: array + items: + $ref: '#/components/schemas/Shortcut' + description: A list of shortcuts of which destination URL is for the document. + path: + type: string + description: For file datasources like onedrive/github etc this has the path to the file + customData: + $ref: '#/components/schemas/CustomData' + documentCategory: + type: string + description: The document's document_category(.proto). + contactPerson: + $ref: '#/components/schemas/Person' + thumbnail: + $ref: '#/components/schemas/Thumbnail' + description: A thumbnail image representing this document. + indexStatus: + $ref: '#/components/schemas/IndexStatus' + ancestors: + type: array + items: + $ref: '#/components/schemas/Document' + description: A list of documents that are ancestors of this document in the hierarchy of the document's datasource, for example parent folders or containers. Ancestors can be of different types and some may not be indexed. Higher level ancestors appear earlier in the list. + example: + container: container + parentId: JIRA_EN-1337 + createTime: "2000-01-23T04:56:07.000Z" + datasource: datasource + author: + name: name + documentId: documentId + updateTime: "2000-01-23T04:56:07.000Z" + mimeType: mimeType + objectType: Feature Request + components: + - Backend + - Networking + status: Done + customData: + someCustomField: + stringValue: someCustomValue + DocumentSection: + type: object + properties: + title: + type: string + description: The title of the document section (e.g. the section header). + url: + type: string + description: The permalink of the document section. + StructuredTextItem: + properties: + link: + type: string + example: https://en.wikipedia.org/wiki/Diffuse_sky_radiation + document: + $ref: '#/components/schemas/Document' + description: Deprecated. To be gradually migrated to structuredResult. + deprecated: true + text: + type: string + example: Because its wavelengths are shorter, blue light is more strongly scattered than the longer-wavelength lights, red or green. Hence the result that when looking at the sky away from the direct incident sunlight, the human eye perceives the sky to be blue. + structuredResult: + $ref: '#/components/schemas/StructuredResult' + AnnouncementMutableProperties: + properties: + startTime: + type: string + format: date-time + description: The date and time at which the announcement becomes active. + endTime: + type: string + format: date-time + description: The date and time at which the announcement expires. + title: + type: string + description: The headline of the announcement. + body: + $ref: '#/components/schemas/StructuredText' + emoji: + type: string + description: An emoji used to indicate the nature of the announcement. + thumbnail: + $ref: '#/components/schemas/Thumbnail' + banner: + $ref: '#/components/schemas/Thumbnail' + description: Optional variant of thumbnail cropped for header background. + audienceFilters: + type: array + items: + $ref: '#/components/schemas/FacetFilter' + description: Filters which restrict who should see the announcement. Values are taken from the corresponding filters in people search. + sourceDocumentId: + type: string + description: The Glean Document ID of the source document this Announcement was created from (e.g. Slack thread). + hideAttribution: + type: boolean + description: Whether or not to hide an author attribution. + channel: + type: string + enum: + - MAIN + - SOCIAL_FEED + description: This determines whether this is a Social Feed post or a regular announcement. + postType: + type: string + enum: + - TEXT + - LINK + description: This determines whether this is an external-link post or a regular announcement post. TEXT - Regular announcement that can contain rich text. LINK - Announcement that is linked to an external site. + isPrioritized: + type: boolean + description: Used by the Social Feed to pin posts to the front of the feed. + viewUrl: + type: string + description: URL for viewing the announcement. It will be set to document URL for announcements from other datasources e.g. simpplr. Can only be written when channel="SOCIAL_FEED". + CreateAnnouncementRequest: + allOf: + - $ref: '#/components/schemas/AnnouncementMutableProperties' + - type: object + required: + - title + - startTime + - endTime + DraftProperties: + properties: + draftId: + type: integer + description: The opaque id of the associated draft. + example: + draftId: 342 + Announcement: + allOf: + - $ref: '#/components/schemas/AnnouncementMutableProperties' + - $ref: '#/components/schemas/DraftProperties' + - $ref: '#/components/schemas/PermissionedObject' + - $ref: '#/components/schemas/UgcTrackingSignals' + - type: object + properties: + id: + type: integer + description: The opaque id of the announcement. + author: + $ref: '#/components/schemas/Person' + createTimestamp: + type: integer + description: Server Unix timestamp of the creation time (in seconds since epoch UTC). + lastUpdateTimestamp: + type: integer + description: Server Unix timestamp of the last update time (in seconds since epoch UTC). + updatedBy: + $ref: '#/components/schemas/Person' + viewerInfo: + type: object + properties: + isDismissed: + type: boolean + description: Whether the viewer has dismissed the announcement. + isRead: + type: boolean + description: Whether the viewer has read the announcement. + sourceDocument: + $ref: '#/components/schemas/Document' + description: The source document if the announcement is created from one. + isPublished: + type: boolean + description: Whether or not the announcement is published. + favoriteInfo: + $ref: '#/components/schemas/FavoriteInfo' + DeleteAnnouncementRequest: + properties: + id: + type: integer + description: The opaque id of the announcement to be deleted. + required: + - id + UpdateAnnouncementRequest: + allOf: + - $ref: '#/components/schemas/AnnouncementMutableProperties' + - type: object + properties: + id: + type: integer + description: The opaque id of the announcement. + required: + - id + - title + - startTime + - endTime + AddedCollections: + properties: + addedCollections: + type: array + items: + type: integer + description: IDs of Collections to which a document is added. + AnswerCreationData: + allOf: + - $ref: '#/components/schemas/AnswerMutableProperties' + - $ref: '#/components/schemas/AddedCollections' + - type: object + properties: + combinedAnswerText: + $ref: '#/components/schemas/StructuredTextMutableProperties' + CreateAnswerRequest: + properties: + data: + $ref: '#/components/schemas/AnswerCreationData' + required: + - data + DeleteAnswerRequest: + allOf: + - $ref: '#/components/schemas/AnswerId' + - $ref: '#/components/schemas/AnswerDocId' + - type: object + required: + - id + RemovedCollections: + properties: + removedCollections: + type: array + items: + type: integer + description: IDs of Collections from which a document is removed. + EditAnswerRequest: + allOf: + - $ref: '#/components/schemas/AnswerId' + - $ref: '#/components/schemas/AnswerDocId' + - $ref: '#/components/schemas/AnswerMutableProperties' + - $ref: '#/components/schemas/AddedCollections' + - $ref: '#/components/schemas/RemovedCollections' + - type: object + properties: + combinedAnswerText: + $ref: '#/components/schemas/StructuredTextMutableProperties' + required: + - id + GetAnswerRequest: + allOf: + - $ref: '#/components/schemas/AnswerId' + - $ref: '#/components/schemas/AnswerDocId' + AnswerResult: + properties: + answer: + $ref: '#/components/schemas/Answer' + trackingToken: + type: string + description: Use `answer.trackingToken` instead. + deprecated: true + x-glean-deprecated: + id: 62de643b-f182-4d4d-a2fc-5e2cbfee7320 + introduced: "2026-05-07" + message: Use `answer.trackingToken` instead. + removal: "2027-01-15" + x-speakeasy-deprecation-message: "Deprecated on 2026-05-07, removal scheduled for 2027-01-15: Use `answer.trackingToken` instead." + favoriteInfo: + $ref: '#/components/schemas/FavoriteInfo' + required: + - answer + GetAnswerError: + properties: + errorType: + type: string + enum: + - NO_PERMISSION + - INVALID_ID + answerAuthor: + $ref: '#/components/schemas/Person' + GetAnswerResponse: + properties: + answerResult: + $ref: '#/components/schemas/AnswerResult' + error: + $ref: '#/components/schemas/GetAnswerError' + ListAnswersRequest: + properties: + boardId: + type: integer + description: The Answer Board Id to list answers on. + ListAnswersResponse: + properties: + answerResults: + type: array + items: + $ref: '#/components/schemas/AnswerResult' + description: List of answers with tracking tokens. + required: + - answers + - answerResults + AuthStatus: + type: string + enum: + - DISABLED + - AWAITING_AUTH + - AUTHORIZED + - STALE_OAUTH + - SEG_MIGRATION + description: The per-user authorization status for a datasource. + x-enum-varnames: + - AUTH_STATUS_DISABLED + - AUTH_STATUS_AWAITING_AUTH + - AUTH_STATUS_AUTHORIZED + - AUTH_STATUS_STALE_OAUTH + - AUTH_STATUS_SEG_MIGRATION + UnauthorizedDatasourceInstance: + properties: + datasourceInstance: + type: string + description: | + The instance identifier (e.g. "github", "github_enterprise_0", "slack_0"). Matches the instance names used in datasource configuration. + example: slack_0 + displayName: + type: string + description: Human-readable name of the datasource instance for display. + example: Slack + authStatus: + $ref: '#/components/schemas/AuthStatus' + authUrlRelativePath: + type: string + description: | + Relative path to initiate or resume OAuth for the current user and instance, including a one-time authentication token as a query parameter. Clients should prepend their configured Glean backend base URL. + description: | + A datasource instance that could not return results for this request because the user has not completed or has expired per-user OAuth. + CheckDatasourceAuthResponse: + properties: + unauthorizedDatasourceInstances: + type: array + items: + $ref: '#/components/schemas/UnauthorizedDatasourceInstance' + description: | + Datasource instances that require per-user OAuth authorization. Empty when all datasources are authorized. + required: + - unauthorizedDatasourceInstances + CreateAuthTokenResponse: + properties: + token: + type: string + description: An authentication token that can be passed to any endpoint via Bearer Authentication + expirationTime: + type: integer + format: int64 + description: Unix timestamp for when this token expires (in seconds since epoch UTC). + required: + - token + - expirationTime + ToolSets: + type: object + properties: + enableWebSearch: + type: boolean + description: 'Whether the agent is allowed to use web search (default: true).' + enableCompanyTools: + type: boolean + description: 'Whether the agent is allowed to search internal company resources (default: true).' + description: The types of tools that the agent is allowed to use. Only works with FAST and ADVANCED `agent` values + AgentConfig: + properties: + agent: + type: string + enum: + - DEFAULT + - GPT + - UNIVERSAL + - FAST + - ADVANCED + - AUTO + description: Name of the agent. + x-enumDescriptions: + DEFAULT: Integrates with your company's knowledge. This will soon be deprecated in favor of the FAST and ADVANCED `agent` values + GPT: Communicates directly with the LLM. This will soon be deprecated in favor of the FAST and ADVANCED `agent` values + UNIVERSAL: Uses both company and web knowledge. This will soon be deprecated in favor of the FAST and ADVANCED `agent` values + FAST: Uses an agent powered by the agentic engine that responds faster but may have lower quality results. Requires the agentic engine to be enabled in the deployment. + ADVANCED: Uses an agent powered by the agentic engine that thinks for longer and potentially makes more LLM calls to return higher quality results. Requires the agentic engine to be enabled in the deployment. + AUTO: Uses an agent powered by the agentic engine that routes between reasoning efforts based on the question and context. + x-speakeasy-enum-descriptions: + DEFAULT: Integrates with your company's knowledge. This will soon be deprecated in favor of the FAST and ADVANCED `agent` values + GPT: Communicates directly with the LLM. This will soon be deprecated in favor of the FAST and ADVANCED `agent` values + UNIVERSAL: Uses both company and web knowledge. This will soon be deprecated in favor of the FAST and ADVANCED `agent` values + FAST: Uses an agent powered by the agentic engine that responds faster but may have lower quality results. Requires the agentic engine to be enabled in the deployment. + ADVANCED: Uses an agent powered by the agentic engine that thinks for longer and potentially makes more LLM calls to return higher quality results. Requires the agentic engine to be enabled in the deployment. + AUTO: Uses an agent powered by the agentic engine that routes between reasoning efforts based on the question and context. + toolSets: + $ref: '#/components/schemas/ToolSets' + mode: + type: string + enum: + - DEFAULT + - QUICK + description: Top level modes to run GleanChat in. + x-enumDescriptions: + DEFAULT: Used if no mode supplied. + QUICK: Deprecated. + x-speakeasy-enum-descriptions: + DEFAULT: Used if no mode supplied. + QUICK: Deprecated. + useImageGeneration: + type: boolean + description: Whether the agent should create an image. + description: Describes the agent that executes the request. + ChatFileStatus: + type: string + enum: + - PROCESSING + - PROCESSED + - PARTIALLY_PROCESSED + - FAILED + - DELETED + description: Current status of the file. + x-include-enum-class-prefix: true + ChatFileFailureReason: + type: string + enum: + - PARSE_FAILED + - AV_SCAN_FAILED + - FILE_TOO_SMALL + - FILE_TOO_LARGE + - FILE_EXTENSION_UNSUPPORTED + - FILE_METADATA_VALIDATION_FAIL + - FILE_PROCESSING_TIMED_OUT + - OAUTH_NEEDED + - URL_FETCH_FAILED + - EMPTY_CONTENT + - AUTH_REQUIRED + description: Reason for failed status. + x-include-enum-class-prefix: true + ChatFileMetadata: + type: object + properties: + status: + $ref: '#/components/schemas/ChatFileStatus' + uploadTime: + type: integer + format: int64 + description: Upload time, in epoch seconds. + processedSize: + type: integer + format: int64 + description: Size of the processed file in bytes. + failureReason: + $ref: '#/components/schemas/ChatFileFailureReason' + mimeType: + type: string + description: MIME type of the file. + description: Metadata of a file uploaded by a user for Chat. + ChatFile: + type: object + properties: + id: + type: string + description: Unique identifier of the file. + example: FILE_1234 + url: + type: string + description: Url of the file. + example: www.google.com + name: + type: string + description: Name of the uploaded file. + example: sample.pdf + metadata: + $ref: '#/components/schemas/ChatFileMetadata' + description: Structure for file uploaded by a user for Chat. + ChatSkill: + type: object + properties: + id: + type: string + minLength: 1 + description: Artifact ID of the skill. + name: + type: string + description: Name of the skill. + url: + type: string + description: URL for viewing the skill. + required: + - id + description: A skill cited by Assistant. + ReferenceRange: + properties: + textRange: + $ref: '#/components/schemas/TextRange' + snippets: + type: array + items: + $ref: '#/components/schemas/SearchResultSnippet' + description: Each text range from the response can correspond to an array of snippets from the citation source. + ChatMessageCitation: + properties: + trackingToken: + type: string + description: An opaque token that represents this particular result in this particular ChatMessage. To be used for /feedback reporting. + sourceDocument: + $ref: '#/components/schemas/Document' + sourceFile: + $ref: '#/components/schemas/ChatFile' + sourcePerson: + $ref: '#/components/schemas/Person' + sourceCustomEntity: + $ref: '#/components/schemas/CustomEntity' + sourceSkill: + $ref: '#/components/schemas/ChatSkill' + referenceRanges: + type: array + items: + $ref: '#/components/schemas/ReferenceRange' + description: Each reference range and its corresponding snippets + description: Information about the source for a ChatMessage. + displayName: + type: string + description: Human understandable name of the tool. Max 50 characters. + logoUrl: + type: string + description: URL used to fetch the logo. + objectName: + type: string + description: Name of the generated object. This will be used to indicate to the end user what the generated object contains. + example: HR ticket + PersonObject: + properties: + name: + type: string + description: The display name. + obfuscatedId: + type: string + description: An opaque identifier that can be used to request metadata for a Person. + required: + - name + - obfuscatedId + AuthConfig: + type: object + properties: + isOnPrem: + type: boolean + description: Whether or not this tool is hosted on-premise. + usesCentralAuth: + type: boolean + description: Whether or not this uses central auth. + type: + type: string + enum: + - NONE + - OAUTH_USER + - OAUTH_ADMIN + - API_KEY + - BASIC_AUTH + - DWD + description: | + The type of authentication being used. + Use 'OAUTH_*' when Glean calls an external API (e.g., Jira) on behalf of a user to obtain an OAuth token. + 'OAUTH_ADMIN' utilizes an admin token for external API calls on behalf all users. + 'OAUTH_USER' uses individual user tokens for external API calls. + 'DWD' refers to domain wide delegation. + grantType: + type: string + enum: + - AUTH_CODE + - CLIENT_CREDENTIALS + description: The type of grant type being used. + status: + type: string + enum: + - AWAITING_AUTH + - AUTHORIZED + - AUTH_DISABLED + description: Auth status of the tool. + client_url: + type: string + format: url + description: The URL where users will be directed to start the OAuth flow. + scopes: + type: array + items: + type: string + description: A list of strings denoting the different scopes or access levels required by the tool. + audiences: + type: array + items: + type: string + description: A list of strings denoting the different audience which can access the tool. + authorization_url: + type: string + format: url + description: The OAuth provider's endpoint, where access tokens are requested. + resource: + type: string + format: url + description: The OAuth 2.0 Resource Indicator (RFC 8707) for the protected resource. Discovered from Protected Resource Metadata (RFC 9728) during DCR. Included in authorization and token exchange requests when present. + token_endpoint_auth_method: + type: string + enum: + - client_secret_post + - client_secret_basic + - none + - private_key_jwt + description: The OAuth 2.0 token endpoint authentication method (RFC 7591). Determines how the client authenticates when exchanging an authorization code for a token. Values use lowercase to match the OAuth 2.0 wire format (RFC 7591 Section 2). + x-enumDescriptions: + client_secret_post: Send client_id and client_secret as form fields in the token request body. + client_secret_basic: Send client_id and client_secret via the HTTP Basic Authorization header. + none: Public client - omit the client secret and authenticate with the PKCE code_verifier only. + private_key_jwt: Authenticate with a JWT client assertion signed by the client's private key (RFC 7523 Section 2.2 / OIDC Core Section 9). Requires a key pair pre-registered with the authorization server. + x-speakeasy-enum-descriptions: + client_secret_post: Send client_id and client_secret as form fields in the token request body. + client_secret_basic: Send client_id and client_secret via the HTTP Basic Authorization header. + none: Public client - omit the client secret and authenticate with the PKCE code_verifier only. + private_key_jwt: Authenticate with a JWT client assertion signed by the client's private key (RFC 7523 Section 2.2 / OIDC Core Section 9). Requires a key pair pre-registered with the authorization server. + authHeaderType: + type: string + enum: + - AUTHORIZATION_BEARER + - AUTHORIZATION_TOKEN + - AUTHORIZATION_API_KEY + - X_API_KEY + description: Defines the header structure for sending the API key or token to the server. Defaults to AUTHORIZATION_BEARER. Select the specific header format the server expects for transmitting the key. + x-enumDescriptions: + AUTHORIZATION_BEARER: "Sends \"Authorization: Bearer \"." + AUTHORIZATION_TOKEN: "Sends \"Authorization: Token \"." + AUTHORIZATION_API_KEY: "Sends \"Authorization: ApiKey \"." + X_API_KEY: "Sends \"X-API-Key: \". No Authorization header is sent." + x-speakeasy-enum-descriptions: + AUTHORIZATION_BEARER: "Sends \"Authorization: Bearer \"." + AUTHORIZATION_TOKEN: "Sends \"Authorization: Token \"." + AUTHORIZATION_API_KEY: "Sends \"Authorization: ApiKey \"." + X_API_KEY: "Sends \"X-API-Key: \". No Authorization header is sent." + lastAuthorizedAt: + type: string + format: date-time + description: The time the tool was last authorized in ISO format (ISO 8601). + description: Config for tool's authentication method. + ToolMetadata: + properties: + type: + type: string + enum: + - RETRIEVAL + - ACTION + description: The type of tool. + name: + type: string + description: Unique identifier for the tool. Name should be understandable by the LLM, and will be used to invoke a tool. + displayName: + $ref: '#/components/schemas/displayName' + toolId: + type: string + description: An opaque id which is unique identifier for the tool. + displayDescription: + type: string + description: Description of the tool meant for a human. + logoUrl: + $ref: '#/components/schemas/logoUrl' + objectName: + $ref: '#/components/schemas/objectName' + knowledgeType: + type: string + enum: + - NEUTRAL_KNOWLEDGE + - COMPANY_KNOWLEDGE + - WORLD_KNOWLEDGE + description: Indicates the kind of knowledge a tool would access or modify. + createdBy: + $ref: '#/components/schemas/PersonObject' + lastUpdatedBy: + $ref: '#/components/schemas/PersonObject' + createdAt: + type: string + format: date-time + description: The time the tool was created in ISO format (ISO 8601) + lastUpdatedAt: + type: string + format: date-time + description: The time the tool was last updated in ISO format (ISO 8601) + writeActionType: + type: string + enum: + - REDIRECT + - EXECUTION + - MCP + description: Valid only for write actions. Represents the type of write action. REDIRECT - The client renders the URL which contains information for carrying out the action. EXECUTION - Send a request to an external server and execute the action. MCP - Send a tools/call request to an MCP server to execute the action. + actionTypeSource: + type: string + enum: + - MCP_ANNOTATION + - ADMIN_OVERRIDE + - NONE + - NATIVE_TOOL_DEFINITION + description: | + Analytics-only signal (product snapshot) describing WHERE the action's + read/write determination came from. Complementary to the effective + read/write value (the tool's ToolType, which drives HITL): the value says + read-or-write, this says how confident that is. MCP_ANNOTATION = from the + tool's read-only/destructive hints; ADMIN_OVERRIDE = an admin set it; + NONE = no usable hint (the effective value then defaults to write); + NATIVE_TOOL_DEFINITION = from a curated native tool (snapshot-derived). + Does not affect runtime behavior. + authType: + type: string + enum: + - NONE + - OAUTH_USER + - OAUTH_ADMIN + - API_KEY + - BASIC_AUTH + - DWD + description: | + The type of authentication being used. + Use 'OAUTH_*' when Glean calls an external API (e.g., Jira) on behalf of a user to obtain an OAuth token. + 'OAUTH_ADMIN' utilizes an admin token for external API calls on behalf all users. + 'OAUTH_USER' uses individual user tokens for external API calls. + 'DWD' refers to domain wide delegation. + auth: + $ref: '#/components/schemas/AuthConfig' + deprecated: true + permissions: + $ref: '#/components/schemas/ObjectPermissions' + deprecated: true + usageInstructions: + type: string + description: Usage instructions for the LLM to use this action. + isSetupFinished: + type: boolean + description: Whether this action has been fully configured and validated. + required: + - type + - name + - displayName + - displayDescription + description: The manifest for a tool that can be used to augment Glean Assistant. + PossibleValue: + type: object + properties: + value: + type: string + description: Possible value + label: + type: string + description: User-friendly label associated with the value + description: Possible value of a specific parameter + WriteActionParameter: + type: object + properties: + type: + type: string + enum: + - UNKNOWN + - INTEGER + - STRING + - BOOLEAN + description: The type of the value (e.g., integer, string, boolean, etc.) + displayName: + type: string + description: Human readable display name for the key. + value: + type: string + description: The value of the field. + isRequired: + type: boolean + description: Is the parameter a required field. + description: + type: string + description: Description of the parameter. + possibleValues: + type: array + items: + $ref: '#/components/schemas/PossibleValue' + description: Possible values that the parameter can take. + ToolInfo: + type: object + properties: + metadata: + $ref: '#/components/schemas/ToolMetadata' + parameters: + type: object + additionalProperties: + $ref: '#/components/schemas/WriteActionParameter' + description: Parameters supported by the tool. + ServerToolBase: + type: object + properties: + requestType: + type: string + enum: + - EXECUTION + - AUTHENTICATION_SUGGESTION + - VOTE_SUGGESTION + description: The type of request made to the user. + x-enumDescriptions: + EXECUTION: Request for approving execution of the tool. + AUTHENTICATION_SUGGESTION: Request for authenticating to a tool, provided as a (tool) suggestion. + VOTE_SUGGESTION: Suggestion to vote for enabling an available-but-not-enabled tool. + x-speakeasy-enum-descriptions: + EXECUTION: Request for approving execution of the tool. + AUTHENTICATION_SUGGESTION: Request for authenticating to a tool, provided as a (tool) suggestion. + VOTE_SUGGESTION: Suggestion to vote for enabling an available-but-not-enabled tool. + requestId: + type: string + description: Unique identifier for this request. + required: + - toolType + - requestType + - requestId + x-visibility: Preview + x-glean-experimental: + id: 4e3ee791-45e0-4125-845f-4b7701aa983c + introduced: "2026-07-02" + ActionPreview: + properties: + markdown: + type: string + description: Markdown preview describing what the action will do. + description: + type: string + description: Short summary of what this specific tool invocation will do. + description: Preview information for an action being executed. + ServerToolRequest: + allOf: + - $ref: '#/components/schemas/ServerToolBase' + - type: object + properties: + toolDisplayName: + type: string + description: Human-readable display name for the tool. + serverId: + type: string + description: | + Unique identifier of the tool server. Use with GET /tool-servers/{serverId}/auth + to resolve display information and authentication status. + toolCta: + type: string + description: Custom call-to-action (CTA) verb for the approval button (e.g., "Create", "Update", "Send"). + actionPreview: + $ref: '#/components/schemas/ActionPreview' + description: Preview information for this tool request. + required: + - toolName + x-visibility: Preview + x-glean-experimental: + id: 8544e887-4569-4b14-bde0-d1be9e90dbc3 + introduced: "2026-07-02" + AuthContext: + type: object + properties: + serverId: + type: string + description: ID of the MCP server (populated when toolType is MCP). + description: | + Context for authentication responses, containing identifiers for the entity being authenticated. + x-visibility: Preview + x-glean-experimental: + id: a7c1d3e5-9f42-4b8a-b6e0-2d4f8a1c3e5b + introduced: "2026-07-09" + ServerToolResponse: + allOf: + - $ref: '#/components/schemas/ServerToolBase' + - type: object + properties: + isGranted: + type: boolean + description: Whether tool request is granted (indicates approval for execution, or completion for auth). + grantScope: + type: string + enum: + - CURRENT_REQUEST + - CURRENT_SESSION + - ALWAYS + description: | + Scope of the approval grant. Only applicable when isGranted is true and requestType is EXECUTION. + default: CURRENT_REQUEST + x-enumDescriptions: + CURRENT_REQUEST: Approve only the current tool request. Future tool execution requests still require approval. + CURRENT_SESSION: Approve the current tool request and auto-approve all future same tool requests in this chat session. + ALWAYS: Approve the current tool request and auto-approve all future same tool requests across all chat sessions. + x-speakeasy-enum-descriptions: + CURRENT_REQUEST: Approve only the current tool request. Future tool execution requests still require approval. + CURRENT_SESSION: Approve the current tool request and auto-approve all future same tool requests in this chat session. + ALWAYS: Approve the current tool request and auto-approve all future same tool requests across all chat sessions. + authContext: + $ref: '#/components/schemas/AuthContext' + description: Context for AUTHENTICATION_SUGGESTION responses. Required when requestType is AUTHENTICATION_SUGGESTION. + description: | + Response to a server tool request. The applicable fields depend on requestType: + + For EXECUTION requests: + - isGranted: whether tool execution is approved + - reason: optional explanation + + For AUTHENTICATION_SUGGESTION requests: + - isGranted: whether auth completed successfully (true=connected, false=skipped) + - authContext: contains serverId or actionPackId for identifying the authenticated entity + - reason: optional explanation for skip + + For VOTE_SUGGESTION requests: + - voted: whether the user voted for this tool + x-visibility: Preview + x-glean-experimental: + id: 3eae3ee7-2c06-4027-be14-98260a3ce608 + introduced: "2026-07-02" + ChatMessageFragment: + allOf: + - $ref: '#/components/schemas/Result' + - type: object + properties: + text: + type: string + querySuggestion: + $ref: '#/components/schemas/QuerySuggestion' + description: The search queries issued while responding. + file: + $ref: '#/components/schemas/ChatFile' + description: Files referenced in the message fragment. This is used to construct rich-text messages with file references. + action: + $ref: '#/components/schemas/ToolInfo' + description: Basic information about an action. This can be used to construct rich-text messages with action references. + citation: + $ref: '#/components/schemas/ChatMessageCitation' + description: Inline citation. + serverToolRequest: + $ref: '#/components/schemas/ServerToolRequest' + description: request to run a tool on server. + serverToolResponse: + $ref: '#/components/schemas/ServerToolResponse' + description: response corresponding to the server tool request. + description: Represents a part of a ChatMessage that originates from a single action/tool. It is designed to support rich data formats beyond simple text, allowing for a more dynamic and interactive chat experience. Each fragment can include various types of content, such as text, search queries, action information, and more. Also, each ChatMessageFragment should only have one of structuredResults, querySuggestion, writeAction, followupAction, agentRecommendation, followupRoutingSuggestion or file. + ChatMessage: + properties: + agentConfig: + $ref: '#/components/schemas/AgentConfig' + description: Describes the agent config that generated this message. Populated on responses and not required on requests. + author: + enum: + - USER + - GLEAN_AI + default: USER + citations: + type: array + items: + $ref: '#/components/schemas/ChatMessageCitation' + description: 'Deprecated: Use inline citations via ChatMessageFragment.citation instead. For detailed reference information, use ChatMessageCitation.referenceRanges. This field is still populated for backward compatibility.' + deprecated: true + x-glean-deprecated: + id: 6446f85e-c90e-4c00-9717-796f9db3dc61 + introduced: "2026-02-06" + message: Use inline citations via ChatMessageFragment.citation and ChatMessageCitation.referenceRanges instead. This field is still populated for backward compatibility. + removal: "2026-10-15" + x-speakeasy-deprecation-message: "Deprecated on 2026-02-06, removal scheduled for 2026-10-15: Use inline citations via ChatMessageFragment.citation and ChatMessageCitation.referenceRanges instead. This field is still populated for backward compatibility." + uploadedFileIds: + type: array + items: + type: string + description: IDs of files uploaded in the message that are referenced to generate the answer. + fragments: + type: array + items: + $ref: '#/components/schemas/ChatMessageFragment' + description: A list of rich data used to represent the response or formulate a request. These are linearly stitched together to support richer data formats beyond simple text. + ts: + type: string + description: Response timestamp of the message. + messageId: + type: string + description: A unique server-side generated ID used to identify a message, automatically populated for any USER authored messages. + messageTrackingToken: + type: string + description: Opaque tracking token generated server-side. + messageType: + type: string + enum: + - UPDATE + - CONTENT + - CONTEXT + - CONTROL + - CONTROL_START + - CONTROL_FINISH + - CONTROL_CANCEL + - CONTROL_RETRY + - CONTROL_UNKNOWN + - DEBUG + - DEBUG_EXTERNAL + - ERROR + - HEADING + - WARNING + - SERVER_TOOL + description: Semantically groups content of a certain type. It can be used for purposes such as differential UI treatment. USER authored messages should be of type CONTENT and do not need `messageType` specified. + default: CONTENT + x-enumDescriptions: + UPDATE: An intermediate state message for progress updates. + CONTENT: A user query or response message. + CONTEXT: A message providing context in addition to the user query. + CONTROL: Control signal for message streaming. + CONTROL_START: Control signal indicating the start of a message stream. + CONTROL_FINISH: Control signal indicating the end of a message stream. + CONTROL_CANCEL: Control signal indicating the message stream was cancelled. + CONTROL_RETRY: Indicates the message streaming needed to be retried. + CONTROL_UNKNOWN: Fallback control signal for unrecognized control types. + DEBUG: A debug message. Strictly used internally. + DEBUG_EXTERNAL: A debug message to be used while debugging Action creation. + ERROR: A message that describes an error while processing the request. + HEADING: A heading message used to distinguish different sections of the holistic response. + WARNING: A warning message to be shown to the user. + SERVER_TOOL: A message used to for server-side tool auth/use, for request and response. + x-speakeasy-enum-descriptions: + UPDATE: An intermediate state message for progress updates. + CONTENT: A user query or response message. + CONTEXT: A message providing context in addition to the user query. + CONTROL: Control signal for message streaming. + CONTROL_START: Control signal indicating the start of a message stream. + CONTROL_FINISH: Control signal indicating the end of a message stream. + CONTROL_CANCEL: Control signal indicating the message stream was cancelled. + CONTROL_RETRY: Indicates the message streaming needed to be retried. + CONTROL_UNKNOWN: Fallback control signal for unrecognized control types. + DEBUG: A debug message. Strictly used internally. + DEBUG_EXTERNAL: A debug message to be used while debugging Action creation. + ERROR: A message that describes an error while processing the request. + HEADING: A heading message used to distinguish different sections of the holistic response. + WARNING: A warning message to be shown to the user. + SERVER_TOOL: A message used to for server-side tool auth/use, for request and response. + hasMoreFragments: + type: boolean + description: Signals there are additional response fragments incoming. + deprecated: true + description: A message that is rendered as one coherent unit with one given sender. + ChatRequestBase: + properties: + messages: + type: array + items: + $ref: '#/components/schemas/ChatMessage' + description: A list of chat messages, from most recent to least recent. At least one message must specify a USER author. + sessionInfo: + $ref: '#/components/schemas/SessionInfo' + description: Optional object for tracking the session used by the client and for debugging purposes. + saveChat: + type: boolean + description: Save the current interaction as a Chat for the user to access and potentially continue later. + chatId: + type: string + description: The id of the Chat that context should be retrieved from and messages added to. An empty id starts a new Chat, and the Chat is saved if saveChat is true. + agentConfig: + $ref: '#/components/schemas/AgentConfig' + description: Describes the agent that will execute the request. + required: + - messages + description: The minimal set of fields that form a chat request. + ChatRestrictionFilters: + allOf: + - $ref: '#/components/schemas/RestrictionFilters' + - type: object + properties: + documentSpecs: + type: array + items: + $ref: '#/components/schemas/DocumentSpec' + datasourceInstances: + type: array + items: + type: string + ChatRequest: + allOf: + - $ref: '#/components/schemas/ChatRequestBase' + - type: object + properties: + inclusions: + $ref: '#/components/schemas/ChatRestrictionFilters' + description: A list of filters which only allows chat to access certain content. + exclusions: + $ref: '#/components/schemas/ChatRestrictionFilters' + description: A list of filters which disallows chat from accessing certain content. If content is in both inclusions and exclusions, it'll be excluded. + timeoutMillis: + type: integer + description: Timeout in milliseconds for the request. A `408` error will be returned if handling the request takes longer. + example: 30000 + applicationId: + type: string + description: The ID of the application this request originates from, used to determine the configuration of underlying chat processes. This should correspond to the ID set during admin setup. If not specified, the default chat experience will be used. + agentId: + type: string + description: The ID of the Agent that should process this chat request. Only Agents with trigger set to 'User chat message' are invokable through this API. If not specified, the default chat experience will be used. + stream: + type: boolean + description: If set, response lines will be streamed one-by-one as they become available. Each will be a ChatResponse, formatted as JSON, and separated by a new line. If false, the entire response will be returned at once. Note that if this is set and the model being used does not support streaming, the model's response will not be streamed, but other messages from the endpoint still will be. + ChatResponse: + properties: + messages: + type: array + items: + $ref: '#/components/schemas/ChatMessage' + chatId: + type: string + description: The id of the associated Chat the messages belong to, if one exists. + chat: + $ref: '#/components/schemas/ChatMetadata' + followUpPrompts: + type: array + items: + type: string + description: Follow-up prompts for the user to potentially use + backendTimeMillis: + type: integer + format: int64 + description: Time in milliseconds the backend took to respond to the request. + example: 1100 + chatSessionTrackingToken: + type: string + description: A token that is used to track the session. + description: A single response from the /chat backend. + DeleteChatsRequest: + properties: + ids: + type: array + items: + type: string + description: A non-empty list of ids of the Chats to be deleted. + required: + - ids + GetChatRequest: + properties: + id: + type: string + description: The id of the Chat to be retrieved. + required: + - id + Chat: + allOf: + - $ref: '#/components/schemas/ChatMetadata' + - $ref: '#/components/schemas/PermissionedObject' + properties: + messages: + type: array + items: + $ref: '#/components/schemas/ChatMessage' + description: The chat messages within a Chat. + roles: + type: array + items: + $ref: '#/components/schemas/UserRoleSpecification' + description: A list of roles for this Chat. + description: A historical representation of a series of chat messages a user had with Glean Assistant. + ChatResult: + properties: + chat: + $ref: '#/components/schemas/Chat' + trackingToken: + type: string + description: An opaque token that represents this particular Chat. To be used for `/feedback` reporting. + GetChatResponse: + properties: + chatResult: + $ref: '#/components/schemas/ChatResult' + AccessRequestPermissionDeniedResponse: + type: object + properties: + errorType: + type: string + enum: + - PERMISSION_DENIED + createdBy: + $ref: '#/components/schemas/Person' + requestableRoles: + type: array + items: + $ref: '#/components/schemas/UserRole' + hasPendingRequest: + type: boolean + required: + - errorType + - createdBy + - requestableRoles + - hasPendingRequest + ChatMetadataResult: + properties: + chat: + $ref: '#/components/schemas/ChatMetadata' + trackingToken: + type: string + description: An opaque token that represents this particular Chat. To be used for `/feedback` reporting. + ListChatsResponse: + properties: + chatResults: + type: array + items: + $ref: '#/components/schemas/ChatMetadataResult' + x-includeEmpty: true + cursor: + type: string + description: An opaque cursor for fetching the next page of results. If empty, there are no more results. + example: "" + GetChatApplicationRequest: + properties: + id: + type: string + description: The id of the Chat application to be retrieved. + required: + - id + ChatApplicationDetails: {} + GetChatApplicationResponse: + properties: + application: + $ref: '#/components/schemas/ChatApplicationDetails' + UploadChatFilesRequest: + properties: + files: + type: array + items: + type: string + format: binary + description: Raw files to be uploaded for chat in binary format. + required: + - files + UploadChatFilesResponse: + properties: + files: + type: array + items: + $ref: '#/components/schemas/ChatFile' + description: Files uploaded for chat. + GetChatFilesRequest: + properties: + fileIds: + type: array + items: + type: string + description: IDs of files to fetch. + required: + - fileIds + GetChatFilesResponse: + properties: + files: + type: object + additionalProperties: + $ref: '#/components/schemas/ChatFile' + description: A map of file IDs to ChatFile structs. + DeleteChatFilesRequest: + properties: + fileIds: + type: array + items: + type: string + description: IDs of files to delete. + required: + - fileIds + WorkflowDraftableProperties: + properties: + name: + type: string + description: The name of the workflow. + WorkflowMutableProperties: + type: object + allOf: + - $ref: '#/components/schemas/WorkflowDraftableProperties' + - type: object + CreateWorkflowRequest: + allOf: + - $ref: '#/components/schemas/WorkflowMutableProperties' + - type: object + properties: + transient: + type: boolean + description: Used to create a transient workflow. + parentWorkflowId: + type: string + description: id of the parent workflow for transient workflows + WorkflowMetadata: + allOf: + - type: object + properties: + author: + $ref: '#/components/schemas/Person' + createTimestamp: + type: integer + description: Server Unix timestamp of the creation time. + lastUpdateTimestamp: + type: integer + description: Server Unix timestamp of the last update time. + lastDraftSavedAt: + type: integer + description: Server Unix timestamp of the last time the draft was saved. + lastDraftSavedBy: + $ref: '#/components/schemas/Person' + description: The person who last saved the draft. + lastDraftGitAuthorId: + type: string + description: ID of the VCS user (e.g. GitHub username) who last saved the draft. Set only by the draft save path via the external Git integration API. + lastUpdatedBy: + $ref: '#/components/schemas/Person' + AttributionProperties: {} + Workflow: + allOf: + - $ref: '#/components/schemas/PermissionedObject' + - $ref: '#/components/schemas/WorkflowMutableProperties' + - $ref: '#/components/schemas/WorkflowMetadata' + - $ref: '#/components/schemas/AttributionProperties' + - type: object + properties: + id: + type: string + description: The ID of the workflow. + verified: + type: boolean + description: When present, indicates this workflow is admin-verified. Set via the dedicated admin settings endpoint, not by regular edits. + readOnly: true + showOrganizationAsAuthor: + type: boolean + description: When true, displays organization name instead of author name in agent card. Set via the dedicated admin settings endpoint, not by regular edits. + readOnly: true + webhookUrl: + type: string + description: | + For a CUSTOM_WEBHOOK-triggered agent, the full inbound webhook URL (.../webhooks/custom/) minted for the agent. Empty for other trigger types. + readOnly: true + WorkflowResult: + type: object + properties: + workflow: + $ref: '#/components/schemas/Workflow' + required: + - workflow + CreateWorkflowResponse: + allOf: + - $ref: '#/components/schemas/WorkflowResult' + Agent: + type: object + properties: + agent_id: + type: string + title: Agent Id + description: The ID of the agent. + example: mho4lwzylcozgoc2 + name: + type: string + title: Agent Name + description: The name of the agent + example: HR Policy Agent + description: + type: string + title: Description + description: The description of the agent. + example: This agent answers questions about the current company HR policies. + metadata: + type: object + title: Metadata + description: The agent metadata. Currently not implemented. + capabilities: + type: object + properties: + ap.io.messages: + type: boolean + title: Messages + description: Whether the agent supports messages as an input. If true, you'll pass `messages` as an input when running the agent. + ap.io.streaming: + type: boolean + title: Streaming + description: Whether the agent supports streaming output. If true, you you can stream agent ouput. All agents currently support streaming. + title: Agent Capabilities + additionalProperties: true + description: |- + Describes features that the agent supports. example: { + "ap.io.messages": true, + "ap.io.streaming": true + } + title: Agent + required: + - agent_id + - name + - capabilities + ErrorResponse: + type: object + properties: + message: + type: string + description: Client-facing error message describing what went wrong + description: Error response returned for failed requests + EditWorkflowRequest: + allOf: + - $ref: '#/components/schemas/WorkflowMutableProperties' + - type: object + properties: + id: + type: string + description: The workflow ID we want to update. + ActionSummary: + type: object + properties: + tool_id: + type: string + description: The unique identifier of the action. + display_name: + type: string + description: The display name of the action. + type: + type: string + description: The type of tool - RETRIEVAL for read-only operations, ACTION for operations that modify data. + auth_type: + type: string + description: The authentication type required - OAUTH_USER, OAUTH_ADMIN, API_KEY, BASIC_AUTH, DWD (domain-wide delegation), or NONE. + write_action_type: + type: string + description: For write actions only - REDIRECT (client renders URL) or EXECUTION (external server call). + is_setup_finished: + type: boolean + description: Whether this action has been fully configured and validated. + x-includeEmpty: true + data_source: + type: string + description: | + Indicates the kind of knowledge a tool would access or modify. + Company knowledge: + - Glean search, and any native tools that derive from it (e.g., expert search, code search) + - Native federated tools to company data sources (e.g., outlook search) + World knowledge: + - Platform action like bravewebsearch, geminiwebsearch, etc + Neutral knowledge: + - Native tools that don't access or modify content via APIs (e.g., file analyst, think) + - Platform read or write tools (creator has to determine their knowledge implications) + required: + - tool_id + - display_name + description: Represents a minimal summary of an action. + AgentSchemas: + type: object + properties: + agent_id: + type: string + title: Agent Id + description: The ID of the agent. + example: mho4lwzylcozgoc2 + name: + type: string + title: Agent Name + description: The name of the agent. + example: HR Policy Agent + input_schema: + type: object + title: Input Schema + description: The schema for the agent input. In JSON Schema format. + output_schema: + type: object + title: Output Schema + description: The schema for the agent output. In JSON Schema format. + tools: + type: array + items: + $ref: '#/components/schemas/ActionSummary' + title: Tools + description: List of tools that the agent can invoke. Only included when include_tools query parameter is set to true. + title: AgentSchemas + required: + - agent_id + - input_schema + - output_schema + description: Defines the structure and properties of an agent. + ImportAgentSyncMode: + type: string + enum: + - STAGED + - PUBLISHED + description: | + Whether the imported version is staged (saved without updating the live version) or published directly to the live version. + ImportAgentRequest: + type: object + properties: + bundle: + type: string + format: binary + description: | + Zip of the agent folder (spec.yaml, instructions.md, skills/, subagents/) with symlinks dereferenced. + gitCommitSha: + type: string + description: Optional Git commit SHA to associate with this import. + gitAuthorId: + type: string + description: Optional VCS commit author ID to associate with this import. + commitMessage: + type: string + description: Optional commit message for the imported version. + syncMode: + $ref: '#/components/schemas/ImportAgentSyncMode' + isDraft: + type: boolean + description: | + When true, validates and stores a draft preview without publishing (used for PR preview links). Takes precedence over `syncMode`: when `isDraft` is true, `syncMode` is ignored. + required: + - bundle + ImportAgentStatus: + type: string + enum: + - CREATED + - UPDATED + - DRAFT_PREVIEW + description: Outcome of the import for the target agent. + ImportAgentResponse: + type: object + properties: + workflowResult: + $ref: '#/components/schemas/WorkflowResult' + status: + $ref: '#/components/schemas/ImportAgentStatus' + SearchAgentsRequest: + type: object + properties: + name: + type: string + description: Filters on the name of the agent. The keyword search is case-insensitive. If search string is ommited or empty, acts as no filter. + example: HR Policy Agent + SearchAgentsResponse: + type: object + properties: + agents: + type: array + items: + $ref: '#/components/schemas/Agent' + title: Response Search Agents + ContentType: + type: string + enum: + - text + Message: + type: object + properties: + role: + type: string + title: Role + description: The role of the message. + example: USER + content: + type: array + items: type: object - description: Structure describing shared config properties of a datasource with no multi-instance support. - required: - - name - properties: - name: - type: string - description: Unique identifier of datasource instance to which this config applies. - displayName: - type: string - description: The user-friendly instance label to display. If omitted, falls back to the title-cased `name`. - datasourceCategory: - type: string - enum: - - UNCATEGORIZED - - TICKETS - - CRM - - PUBLISHED_CONTENT - - COLLABORATIVE_CONTENT - - QUESTION_ANSWER - - MESSAGING - - CODE_REPOSITORY - - CHANGE_MANAGEMENT - - PEOPLE - - EMAIL - - SSO - - ATS - - KNOWLEDGE_HUB - - EXTERNAL_SHORTCUT - - ENTITY - - CALENDAR - - AGENTS - default: UNCATEGORIZED - description: The type of this datasource. It is an important signal for relevance and must be specified and cannot be UNCATEGORIZED. Please refer to [this](https://developers.glean.com/docs/indexing_api_datasource_category/) for more details. - urlRegex: - type: string - description: "Regular expression that matches URLs of documents of the datasource instance. The behavior for multiple matches is non-deterministic. **Note: `urlRegex` is a required field for non-entity datasources, but not required if the datasource is used to push custom entities (ie. datasources where isEntityDatasource is false). Please add a regex as specific as possible to this datasource instance.**" - example: https://example-company.datasource.com/.* - iconUrl: - type: string - description: The URL to an image to be displayed as an icon for this datasource instance. Must have a transparency mask. SVG are recommended over PNG. Public, scio-authenticated and Base64 encoded data URLs are all valid (but not third-party-authenticated URLs). - objectDefinitions: - type: array - description: The list of top-level `objectType`s for the datasource. - items: - $ref: "#/components/schemas/ObjectDefinition" - suggestionText: - type: string - description: Example text for what to search for in this datasource - homeUrl: - type: string - description: The URL of the landing page for this datasource instance. Should point to the most useful page for users, not the company marketing page. - crawlerSeedUrls: - type: array - description: This only applies to WEB_CRAWL and BROWSER_CRAWL datasources. Defines the seed URLs for crawling. - items: - type: string - iconDarkUrl: - type: string - description: The URL to an image to be displayed as an icon for this datasource instance in dark mode. Must have a transparency mask. SVG are recommended over PNG. Public, scio-authenticated and Base64 encoded data URLs are all valid (but not third-party-authenticated URLs). - hideBuiltInFacets: - type: array - description: List of built-in facet types that should be hidden for the datasource. - items: - type: string - enum: - - TYPE - - TAG - - AUTHOR - - OWNER - canonicalizingURLRegex: - type: array - description: A list of regular expressions to apply to an arbitrary URL to transform it into a canonical URL for this datasource instance. Regexes are to be applied in the order specified in this list. - items: - $ref: "#/components/schemas/CanonicalizingRegexType" - canonicalizingTitleRegex: - type: array - description: A list of regular expressions to apply to an arbitrary title to transform it into a title that will be displayed in the search results - items: - $ref: "#/components/schemas/CanonicalizingRegexType" - redlistTitleRegex: - type: string - description: A regex that identifies titles that should not be indexed - connectorType: - allOf: - - $ref: "#/components/schemas/ConnectorType" - type: string - quicklinks: - type: array - description: List of actions for this datasource instance that will show up in autocomplete and app card, e.g. "Create new issue" for jira - items: - $ref: "#/components/schemas/Quicklink" - renderConfigPreset: - type: string - description: The name of a render config to use for displaying results from this datasource. Any well known datasource name may be used to render the same as that source, e.g. `web` or `gdrive`. Please refer to [this](https://developers.glean.com/docs/rendering_search_results/) for more details - aliases: - type: array - description: Aliases that can be used as `app` operator-values. - items: - type: string - isOnPrem: - type: boolean - description: Whether or not this datasource is hosted on-premise. - trustUrlRegexForViewActivity: - type: boolean - default: true - description: True if browser activity is able to report the correct URL for VIEW events. Set this to true if the URLs reported by Chrome are constant throughout each page load. Set this to false if the page has Javascript that modifies the URL during or after the load. - includeUtmSource: - type: boolean - description: If true, a utm_source query param will be added to outbound links to this datasource within Glean. - stripFragmentInCanonicalUrl: - type: boolean - default: true - description: If true, the fragment part of the URL will be stripped when converting to a canonical url. - CustomDatasourceConfig: - description: Structure describing config properties of a custom datasource - allOf: - - $ref: "#/components/schemas/SharedDatasourceConfigNoInstance" - - type: object - properties: - identityDatasourceName: - type: string - description: If the datasource uses another datasource for identity info, then the name of the datasource. The identity datasource must exist already and the datasource with identity info should have its visibility enabled for search results. - productAccessGroup: - type: string - description: If the datasource uses a specific product access group, then the name of that group. - isUserReferencedByEmail: - type: boolean - description: whether email is used to reference users in document ACLs and in group memberships. - isEntityDatasource: - type: boolean - default: false - description: True if this datasource is used to push custom entities. - isTestDatasource: - type: boolean - default: false - description: True if this datasource will be used for testing purpose only. Documents from such a datasource wouldn't have any effect on search rankings. - ShortcutProperties: - properties: - inputAlias: - type: string - description: link text following the viewPrefix as entered by the user. For example, if the view prefix is `go/` and the shortened URL is `go/abc`, then `abc` is the inputAlias. - description: - type: string - description: A short, plain text blurb to help people understand the intent of the shortcut. - destinationUrl: - type: string - format: url - description: destination URL for the shortcut. - createdBy: - type: string - description: Email of the user who created this shortcut. - createTime: - type: integer - format: int64 - description: The time the shortcut was created in epoch seconds. - updatedBy: - type: string - description: Email of the user who last updated this shortcut. - updateTime: - type: integer - format: int64 - description: The time the shortcut was updated in epoch seconds. - ExternalShortcut: - allOf: - - $ref: "#/components/schemas/ShortcutProperties" - - type: object - required: - - destinationUrl - - intermediateUrl - - createdBy - - inputAlias - properties: - title: - type: string - description: Title of the golink - intermediateUrl: - type: string - format: url - description: The URL from which the user is then redirected to the destination URL. - decayedVisitScore: - type: number - format: double - description: decayed visits score for ranking - editUrl: - type: string - format: url - description: The URL using which the user can access the edit page of the shortcut. - SharedDatasourceConfig: - description: Structure describing shared config properties of the datasource (including multi-instance support) - allOf: - - $ref: "#/components/schemas/SharedDatasourceConfigNoInstance" - - type: object - properties: - datasourceName: - type: string - description: The (non-unique) name of the datasource of which this config is an instance, e.g. "jira". - instanceOnlyName: - type: string - description: The instance of the datasource for this particular config, e.g. "onprem". - instanceDescription: - type: string - description: A human readable string identifying this instance as compared to its peers, e.g. "github.com/askscio" or "github.askscio.com" - IndexingShortcut: - allOf: - - $ref: "#/components/schemas/ShortcutProperties" - - type: object - required: - - destinationUrl - - createdBy - - inputAlias - properties: - unlisted: - type: boolean - description: Whether this shortcut is unlisted or not. Unlisted shortcuts are visible to author and admins only. - urlTemplate: - type: string - description: For variable shortcuts, contains the URL template; note, `destinationUrl` contains default URL. - SensitiveInfoType: - properties: - likelihoodThreshold: - deprecated: true - type: string - enum: - - LIKELY - - VERY_LIKELY - - POSSIBLE - - UNLIKELY - - VERY_UNLIKELY - infoType: - description: Text representation of an info-type to scan for. - type: string - TimeRange: - properties: - startTime: - type: string - description: start time of the time range, applicable for the CUSTOM type. - format: date-time - endTime: - type: string - description: end time of the time range, applicable for the CUSTOM type. - format: date-time - lastNDaysValue: - type: integer - description: The number of days to look back from the current time, applicable for the LAST_N_DAYS type. - format: int64 - InputOptions: - description: Controls which data-sources and what time-range to include in scans. - properties: - urlGreenlist: - deprecated: true - type: array - description: list of url regex matching documents excluded from report - items: - type: string - datasourcesType: - type: string - description: The types of datasource for which to run the report/policy. - enum: - - ALL - - CUSTOM - datasources: - deprecated: true - type: array - description: List of datasources to consider for report. DEPRECATED - use datasourceInstances instead. - items: - type: string - datasourceInstances: - type: array - description: List of datasource instances to consider for report/policy. - items: - type: string - timePeriodType: - type: string - description: Type of time period for which to run the report/policy. PAST_DAY is deprecated. - enum: - - ALL_TIME - - PAST_YEAR - - PAST_DAY - - CUSTOM - - LAST_N_DAYS - customTimeRange: - $ref: "#/components/schemas/TimeRange" - SharingOptions: - description: Controls how "shared" a document must be to get picked for scans. - properties: - enabled: - deprecated: true - type: boolean - threshold: - description: The minimum number of users the document is shared with. - type: integer - thresholdEnabled: - description: Documents will be filtered based on how many people have access to it. - type: boolean - anyoneWithLinkEnabled: - deprecated: true - type: boolean - anyoneInternalEnabled: - description: Only users within the organization can access the document. - type: boolean - anonymousAccessEnabled: - description: Anyone on the internet can access the document. - type: boolean - userAccessEnabled: - description: Enable user access check - type: boolean - userIds: - type: array - description: Any one of the specified users can access the document. - items: - type: string - ExternalSharingOptions: - deprecated: true - allOf: - - description: DEPRECATED - use `broadSharingOptions` instead. - - $ref: "#/components/schemas/SharingOptions" - - type: object - properties: - domainAccessEnabled: - type: boolean - HotwordProximity: - properties: - windowBefore: - type: integer - windowAfter: - type: integer - Hotword: properties: - regex: - type: string - proximity: - $ref: "#/components/schemas/HotwordProximity" - SensitiveExpression: - properties: - expression: - description: Sensitive word, phrase, or regular expression. - type: string - hotwords: - description: Zero to three proximate regular expressions necessary to consider an expression as sensitive content. - type: array - items: - $ref: "#/components/schemas/Hotword" - CustomSensitiveRuleType: - type: string - description: Type of the custom sensitive rule. + text: + type: string + type: + $ref: '#/components/schemas/ContentType' + title: MessageTextBlock + required: + - text + - type + title: Content + description: The content of the message. + AgentRunCreate: + type: object + properties: + agent_id: + type: string + title: Agent Id + description: The ID of the agent to run. + input: + type: object + title: Input + additionalProperties: true + description: The input to the agent. Required when the agent uses an input form trigger. + messages: + type: array + items: + $ref: '#/components/schemas/Message' + title: Messages + description: The messages to pass an input to the agent. + metadata: + type: object + title: Metadata + additionalProperties: true + description: The metadata to pass to the agent. + required: + - agent_id + description: 'Payload for creating a run. **Important**: If the agent uses an input form trigger, the `input` field is required and must include all fields defined in the form schema. Even fields marked as optional in the UI must be included in the request—use an empty string (`""`) for optional fields without values. Omitting required form fields will result in a 500 error.' + UnauthorizedAgentToolsError: + type: object + properties: + message: + type: string + description: Human-readable description of the failure. + authenticationSuggestions: + type: array + items: + $ref: '#/components/schemas/ServerToolRequest' + description: One entry per tool the caller must authorize. + title: UnauthorizedAgentToolsError + required: + - message + - authenticationSuggestions + description: Returned when the agent has tools the caller must authorize before the run can start. Each entry in `authenticationSuggestions` names one such tool; POST its `serverId` to `/tool-servers/{serverId}/auth` with `returnUrl` in the request body to obtain an `authorizationUrl` to redirect the end user to, then retry the run once OAuth completes. + AgentExecutionStatus: + type: string + title: AgentExecutionStatus + enum: + - error + - success + description: The status of the run. One of 'error', 'success'. + AgentRun: + allOf: + - $ref: '#/components/schemas/AgentRunCreate' + - type: object + properties: + status: + $ref: '#/components/schemas/AgentExecutionStatus' + AgentRunWaitResponse: + type: object + properties: + run: + $ref: '#/components/schemas/AgentRun' + title: Run + description: The run information. + messages: + type: array + items: + $ref: '#/components/schemas/Message' + title: Messages + description: The messages returned by the run. + CollectionItemDescriptor: + allOf: + - $ref: '#/components/schemas/CollectionItemMutableProperties' + properties: + url: + type: string + description: The URL of the item being added. + documentId: + type: string + description: The Glean Document ID of the item being added if it's an indexed document. + newNextItemId: + type: string + description: The (optional) ItemId of the next CollectionItem in sequence. If omitted, will be added to the end of the Collection + itemType: + type: string + enum: + - DOCUMENT + - TEXT + - URL + AddCollectionItemsRequest: + properties: + collectionId: + type: number + description: The ID of the Collection to add items to. + addedCollectionItemDescriptors: + type: array + items: + $ref: '#/components/schemas/CollectionItemDescriptor' + description: The CollectionItemDescriptors of the items being added. + required: + - collectionId + AddCollectionItemsError: + properties: + errorType: + type: string + enum: + - EXISTING_ITEM + - CORRUPT_ITEM + AddCollectionItemsResponse: + properties: + collection: + $ref: '#/components/schemas/Collection' + description: The modified Collection. Only CollectionItemMutableProperties are set for each item. + error: + $ref: '#/components/schemas/AddCollectionItemsError' + CreateCollectionRequest: + allOf: + - $ref: '#/components/schemas/CollectionMutableProperties' + - type: object + properties: + newNextItemId: + type: string + description: The (optional) ItemId of the next CollectionItem in sequence. If omitted, will be added to the end of the Collection. Only used if parentId is specified. + CollectionError: + properties: + errorCode: + type: string + enum: + - NAME_EXISTS + - NOT_FOUND + - COLLECTION_PINNED + - CONCURRENT_HIERARCHY_EDIT + - HEIGHT_VIOLATION + - WIDTH_VIOLATION + - NO_PERMISSIONS + - CORRUPT_ITEM + required: + - errorCode + CreateCollectionResponse: + allOf: + - type: object + anyOf: + - required: + - collection + - required: + - error + properties: + collection: + $ref: '#/components/schemas/Collection' + error: + $ref: '#/components/schemas/CollectionError' + DeleteCollectionRequest: + properties: + ids: + type: array + items: + type: integer + description: The IDs of the Collections to delete. + allowedDatasource: + type: string + description: The datasource allowed in the Collection to be deleted. + required: + - ids + DeleteCollectionItemRequest: + properties: + collectionId: + type: number + description: The ID of the Collection to remove an item in. + itemId: + type: string + description: The item ID of the CollectionItem to remove from this Collection. + documentId: + type: string + description: The (optional) Glean Document ID of the CollectionItem to remove from this Collection if this is an indexed document. + required: + - collectionId + - itemId + DeleteCollectionItemResponse: + properties: + collection: + $ref: '#/components/schemas/Collection' + description: The modified Collection. Only CollectionItemMutableProperties are set for each item. + EditCollectionRequest: + allOf: + - $ref: '#/components/schemas/CollectionMutableProperties' + - type: object + properties: + id: + type: integer + description: The ID of the Collection to modify. + required: + - id + EditCollectionResponse: + allOf: + - $ref: '#/components/schemas/Collection' + - $ref: '#/components/schemas/CollectionError' + - type: object + properties: + collection: + $ref: '#/components/schemas/Collection' + error: + $ref: '#/components/schemas/CollectionError' + EditCollectionItemRequest: + allOf: + - $ref: '#/components/schemas/CollectionItemMutableProperties' + - type: object + properties: + collectionId: + type: integer + description: The ID of the Collection to edit CollectionItems in. + itemId: + type: string + description: The ID of the CollectionItem to edit. + required: + - collectionId + - itemId + EditCollectionItemResponse: + properties: + collection: + $ref: '#/components/schemas/Collection' + description: The modified Collection. Only CollectionItemMutableProperties are set for each item. + GetCollectionRequest: + properties: + id: + type: integer + description: The ID of the Collection to be retrieved. + withItems: + type: boolean + description: Whether or not to include the Collection Items in this Collection. Only request if absolutely required, as this is expensive. + withHierarchy: + type: boolean + description: Whether or not to include the top level Collection in this Collection's hierarchy. + allowedDatasource: + type: string + description: The datasource allowed in the Collection returned. + required: + - id + GetCollectionResponse: + properties: + collection: + $ref: '#/components/schemas/Collection' + rootCollection: + $ref: '#/components/schemas/Collection' + error: + $ref: '#/components/schemas/CollectionError' + trackingToken: + type: string + description: Use `collection.trackingToken` instead. + deprecated: true + x-glean-deprecated: + id: 2d6ca3a7-4763-4137-9ebd-740568fe8300 + introduced: "2026-05-07" + message: Use `collection.trackingToken` instead. + removal: "2027-01-15" + x-speakeasy-deprecation-message: "Deprecated on 2026-05-07, removal scheduled for 2027-01-15: Use `collection.trackingToken` instead." + ListCollectionsRequest: + properties: + includeAudience: + type: boolean + description: Whether to include the audience filters with the listed Collections. + includeRoles: + type: boolean + description: Whether to include the editor roles with the listed Collections. + allowedDatasource: + type: string + description: |- + The datasource type this Collection can hold. + ANSWERS - for Collections representing answer boards + ListCollectionsResponse: + properties: + collections: + type: array + items: + $ref: '#/components/schemas/Collection' + description: List of all Collections, no Collection items are fetched. + required: + - collections + GetDocPermissionsRequest: + type: object + properties: + documentId: + type: string + description: The Glean Document ID to retrieve permissions for. + GetDocPermissionsResponse: + type: object + properties: + allowedUserEmails: + type: array + items: + type: string + description: A list of emails of users who have access to the document. If the document is visible to all Glean users, a list with only a single value of 'VISIBLE_TO_ALL'. + GetDocumentsRequest: + properties: + documentSpecs: + type: array + items: + $ref: '#/components/schemas/DocumentSpec' + description: The specification for the documents to be retrieved. + includeFields: + type: array + items: + type: string enum: - - REGEX - - TERM - - INFO_TYPE - CustomSensitiveRule: - properties: - id: - description: Identifier for the custom sensitive expression. - type: string + - LAST_VIEWED_AT + - VISITORS_COUNT + - RECENT_SHARES + - DOCUMENT_CONTENT + - CUSTOM_METADATA + description: List of Document fields to return (that aren't returned by default) + required: + - documentSpecs + DocumentOrError: + oneOf: + - $ref: '#/components/schemas/Document' + - type: object + properties: + error: + type: string + description: The text for error, reason. + x-is-error-field: true + required: + - error + x-omit-error-on-success: true + GetDocumentsResponse: + properties: + documents: + type: object + additionalProperties: + $ref: '#/components/schemas/DocumentOrError' + description: The document details or the error if document is not found. + GetDocumentsByFacetsRequest: + properties: + datasourcesFilter: + type: array + items: + type: string + description: Filter results to one or more datasources (e.g. gmail, slack). All results are returned if missing. + filterSets: + type: array + items: + $ref: '#/components/schemas/FacetFilterSet' + description: A list of facet filter sets that will be OR'ed together. An AND is assumed between different filters in each set. + cursor: + type: string + description: Pagination cursor. A previously received opaque token representing the position in the overall results at which to start. + example: "" + required: + - filterSets + GetDocumentsByFacetsResponse: + properties: + documents: + type: array + items: + $ref: '#/components/schemas/Document' + description: The document details, ordered by score. + hasMoreResults: + type: boolean + description: Whether more results are available. Use cursor to retrieve them. + cursor: + type: string + description: Cursor that indicates the start of the next page of results. To be passed in "more" requests for this query. + example: "" + InsightsOverviewRequest: + properties: + departments: + type: array + items: + type: string + description: Departments for which Insights are requested. + managerEmails: + type: array + items: + type: string + description: Manager emails whose teams should be filtered for. Empty array means no filtering. + dayRange: + $ref: '#/components/schemas/Period' + description: Time period for which Insights are requested. + InsightsAssistantRequest: + properties: + departments: + type: array + items: + type: string + description: Departments for which Insights are requested. + managerEmails: + type: array + items: + type: string + description: Manager emails whose teams should be filtered for. Empty array means no filtering. + dayRange: + $ref: '#/components/schemas/Period' + description: Time period for which Insights are requested. + AgentsInsightsV2Request: + properties: + agentIds: + type: array + items: + type: string + description: IDs of the Agents for which Insights should be returned. An empty array signifies all. + departments: + type: array + items: + type: string + description: Departments for which Insights are requested. + managerEmails: + type: array + items: + type: string + description: Manager emails whose teams should be filtered for. Empty array means no filtering. + dayRange: + $ref: '#/components/schemas/Period' + description: Time period for which Insights are requested. + McpInsightsRequest: + properties: + departments: + type: array + items: + type: string + description: Departments for which Insights are requested. + managerIds: + type: array + items: + type: string + description: Manager user IDs whose teams should be filtered for. Empty array means no filtering. + managerEmails: + type: array + items: + type: string + description: Manager emails whose teams should be filtered for. Empty array means no filtering. + dayRange: + $ref: '#/components/schemas/Period' + description: Time period for which Insights are requested. + McpBreakdownInsightsRequest: + properties: + departments: + type: array + items: + type: string + description: Departments for which Insights are requested. + managerIds: + type: array + items: + type: string + description: Manager user IDs whose teams should be filtered for. Empty array means no filtering. + managerEmails: + type: array + items: + type: string + description: Manager emails whose teams should be filtered for. Empty array means no filtering. + dayRange: + $ref: '#/components/schemas/Period' + description: Time period for which Insights are requested. + breakdownType: + type: string + enum: + - USERS + - HOST_APPLICATIONS + - TOOLS + - SERVERS + description: Type of breakdown to return. + hostApplications: + type: array + items: + type: string + description: Host applications to filter by. Empty array means all host applications. + tools: + type: array + items: + type: string + description: MCP tools to filter by. Empty array means all tools. + servers: + type: array + items: + type: string + description: MCP servers to filter by. Empty array means all servers. + InsightsRequest: + properties: + overviewRequest: + $ref: '#/components/schemas/InsightsOverviewRequest' + description: If specified, will return data for the Overview section of the Insights Dashboard. + x-visibility: Public + assistantRequest: + $ref: '#/components/schemas/InsightsAssistantRequest' + description: If specified, will return data for the Assistant section of the Insights Dashboard. + x-visibility: Public + agentsRequest: + $ref: '#/components/schemas/AgentsInsightsV2Request' + description: If specified, will return data for the Agents section of the Insights Dashboard. + x-visibility: Public + mcpRequest: + $ref: '#/components/schemas/McpInsightsRequest' + description: If specified, will return data for the MCP section of the Insights Dashboard. + mcpBreakdownRequest: + $ref: '#/components/schemas/McpBreakdownInsightsRequest' + disablePerUserInsights: + type: boolean + description: If true, suppresses the generation of per-user Insights in the response. Default is false. + UserActivityInsight: + properties: + user: + $ref: '#/components/schemas/Person' + activity: + type: string + enum: + - ALL + - SEARCH + description: Activity e.g. search, home page visit or all. + lastActivityTimestamp: + type: integer + description: Unix timestamp of the last activity (in seconds since epoch UTC). + activityCount: + $ref: '#/components/schemas/CountInfo' + activeDayCount: + $ref: '#/components/schemas/CountInfo' + required: + - user + - activity + GleanAssistInsightsResponse: + properties: + lastLogTimestamp: + type: integer + description: Unix timestamp of the last activity processed to make the response (in seconds since epoch UTC). + activityInsights: + type: array + items: + $ref: '#/components/schemas/UserActivityInsight' + description: Insights for all active users with respect to set of actions. + totalActiveUsers: + type: integer + description: Total number of active users in the requested period. + datasourceInstances: + type: array + items: + type: string + description: List of datasource instances for which glean assist is enabled. + departments: + type: array + items: + type: string + description: List of departments applicable for users tab. + CurrentActiveUsers: + properties: + monthlyActiveUsers: + type: integer + description: Number of current Monthly Active Users. + weeklyActiveUsers: + type: integer + description: Number of current Weekly Active Users. + InsightsSearchSummary: + allOf: + - $ref: '#/components/schemas/CurrentActiveUsers' + - type: object + properties: + numSearches: + type: integer + description: Total number of searches by users over the specified time period. + numSearchUsers: + type: integer + description: Total number of distinct users who searched over the specified time period. + InsightsChatSummary: + allOf: + - $ref: '#/components/schemas/CurrentActiveUsers' + - type: object + properties: + numChats: + type: integer + description: Total number of chats by users over the specified time period. + numChatUsers: + type: integer + description: Total number of distinct users who used Chat over the specified time period. + InsightsDepartmentsSummary: + allOf: + - $ref: '#/components/schemas/CurrentActiveUsers' + - type: object + properties: + departments: + type: array + items: + type: string + description: Department name(s). + employeeCount: + type: integer + description: Number of current employees in the specified departments, according to the Org Chart. + totalSignups: + type: integer + description: Number of current signed up employees in the specified departments, according to the Org Chart. + searchSummary: + $ref: '#/components/schemas/InsightsSearchSummary' + chatSummary: + $ref: '#/components/schemas/InsightsChatSummary' + searchActiveUsers: + $ref: '#/components/schemas/CurrentActiveUsers' + description: Search-specific active user counts for the specified departments. + assistantActiveUsers: + $ref: '#/components/schemas/CurrentActiveUsers' + description: Assistant-specific active user counts for the specified departments. + agentsActiveUsers: + $ref: '#/components/schemas/CurrentActiveUsers' + description: Agents-specific active user counts for the specified departments. + mcpActiveUsers: + $ref: '#/components/schemas/CurrentActiveUsers' + description: MCP active user counts for the specified departments. + extensionSummary: + $ref: '#/components/schemas/CurrentActiveUsers' + ugcSummary: + $ref: '#/components/schemas/CurrentActiveUsers' + LabeledCountInfo: + properties: + label: + type: string + description: Label for the included count information. + countInfo: + type: array + items: + $ref: '#/components/schemas/CountInfo' + description: List of data points for counts for a given date period. + required: + - label + PerUserInsight: + properties: + person: + $ref: '#/components/schemas/Person' + numSearches: + type: integer + description: Total number of searches by this user over the specified time period. + numChats: + type: integer + description: Total number of chats by this user over the specified time period. + numActiveSessions: + type: integer + description: Total number of active sessions by this user in a Glean client over the specified time period. + numGleanbotUsefulResponses: + type: integer + description: Total number of Gleanbot responses marked useful by this user over the specified time period. + numDaysActive: + type: integer + description: Total number of days this user was an Active User over the specified time period. + numSummarizations: + type: integer + description: Total number of summarized items by this user over the specified time period. + numAiAnswers: + type: integer + description: Total number of AI Answers interacted with by this user over the specified time period. + numAgentRuns: + type: integer + description: Total number of agent runs for this user over the specified time period. + numMcpCalls: + type: integer + description: Total number of MCP calls for this user over the specified time period. + InsightsOverviewResponse: + allOf: + - $ref: '#/components/schemas/InsightsDepartmentsSummary' + - type: object + properties: + lastUpdatedTs: + type: integer + description: Unix timestamp of the last update for the insights data in the response. + searchSessionSatisfaction: + type: number + format: float + description: Search session satisfaction rate, over the specified time period in the specified departments. + deprecated: true + x-glean-deprecated: + id: 2652ea73-3e33-4409-ba8c-bda7b60a2c24 + introduced: "2026-05-13" + message: This property is no longer supported. Please contact Support for alternatives. + removal: "2027-01-15" + x-speakeasy-deprecation-message: "Deprecated on 2026-05-13, removal scheduled for 2027-01-15: This property is no longer supported. Please contact Support for alternatives." + monthlyActiveUserTimeseries: + $ref: '#/components/schemas/LabeledCountInfo' + weeklyActiveUserTimeseries: + $ref: '#/components/schemas/LabeledCountInfo' + dailyActiveUserTimeseries: + $ref: '#/components/schemas/LabeledCountInfo' + searchMonthlyActiveUserTimeseries: + $ref: '#/components/schemas/LabeledCountInfo' + searchWeeklyActiveUserTimeseries: + $ref: '#/components/schemas/LabeledCountInfo' + searchDailyActiveUserTimeseries: + $ref: '#/components/schemas/LabeledCountInfo' + assistantMonthlyActiveUserTimeseries: + $ref: '#/components/schemas/LabeledCountInfo' + assistantWeeklyActiveUserTimeseries: + $ref: '#/components/schemas/LabeledCountInfo' + assistantDailyActiveUserTimeseries: + $ref: '#/components/schemas/LabeledCountInfo' + agentsMonthlyActiveUserTimeseries: + $ref: '#/components/schemas/LabeledCountInfo' + agentsWeeklyActiveUserTimeseries: + $ref: '#/components/schemas/LabeledCountInfo' + agentsDailyActiveUserTimeseries: + $ref: '#/components/schemas/LabeledCountInfo' + mcpMonthlyActiveUserTimeseries: + $ref: '#/components/schemas/LabeledCountInfo' + mcpWeeklyActiveUserTimeseries: + $ref: '#/components/schemas/LabeledCountInfo' + mcpDailyActiveUserTimeseries: + $ref: '#/components/schemas/LabeledCountInfo' + searchesTimeseries: + $ref: '#/components/schemas/LabeledCountInfo' + assistantInteractionsTimeseries: + $ref: '#/components/schemas/LabeledCountInfo' + agentRunsTimeseries: + $ref: '#/components/schemas/LabeledCountInfo' + mcpCallsTimeseries: + $ref: '#/components/schemas/LabeledCountInfo' + searchDatasourceCounts: + type: object + additionalProperties: + type: integer + description: Counts of search result clicks, by datasource, over the specified time period in the specified departments. + chatDatasourceCounts: + type: object + additionalProperties: + type: integer + description: Counts of cited documents in chat, by datasource, over the specified time period in the specified departments. + perUserInsights: + type: array + items: + $ref: '#/components/schemas/PerUserInsight' + description: Per-user insights, over the specified time period in the specified departments. All current users in the organization who have signed into Glean at least once are included. + PerUserAssistantInsight: + properties: + person: + $ref: '#/components/schemas/Person' + numChatMessages: + type: integer + description: Total number of chat messages sent by this user over the specified time period. + numSummarizations: + type: integer + description: Total number of summarized items by this user over the specified time period. + numAiAnswers: + type: integer + description: Total number of AI Answers interacted with by this user over the specified time period. + numGleanbotInteractions: + type: integer + description: Total number of Gleanbot responses marked useful by this user over the specified time period. + numDaysActive: + type: integer + description: Total number of days this user was active on the Assistant over the specified time period. + AssistantInsightsResponse: + allOf: + - $ref: '#/components/schemas/CurrentActiveUsers' + - type: object + properties: + lastUpdatedTs: + type: integer + description: Unix timestamp of the last update for the insights data in the response. + monthlyActiveUserTimeseries: + $ref: '#/components/schemas/LabeledCountInfo' + weeklyActiveUserTimeseries: + $ref: '#/components/schemas/LabeledCountInfo' + dailyActiveUserTimeseries: + $ref: '#/components/schemas/LabeledCountInfo' + totalSignups: + type: integer + description: Number of current signed up employees in the specified departments, according to the Org Chart. + chatMessagesTimeseries: + $ref: '#/components/schemas/LabeledCountInfo' + summarizationsTimeseries: + $ref: '#/components/schemas/LabeledCountInfo' + aiAnswersTimeseries: + $ref: '#/components/schemas/LabeledCountInfo' + gleanbotInteractionsTimeseries: + $ref: '#/components/schemas/LabeledCountInfo' + perUserInsights: + type: array + items: + $ref: '#/components/schemas/PerUserAssistantInsight' + upvotesTimeseries: + $ref: '#/components/schemas/LabeledCountInfo' + downvotesTimeseries: + $ref: '#/components/schemas/LabeledCountInfo' + PerAgentInsight: + properties: + agentId: + type: string + description: Agent ID + agentName: + type: string + description: Agent name + icon: + $ref: '#/components/schemas/IconConfig' + description: Agent icon configuration + isDeleted: + type: boolean + description: Indicates whether the agent has been deleted + userCount: + type: integer + description: Total number of users for this agent over the specified time period. + runCount: + type: integer + description: Total number of runs for this agent over the specified time period. + upvoteCount: + type: integer + description: Total number of upvotes for this agent over the specified time period. + downvoteCount: + type: integer + description: Total number of downvotes for this agent over the specified time period. + owner: + $ref: '#/components/schemas/Person' + description: | + The creator/owner of the agent. Absent if agent is deleted or owner is unknown. + AgentUseCaseInsight: + properties: + useCase: + type: string + description: Use case name + runCount: + type: integer + description: Total number of runs for this use case over the specified time period. + trend: + type: number + format: float + description: Percentage change in runs compared to the previous equivalent time period. + topDepartments: + type: string + description: Comma-separated list of the top departments using this use case. + topAgentId: + type: string + description: ID of the most-used agent for this use case. + topAgentName: + type: string + description: Name of the most-used agent for this use case. + topAgentIcon: + $ref: '#/components/schemas/IconConfig' + description: Icon of the most-used agent for this use case. + topAgentIsDeleted: + type: boolean + description: Indicates whether the top agent has been deleted. + AgentsUsageByDepartmentInsight: + properties: + department: + type: string + description: Name of the department + agentAdoptionRate: + type: number + format: float + description: Percentage of employees in the department who have used agents at least once over the specified time period. + userCount: + type: integer + description: Total number of users in this department who have used any agent over the specified time period. + runCount: + type: integer + description: Total number of runs in this department over the specified time period. + agentId: + type: string + description: ID of the agent to be shown in the agent column in this department over the specified time period. + agentName: + type: string + description: Name of the agent to be shown in the agent column in this department over the specified time period. + icon: + $ref: '#/components/schemas/IconConfig' + description: Agent icon configuration + isDeleted: + type: boolean + description: Indicates whether the agent has been deleted + AgentUsersInsight: + properties: + person: + $ref: '#/components/schemas/Person' + departmentName: + type: string + description: Department name + agentsUsedCount: + type: integer + description: Total number of agents used by this user over the specified time period. + averageRunsPerDayCount: + type: number + format: float + description: Average number of runs per day for this user over the specified time period. + agentsCreatedCount: + type: integer + description: Total number of agents created by this user over the specified time period. + runCount: + type: integer + description: Total number of agent runs for this user over the specified time period. + AgentsTimeSavedInsight: + properties: + agentId: + type: string + description: Agent ID + agentName: + type: string + description: Agent name + icon: + $ref: '#/components/schemas/IconConfig' + description: Agent icon configuration + isDeleted: + type: boolean + description: Indicates whether the agent has been deleted + runCount: + type: integer + description: Total number of runs for this agent over the specified time period. + minsPerRun: + type: number + format: float + description: Average minutes saved per run for this agent over the specified time period. + feedbackUserCount: + type: integer + description: Total number of users who provided feedback on time saved for this agent over the specified time period. + AgentsInsightsV2Response: + allOf: + - $ref: '#/components/schemas/CurrentActiveUsers' + - type: object + properties: + monthlyActiveUserTimeseries: + $ref: '#/components/schemas/LabeledCountInfo' + weeklyActiveUserTimeseries: + $ref: '#/components/schemas/LabeledCountInfo' + dailyActiveUserTimeseries: + $ref: '#/components/schemas/LabeledCountInfo' + sharedAgentsCount: + type: integer + description: Total number of shared agents. + topAgentsInsights: + type: array + items: + $ref: '#/components/schemas/PerAgentInsight' + topUseCasesInsights: + type: array + items: + $ref: '#/components/schemas/AgentUseCaseInsight' + agentsUsageByDepartmentInsights: + type: array + items: + $ref: '#/components/schemas/AgentsUsageByDepartmentInsight' + agentUsersInsights: + type: array + items: + $ref: '#/components/schemas/AgentUsersInsight' + agentsTimeSavedInsights: + type: array + items: + $ref: '#/components/schemas/AgentsTimeSavedInsight' + description: Insights for agents time saved over the specified time period. + dailyAgentRunsTimeseries: + $ref: '#/components/schemas/LabeledCountInfo' + successfulRunsTimeseries: + $ref: '#/components/schemas/LabeledCountInfo' + failedRunsTimeseries: + $ref: '#/components/schemas/LabeledCountInfo' + pausedRunsTimeseries: + $ref: '#/components/schemas/LabeledCountInfo' + upvotesTimeseries: + $ref: '#/components/schemas/LabeledCountInfo' + downvotesTimeseries: + $ref: '#/components/schemas/LabeledCountInfo' + McpInsightsResponse: + allOf: + - $ref: '#/components/schemas/CurrentActiveUsers' + - type: object + properties: + dailyActiveUsers: + type: integer + description: Number of current Daily Active Users. + monthlyActiveUserTimeseries: + $ref: '#/components/schemas/LabeledCountInfo' + weeklyActiveUserTimeseries: + $ref: '#/components/schemas/LabeledCountInfo' + dailyActiveUserTimeseries: + $ref: '#/components/schemas/LabeledCountInfo' + overallDailyActiveUserTimeseries: + $ref: '#/components/schemas/LabeledCountInfo' + topHostApplicationsActiveUserTimeseries: + type: array + items: + $ref: '#/components/schemas/LabeledCountInfo' + McpUserBreakdown: + properties: + person: + $ref: '#/components/schemas/Person' + totalCalls: + type: integer + description: Total number of MCP calls made by this user in the specified time period. + hostApplications: + type: array + items: + type: string + description: Host applications used by this user in the specified time period. + tools: + type: array + items: + type: string + description: MCP tools used by this user in the specified time period. + servers: + type: array + items: + type: string + description: MCP servers used by this user in the specified time period. + McpHostApplicationBreakdown: + properties: + hostApplication: + type: string + description: Host application name. + totalCalls: + type: integer + description: Total number of MCP calls made from this host application in the specified time period. + activeUsers: + type: integer + description: Total number of active users from this host application in the specified time period. + McpToolBreakdown: + properties: + tool: + type: string + description: MCP tool name. + totalCalls: + type: integer + description: Total number of MCP calls for this tool in the specified time period. + activeUsers: + type: integer + description: Total number of active users for this tool in the specified time period. + hostApplications: + type: array + items: + type: string + description: Host applications using this tool in the specified time period. + McpServerBreakdown: + properties: + server: + type: string + description: MCP server name. + totalCalls: + type: integer + description: Total number of MCP calls for this server in the specified time period. + activeUsers: + type: integer + description: Total number of active users for this server in the specified time period. + hostApplications: + type: array + items: + type: string + description: Host applications using this server in the specified time period. + McpBreakdownInsightsResponse: + properties: + usersBreakdown: + type: array + items: + $ref: '#/components/schemas/McpUserBreakdown' + hostApplicationsBreakdown: + type: array + items: + $ref: '#/components/schemas/McpHostApplicationBreakdown' + toolsBreakdown: + type: array + items: + $ref: '#/components/schemas/McpToolBreakdown' + serversBreakdown: + type: array + items: + $ref: '#/components/schemas/McpServerBreakdown' + InsightsResponse: + properties: + gleanAssist: + $ref: '#/components/schemas/GleanAssistInsightsResponse' + deprecated: true + x-glean-deprecated: + id: 15850758-4d95-4d98-8d57-39c50663a796 + introduced: "2026-02-05" + message: Field is deprecated + removal: "2026-10-15" + x-speakeasy-deprecation-message: "Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Field is deprecated" + overviewResponse: + $ref: '#/components/schemas/InsightsOverviewResponse' + assistantResponse: + $ref: '#/components/schemas/AssistantInsightsResponse' + agentsResponse: + $ref: '#/components/schemas/AgentsInsightsV2Response' + mcpResponse: + $ref: '#/components/schemas/McpInsightsResponse' + mcpBreakdownResponse: + $ref: '#/components/schemas/McpBreakdownInsightsResponse' + MessagesRequest: + properties: + idType: + type: string + enum: + - CHANNEL_NAME + - THREAD_ID + - CONVERSATION_ID + description: Type of the id in the incoming request. + id: + type: string + description: ID corresponding to the requested idType. Note that channel and threads are represented by the underlying datasource's ID and conversations are represented by their document's ID. + workspaceId: + type: string + description: Id for the for the workspace in case of multiple workspaces. + direction: + type: string + enum: + - OLDER + - NEWER + description: The direction of the results asked with respect to the reference timestamp. Missing field defaults to OLDER. Only applicable when using a message_id. + timestampMillis: + type: integer + format: int64 + description: Timestamp in millis of the reference message. Only applicable when using a message_id. + includeRootMessage: + type: boolean + description: Whether to include root message in response. + datasource: + type: string + enum: + - SLACK + - SLACKENTGRID + - MICROSOFTTEAMS + - GCHAT + - FACEBOOKWORKPLACE + description: The type of the data source. + datasourceInstanceDisplayName: + type: string + description: The datasource instance display name from which the document was extracted. This is used for appinstance facet filter for datasources that support multiple instances. + required: + - id + - idType + - datasource + InvalidOperatorValueError: + properties: + key: + type: string + description: The operator key that has an invalid value. + value: + type: string + description: The invalid operator value. + ErrorMessage: + properties: + source: + type: string + description: The datasource this message relates to. + errorMessage: + type: string + ErrorInfo: + properties: + badGmailToken: + type: boolean + description: Indicates the gmail results could not be fetched due to bad token. + badOutlookToken: + type: boolean + description: Indicates the outlook results could not be fetched due to bad token. + invalidOperators: + type: array + items: + $ref: '#/components/schemas/InvalidOperatorValueError' + description: Indicates results could not be fetched due to invalid operators in the query. + errorMessages: + type: array + items: + $ref: '#/components/schemas/ErrorMessage' + federatedSearchRateLimitError: + type: boolean + description: Indicates the federated search results could not be fetched due to rate limiting. + x-speakeasy-name-override: GleanDataError + ResultsResponse: + properties: + trackingToken: + type: string + description: A token that should be passed for additional requests related to this request (such as more results requests). + sessionInfo: + $ref: '#/components/schemas/SessionInfo' + results: + type: array + items: + $ref: '#/components/schemas/SearchResult' + structuredResults: + type: array + items: + $ref: '#/components/schemas/StructuredResult' + generatedQnaResult: + $ref: '#/components/schemas/GeneratedQna' + errorInfo: + $ref: '#/components/schemas/ErrorInfo' + requestID: + type: string + description: A platform-generated request ID to correlate backend logs. + backendTimeMillis: + type: integer + format: int64 + description: Time in milliseconds the backend took to respond to the request. + example: 1100 + BackendExperimentsContext: + properties: + experimentIds: + type: array + items: + type: integer + format: int64 + description: List of experiment ids for the corresponding request. + SearchWarning: + properties: + warningType: + type: string + enum: + - LONG_QUERY + - QUOTED_PUNCTUATION + - PUNCTUATION_ONLY + - COPYPASTED_QUOTES + - INVALID_OPERATOR + - MAYBE_INVALID_FACET_QUERY + - TOO_MANY_DATASOURCE_GROUPS + description: The type of the warning. + lastUsedTerm: + type: string + description: The last term we considered in the user's long query. + quotesIgnoredQuery: + type: string + description: The query after ignoring/removing quotes. + ignoredTerms: + type: array + items: + type: string + description: A list of query terms that were ignored when generating search results, if any. For example, terms containing invalid filters such as "updated:invalid_date" will be ignored. + required: + - warningType + SearchResponseMetadata: + properties: + rewrittenQuery: + type: string + description: A cleaned up or updated version of the query to be displayed in the query box. Useful for mapping visual facets to search operators. + searchedQuery: + type: string + description: The actual query used to perform search and return results. + searchedQueryWithoutNegation: + type: string + description: The query used to perform search and return results, with negated terms and facets removed. + x-includeEmpty: true + searchedQueryRanges: + type: array + items: + $ref: '#/components/schemas/TextRange' + description: The bolded ranges within the searched query. + originalQuery: + type: string + description: The query text sent by the client in the request. + querySuggestion: + $ref: '#/components/schemas/QuerySuggestion' + description: An alternative query to the one provided that may give better results, e.g. a spelling suggestion. + additionalQuerySuggestions: + $ref: '#/components/schemas/QuerySuggestionList' + description: Other alternative queries that may provide better or more specific results than the original query. + negatedTerms: + type: array + items: + type: string + description: A list of terms that were negated when processing the query. + modifiedQueryWasUsed: + type: boolean + description: A different query was performed than the one requested. + originalQueryHadNoResults: + type: boolean + description: No results were found for the original query. The usage of this bit in conjunction with modifiedQueryWasUsed will dictate whether the full page replacement is 0-result or few-result based. + searchWarning: + $ref: '#/components/schemas/SearchWarning' + triggeredExpertDetection: + type: boolean + description: Whether the query triggered expert detection results in the People tab. + isNoQuotesSuggestion: + type: boolean + description: Whether the query was modified to remove quotes + FacetValue: + properties: + stringValue: + type: string + description: The value that should be set in the FacetFilter when applying this filter to a search request. + example: engineering + integerValue: + type: integer + example: 5 + displayLabel: + type: string + description: An optional user-friendly label to display in place of the facet value. + example: engineering + iconConfig: + $ref: '#/components/schemas/IconConfig' + FacetBucket: + properties: + count: + type: integer + description: Estimated number of results in this facet. + example: 1 + datasource: + type: string + description: The datasource the value belongs to. This will be used by the all tab to show types across all datasources. + example: jira + percentage: + type: integer + description: Estimated percentage of results in this facet. + example: 5 + value: + $ref: '#/components/schemas/FacetValue' + FacetResult: + properties: + sourceName: + type: string + description: The source of this facet (e.g. container_name, type, last_updated_at). + example: container_name + operatorName: + type: string + description: How to display this facet. Currently supportes 'SelectSingle' and 'SelectMultiple'. + example: SelectMultiple + buckets: + type: array + items: + $ref: '#/components/schemas/FacetBucket' + description: A list of unique buckets that exist within this result set. + hasMoreBuckets: + type: boolean + description: Returns true if more buckets exist than those returned. Additional buckets can be retrieve by requesting again with a higher facetBucketSize. + example: false + groupName: + type: string + description: For most facets this will be the empty string, meaning the facet is high-level and applies to all documents for the datasource. When non-empty, this is used to group facets together (i.e. group facets for each doctype for a certain datasource) + example: Service Cloud + ResultsDescription: + properties: + text: + type: string + description: Textual description of the results. Can be shown at the top of SERP, e.g. 'People who write about this topic' for experts in people tab. + iconConfig: + $ref: '#/components/schemas/IconConfig' + description: The config for the icon that's displayed with this description + SearchResponse: + allOf: + - $ref: '#/components/schemas/ResultsResponse' + - $ref: '#/components/schemas/BackendExperimentsContext' + - type: object + properties: + metadata: + $ref: '#/components/schemas/SearchResponseMetadata' + facetResults: + type: array + items: + $ref: '#/components/schemas/FacetResult' + resultTabs: + type: array + items: + $ref: '#/components/schemas/ResultTab' + description: All result tabs available for the current query. Populated if QUERY_METADATA is specified in the request. + resultTabIds: + type: array + items: + type: string + description: The unique IDs of the result tabs to which this response belongs. + resultsDescription: + $ref: '#/components/schemas/ResultsDescription' + rewrittenFacetFilters: + type: array + items: + $ref: '#/components/schemas/FacetFilter' + description: The actual applied facet filters based on the operators and facetFilters in the query. Useful for mapping typed operators to visual facets. + cursor: + type: string + description: Cursor that indicates the start of the next page of results. To be passed in "more" requests for this query. + example: "" + hasMoreResults: + type: boolean + description: Whether more results are available. Use cursor to retrieve them. + example: + trackingToken: trackingToken + suggestedSpellCorrectedQuery: suggestedSpellCorrectedQuery + hasMoreResults: true + errorInfo: + errorMessages: + - source: gmail + errorMessage: invalid token + - source: slack + errorMessage: expired token + requestID: 5e345ae500ff0befa2b9d1a3ba0001737e7363696f312d323535323137000171756572792d656e64706f696e743a323032303031333074313830343032000100 + results: + - snippets: + - snippet: snippet + mimeType: mimeType + metadata: + container: container + createTime: "2000-01-23T04:56:07.000Z" + datasource: datasource + author: + name: name + documentId: documentId + updateTime: "2000-01-23T04:56:07.000Z" + mimeType: mimeType + objectType: objectType + title: title + url: https://www.example.com/ + - snippets: + - snippet: snippet + mimeType: mimeType + metadata: + container: container + createTime: "2000-01-23T04:56:07.000Z" + datasource: datasource + author: + name: name + documentId: documentId + updateTime: "2000-01-23T04:56:07.000Z" + mimeType: mimeType + objectType: objectType + title: title + url: https://www.example.com/ + facetResults: + - buckets: + - percentage: 5 + count: 1 value: - type: string - description: The value of the custom sensitive rule. For REGEX type, this is the regex pattern; for TERM type, it is the term to match; and for INFO_TYPE type, it refers to predefined categories of sensitive content. See https://cloud.google.com/dlp/docs/infotypes-reference for available options. - type: - $ref: "#/components/schemas/CustomSensitiveRuleType" - likelihoodThreshold: - description: Likelihood threshold for BUILT_IN infotypes (e.g., LIKELY, VERY_LIKELY). Only applicable for BUILT_IN type. - type: string - enum: - - LIKELY - - VERY_LIKELY - - POSSIBLE - - UNLIKELY - - VERY_UNLIKELY - CustomSensitiveExpression: - properties: - id: - description: Identifier for the custom sensitive expression. - type: string - keyword: - description: The keyword to match against. - $ref: "#/components/schemas/CustomSensitiveRule" - evaluationExpression: - description: The expression to evaluate the keyword match. - type: string - SensitiveContentOptions: - description: Options for defining sensitive content within scanned documents. - properties: - sensitiveInfoTypes: - deprecated: true - description: DEPRECATED - use 'customSensitiveExpressions' instead. - type: array - items: - $ref: "#/components/schemas/SensitiveInfoType" - sensitiveTerms: - deprecated: true - description: DEPRECATED - use 'customSensitiveExpressions' instead. - type: array - items: - $ref: "#/components/schemas/SensitiveExpression" - sensitiveRegexes: - deprecated: true - description: DEPRECATED - use 'customSensitiveExpressions' instead. - type: array - items: - $ref: "#/components/schemas/SensitiveExpression" - customSensitiveExpressions: - description: list of custom sensitive expressions to consider as sensitive content - type: array - items: - $ref: "#/components/schemas/CustomSensitiveExpression" - DlpPersonMetadata: - properties: - firstName: - type: string - description: The first name of the person - email: - type: string - description: The user's primary email address - DlpPerson: - description: Details about the person who created this report/policy. - required: - - name - - obfuscatedId - properties: - name: - type: string - description: The display name. - obfuscatedId: - type: string - description: An opaque identifier that can be used to request metadata for a Person. - metadata: - $ref: "#/components/schemas/DlpPersonMetadata" - AllowlistOptions: - description: Terms that are allow-listed during the scans. If any finding picked up by a rule exactly matches a term in the allow-list, it will not be counted as a violation. - properties: - terms: - type: array - description: list of words and phrases to consider as whitelisted content - items: - type: string - DlpConfig: - description: Detailed configuration of what documents and sensitive content will be scanned. - properties: - version: - description: Synonymous with report/policy id. - type: integer - format: int64 - sensitiveInfoTypes: - deprecated: true - description: DEPRECATED - use `sensitiveContentOptions` instead. - type: array - items: - $ref: "#/components/schemas/SensitiveInfoType" - inputOptions: - description: Options for documents to include or exclude in a report - $ref: "#/components/schemas/InputOptions" - externalSharingOptions: - deprecated: true - description: DEPRECATED - use `broadSharingOptions` instead. - $ref: "#/components/schemas/ExternalSharingOptions" - broadSharingOptions: - description: Options for defining documents to scan for sensitive content. - $ref: "#/components/schemas/SharingOptions" - sensitiveContentOptions: - description: Options for defining sensitive content within scanned documents. - $ref: "#/components/schemas/SensitiveContentOptions" - reportName: - type: string - frequency: - description: Interval between scans. - type: string - createdBy: - description: Person who created this report/policy. - $ref: "#/components/schemas/DlpPerson" - createdAt: - description: Timestamp at which this configuration was created. - type: string - format: iso-date-time - redactQuote: - description: redact quote in findings of the report - type: boolean - autoHideDocs: - description: auto hide documents with findings in the report - type: boolean - allowlistOptions: - description: Options for defining whitelisting content within scanned documents - $ref: "#/components/schemas/AllowlistOptions" - DlpFrequency: - type: string - description: Interval between scans. DAILY is deprecated. - x-include-enum-class-prefix: true + stringValue: stringValue + integerValue: 5 + - percentage: 5 + count: 1 + value: + stringValue: stringValue + integerValue: 5 + sourceName: sourceName + operatorName: operatorName + objectType: objectType + - buckets: + - percentage: 5 + count: 1 + value: + stringValue: stringValue + integerValue: 5 + - percentage: 5 + count: 1 + value: + stringValue: stringValue + integerValue: 5 + sourceName: sourceName + operatorName: operatorName + objectType: objectType + rewrittenQuery: rewrittenQuery + rewrittenFacetFilters: + - fieldName: fieldName + values: + - value: fieldValues + relationType: EQUALS + - value: fieldValues + relationType: EQUALS + - fieldName: fieldName + values: + - value: fieldValues + relationType: EQUALS + - value: fieldValues + relationType: EQUALS + MessagesResponse: + properties: + hasMore: + type: boolean + description: Whether there are more results for client to continue requesting. + searchResponse: + $ref: '#/components/schemas/SearchResponse' + rootMessage: + $ref: '#/components/schemas/SearchResult' + required: + - hasMore + EditPinRequest: + allOf: + - $ref: '#/components/schemas/PinDocumentMutableProperties' + - type: object + properties: + id: + type: string + description: The opaque id of the pin to be edited. + GetPinRequest: + properties: + id: + type: string + description: The opaque id of the pin to be fetched. + GetPinResponse: + properties: + pin: + $ref: '#/components/schemas/PinDocument' + ListPinsResponse: + properties: + pins: + type: array + items: + $ref: '#/components/schemas/PinDocument' + description: List of pinned documents. + required: + - pins + PinRequest: + allOf: + - $ref: '#/components/schemas/PinDocumentMutableProperties' + - type: object + properties: + documentId: + type: string + description: The document to be pinned. + Unpin: + properties: + id: + type: string + description: The opaque id of the pin to be unpinned. + ResultsRequest: + properties: + timestamp: + type: string + format: date-time + description: The ISO 8601 timestamp associated with the client request. + trackingToken: + type: string + description: A previously received trackingToken for a search associated with the same query. Useful for more requests and requests for other tabs. + sessionInfo: + $ref: '#/components/schemas/SessionInfo' + sourceDocument: + $ref: '#/components/schemas/Document' + description: The document from which the ResultsRequest is issued, if any. + pageSize: + type: integer + description: Hint to the server about how many results to send back. Server may return less or more. Structured results and clustered results don't count towards pageSize. + example: 100 + maxSnippetSize: + type: integer + description: Hint to the server about how many characters long a snippet may be. Server may return less or more. + example: 400 + SearchRequest: + allOf: + - $ref: '#/components/schemas/ResultsRequest' + - type: object + properties: + query: + type: string + description: The search terms. + example: vacation policy + cursor: + type: string + description: Pagination cursor. A previously received opaque token representing the position in the overall results at which to start. + example: "" + resultTabIds: + type: array + items: + type: string + description: The unique IDs of the result tabs for which to fetch results. This will have precedence over datasource filters if both are specified and in conflict. + inputDetails: + $ref: '#/components/schemas/SearchRequestInputDetails' + requestOptions: + $ref: '#/components/schemas/SearchRequestOptions' + timeoutMillis: + type: integer + description: Timeout in milliseconds for the request. A `408` error will be returned if handling the request takes longer. + example: 5000 + disableSpellcheck: + type: boolean + description: Whether or not to disable spellcheck. + required: + - query + example: + trackingToken: trackingToken + query: vacation policy + pageSize: 10 + requestOptions: + facetFilters: + - fieldName: type + values: + - value: article + relationType: EQUALS + - value: document + relationType: EQUALS + - fieldName: department + values: + - value: engineering + relationType: EQUALS + AutocompleteRequest: + type: object + properties: + trackingToken: + type: string + sessionInfo: + $ref: '#/components/schemas/SessionInfo' + query: + type: string + description: Partially typed query. + example: San Fra + datasourcesFilter: + type: array + items: + type: string + description: Filter results to only those relevant to one or more datasources (e.g. jira, gdrive). Results are unfiltered if missing. + datasource: + type: string + description: Filter to only return results relevant to the given datasource. + resultTypes: + type: array + items: + type: string enum: - - ONCE - - DAILY - - WEEKLY - - CONTINUOUS - - NONE - DlpReportStatus: - type: string - description: The status of the policy/report. Only ACTIVE status will be picked for scans. - x-include-enum-class-prefix: true + - ADDITIONAL_DOCUMENT + - APP + - BROWSER_HISTORY + - DATASOURCE + - DOCUMENT + - ENTITY + - GOLINK + - HISTORY + - CHAT_HISTORY + - NEW_CHAT + - OPERATOR + - OPERATOR_VALUE + - QUICKLINK + - SUGGESTION + description: Filter to only return results of the given type(s). All types may be returned if omitted. + resultSize: + type: integer + description: | + Maximum number of results to be returned. If no value is provided, the backend will cap at 200. + example: 10 + authTokens: + type: array + items: + $ref: '#/components/schemas/AuthToken' + description: Auth tokens which may be used for federated results. + example: + trackingToken: trackingToken + query: what is a que + datasource: GDRIVE + resultSize: 10 + OperatorScope: + properties: + datasource: + type: string + docType: + type: string + OperatorMetadata: + properties: + name: + type: string + isCustom: + type: boolean + description: Whether this operator is supported by default or something that was created within a workplace app (e.g. custom jira field). + operatorType: + type: string + enum: + - TEXT + - DOUBLE + - DATE + - USER + helpText: + type: string + scopes: + type: array + items: + $ref: '#/components/schemas/OperatorScope' + value: + type: string + description: Raw/canonical value of the operator. Only applies when result is an operator value. + displayValue: + type: string + description: Human readable value of the operator that can be shown to the user. Only applies when result is an operator value. + required: + - name + example: + name: Last Updated + operatorType: DATE + scopes: + - datasource: GDRIVE + docType: Document + - datasource: ZENDESK + Quicklink: + properties: + name: + type: string + description: Full action name. Used in autocomplete. + shortName: + type: string + description: Shortened name. Used in app cards. + url: + type: string + description: The URL of the action. + iconConfig: + $ref: '#/components/schemas/IconConfig' + description: The config for the icon for this quicklink + id: + type: string + description: Unique identifier of this quicklink + scopes: + type: array + items: + type: string enum: - - ACTIVE - - INACTIVE - - CANCELLED - - NONE - DlpReport: - description: Full policy information that will be used for scans. - properties: - id: - type: string - name: - type: string - config: - description: All details of the policy that is needed for a scan. - $ref: "#/components/schemas/DlpConfig" - frequency: - description: The interval between scans. - $ref: "#/components/schemas/DlpFrequency" - status: - description: The status of the policy. - $ref: "#/components/schemas/DlpReportStatus" - createdBy: - description: Person who created this report. - $ref: "#/components/schemas/DlpPerson" - createdAt: - description: Timestamp at which the policy was created. - type: string - format: iso-date-time - lastUpdatedAt: - description: Timestamp at which the policy was last updated. - type: string - format: iso-date-time - autoHideDocs: - description: Auto hide documents with findings in the policy. - type: boolean - lastScanStatus: - type: string - enum: - - PENDING - - SUCCESS - - FAILURE - - CANCELLED - - CANCELLING - - ACTIVE - lastScanStartTime: - description: The timestamp at which the report's last run/scan began. - type: string - format: iso-date-time - updatedBy: - description: Person who last updated this report. - $ref: "#/components/schemas/DlpPerson" - GetDlpReportResponse: - properties: - report: - $ref: "#/components/schemas/DlpReport" - UpdateDlpReportRequest: + - APP_CARD + - AUTOCOMPLETE_EXACT_MATCH + - AUTOCOMPLETE_FUZZY_MATCH + - AUTOCOMPLETE_ZERO_QUERY + - NEW_TAB_PAGE + description: The scopes for which this quicklink is applicable + description: An action for a specific datasource that will show up in autocomplete and app card, e.g. "Create new issue" for jira. + AutocompleteResult: + properties: + result: + type: string + keywords: + type: array + items: + type: string + description: A list of all possible keywords for given result. + resultType: + type: string + enum: + - ADDITIONAL_DOCUMENT + - APP + - BROWSER_HISTORY + - DATASOURCE + - DOCUMENT + - ENTITY + - GOLINK + - HISTORY + - CHAT_HISTORY + - NEW_CHAT + - OPERATOR + - OPERATOR_VALUE + - QUICKLINK + - SUGGESTION + score: + type: number + description: Higher indicates a more confident match. + operatorMetadata: + $ref: '#/components/schemas/OperatorMetadata' + quicklink: + $ref: '#/components/schemas/Quicklink' + document: + $ref: '#/components/schemas/Document' + url: + type: string + structuredResult: + $ref: '#/components/schemas/StructuredResult' + trackingToken: + type: string + description: A token to be passed in /feedback events associated with this autocomplete result. + ranges: + type: array + items: + $ref: '#/components/schemas/TextRange' + description: Subsections of the result string to which some special formatting should be applied (eg. bold) + required: + - result + - result_type + example: + result: sample result + resultType: DOCUMENT + score: 4.56 + url: https://www.example.com/ + trackingToken: abcd + metadata: + - datasource: confluence + - objectType: page + AutocompleteResultGroup: + properties: + startIndex: + type: integer + description: The inclusive start index of the range. + endIndex: + type: integer + description: The exclusive end index of the range. + title: + type: string + description: The title of the result group to be displayed. Empty means no title. + description: A subsection of the results list from which distinct sections should be created. + AutocompleteResponse: + allOf: + - $ref: '#/components/schemas/BackendExperimentsContext' + - type: object + properties: + trackingToken: + type: string + description: An opaque token that represents this particular set of autocomplete results. To be used for /feedback reporting. + sessionInfo: + $ref: '#/components/schemas/SessionInfo' + results: + type: array + items: + $ref: '#/components/schemas/AutocompleteResult' + groups: + type: array + items: + $ref: '#/components/schemas/AutocompleteResultGroup' + description: Subsections of the results list from which distinct sections should be created. + errorInfo: + $ref: '#/components/schemas/ErrorInfo' + backendTimeMillis: + type: integer + format: int64 + description: Time in milliseconds the backend took to respond to the request. + example: 1100 + example: + trackingToken: trackingToken + ChatZeroStateSuggestionOptions: + properties: + applicationId: + type: string + description: The Chat Application ID this feed request should be scoped to. Empty means there is no Chat Application ID.. + FeedRequestOptions: + properties: + resultSize: + type: integer + description: Number of results asked in response. If a result is a collection, counts as one. + 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. + categoryToResultSize: + type: object + additionalProperties: + type: object properties: - config: - description: The new configuration the policy will follow if provided. - $ref: "#/components/schemas/DlpConfig" - frequency: - description: The new frequency the policy will follow if provided. - $ref: "#/components/schemas/DlpFrequency" - status: - description: The new status the policy will be updated to if provided. - $ref: "#/components/schemas/DlpReportStatus" - autoHideDocs: - description: The new autoHideDoc boolean the policy will be updated to if provided. - type: boolean - reportName: - description: The new name of the policy if provided. - type: string - DlpSimpleResult: + resultSize: + type: integer + description: Mapping from category to number of results asked for the category. + datasourceFilter: + type: array + items: + type: string + description: Datasources for which content should be included. Empty is for all. + chatZeroStateSuggestionOptions: + $ref: '#/components/schemas/ChatZeroStateSuggestionOptions' + required: + - resultSize + FeedRequest: + properties: + categories: + type: array + items: type: string enum: - - SUCCESS - - FAILURE - UpdateDlpReportResponse: - properties: - result: - $ref: "#/components/schemas/DlpSimpleResult" - ListDlpReportsResponse: - properties: - reports: - type: array - items: - $ref: "#/components/schemas/DlpReport" - CreateDlpReportRequest: - properties: - name: - description: Name of the policy being created. - type: string - config: - description: Details on the configuration used in the scans. - $ref: "#/components/schemas/DlpConfig" - frequency: - description: Interval between scans. - $ref: "#/components/schemas/DlpFrequency" - autoHideDocs: - description: Controls whether the policy should hide documents with violations. - type: boolean - CreateDlpReportResponse: - properties: - report: - $ref: "#/components/schemas/DlpReport" - UpdateDlpConfigRequest: - properties: - config: - $ref: "#/components/schemas/DlpConfig" - frequency: - description: Only "ONCE" is supported for reports. - type: string - UpdateDlpConfigResponse: - properties: - result: - $ref: "#/components/schemas/DlpSimpleResult" - reportId: - description: The id of the report that was just created and run. - type: string - ReportStatusResponse: - properties: - status: - type: string - enum: - - PENDING - - SUCCESS - - FAILURE - - CANCELLED - - CANCELLING - - ACTIVE - startTime: - description: The timestamp at which the report's run/scan began. - type: string - format: iso-date-time - DocumentVisibilityOverride: - properties: - docId: - type: string - override: - description: The visibility-override state of the document. - type: string - enum: - - NONE - - HIDE_FROM_ALL - - HIDE_FROM_GROUPS - - HIDE_FROM_ALL_EXCEPT_OWNER - GetDocumentVisibilityOverridesResponse: - properties: - visibilityOverrides: - type: array - items: - $ref: "#/components/schemas/DocumentVisibilityOverride" - UpdateDocumentVisibilityOverridesRequest: - properties: - visibilityOverrides: - type: array - items: - $ref: "#/components/schemas/DocumentVisibilityOverride" - DocumentVisibilityUpdateResult: - allOf: - - $ref: "#/components/schemas/DocumentVisibilityOverride" - - type: object - properties: - success: - description: Whether this document was successfully set to its desired visibility state. - type: boolean - UpdateDocumentVisibilityOverridesResponse: - properties: - results: - description: The documents and whether their visibility was successfully updated. - type: array - items: - $ref: "#/components/schemas/DocumentVisibilityUpdateResult" - DlpSeverity: - type: string - description: Severity levels for DLP findings and analyses. - x-include-enum-class-prefix: true + - DOCUMENT_SUGGESTION + - DOCUMENT_SUGGESTION_SCENARIO + - TRENDING_DOCUMENT + - VERIFICATION_REMINDER + - EVENT + - ANNOUNCEMENT + - MENTION + - DATASOURCE_AFFINITY + - RECENT + - COMPANY_RESOURCE + - EXPERIMENTAL + - PEOPLE_CELEBRATIONS + - DISPLAYABLE_LIST + - SOCIAL_LINK + - EXTERNAL_TASKS + - WORKFLOW_COLLECTIONS + - ZERO_STATE_CHAT_SUGGESTION + - ZERO_STATE_CHAT_TOOL_SUGGESTION + - ZERO_STATE_WORKFLOW_CREATED_BY_ME + - ZERO_STATE_WORKFLOW_FAVORITES + - ZERO_STATE_WORKFLOW_POPULAR + - ZERO_STATE_WORKFLOW_RECENT + - ZERO_STATE_WORKFLOW_SUGGESTION + - PERSONALIZED_CHAT_SUGGESTION + - DAILY_DIGEST + - PODCAST + - TASK + - PLAN_MY_DAY + - END_MY_DAY + - STARTER_KIT + - MEETING_PREP_AUTOMATION + - MID_DAY_CATCH_UP + - QUERY_SUGGESTION + - COWORK_CUJ_PROMO + - CARD_STACK_PROMO + - WEEKLY_MEETINGS + - FOLLOW_UP + - MILESTONE_TIMELINE_CHECK + - PROJECT_DISCUSSION_DIGEST + - PROJECT_FOCUS_BLOCK + - PROJECT_NEXT_STEP + - DEMO_CARD + - RESOLVE_MEETING_CONFLICT + - OOO_PLANNER + - OOO_CATCH_UP + - ADMIN_HEALTH_CENTER + - KNOWLEDGE_GAP + description: Categories of content requested. An allowlist gives flexibility to request content separately or together. + requestOptions: + $ref: '#/components/schemas/FeedRequestOptions' + timeoutMillis: + type: integer + description: Timeout in milliseconds for the request. A `408` error will be returned if handling the request takes longer. + example: 5000 + sessionInfo: + $ref: '#/components/schemas/SessionInfo' + required: + - refreshType + DisplayableListFormat: + properties: + format: + type: string + enum: + - LIST + description: defines how to render this particular displayable list card + DisplayableListItemUIConfig: + type: object + properties: + showNewIndicator: + type: boolean + description: show a "New" pill next to the item + description: UI configurations for each item of the list + CalendarRoomBookingStatus: + type: string + enum: + - NONE + - ACCEPTED + - DECLINED + - PENDING + description: The current booking status of the room resource associated with an event. + x-enum-varnames: + - CALENDAR_ROOM_BOOKING_STATUS_NONE + - CALENDAR_ROOM_BOOKING_STATUS_ACCEPTED + - CALENDAR_ROOM_BOOKING_STATUS_DECLINED + - CALENDAR_ROOM_BOOKING_STATUS_PENDING + ConferenceData: + properties: + provider: + type: string + enum: + - ZOOM + - HANGOUTS + uri: + type: string + description: A permalink for the conference. + source: + type: string + enum: + - NATIVE_CONFERENCE + - LOCATION + - DESCRIPTION + required: + - provider + - uri + EventClassificationName: + type: string + enum: + - External Event + description: The name for a generated classification of an event. + EventStrategyName: + type: string + enum: + - customerCard + - news + - call + - email + - meetingNotes + - linkedIn + - relevantDocuments + - chatFollowUps + - conversations + description: The name of method used to surface relevant data for a given calendar event. + EventClassification: + properties: + name: + $ref: '#/components/schemas/EventClassificationName' + strategies: + type: array + items: + $ref: '#/components/schemas/EventStrategyName' + description: A generated classification of a given event. + StructuredLink: + properties: + name: + type: string + description: The display name for the link + url: + type: string + description: The URL for the link. + iconConfig: + $ref: '#/components/schemas/IconConfig' + description: The display configuration for a link. + GeneratedAttachmentContent: + properties: + displayHeader: + type: string + description: The header describing the generated content. + text: + type: string + description: The content that has been generated. + description: Content that has been generated or extrapolated from the documents present in the document field. + example: + displayHeader: Action Items + content: You said you'd send over the design document after the meeting. + GeneratedAttachment: + properties: + strategyName: + $ref: '#/components/schemas/EventStrategyName' + documents: + type: array + items: + $ref: '#/components/schemas/Document' + person: + $ref: '#/components/schemas/Person' + customer: + $ref: '#/components/schemas/Customer' + externalLinks: + type: array + items: + $ref: '#/components/schemas/StructuredLink' + description: A list of links to external sources outside of Glean. + content: + type: array + items: + $ref: '#/components/schemas/GeneratedAttachmentContent' + description: These are attachments that aren't natively present on the event, and have been smartly suggested. + CalendarEvent: + allOf: + - $ref: '#/components/schemas/AnonymousEvent' + - type: object + properties: + id: + type: string + description: The calendar event id + url: + type: string + description: A permalink for this calendar event + attendees: + $ref: '#/components/schemas/CalendarAttendees' + isOrganizer: + type: boolean + description: Whether the requesting user is the organizer of this event. + nullable: true + roomBookingStatus: + $ref: '#/components/schemas/CalendarRoomBookingStatus' + roomName: + type: string + description: The display name of the room resource associated with this event. + location: + type: string + description: The location that this event is taking place at. + conferenceData: + $ref: '#/components/schemas/ConferenceData' + description: + type: string + description: The HTML description of the event. + datasource: + type: string + description: The app or other repository type from which the event was extracted + hasTranscript: + type: boolean + description: The event has a transcript associated with it enabling features like summarization + transcriptUrl: + type: string + description: A link to the transcript of the event + classifications: + type: array + items: + $ref: '#/components/schemas/EventClassification' + generatedAttachments: + type: array + items: + $ref: '#/components/schemas/GeneratedAttachment' + required: + - id + - url + SectionType: + type: string + enum: + - CHANNEL + - MENTIONS + - TOPIC + description: Type of the section. This defines how the section should be interpreted and rendered in the digest. + x-enumDescriptions: + CHANNEL: A standard section for channel-based digests (e.g. from Slack, Teams). + MENTIONS: A dedicated section that surfaces user mentions (actionable, informative, or all). + TOPIC: A section driven by a generic topic, not tied to any specific channel or instance. + x-speakeasy-enum-descriptions: + CHANNEL: A standard section for channel-based digests (e.g. from Slack, Teams). + MENTIONS: A dedicated section that surfaces user mentions (actionable, informative, or all). + TOPIC: A section driven by a generic topic, not tied to any specific channel or instance. + UpdateType: + type: string + enum: + - ACTIONABLE + - INFORMATIVE + description: Optional type classification for the update. + x-enumDescriptions: + ACTIONABLE: Updates that require user attention or action + INFORMATIVE: Updates that are purely informational + x-speakeasy-enum-descriptions: + ACTIONABLE: Updates that require user attention or action + INFORMATIVE: Updates that are purely informational + DigestUpdate: + type: object + properties: + urls: + type: array + items: + type: string + description: List of URLs for similar updates that are grouped together and rendered as a single update. + url: + type: string + description: URL link to the content or document. + title: + type: string + description: Title or headline of the update. + datasource: + type: string + description: Name or identifier of the data source (e.g., slack, confluence, etc.). + summary: + type: string + description: Brief summary or description of the update content. + type: + $ref: '#/components/schemas/UpdateType' + DigestSection: + type: object + properties: + id: + type: string + description: Unique identifier for the digest section. + type: + $ref: '#/components/schemas/SectionType' + displayName: + type: string + description: Human-readable name for the digest section. + channelName: + type: string + description: Name of the channel (applicable for CHANNEL type sections). Used to display in the frontend. + channelType: + type: string + description: | + Channel visibility/type for CHANNEL sections. For Slack this is typically one of + PublicChannel, PrivateChannel. Omit if not applicable or unknown. + instanceId: + type: string + description: Instance identifier for the channel or workspace. Used for constructing channel URLs to display in the frontend. + url: + type: string + description: Optional URL for the digest section. Should be populated only if the section is a CHANNEL type section. + updates: + type: array + items: + $ref: '#/components/schemas/DigestUpdate' + description: List of updates within this digest section. + required: + - id + - type + - updates + Digest: + type: object + properties: + podcastFileId: + type: string + description: Identifier for the podcast file generated from this digest content. + podcastDuration: + type: number + format: float + description: Duration of the podcast file in seconds. + digestDate: + type: string + description: The date this digest covers, in YYYY-MM-DD format. Represents the specific day for which the digest content and updates were compiled. This can be empty if the digest is not yet available. + example: "2025-09-03" + sections: + type: array + items: + $ref: '#/components/schemas/DigestSection' + description: Array of digest sections from which the podcast was created. + ChatSuggestion: + properties: + query: + type: string + description: The actionable chat query to run when the user selects this suggestion. + cta: + type: string + description: Button text to show for the suggestion action. + feature: + type: string + description: Targeted Glean Chat feature for the suggestion. + sourceDocumentIds: + type: array + items: + type: string + description: Document IDs that grounded the suggestion. + PromptTemplateMutableProperties: + properties: + name: + type: string + description: The user-given identifier for this prompt template. + template: + type: string + description: The actual template string. + applicationId: + type: string + description: The Application Id the prompt template should be created under. Empty for default assistant. + inclusions: + $ref: '#/components/schemas/ChatRestrictionFilters' + description: A list of filters which only allows the prompt template to access certain content. + addedRoles: + type: array + items: + $ref: '#/components/schemas/UserRoleSpecification' + description: A list of added user roles for the Workflow. + removedRoles: + type: array + items: + $ref: '#/components/schemas/UserRoleSpecification' + description: A list of removed user roles for the Workflow. + required: + - template + PromptTemplate: + allOf: + - $ref: '#/components/schemas/PromptTemplateMutableProperties' + - $ref: '#/components/schemas/PermissionedObject' + - $ref: '#/components/schemas/AttributionProperties' + - type: object + properties: + id: + type: string + description: Opaque id for this prompt template + author: + $ref: '#/components/schemas/Person' + createTimestamp: + type: integer + description: Server Unix timestamp of the creation time. + lastUpdateTimestamp: + type: integer + description: Server Unix timestamp of the last update time. + lastUpdatedBy: + $ref: '#/components/schemas/Person' + roles: + type: array + items: + $ref: '#/components/schemas/UserRoleSpecification' + description: A list of roles for this prompt template explicitly granted. + PromptTemplateResult: + properties: + promptTemplate: + $ref: '#/components/schemas/PromptTemplate' + trackingToken: + type: string + description: An opaque token that represents this prompt template + favoriteInfo: + $ref: '#/components/schemas/FavoriteInfo' + runCount: + $ref: '#/components/schemas/CountInfo' + description: This tracks how many times this prompt template was run. If user runs a prompt template after modifying the original one, it still counts as a run for the original template. + UserActivity: + properties: + actor: + $ref: '#/components/schemas/Person' + timestamp: + type: integer + description: Unix timestamp of the activity (in seconds since epoch UTC). + action: + type: string + enum: + - ADD + - ADD_REMINDER + - CLICK + - COMMENT + - DELETE + - DISMISS + - EDIT + - MENTION + - MOVE + - OTHER + - RESTORE + - UNKNOWN + - VERIFY + - VIEW + description: The action for the activity + aggregateVisitCount: + $ref: '#/components/schemas/CountInfo' + FeedEntry: + properties: + entryId: + type: string + description: optional ID associated with a single feed entry (displayable_list_id) + title: + type: string + description: Title for the result. Can be document title, event title and so on. + thumbnail: + $ref: '#/components/schemas/Thumbnail' + createdBy: + $ref: '#/components/schemas/Person' + uiConfig: + allOf: + - $ref: '#/components/schemas/DisplayableListFormat' + - type: object + properties: + additionalFlags: + $ref: '#/components/schemas/DisplayableListItemUIConfig' + justificationType: + type: string + enum: + - FREQUENTLY_ACCESSED + - RECENTLY_ACCESSED + - TRENDING_DOCUMENT + - VERIFICATION_REMINDER + - SUGGESTED_DOCUMENT + - EMPTY_STATE_SUGGESTION + - FRECENCY_SCORED + - SERVER_GENERATED + - USE_CASE + - UPDATE_SINCE_LAST_VIEW + - RECENTLY_STARTED + - EVENT + - USER_MENTION + - ANNOUNCEMENT + - EXTERNAL_ANNOUNCEMENT + - POPULARITY_BASED_TRENDING + - COMPANY_RESOURCE + - EVENT_DOCUMENT_FROM_CONTENT + - EVENT_DOCUMENT_FROM_SEARCH + - VISIT_AFFINITY_SCORED + - SUGGESTED_APP + - SUGGESTED_PERSON + - ACTIVITY_HIGHLIGHT + - SAVED_SEARCH + - SUGGESTED_CHANNEL + - PEOPLE_CELEBRATIONS + - SOCIAL_LINK + - ZERO_STATE_CHAT_SUGGESTION + - ZERO_STATE_CHAT_TOOL_SUGGESTION + - ZERO_STATE_PROMPT_TEMPLATE_SUGGESTION + - ZERO_STATE_STATIC_WORKFLOW_SUGGESTION + - ZERO_STATE_AGENT_SUGGESTION + - PERSONALIZED_CHAT_SUGGESTION + - DAILY_DIGEST + - PODCAST + - TASK + - PLAN_MY_DAY + - END_MY_DAY + - STARTER_KIT_EXTENSION + - STARTER_KIT_ORG_CHART + - STARTER_KIT_ADD_DOC + - MEETING_RECAP + - MEETING_ROOM + - MEETING_PREP_AUTOMATION + - ACTIVE_DISCUSSION + - MID_DAY_CATCH_UP + - QUERY_SUGGESTION + - COWORK_CUJ_PROMO + - CARD_STACK_PROMO + - WEEKLY_MEETINGS + - FOLLOW_UP + - MILESTONE_TIMELINE_CHECK + - PROJECT_DISCUSSION_DIGEST + - PROJECT_FOCUS_BLOCK + - PROJECT_NEXT_STEP + - DEMO_CARD + - RESOLVE_MEETING_CONFLICT + - OOO_PLANNER + - OOO_CATCH_UP + - ADMIN_HEALTH_CENTER + - KNOWLEDGE_GAP + description: Type of the justification. + justification: + type: string + description: Server side generated justification string if server provides one. + trackingToken: + type: string + description: An opaque token that represents this particular feed entry in this particular response. To be used for /feedback reporting. + viewUrl: + type: string + description: View URL for the entry if based on links that are not documents in Glean. + document: + $ref: '#/components/schemas/Document' + event: + $ref: '#/components/schemas/CalendarEvent' + announcement: + $ref: '#/components/schemas/Announcement' + digest: + $ref: '#/components/schemas/Digest' + collection: + $ref: '#/components/schemas/Collection' + collectionItem: + $ref: '#/components/schemas/CollectionItem' + person: + $ref: '#/components/schemas/Person' + app: + $ref: '#/components/schemas/AppResult' + chatSuggestion: + $ref: '#/components/schemas/ChatSuggestion' + promptTemplate: + $ref: '#/components/schemas/PromptTemplateResult' + workflow: + $ref: '#/components/schemas/WorkflowResult' + activities: + type: array + items: + $ref: '#/components/schemas/UserActivity' + description: List of activity where each activity has user, action, timestamp. + documentVisitorCount: + $ref: '#/components/schemas/CountInfo' + required: + - title + FeedResult: + properties: + category: + type: string + enum: + - DOCUMENT_SUGGESTION + - DOCUMENT_SUGGESTION_SCENARIO + - TRENDING_DOCUMENT + - USE_CASE + - VERIFICATION_REMINDER + - EVENT + - ANNOUNCEMENT + - MENTION + - DATASOURCE_AFFINITY + - RECENT + - COMPANY_RESOURCE + - EXPERIMENTAL + - PEOPLE_CELEBRATIONS + - SOCIAL_LINK + - EXTERNAL_TASKS + - DISPLAYABLE_LIST + - ZERO_STATE_CHAT_SUGGESTION + - ZERO_STATE_CHAT_TOOL_SUGGESTION + - ZERO_STATE_WORKFLOW_CREATED_BY_ME + - ZERO_STATE_WORKFLOW_FAVORITES + - ZERO_STATE_WORKFLOW_POPULAR + - ZERO_STATE_WORKFLOW_RECENT + - ZERO_STATE_WORKFLOW_SUGGESTION + - PERSONALIZED_CHAT_SUGGESTION + - DAILY_DIGEST + - PODCAST + - TASK + - PLAN_MY_DAY + - END_MY_DAY + - STARTER_KIT + - MEETING_PREP_AUTOMATION + - MID_DAY_CATCH_UP + - QUERY_SUGGESTION + - COWORK_CUJ_PROMO + - CARD_STACK_PROMO + - WEEKLY_MEETINGS + - FOLLOW_UP + - MILESTONE_TIMELINE_CHECK + - PROJECT_DISCUSSION_DIGEST + - PROJECT_FOCUS_BLOCK + - PROJECT_NEXT_STEP + - DEMO_CARD + - RESOLVE_MEETING_CONFLICT + - OOO_PLANNER + - OOO_CATCH_UP + - ADMIN_HEALTH_CENTER + - KNOWLEDGE_GAP + description: Category of the result, one of the requested categories in incoming request. + primaryEntry: + $ref: '#/components/schemas/FeedEntry' + secondaryEntries: + type: array + items: + $ref: '#/components/schemas/FeedEntry' + description: Secondary entries for the result e.g. suggested docs for the calendar, carousel. + rank: + type: integer + description: Rank of the result. Rank is suggested by server. Client side rank may differ. + placementReason: + type: string + enum: + - ORGANIC + - PROMO + - PINNED + description: Placement source for ranked feed results. ORGANIC means the card was emitted by normal feed ranking. PROMO means the card was inserted by the homepage cards promo framework. PINNED means the card was moved to the head of the ranked stack (e.g. knowledge-gap pilot cards). + required: + - category + - primaryEntry + FeedResponse: + allOf: + - $ref: '#/components/schemas/BackendExperimentsContext' + - type: object + properties: + trackingToken: + type: string + description: An opaque token that represents this particular feed response. + serverTimestamp: + type: integer + description: Server unix timestamp (in seconds since epoch UTC). + results: + type: array + items: + $ref: '#/components/schemas/FeedResult' + facetResults: + type: object + additionalProperties: + type: array + items: + $ref: '#/components/schemas/FacetResult' + description: Map from category to the list of facets that can be used to filter the entry's content. + mentionsTimeWindowInHours: + type: integer + description: The time window (in hours) used for generating user mentions. + required: + - serverTimestamp + RecommendationsRequestOptions: + properties: + datasourceFilter: + type: string + description: Filter results to a single datasource name (e.g. gmail, slack). All results are returned if missing. + datasourcesFilter: + type: array + items: + type: string + description: Filter results to only those relevant to one or more datasources (e.g. jira, gdrive). All results are returned if missing. + facetFilterSets: + type: array + items: + $ref: '#/components/schemas/FacetFilterSet' + description: A list of facet filter sets that will be OR'ed together. + context: + $ref: '#/components/schemas/Document' + description: Content for either a new or unindexed document, or additional content for an indexed document, which may be used to generate recommendations. + resultProminence: + type: array + items: + $ref: '#/components/schemas/SearchResultProminenceEnum' + description: The types of prominence wanted in results returned. Default is any type. + RecommendationsRequest: + allOf: + - $ref: '#/components/schemas/ResultsRequest' + - type: object + properties: + recommendationDocumentSpec: + $ref: '#/components/schemas/DocumentSpec' + description: Retrieve recommendations for this document. Glean Document ID is preferred over URL. + requestOptions: + $ref: '#/components/schemas/RecommendationsRequestOptions' + description: Options for adjusting the request for recommendations. + RecommendationsResponse: + allOf: + - $ref: '#/components/schemas/ResultsResponse' + SortOptions: + type: object + properties: + orderBy: + type: string + enum: + - ASC + - DESC + sortBy: + type: string + ListEntitiesRequest: + type: object + properties: + filter: + type: array + items: + $ref: '#/components/schemas/FacetFilter' + sort: + type: array + items: + $ref: '#/components/schemas/SortOptions' + description: Use EntitiesSortOrder enum for SortOptions.sortBy + entityType: + type: string + enum: + - PEOPLE + - TEAMS + - CUSTOM_ENTITIES + default: PEOPLE + datasource: + type: string + description: The datasource associated with the entity type, most commonly used with CUSTOM_ENTITIES + query: + type: string + description: A query string to search for entities that each entity in the response must conform to. An empty query does not filter any entities. + includeFields: + type: array + items: + type: string enum: - - UNSPECIFIED - - LOW - - MEDIUM - - HIGH - TimeRangeFilter: - properties: - timePeriodType: - type: string - description: The type of time period for which to filter findings. - enum: - - PAST_DAY - - PAST_WEEK - - PAST_MONTH - - PAST_YEAR - - CUSTOM - customTimeRange: - $ref: "#/components/schemas/TimeRange" - DlpFindingFilter: - properties: - infoType: - type: string - regexId: - type: string - reportId: - type: string - datasource: - type: string - visibility: - type: string - documentIds: - type: array - items: - type: string - severity: - $ref: "#/components/schemas/DlpSeverity" - documentSeverity: - type: array - items: - $ref: "#/components/schemas/DlpSeverity" - timeRange: - $ref: "#/components/schemas/TimeRangeFilter" - archived: - type: boolean - ExportInfo: - properties: - createdBy: - description: person who triggered this export - $ref: "#/components/schemas/DlpPerson" - startTime: - description: Timestamp at which this export started. - type: string - format: iso-date-time - endTime: - description: Timestamp at which this export completed. - type: string - format: iso-date-time - exportId: - type: string - description: The ID of the export - fileName: - type: string - description: The name of the file to export the findings to - filter: - $ref: "#/components/schemas/DlpFindingFilter" - description: The filters used to export the findings - status: - type: string - description: The status of the export - enum: - - PENDING - - COMPLETED - - FAILED - exportSize: - type: integer - format: int64 - description: The size of the exported file in bytes - ListDlpFindingsExportsResponse: - properties: - exports: - type: array - items: - $ref: "#/components/schemas/ExportInfo" - DlpExportFindingsRequest: - properties: - exportType: - type: string - description: The type of export to perform - enum: - - FINDINGS - - DOCUMENTS - filter: - $ref: "#/components/schemas/DlpFindingFilter" - fileName: - type: string - description: The name of the file to export the findings to - fieldScope: - type: string - description: Controls which fields to include in the export - enum: - - ALL - - EXCLUDE_SENSITIVE - - CUSTOM - fieldsToExclude: - type: array - items: - type: string - description: List of field names to exclude from the export - ChatRequestStream: - required: - - messages - properties: - saveChat: - type: boolean - description: >- - Save the current interaction as a Chat for the user to access and potentially continue later. - chatId: - type: string - description: >- - The id of the Chat that context should be retrieved from and messages added to. An empty id starts a new Chat, and the Chat is saved if saveChat is true. - messages: - type: array - description: >- - A list of chat messages, from most recent to least recent. It can be assumed that the first chat message in the list is the user's most recent query. - items: - $ref: '#/components/schemas/ChatMessage' - agentConfig: - $ref: '#/components/schemas/AgentConfig' - description: Describes the agent that will execute the request. - inclusions: - $ref: '#/components/schemas/ChatRestrictionFilters' - description: >- - A list of filters which only allows chat to access certain content. - exclusions: - $ref: '#/components/schemas/ChatRestrictionFilters' - description: >- - A list of filters which disallows chat from accessing certain content. If content is in both inclusions and exclusions, it'll be excluded. - timeoutMillis: - type: integer - description: >- - Timeout in milliseconds for the request. A `408` error will be returned if handling the request takes longer. - example: 30000 - applicationId: - type: string - description: >- - The ID of the application this request originates from, used to determine the configuration of underlying chat processes. This should correspond to the ID set during admin setup. If not specified, the default chat experience will be used. - stream: - type: boolean - description: >- - If set, response lines will be streamed one-by-one as they become available. Each will be a ChatResponse, formatted as JSON, and separated by a new line. If false, the entire response will be returned at once. Note that if this is set and the model being used does not support streaming, the model's response will not be streamed, but other messages from the endpoint still will be. - default: true - parameters: + - PEOPLE + - TEAMS + - PEOPLE_DISTANCE + - PERMISSIONS + - FACETS + - INVITE_INFO + - LAST_EXTENSION_USE + - MANAGEMENT_DETAILS + - UNPROCESSED_TEAMS + description: List of entity fields to return (that aren't returned by default) + pageSize: + type: integer + description: Hint to the server about how many results to send back. Server may return less. + example: 100 + cursor: + type: string + description: Pagination cursor. A previously received opaque token representing the position in the overall results at which to start. + example: "" + source: + type: string + description: A string denoting the search surface from which the endpoint is called. + requestType: + type: string + enum: + - STANDARD + - FULL_DIRECTORY + description: The type of request being made. + default: STANDARD + x-enumDescriptions: + STANDARD: Used by default for all requests and satisfies all standard use cases for list requests. Limited to 10000 entities. + FULL_DIRECTORY: Used exclusively to return a comprehensive list of all people entities in the organization, typically for audit like purposes. The recommended approach is to sort by FIRST_NAME or LAST_NAME, and use pagination for large organizations. + x-speakeasy-enum-descriptions: + STANDARD: Used by default for all requests and satisfies all standard use cases for list requests. Limited to 10000 entities. + FULL_DIRECTORY: Used exclusively to return a comprehensive list of all people entities in the organization, typically for audit like purposes. The recommended approach is to sort by FIRST_NAME or LAST_NAME, and use pagination for large organizations. + EntitiesSortOrder: + type: string + enum: + - ENTITY_NAME + - FIRST_NAME + - LAST_NAME + - ORG_SIZE_COUNT + - START_DATE + - TEAM_SIZE + - RELEVANCE + description: Different ways of sorting entities + ListEntitiesResponse: + type: object + properties: + results: + type: array + items: + $ref: '#/components/schemas/Person' + teamResults: + type: array + items: + $ref: '#/components/schemas/Team' + customEntityResults: + type: array + items: + $ref: '#/components/schemas/CustomEntity' + facetResults: + type: array + items: + $ref: '#/components/schemas/FacetResult' + cursor: + type: string + description: Pagination cursor. A previously received opaque token representing the position in the overall results at which to start. + example: "" + totalCount: + type: integer + description: The total number of entities available + hasMoreResults: + type: boolean + description: Whether or not more entities can be fetched. + sortOptions: + type: array + items: + $ref: '#/components/schemas/EntitiesSortOrder' + description: Sort options from EntitiesSortOrder supported for this response. Default is empty list. + customFacetNames: + type: array + items: + type: string + description: list of Person attributes that are custom setup by deployment + PeopleRequest: + type: object + properties: timezoneOffset: - name: timezoneOffset - in: query - description: The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. - schema: - type: integer - responses: - SuccessResponse: - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/SuccessResponse" - BadRequestError: - description: Bad Request - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorInfoResponse" - UnauthorizedError: - description: Not Authorized - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorInfoResponse" - NotFoundError: - description: Not Found - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorInfoResponse" - TooManyRequestsError: - description: Too Many Requests - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorInfoResponse" - InternalServerError: - description: Internal Server Error - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorInfoResponse" -x-tagGroups: - - name: Search & Generative AI - tags: - - Chat - - Search - - Summarize - - Tools - - name: Connected Content - tags: - - Calendar - - Documents - - Entities - - Messages - - name: User Generated Content - tags: - - Announcements - - Answers - - Collections - - Displayable Lists - - Images - - Pins - - Shortcuts - - Verification - - name: General - tags: - - Activity - - Authentication - - Insights - - User + 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. + obfuscatedIds: + type: array + items: + type: string + description: The Person IDs to retrieve. If no IDs are requested, the current user's details are returned. + emailIds: + type: array + items: + type: string + description: The email IDs to retrieve. The result is the deduplicated union of emailIds and obfuscatedIds. + includeFields: + type: array + items: + type: string + enum: + - BADGES + - BUSY_EVENTS + - DOCUMENT_ACTIVITY + - INVITE_INFO + - PEOPLE_DISTANCE + - PERMISSIONS + - PEOPLE_DETAILS + - MANAGEMENT_DETAILS + - PEOPLE_PROFILE_SETTINGS + - PEOPLE_WITHOUT_MANAGER + description: List of PersonMetadata fields to return (that aren't returned by default) + includeTypes: + type: array + items: + type: string + enum: + - PEOPLE_WITHOUT_MANAGER + - INVALID_ENTITIES + description: The types of people entities to include in the response in addition to those returned by default. + x-enumDescriptions: + PEOPLE_WITHOUT_MANAGER: Returns all people without a manager apart from the requested IDs. + INVALID_ENTITIES: Includes invalid entities in the response if any of the requested IDs are invalid. + x-speakeasy-enum-descriptions: + PEOPLE_WITHOUT_MANAGER: Returns all people without a manager apart from the requested IDs. + INVALID_ENTITIES: Includes invalid entities in the response if any of the requested IDs are invalid. + source: + type: string + description: A string denoting the search surface from which the endpoint is called. + example: + obfuscatedIds: + - abc123 + - abc456 + PeopleResponse: + properties: + results: + type: array + items: + $ref: '#/components/schemas/Person' + description: A Person for each ID in the request, each with PersonMetadata populated. + relatedDocuments: + type: array + items: + $ref: '#/components/schemas/RelatedDocuments' + description: A list of documents related to this people response. This is only included if DOCUMENT_ACTIVITY is requested and only 1 person is included in the request. + errors: + type: array + items: + type: string + description: A list of IDs that could not be found. + CreateShortcutRequest: + properties: + data: + $ref: '#/components/schemas/ShortcutMutableProperties' + required: + - data + ShortcutError: + properties: + errorType: + type: string + enum: + - NO_PERMISSION + - INVALID_ID + - EXISTING_SHORTCUT + - INVALID_CHARS + CreateShortcutResponse: + properties: + shortcut: + $ref: '#/components/schemas/Shortcut' + error: + $ref: '#/components/schemas/ShortcutError' + DeleteShortcutRequest: + allOf: + - $ref: '#/components/schemas/UserGeneratedContentId' + - type: object + required: + - id + GetShortcutRequest: + oneOf: + - $ref: '#/components/schemas/UserGeneratedContentId' + - type: object + properties: + alias: + type: string + description: The alias for the shortcut, including any arguments for variable shortcuts. + required: + - alias + GetShortcutResponse: + properties: + shortcut: + $ref: '#/components/schemas/Shortcut' + description: Shortcut given the input alias with any provided arguments substituted into the destination URL. + error: + $ref: '#/components/schemas/ShortcutError' + ListShortcutsPaginatedRequest: + properties: + includeFields: + type: array + items: + type: string + enum: + - FACETS + - PEOPLE_DETAILS + description: Array of fields/data to be included in response that are not included by default + pageSize: + type: integer + example: 10 + cursor: + type: string + description: A token specifying the position in the overall results to start at. Received from the endpoint and iterated back. Currently being used as page no (as we implement offset pagination) + example: "" + filters: + type: array + items: + $ref: '#/components/schemas/FacetFilter' + description: A list of filters for the query. An AND is assumed between different filters. We support filters on Go Link name, author, department and type. + sort: + $ref: '#/components/schemas/SortOptions' + description: Specifies fieldname to sort on and order (ASC|DESC) to sort in + query: + type: string + description: Search query that should be a substring in atleast one of the fields (alias , inputAlias, destinationUrl, description). Empty query does not filter shortcuts. + required: + - pageSize + ShortcutsPaginationMetadata: + properties: + cursor: + type: string + description: Cursor indicates the start of the next page of results + example: "" + hasNextPage: + type: boolean + totalItemCount: + type: integer + ListShortcutsPaginatedResponse: + properties: + shortcuts: + type: array + items: + $ref: '#/components/schemas/Shortcut' + description: List of all shortcuts accessible to the user + facetResults: + type: array + items: + $ref: '#/components/schemas/FacetResult' + meta: + $ref: '#/components/schemas/ShortcutsPaginationMetadata' + description: Contains metadata like total item count and whether next page exists + required: + - shortcuts + - meta + UpdateShortcutRequest: + allOf: + - $ref: '#/components/schemas/UserGeneratedContentId' + - $ref: '#/components/schemas/ShortcutMutableProperties' + - type: object + required: + - id + UpdateShortcutResponse: + properties: + shortcut: + $ref: '#/components/schemas/Shortcut' + error: + $ref: '#/components/schemas/ShortcutError' + SummarizeRequest: + properties: + timestamp: + type: string + format: date-time + description: The ISO 8601 timestamp associated with the client request. + query: + type: string + description: Optional query that the summary should be about + preferredSummaryLength: + type: integer + description: Optional length of summary output. If not given, defaults to 500 chars. + documentSpecs: + type: array + items: + $ref: '#/components/schemas/DocumentSpec' + description: Specifications of documents to summarize + trackingToken: + type: string + description: An opaque token that represents this particular result. To be used for /feedback reporting. + required: + - documentSpecs + description: Summary of the document + Summary: + properties: + text: + type: string + followUpPrompts: + type: array + items: + type: string + description: Follow-up prompts based on the summarized doc + SummarizeResponse: + properties: + error: + type: object + properties: + message: + type: string + summary: + $ref: '#/components/schemas/Summary' + trackingToken: + type: string + description: An opaque token that represents this summary in this particular query. To be used for /feedback reporting. + ReminderRequest: + properties: + documentId: + type: string + description: The document which the verification is for new reminders and/or update. + assignee: + type: string + description: The obfuscated id of the person this verification is assigned to. + remindInDays: + type: integer + description: Reminder for the next verifications in terms of days. For deletion, this will be omitted. + reason: + type: string + description: An optional free-text reason for the reminder. This is particularly useful when a reminder is used to ask for verification from another user (for example, "Duplicate", "Incomplete", "Incorrect"). + required: + - documentId + VerificationFeed: + properties: + documents: + type: array + items: + $ref: '#/components/schemas/Verification' + description: List of document infos that include verification related information for them. + VerifyRequest: + properties: + documentId: + type: string + description: The document which is verified. + action: + type: string + enum: + - VERIFY + - DEPRECATE + - UNVERIFY + description: The verification action requested. + required: + - documentId + ToolParameter: + type: object + properties: + type: + type: string + enum: + - string + - number + - boolean + - object + - array + description: Parameter type (string, number, boolean, object, array) + name: + type: string + description: The name of the parameter + description: + type: string + description: The description of the parameter + isRequired: + type: boolean + description: Whether the parameter is required + possibleValues: + type: array + items: + type: string + description: The possible values for the parameter. Can contain only primitive values or arrays of primitive values. + items: + $ref: '#/components/schemas/ToolParameter' + type: object + description: When type is 'array', this describes the structure of the item in the array. + properties: + type: object + additionalProperties: + $ref: '#/components/schemas/ToolParameter' + description: When type is 'object', this describes the structure of the object. + Tool: + type: object + properties: + type: + type: string + enum: + - READ + - WRITE + description: Type of tool (READ, WRITE) + name: + type: string + description: Unique identifier for the tool + displayName: + type: string + description: Human-readable name + description: + type: string + description: LLM friendly description of the tool + parameters: + type: object + additionalProperties: + $ref: '#/components/schemas/ToolParameter' + description: The parameters for the tool. Each key is the name of the parameter and the value is the parameter object. + ToolsListResponse: + type: object + properties: + tools: + type: array + items: + $ref: '#/components/schemas/Tool' + ToolsCallParameter: + type: object + properties: + name: + type: string + description: The name of the parameter + value: + type: string + description: The value of the parameter (for primitive types) + items: + type: array + items: + $ref: '#/components/schemas/ToolsCallParameter' + description: The value of the parameter (for array types) + properties: + type: object + additionalProperties: + $ref: '#/components/schemas/ToolsCallParameter' + description: The value of the parameter (for object types) + required: + - name + - value + ToolsCallRequest: + type: object + properties: + name: + type: string + description: Required name of the tool to execute + parameters: + type: object + additionalProperties: + $ref: '#/components/schemas/ToolsCallParameter' + description: The parameters for the tool. Each key is the name of the parameter and the value is the parameter object. + required: + - name + - parameters + ToolsCallResponse: + type: object + properties: + rawResponse: + type: object + additionalProperties: true + description: The raw response from the tool + error: + type: string + description: The error message if applicable + ActionAuthType: + type: string + enum: + - AUTH_USER_OAUTH + - AUTH_ADMIN + - AUTH_NONE + description: | + Authentication mechanism used by an action pack. + - `AUTH_USER_OAUTH`: Requires per-user OAuth consent to the third-party tool. + - `AUTH_ADMIN`: Uses a service-account / admin-owned credential. End users do not authorize individually. + - `AUTH_NONE`: Action pack requires no authentication. + ActionPackAuthStatus: + type: object + properties: + authenticated: + type: boolean + description: Whether the calling user is already authenticated to the tool backing the action pack. + authType: + $ref: '#/components/schemas/ActionAuthType' + required: + - authenticated + - authType + ActionPackAuthStatusResponse: + type: object + properties: + actionPack: + $ref: '#/components/schemas/ActionPackAuthStatus' + description: | + Action-pack-scoped authentication status. Wrapped under `actionPack` so the response + shape clearly conveys that the status applies to the whole pack and leaves room to add + sibling fields (e.g. per-action status) later without a breaking change. + required: + - actionPack + AuthorizeActionPackRequest: + type: object + properties: + returnUrl: + type: string + description: | + URL on the customer's domain to redirect the end user's browser back to after the third-party OAuth + callback completes. Must be present in the tenant's return URL allowlist. + required: + - returnUrl + AuthorizeActionPackResponse: + type: object + properties: + redirectUrl: + type: string + description: | + URL that the customer UI should navigate the end user to in order to begin the third-party OAuth flow. + After the user consents, control returns to `returnUrl` from the request. + required: + - redirectUrl + ToolServerAuthStatus: + type: string + enum: + - AWAITING_AUTH + - AUTHORIZED + description: Authentication status for the calling user. + ToolServerAuthStatusResponse: + type: object + properties: + displayName: + type: string + description: Human-readable name of the tool server. + logoUrl: + type: string + description: Logo URL for the tool server. + description: + type: string + description: Brief description of the tool server. + authStatus: + $ref: '#/components/schemas/ToolServerAuthStatus' + authType: + $ref: '#/components/schemas/ActionAuthType' + required: + - authStatus + - authType + AuthorizeToolServerRequest: + type: object + properties: + returnUrl: + type: string + description: | + URL to redirect the end user's browser back to after the OAuth flow completes. + Must be present in the tenant's configured return URL allowlist. + required: + - returnUrl + AuthorizeToolServerResponse: + type: object + properties: + authorizationUrl: + type: string + description: | + URL that the client should navigate the end user to in order to begin the OAuth flow. + After the user consents, control returns to `returnUrl` from the request. + required: + - authorizationUrl + ToolAnnotations: + type: object + properties: + title: + type: string + readOnlyHint: + type: boolean + description: | + True if the tool does not modify its environment. Always present. MCP + defines no distinction between an undeclared value and `false` here, so + `false` means "not declared read-only" rather than "declared mutating". + x-includeEmpty: true + destructiveHint: + type: boolean + description: | + True if the tool may perform destructive updates. **Absent means the server + did not declare it**, for which the MCP default is `true`. Only meaningful + when `readOnlyHint` is `false`. + nullable: true + idempotentHint: + type: boolean + description: | + True if repeated calls with the same arguments have no additional effect. + Always present; as with `readOnlyHint`, `false` means "not declared + idempotent". Only meaningful when `readOnlyHint` is `false`. + x-includeEmpty: true + openWorldHint: + type: boolean + description: | + True if the tool interacts with an open world of external entities. **Absent + means the server did not declare it**, for which the MCP default is `true`. + nullable: true + description: | + Behavioural hints for the tool, exactly as declared by the tool server. No + defaults are filled in — see the per-field notes for what an absent value means. + + Per the MCP specification, clients MUST treat these hints as untrusted unless + the tool server is itself trusted. They are advisory metadata, not an + authorization signal, and must not be the sole basis of a security decision. + ToolDefinition: + type: object + properties: + serverId: + type: string + description: Tool server this tool belongs to. + name: + type: string + description: Name to invoke the tool by. + displayName: + type: string + description: Human-readable name of the tool. + description: + type: string + description: What the tool does, as surfaced to a model. + inputSchema: + type: object + additionalProperties: true + description: JSON Schema for the tool's input parameters. + annotations: + $ref: '#/components/schemas/ToolAnnotations' + required: + - serverId + - name + ToolDefinitionsResponse: + type: object + properties: + tools: + type: array + items: + $ref: '#/components/schemas/ToolDefinition' + description: Definitions for the requested tools that exist on this server. + notFound: + type: array + items: + type: string + description: Requested names that do not exist on this server. + required: + - tools + IndexDocumentRequest: + type: object + properties: + version: + type: integer + format: int64 + description: Version number for document for optimistic concurrency control. If absent or 0 then no version checks are done. + document: + $ref: '#/components/schemas/DocumentDefinition' + description: Document being added/updated + required: + - document + description: Describes the request body of the /indexdocument API call + IndexDocumentsRequest: + type: object + properties: + uploadId: + type: string + description: Optional id parameter to identify and track a batch of documents. + datasource: + type: string + description: Datasource of the documents + documents: + type: array + items: + $ref: '#/components/schemas/DocumentDefinition' + description: Batch of documents being added/updated + required: + - documents + - datasource + description: Describes the request body of the /indexdocuments API call + UpdatePermissionsRequest: + type: object + properties: + datasource: + type: string + objectType: + type: string + description: The type of the document (Case, KnowledgeArticle for Salesforce for example). It cannot have spaces or _ + id: + type: string + description: The datasource specific id for the document. This field is case insensitive and should not be more than 200 characters in length. + viewURL: + type: string + description: | + The permalink for viewing the document. **Note: viewURL is a required field if id was not set when uploading the document.**' + permissions: + $ref: '#/components/schemas/DocumentPermissionsDefinition' + description: The permissions that define who can view this document in the search results. Please refer to [this](https://developers.glean.com/indexing/documents/permissions) for more details. + required: + - permissions + - datasource + description: Describes the request body of the /updatepermissions API call + GetDocumentCountRequest: + type: object + properties: + datasource: + type: string + description: Datasource name for which document count is needed. + required: + - datasource + description: Describes the request body of the /getdocumentcount API call + GetDocumentCountResponse: + type: object + properties: + documentCount: + type: integer + description: Number of documents corresponding to the specified custom datasource. + description: Describes the response body of the /getdocumentcount API call + GetDocumentStatusRequest: + type: object + properties: + datasource: + type: string + description: Datasource to get fetch document status for + objectType: + type: string + description: Object type of the document to get the status for + docId: + type: string + description: Glean Document ID within the datasource to get the status for. + required: + - datasource + - objectType + - docId + description: Describes the request body for /getdocumentstatus API call + GetDocumentStatusResponse: + type: object + properties: + uploadStatus: + type: string + description: Upload status, enum of NOT_UPLOADED, UPLOADED, STATUS_UNKNOWN + lastUploadedAt: + type: integer + format: int64 + description: Time of last successful upload, in epoch seconds + indexingStatus: + type: string + description: Indexing status, enum of NOT_INDEXED, INDEXED, STATUS_UNKNOWN + lastIndexedAt: + type: integer + format: int64 + description: Time of last successful indexing, in epoch seconds + description: Describes the response body of the /getdocumentstatus API call + BulkIndexRequest: + type: object + properties: + uploadId: + type: string + description: Unique id that must be used for this bulk upload instance + isFirstPage: + type: boolean + description: true if this is the first page of the upload. Defaults to false + isLastPage: + type: boolean + description: true if this is the last page of the upload. Defaults to false + forceRestartUpload: + type: boolean + description: Flag to discard previous upload attempts and start from scratch. Must be specified with isFirstPage=true + required: + - uploadId + description: Describes the request body of a bulk upload API call + BulkIndexTeamsRequest: + type: object + allOf: + - $ref: '#/components/schemas/BulkIndexRequest' + - type: object + properties: + teams: + type: array + items: + $ref: '#/components/schemas/TeamInfoDefinition' + description: Batch of team information + required: + - teams + description: Describes the request body of the /bulkindexteams API call + BulkIndexEmployeesRequest: + type: object + allOf: + - $ref: '#/components/schemas/BulkIndexRequest' + - type: object + properties: + employees: + type: array + items: + $ref: '#/components/schemas/EmployeeInfoDefinition' + description: Batch of employee information + disableStaleDataDeletionCheck: + type: boolean + description: True if older employee data needs to be force deleted after the upload completes. Defaults to older data being deleted only if the percentage of data being deleted is less than 20%. This must only be set when `isLastPage = true` + required: + - employees + description: Describes the request body of the /bulkindexemployees API call + BulkIndexDocumentsRequest: + type: object + allOf: + - $ref: '#/components/schemas/BulkIndexRequest' + - type: object + properties: + datasource: + type: string + description: Datasource of the documents + documents: + type: array + items: + $ref: '#/components/schemas/DocumentDefinition' + description: Batch of documents for the datasource + disableStaleDocumentDeletionCheck: + type: boolean + description: True if older documents need to be force deleted after the upload completes. Defaults to older documents being deleted asynchronously. This must only be set when `isLastPage = true` + required: + - datasource + - documents + description: Describes the request body of the /bulkindexdocuments API call + ProcessAllDocumentsRequest: + type: object + properties: + datasource: + type: string + description: If provided, process documents only for this custom datasource. Otherwise all uploaded documents are processed. + description: Describes the request body of the /processalldocuments API call + DeleteDocumentRequest: + type: object + properties: + version: + type: integer + format: int64 + description: Version number for document for optimistic concurrency control. If absent or 0 then no version checks are done. + datasource: + type: string + description: datasource of the document + objectType: + type: string + description: object type of the document + id: + type: string + description: The id of the document + required: + - datasource + - id + - objectType + description: Describes the request body of the /deletedocument API call + IndexUserRequest: + type: object + properties: + version: + type: integer + format: int64 + description: Version number for document for optimistic concurrency control. If absent or 0 then no version checks are done. + datasource: + type: string + description: The datasource for which the user is added + user: + $ref: '#/components/schemas/DatasourceUserDefinition' + description: The user to be added or updated + required: + - datasource + - user + description: Describes the request body of the /indexuser API call + GetUserCountRequest: + type: object + properties: + datasource: + type: string + description: Datasource name for which user count is needed. + required: + - datasource + description: Describes the request body of the /getusercount API call + GetUserCountResponse: + type: object + properties: + userCount: + type: integer + description: Number of users corresponding to the specified custom datasource. + description: Describes the response body of the /getusercount API call + BulkIndexUsersRequest: + type: object + properties: + uploadId: + type: string + description: Unique id that must be used for this instance of datasource users upload + isFirstPage: + type: boolean + description: true if this is the first page of the upload. Defaults to false + isLastPage: + type: boolean + description: true if this is the last page of the upload. Defaults to false + forceRestartUpload: + type: boolean + description: Flag to discard previous upload attempts and start from scratch. Must be specified with isFirstPage=true + datasource: + type: string + description: datasource of the users + users: + type: array + items: + $ref: '#/components/schemas/DatasourceUserDefinition' + description: batch of users for the datasource + disableStaleDataDeletionCheck: + type: boolean + description: True if older user data needs to be force deleted after the upload completes. Defaults to older data being deleted only if the percentage of data being deleted is less than a reasonable threshold. This must only be set when `isLastPage = true` + required: + - uploadId + - datasource + - users + description: Describes the request body for the /bulkindexusers API call + GreenlistUsersRequest: + type: object + properties: + datasource: + type: string + description: Datasource which needs to be made visible to users specified in the `emails` field. + emails: + type: array + items: + type: string + format: email + description: The emails of the beta users + required: + - datasource + - emails + description: Describes the request body of the /betausers API call + DatasourceUserDefinition: + type: object + properties: + email: + type: string + userId: + type: string + description: To be supplied if the user id in the datasource is not the email + name: + type: string + isActive: + type: boolean + description: set to false if the user is a former employee or a bot + required: + - email + - name + description: describes a user in the datasource + IndexGroupRequest: + type: object + properties: + version: + type: integer + format: int64 + description: Version number for document for optimistic concurrency control. If absent or 0 then no version checks are done. + datasource: + type: string + description: The datasource for which the group is added + group: + $ref: '#/components/schemas/DatasourceGroupDefinition' + description: The group to be added or updated + required: + - datasource + - group + description: Describes the request body of the /indexgroup API call + BulkIndexGroupsRequest: + type: object + properties: + uploadId: + type: string + description: Unique id that must be used for this instance of datasource groups upload + isFirstPage: + type: boolean + description: true if this is the first page of the upload. Defaults to false + isLastPage: + type: boolean + description: true if this is the last page of the upload. Defaults to false + forceRestartUpload: + type: boolean + description: Flag to discard previous upload attempts and start from scratch. Must be specified with isFirstPage=true + datasource: + type: string + description: datasource of the groups + groups: + type: array + items: + $ref: '#/components/schemas/DatasourceGroupDefinition' + description: batch of groups for the datasource + disableStaleDataDeletionCheck: + type: boolean + description: True if older group data needs to be force deleted after the upload completes. Defaults to older data being deleted only if the percentage of data being deleted is less than a reasonable threshold. This must only be set when `isLastPage = true` + required: + - uploadId + - datasource + - groups + description: Describes the request body for the /bulkindexgroups API call + DatasourceGroupDefinition: + type: object + properties: + name: + type: string + description: name of the group. Should be unique among all groups for the datasource, and cannot have spaces. + required: + - name + description: describes a group in the datasource + IndexMembershipRequest: + type: object + properties: + version: + type: integer + format: int64 + description: Version number for document for optimistic concurrency control. If absent or 0 then no version checks are done. + datasource: + type: string + description: The datasource for which the membership is added + membership: + $ref: '#/components/schemas/DatasourceMembershipDefinition' + description: The membership to be added or updated + required: + - datasource + - membership + description: Describes the request body of the /indexmembership API call + BulkIndexMembershipsRequest: + type: object + properties: + uploadId: + type: string + description: Unique id that must be used for this instance of datasource group memberships upload + isFirstPage: + type: boolean + description: true if this is the first page of the upload. Defaults to false + isLastPage: + type: boolean + description: true if this is the last page of the upload. Defaults to false + forceRestartUpload: + type: boolean + description: Flag to discard previous upload attempts and start from scratch. Must be specified with isFirstPage=true + datasource: + type: string + description: datasource of the memberships + group: + type: string + description: group who's memberships are specified + memberships: + type: array + items: + $ref: '#/components/schemas/DatasourceBulkMembershipDefinition' + description: batch of memberships for the group + required: + - uploadId + - datasource + - memberships + description: Describes the request body for the /bulkindexmemberships API call + ProcessAllMembershipsRequest: + type: object + properties: + datasource: + type: string + description: If provided, process group memberships only for this custom datasource. Otherwise all uploaded memberships are processed. + description: Describes the request body of the /processallmemberships API call + DatasourceMembershipDefinition: + type: object + properties: + groupName: + type: string + description: The group for which the membership is specified + memberUserId: + type: string + description: If the member is a user, then the email or datasource id for the user + memberGroupName: + type: string + description: If the member is a group, then the name of the member group + required: + - groupName + description: describes the membership row of a group. Only one of memberUserId and memberGroupName can be specified. + DatasourceBulkMembershipDefinition: + type: object + properties: + memberUserId: + type: string + description: If the member is a user, then the email or datasource id for the user + memberGroupName: + type: string + description: If the member is a group, then the name of the member group + description: describes the membership row of a group in the bulk uploaded. Only one of memberUserId and memberGroupName can be specified. + DeleteUserRequest: + type: object + properties: + version: + type: integer + format: int64 + description: Version number for document for optimistic concurrency control. If absent or 0 then no version checks are done. + datasource: + type: string + description: The datasource for which the user is removed + email: + type: string + description: The email of the user to be deleted + required: + - datasource + - email + description: Describes the request body of the /deleteuser API call + DeleteGroupRequest: + type: object + properties: + version: + type: integer + format: int64 + description: Version number for document for optimistic concurrency control. If absent or 0 then no version checks are done. + datasource: + type: string + description: The datasource for which the group is removed + groupName: + type: string + description: the name of the group to be deleted + required: + - datasource + - groupName + description: Describes the request body of the /deletegroup API call + DeleteMembershipRequest: + type: object + properties: + version: + type: integer + format: int64 + description: Version number for document for optimistic concurrency control. If absent or 0 then no version checks are done. + datasource: + type: string + description: The datasource for which the membership is removed + membership: + $ref: '#/components/schemas/DatasourceMembershipDefinition' + description: the name of the membership to be deleted + required: + - datasource + - membership + description: Describes the request body of the /deletemembership API call + DeleteEmployeeRequest: + type: object + properties: + version: + type: integer + format: int64 + description: Version number for document for optimistic concurrency control. If absent or 0 then no version checks are done. + employeeEmail: + type: string + description: The deleted employee's email + required: + - employeeEmail + description: Describes the request body of the /deleteemployee API call + DeleteTeamRequest: + type: object + properties: + id: + type: string + description: The deleted team's id + required: + - id + description: Describes the request body of the /deleteteam API call + DocumentDefinition: + type: object + properties: + title: + type: string + description: Document title, in plain text, if present. If not present, the title would be attempted to be extracted from the content. + filename: + type: string + description: Source filename, in plain text, for the document. May be used as a fallback title for the document, if the title is not provided and cannot be extracted from the content. Populate this if there is no explicit title for the document and the content is sourced from a file. + container: + type: string + description: The container name for the content (Folder for example for file content). + containerDatasourceId: + type: string + description: This represents the datasource sepcific id of the container. + containerObjectType: + type: string + description: This represents the object type of the container. It cannot have spaces or _ + datasource: + type: string + objectType: + type: string + description: The type of the document (Case, KnowledgeArticle for Salesforce for example). It cannot have spaces or _ + viewURL: + type: string + description: | + The permalink for viewing the document. **Note: viewURL is a required field for non-entity datasources, but not required if the datasource is used to push custom entities (ie. datasources where isEntityDatasource is false).**' + id: + type: string + description: | + The datasource specific id for the document. This field is case insensitive and should not be more than 200 characters in length. Note: id is a required field for datasources created after 1st March 2025 + summary: + $ref: '#/components/schemas/ContentDefinition' + body: + $ref: '#/components/schemas/ContentDefinition' + author: + $ref: '#/components/schemas/UserReferenceDefinition' + owner: + $ref: '#/components/schemas/UserReferenceDefinition' + description: The current owner of the document, if not the author. + permissions: + $ref: '#/components/schemas/DocumentPermissionsDefinition' + description: The permissions that define who can view this document in the search results. Please refer to [this](https://developers.glean.com/indexing/documents/permissions) for more details. + createdAt: + type: integer + format: int64 + description: The creation time, in epoch seconds. + updatedAt: + type: integer + format: int64 + description: The last update time, in epoch seconds. + updatedBy: + $ref: '#/components/schemas/UserReferenceDefinition' + tags: + type: array + items: + type: string + description: Labels associated with the document. + interactions: + $ref: '#/components/schemas/DocumentInteractionsDefinition' + status: + type: string + additionalUrls: + type: array + items: + type: string + description: Additional variations of the URL that this document points to. + nativeAppUrl: + type: string + description: A deep link, if available, into the datasource's native application for the user's platform (e.g. slack://channel/message). + comments: + type: array + items: + $ref: '#/components/schemas/CommentDefinition' + description: Comments associated with the document. + customProperties: + type: array + items: + $ref: '#/components/schemas/CustomProperty' + description: Additional metadata properties of the document. These can surface as [facets and operators](https://developers.glean.com/indexing/datasource/custom-properties/operators_and_facets). + required: + - datasource + description: Indexable document structure + CommentDefinition: + type: object + properties: + id: + type: string + description: The document specific id for the comment. This field is case insensitive and should not be more than 200 characters in length. + author: + $ref: '#/components/schemas/UserReferenceDefinition' + description: The author of the comment. + content: + $ref: '#/components/schemas/ContentDefinition' + description: The content of the comment. + createdAt: + type: integer + format: int64 + description: The creation time, in epoch seconds. + updatedAt: + type: integer + format: int64 + description: The last updated time, in epoch seconds. + updatedBy: + $ref: '#/components/schemas/UserReferenceDefinition' + description: The user who last updated the comment. + required: + - id + description: Describes a comment on a document + ContentDefinition: + type: object + properties: + mimeType: + type: string + textContent: + type: string + description: text content. Only one of textContent or binary content can be specified + binaryContent: + type: string + description: base64 encoded binary content. Only one of textContent or binary content can be specified + required: + - mimeType + description: Describes text content or base64 encoded binary content + UserReferenceDefinition: + type: object + properties: + email: + type: string + datasourceUserId: + type: string + description: some datasources refer to the user by the datasource user id in the document + name: + type: string + description: Describes how a user is referenced in a document. The user can be referenced by email or by a datasource specific id. + PermissionsGroupIntersectionDefinition: + type: object + properties: + requiredGroups: + type: array + items: + type: string + description: describes a list of groups that are all required in a permissions constraint + DocumentPermissionsDefinition: + type: object + properties: + allowedUsers: + type: array + items: + $ref: '#/components/schemas/UserReferenceDefinition' + description: List of users who can view the document + allowedGroups: + type: array + items: + type: string + description: List of groups that can view the document + allowedGroupIntersections: + type: array + items: + $ref: '#/components/schemas/PermissionsGroupIntersectionDefinition' + description: List of allowed group intersections. This describes a permissions constraint of the form ((GroupA AND GroupB AND GroupC) OR (GroupX AND GroupY) OR ... + allowAnonymousAccess: + type: boolean + description: If true, then any Glean user can view the document + allowAllDatasourceUsersAccess: + type: boolean + description: If true, then any user who has an account in the datasource can view the document. + description: describes the access control details of the document + DocumentInteractionsDefinition: + type: object + properties: + numViews: + type: integer + numLikes: + type: integer + numComments: + type: integer + description: describes the interactions on the document + CheckDocumentAccessRequest: + type: object + properties: + datasource: + type: string + description: Datasource of document to check access for. + objectType: + type: string + description: Object type of document to check access for. + docId: + type: string + description: Glean Document ID to check access for. + userEmail: + type: string + description: Email of user to check access for. + required: + - datasource + - objectType + - docId + - userEmail + description: Describes the request body of the /checkdocumentaccess API call + CheckDocumentAccessResponse: + type: object + properties: + hasAccess: + type: boolean + description: If true, user has access to document for search + description: Describes the response body of the /checkdocumentaccess API call + CustomProperty: + type: object + properties: + name: + type: string + value: + description: Must be a string, a number (for INT properties), or an array of strings. A boolean is not valid. When OpenAPI Generator supports `oneOf`, we can semantically enforce this. + description: Describes the custom properties of the object. + DatasourceConfig: + $ref: '#/components/schemas/SharedDatasourceConfig' + GetDatasourceConfigRequest: + type: object + properties: + datasource: + type: string + description: Datasource name for which config is needed. + required: + - datasource + description: Describes the request body of the /getdatasourceconfig API call + DatasourceConfigList: + properties: + datasourceConfig: + type: array + items: + $ref: '#/components/schemas/SharedDatasourceConfig' + description: Datasource configuration. + required: + - datasourceConfig + description: List of datasource configurations. + RotateTokenResponse: + properties: + rawSecret: + type: string + description: New raw secret + createdAt: + type: integer + format: int64 + description: Unix timestamp in seconds when the new secret value is assigned to the token. The token needs to be rotated before `rotationPeriodMinutes` past the createdAt timestamp otherwise it would be rendered unusable. + rotationPeriodMinutes: + type: integer + format: int64 + description: Refers to the time period in minutes before which this token needs to be rotated. It is required to rotate the token within the specified `rotationPeriodMinutes` after each `/rotatetoken` call, otherwise the tokens would expire. Note that the token would still expire at `expiresAt` timestamp provided during token creation even if the token is being regularly rotated. `rotationPeriodMinutes` property is inherited from the parent token being rotated + description: Describes the response body of the /rotatetoken API call + IndexEmployeeRequest: + type: object + properties: + employee: + $ref: '#/components/schemas/EmployeeInfoDefinition' + description: Info about the employee + version: + type: integer + format: int64 + description: Version number for the employee object. If absent or 0 then no version checks are done + required: + - employee + description: Info about an employee and optional version for that info + IndexEmployeeListRequest: + type: object + properties: + employees: + type: array + items: + $ref: '#/components/schemas/IndexEmployeeRequest' + description: List of employee info and version. + description: Describes the request body of the /indexemployeelist API call + SocialNetworkDefinition: + type: object + properties: + name: + type: string + description: Possible values are "twitter", "linkedin". + profileName: + type: string + description: Human-readable profile name. + profileUrl: + type: string + description: Link to profile. + description: Employee's social network profile + AdditionalFieldDefinition: + type: object + properties: + key: + type: string + description: Key to reference this field, e.g. "languages". Note that the key should be all lowercase alphabetic characters with no numbers, spaces, hyphens or underscores. + value: + type: array + items: + type: object + description: Either a string or HypertextField. When OpenAPI Generator supports oneOf, we can semantically enforce this in the docs. + description: | + List of type string or HypertextField. + + HypertextField is defined as + ``` + { + anchor: string, // Anchor text for the hypertext field. + hyperlink: string, // URL for the hypertext field. + } + ``` + Example: ```{"anchor":"Glean","hyperlink":"https://glean.com"}``` + + When OpenAPI Generator supports oneOf, we will semantically enforce this in the docs. + + **Note**: If using the Python SDK to pass in a list of strings, the value may need to be a list of dictionaries. In that case, the key in that dictionary will be ignored. + Example: ```"languages": [{"lang":"English","lang":"Spanish",...}]```. In this case, the key "lang" will be ignored and can even be passed in as an empty string. + description: Additional information about the employee or team. + HypertextField: + type: object + properties: + anchor: + type: string + description: Anchor text for the hypertext field. + hyperlink: + type: string + description: URL for the hypertext field. + EmployeeInfoDefinition: + type: object + properties: + email: + type: string + description: The employee's email + firstName: + type: string + description: | + The first name of the employee. **Note**: The value cannot be empty + lastName: + type: string + description: | + The last name of the employee. **Note**: The value cannot be empty + preferredName: + type: string + description: The preferred name or nickname of the employee + id: + type: string + description: | + **[Advanced]** A unique universal internal identifier for the employee. This is solely used for understanding manager relationships along with `managerId`. + phoneNumber: + type: string + description: The employee's phone number. + location: + type: string + description: The employee's location (city/office name etc). + deprecated: true + x-glean-deprecated: + id: a7f6fbaa-0eaf-4c0c-a4f5-ab90347f73fd + introduced: "2026-02-05" + message: Field is deprecated + removal: "2026-10-15" + x-speakeasy-deprecation-message: "Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Field is deprecated" + structuredLocation: + $ref: '#/components/schemas/StructuredLocation' + description: Detailed location with information about country, state, city etc. + title: + type: string + description: The employee's role title. + photoUrl: + type: string + format: uri + description: The employee's profile pic + businessUnit: + type: string + description: Typically the highest level organizational unit; generally applies to bigger companies with multiple distinct businesses. + department: + type: string + description: An organizational unit where everyone has a similar task, e.g. `Engineering`. + datasourceProfiles: + type: array + items: + $ref: '#/components/schemas/DatasourceProfile' + description: The datasource profiles of the employee, e.g. `Slack`,`Github`. + teams: + type: array + items: + $ref: '#/components/schemas/EmployeeTeamInfo' + description: Info about the employee's team(s) + startDate: + type: string + format: date + description: The date when the employee started + endDate: + type: string + format: date + description: If a former employee, the last date of employment. + bio: + type: string + description: Short biography or mission statement of the employee. + pronoun: + type: string + description: She/her, He/his or other pronoun. + alsoKnownAs: + type: array + items: + type: string + description: Other names associated with the employee. + profileUrl: + type: string + description: Link to internal company person profile. + socialNetworks: + type: array + items: + $ref: '#/components/schemas/SocialNetworkDefinition' + description: List of social network profiles. + managerEmail: + type: string + description: The email of the employee's manager + managerId: + type: string + description: | + **[Advanced]** A unique universal internal identifier for the employee's manager. This is solely used in conjunction with `id`. + type: + type: string + description: The type of the employee, an enum of `FULL_TIME`, `CONTRACTOR`, `NON_EMPLOYEE` + default: FULL_TIME + relationships: + type: array + items: + $ref: '#/components/schemas/EntityRelationship' + description: List of unidirectional relationships with other employees. E.g. this employee (`A`) is a CHIEF_OF_STAFF to another employee (`B`); or this employee (`A`) is an EXECUTIVE_ASSISTANT of another employee (`C`). The mapping should be attached to `A`'s profile. + status: + type: string + description: The status of the employee, an enum of `CURRENT`, `FUTURE`, `EX` + default: CURRENT + additionalFields: + type: array + items: + $ref: '#/components/schemas/AdditionalFieldDefinition' + description: List of additional fields with more information about the employee. + required: + - department + - email + description: Describes employee info + EmployeeAndVersionDefinition: + type: object + properties: + employee: + $ref: '#/components/schemas/EmployeeInfoDefinition' + description: Info about the employee + version: + type: integer + format: int64 + description: Version number for the employee object. If absent or 0 then no version checks are done + required: + - info + description: describes info about an employee and optional version for that info + EmployeeTeamInfo: + type: object + properties: + id: + type: string + description: unique identifier for this team + name: + type: string + description: Team name + url: + type: string + format: uri + description: Link to internal company team page + description: Information about which team an employee belongs to + EntityRelationship: + type: object + properties: + name: + type: string + description: The title or type of relationship. Currently an enum of `CHIEF_OF_STAFF`, `EXECUTIVE_ASSISTANT` + email: + type: string + description: Email of the person with whom the relationship exists. Per the example above, either `B` or `C`'s email depending on the relationship. + required: + - name + - email + description: Describes a relationship edge between a source and destination entity + TeamMember: + type: object + properties: + email: + type: string + format: email + description: The member's email + relationship: + type: string + description: The member's relationship to the team, an enum of `MEMBER`, `MANAGER`, `LEAD`, `POINT_OF_CONTACT`, `OTHER` + default: MEMBER + join_date: + type: string + format: date + description: The member's start date + required: + - email + description: Information about a team's member + TeamInfoDefinition: + type: object + properties: + id: + type: string + description: The unique ID of the team + name: + type: string + description: Human-readable team name + description: + type: string + description: The description of this team + businessUnit: + type: string + description: Typically the highest level organizational unit; generally applies to bigger companies with multiple distinct businesses. + department: + type: string + description: An organizational unit where everyone has a similar task, e.g. `Engineering`. + photoUrl: + type: string + format: uri + description: A link to the team's photo + externalLink: + type: string + format: uri + description: | + A link to an external team page. If set, team results will link to it. + emails: + type: array + items: + $ref: '#/components/schemas/TeamEmail' + description: The emails of the team + datasourceProfiles: + type: array + items: + $ref: '#/components/schemas/DatasourceProfile' + description: The datasource profiles of the team, e.g. `Slack`,`Github`. + members: + type: array + items: + $ref: '#/components/schemas/TeamMember' + description: The members of the team + additionalFields: + type: array + items: + $ref: '#/components/schemas/AdditionalFieldDefinition' + description: List of additional fields with more information about the team. + required: + - id + - members + - name + description: Information about an employee's team + IndexTeamRequest: + type: object + properties: + team: + $ref: '#/components/schemas/TeamInfoDefinition' + description: Info about the team + version: + type: integer + format: int64 + description: Version number for the team object. If absent or 0 then no version checks are done + required: + - team + description: Info about a team and optional version for that info + BulkIndexShortcutsRequest: + type: object + allOf: + - $ref: '#/components/schemas/BulkIndexRequest' + - type: object + properties: + shortcuts: + type: array + items: + $ref: '#/components/schemas/ExternalShortcut' + description: Batch of shortcuts information + required: + - shortcuts + description: Describes the request body of the /bulkindexshortcuts API call + UploadShortcutsRequest: + type: object + allOf: + - $ref: '#/components/schemas/BulkIndexRequest' + - type: object + properties: + shortcuts: + type: array + items: + $ref: '#/components/schemas/IndexingShortcut' + description: Batch of shortcuts information + required: + - shortcuts + description: Describes the request body of the /uploadshortcuts API call + DebugDatasourceStatusResponse: + type: object + properties: + documents: + type: object + properties: + bulkUploadHistory: + $ref: '#/components/schemas/BulkUploadHistoryEventList' + type: object + counts: + type: object + properties: + uploaded: + type: array + items: + $ref: '#/components/schemas/DatasourceObjectTypeDocumentCountEntry' + description: | + A list of object types and corresponding upload counts. Note: This data may be cached and could be up to 3 hours stale. + indexed: + type: array + items: + $ref: '#/components/schemas/DatasourceObjectTypeDocumentCountEntry' + description: The number of documents indexed, grouped by objectType + processingHistory: + $ref: '#/components/schemas/ProcessingHistoryEventList' + identity: + type: object + properties: + processingHistory: + $ref: '#/components/schemas/ProcessingHistoryEventList' + users: + $ref: '#/components/schemas/DebugDatasourceStatusIdentityResponseComponent' + groups: + $ref: '#/components/schemas/DebugDatasourceStatusIdentityResponseComponent' + memberships: + $ref: '#/components/schemas/DebugDatasourceStatusIdentityResponseComponent' + datasourceVisibility: + type: string + enum: + - ENABLED_FOR_ALL + - ENABLED_FOR_TEST_GROUP + - NOT_ENABLED + description: The visibility of the datasource, an enum of VISIBLE_TO_ALL, VISIBLE_TO_TEST_GROUP, NOT_VISIBLE + example: ENABLED_FOR_ALL + description: Describes the response body of the /debug/{datasource}/status API call + DebugDatasourceStatusIdentityResponseComponent: + type: object + properties: + bulkUploadHistory: + $ref: '#/components/schemas/BulkUploadHistoryEventList' + type: object + counts: + type: object + properties: + uploaded: + type: integer + description: The number of users/groups/memberships uploaded + example: 15 + DatasourceObjectTypeDocumentCountEntry: + type: object + properties: + objectType: + type: string + description: The object type of the document + example: Article + count: + type: integer + description: The number of documents of the corresponding objectType + example: 15 + BulkUploadHistoryEvent: + type: object + properties: + uploadId: + type: string + description: The unique ID of the upload + example: upload-id-content-1707403081 + startTime: + type: string + description: The start time of the upload in ISO 8601 format + example: "2021-08-06T17:58:01.000Z" + endTime: + type: string + description: The end time of the upload in ISO 8601 format, 'NA' if the upload is still active + example: "2021-08-06T18:58:01.000Z" + status: + type: string + enum: + - ACTIVE + - SUCCESSFUL + description: The status of the upload, an enum of ACTIVE, SUCCESSFUL + example: SUCCESSFUL + processingState: + type: string + enum: + - UNAVAILABLE + - UPLOAD STARTED + - UPLOAD IN PROGRESS + - UPLOAD COMPLETED + - DELETION PAUSED + - INDEXING COMPLETED + description: The current state of the upload, an enum of UNAVAILABLE, UPLOAD STARTED, UPLOAD IN PROGRESS, UPLOAD COMPLETED, DELETION PAUSED, INDEXING COMPLETED + example: UPLOAD COMPLETED + description: Information about a successful bulk upload + BulkUploadHistoryEventList: + type: array + items: + $ref: '#/components/schemas/BulkUploadHistoryEvent' + description: Information about active and recent successful uploads for the datasource + DebugDocumentRequest: + type: object + properties: + objectType: + type: string + description: Object type of the document to get the status for. + example: Article + docId: + type: string + description: Glean Document ID within the datasource to get the status for. + example: art123 + required: + - objectType + - docId + description: Describes the request body of the /debug/{datasource}/document API call. + DebugDocumentResponse: + type: object + properties: + status: + $ref: '#/components/schemas/DocumentStatusResponse' + type: object + description: Upload and indexing status of the document + uploadedPermissions: + $ref: '#/components/schemas/DocumentPermissionsDefinition' + description: Describes the response body of the /debug/{datasource}/document API call + DebugDocumentsRequest: + type: object + properties: + debugDocuments: + type: array + items: + $ref: '#/components/schemas/DebugDocumentRequest' + description: Documents to fetch debug information for + required: + - debugDocuments + description: Describes the request body of the /debug/{datasource}/documents API call. + DebugDocumentsResponseItem: + type: object + properties: + docId: + type: string + description: Id of the document + objectType: + type: string + description: objectType of the document + debugInfo: + $ref: '#/components/schemas/DebugDocumentResponse' + type: object + description: Debug information of the document + description: Describes the response body of a single document in the /debug/{datasource}/documents API call + DebugDocumentsResponse: + type: object + properties: + documentStatuses: + type: array + items: + $ref: '#/components/schemas/DebugDocumentsResponseItem' + description: List of document ids/urls and their debug information + description: Describes the response body of a single document in the /debug/{datasource}/documents API call + DocumentStatusResponse: + type: object + properties: + uploadStatus: + type: string + description: Upload status, enum of NOT_UPLOADED, UPLOADED, STATUS_UNKNOWN + example: UPLOADED + lastUploadedAt: + type: string + description: Time of last successful upload for the document, in ISO 8601 format + example: "2021-08-06T17:58:01.000Z" + indexingStatus: + type: string + description: Indexing status, enum of NOT_INDEXED, INDEXED, STATUS_UNKNOWN + example: INDEXED + lastIndexedAt: + type: string + description: Time of last successful indexing for the document, in ISO 8601 format + example: "2021-08-06T17:58:01.000Z" + permissionIdentityStatus: + type: string + description: Permission identity status, enum of NOT_UPLOADED, UPLOADED, STATUS_UNKNOWN (Always unknown if `identityDatasourceName` is set). Document visibility may be affected status is `NOT_UPLOADED`. + example: UPLOADED + description: Describes the document status response body + LifeCycleEvent: + type: object + properties: + event: + type: string + enum: + - UPLOADED + - INDEXED + - DELETION_REQUESTED + - DELETED + description: Type of event + example: INDEXED + timestamp: + type: string + description: Timestamp of the event + example: "2021-08-06T17:58:01.000Z" + ProcessingHistoryEvent: + type: object + properties: + startTime: + type: string + description: The start time of the processing in ISO 8601 format + example: "2021-08-06T17:58:01.000Z" + endTime: + type: string + description: The end time of the processing in ISO 8601 format, 'NA' if still in progress + example: "2021-08-06T18:58:01.000Z" + description: Processing history event for a datasource + ProcessingHistoryEventList: + type: array + items: + $ref: '#/components/schemas/ProcessingHistoryEvent' + description: Information about processing history for the datasource + DebugUserRequest: + type: object + properties: + email: + type: string + description: Email ID of the user to get the status for + example: u1@foo.com + required: + - email + description: Describes the request body of the /debug/{datasource}/user API call + DebugUserResponse: + type: object + properties: + status: + $ref: '#/components/schemas/UserStatusResponse' + type: object + description: Upload and indexing status of the user + uploadedGroups: + type: array + items: + $ref: '#/components/schemas/DatasourceGroupDefinition' + description: List of groups the user is a member of, as uploaded via permissions API. + description: Describes the response body of the /debug/{datasource}/user API call + UserStatusResponse: + type: object + properties: + isActiveUser: + type: boolean + description: Whether the user is active or not + example: true + uploadStatus: + $ref: '#/components/schemas/UploadStatusEnum' + lastUploadedAt: + type: string + description: Time of last successful upload for the user, in ISO 8601 format + example: "2021-08-06T17:58:01.000Z" + description: Describes the user status response body + UploadStatusEnum: + type: string + enum: + - UPLOADED + - NOT_UPLOADED + - STATUS_UNKNOWN + description: Upload status, enum of NOT_UPLOADED, UPLOADED, STATUS_UNKNOWN + example: UPLOADED + DebugDocumentLifecycleRequest: + type: object + properties: + objectType: + type: string + description: Object type of the document to get lifecycle events for. + example: Article + docId: + type: string + description: Glean Document ID within the datasource to get lifecycle events for. + example: art123 + startDate: + type: string + description: The start date for events to be fetched. Cannot be more than 30 days (default 7 days) in the past. + example: "2025-05-01" + maxEvents: + type: integer + description: Max number of events to be fetched. Cannot be more than 100 (default 20). + example: 50 + required: + - objectType + - docId + description: Describes the request body of the /debug/{datasource}/document/events API call. + DebugDocumentLifecycleResponse: + type: object + properties: + lifeCycleEvents: + type: array + items: + $ref: '#/components/schemas/LifeCycleEvent' + description: List of lifecycle events corresponding to the document + description: Describes the response body of the /debug/{datasource}/document/events API call + CustomMetadataPutRequest: + type: object + properties: + customMetadata: + type: array + items: + $ref: '#/components/schemas/CustomProperty' + description: Array of custom metadata key-value pairs + required: + - customMetadata + description: Request body for adding or updating custom metadata on a document + CustomMetadataSchema: + type: object + properties: + metadataKeys: + type: array + items: + $ref: '#/components/schemas/CustomMetadataPropertyDefinition' + description: Array of metadata key definitions + required: + - metadataKeys + description: Schema for custom metadata containing metadata key definitions + SuccessResponse: + type: object + properties: + success: + type: boolean + description: Indicates if the operation was successful + default: true + description: Success response for custom metadata operations + ErrorInfoResponse: + type: object + properties: + error: + type: string + description: Error message describing what went wrong + message: + type: string + description: Additional details about the error + required: + - error + description: Error response for custom metadata operations + PropertyDefinition: + properties: + name: + type: string + description: The name of the property in the `DocumentMetadata` (e.g. 'createTime', 'updateTime', 'author', 'container'). In the future, this will support custom properties too. + displayLabel: + type: string + description: The user friendly label for the property. + displayLabelPlural: + type: string + description: The user friendly label for the property that will be used if a plural context. + propertyType: + type: string + enum: + - TEXT + - DATE + - INT + - USERID + - PICKLIST + - TEXTLIST + - MULTIPICKLIST + description: The type of custom property - this governs the search and faceting behavior. Note that MULTIPICKLIST is not yet supported. + uiOptions: + type: string + enum: + - NONE + - SEARCH_RESULT + - DOC_HOVERCARD + hideUiFacet: + type: boolean + description: If true then the property will not show up as a facet in the UI. + uiFacetOrder: + type: integer + description: Will be used to set the order of facets in the UI, if present. If set for one facet, must be set for all non-hidden UI facets. Must take on an integer value from 1 (shown at the top) to N (shown last), where N is the number of non-hidden UI facets. These facets will be ordered below the built-in "Type" and "Tag" operators. + skipIndexing: + type: boolean + description: If true then the property will not be indexed for retrieval and ranking. + group: + type: string + description: The unique identifier of the `PropertyGroup` to which this property belongs. + PropertyGroup: + properties: + name: + type: string + description: The unique identifier of the group. + displayLabel: + type: string + description: The user-friendly group label to display. + description: A grouping for multiple PropertyDefinition. Grouped properties will be displayed together in the UI. + ObjectDefinition: + properties: + name: + type: string + description: Unique identifier for this `DocumentMetadata.objectType`. If omitted, this definition is used as a default for all unmatched `DocumentMetadata.objectType`s in this datasource. + displayLabel: + type: string + description: The user-friendly name of the object for display. + docCategory: + type: string + enum: + - UNCATEGORIZED + - TICKETS + - CRM + - PUBLISHED_CONTENT + - COLLABORATIVE_CONTENT + - QUESTION_ANSWER + - MESSAGING + - CODE_REPOSITORY + - CHANGE_MANAGEMENT + - PEOPLE + - EMAIL + - SSO + - ATS + - KNOWLEDGE_HUB + - EXTERNAL_SHORTCUT + - ENTITY + - CALENDAR + - AGENTS + - AI_CONVERSATION + - AI_ARTIFACT + description: The document category of this object type. + propertyDefinitions: + type: array + items: + $ref: '#/components/schemas/PropertyDefinition' + propertyGroups: + type: array + items: + $ref: '#/components/schemas/PropertyGroup' + description: A list of `PropertyGroup`s belonging to this object type, which will group properties to be displayed together in the UI. + summarizable: + type: boolean + description: Whether or not the object is summarizable + description: The definition for an `DocumentMetadata.objectType` within a datasource. + CanonicalizingRegexType: + properties: + matchRegex: + type: string + description: Regular expression to match to an arbitrary string. + rewriteRegex: + type: string + description: Regular expression to transform into a canonical string. + description: Regular expression to apply to an arbitrary string to transform it into a canonical string. + SharedDatasourceConfigNoInstance: + type: object + properties: + name: + type: string + description: Unique identifier of datasource instance to which this config applies. + displayName: + type: string + description: The user-friendly instance label to display. If omitted, falls back to the title-cased `name`. + datasourceCategory: + type: string + enum: + - UNCATEGORIZED + - TICKETS + - CRM + - PUBLISHED_CONTENT + - COLLABORATIVE_CONTENT + - QUESTION_ANSWER + - MESSAGING + - CODE_REPOSITORY + - CHANGE_MANAGEMENT + - PEOPLE + - EMAIL + - SSO + - ATS + - KNOWLEDGE_HUB + - EXTERNAL_SHORTCUT + - ENTITY + - CALENDAR + - AGENTS + - AI_CONVERSATION + - AI_ARTIFACT + description: The type of this datasource. It is an important signal for relevance and must be specified and cannot be UNCATEGORIZED. Please refer to [this](https://developers.glean.com/docs/indexing_api_datasource_category/) for more details. + default: UNCATEGORIZED + urlRegex: + type: string + description: 'Regular expression that matches URLs of documents of the datasource instance. The behavior for multiple matches is non-deterministic. **Note: `urlRegex` is a required field for non-entity datasources, but not required if the datasource is used to push custom entities (ie. datasources where isEntityDatasource is false). Please add a regex as specific as possible to this datasource instance.**' + example: https://example-company.datasource.com/.* + iconUrl: + type: string + description: The URL to an image to be displayed as an icon for this datasource instance. Must have a transparency mask. SVG are recommended over PNG. Public, scio-authenticated and Base64 encoded data URLs are all valid (but not third-party-authenticated URLs). + objectDefinitions: + type: array + items: + $ref: '#/components/schemas/ObjectDefinition' + description: The list of top-level `objectType`s for the datasource. + suggestionText: + type: string + description: Example text for what to search for in this datasource + homeUrl: + type: string + description: The URL of the landing page for this datasource instance. Should point to the most useful page for users, not the company marketing page. + crawlerSeedUrls: + type: array + items: + type: string + description: This only applies to WEB_CRAWL and BROWSER_CRAWL datasources. Defines the seed URLs for crawling. + iconDarkUrl: + type: string + description: The URL to an image to be displayed as an icon for this datasource instance in dark mode. Must have a transparency mask. SVG are recommended over PNG. Public, scio-authenticated and Base64 encoded data URLs are all valid (but not third-party-authenticated URLs). + hideBuiltInFacets: + type: array + items: + type: string + enum: + - TYPE + - TAG + - AUTHOR + - OWNER + description: List of built-in facet types that should be hidden for the datasource. + canonicalizingURLRegex: + type: array + items: + $ref: '#/components/schemas/CanonicalizingRegexType' + description: A list of regular expressions to apply to an arbitrary URL to transform it into a canonical URL for this datasource instance. Regexes are to be applied in the order specified in this list. + canonicalizingTitleRegex: + type: array + items: + $ref: '#/components/schemas/CanonicalizingRegexType' + description: A list of regular expressions to apply to an arbitrary title to transform it into a title that will be displayed in the search results + redlistTitleRegex: + type: string + description: A regex that identifies titles that should not be indexed + connectorType: + type: string + allOf: + - $ref: '#/components/schemas/ConnectorType' + deprecated: false + quicklinks: + type: array + items: + $ref: '#/components/schemas/Quicklink' + description: List of actions for this datasource instance that will show up in autocomplete and app card, e.g. "Create new issue" for jira + renderConfigPreset: + type: string + description: The name of a render config to use for displaying results from this datasource. Any well known datasource name may be used to render the same as that source, e.g. `web` or `gdrive`. Please refer to [this](https://developers.glean.com/docs/rendering_search_results/) for more details + aliases: + type: array + items: + type: string + description: Aliases that can be used as `app` operator-values. + isOnPrem: + type: boolean + description: Whether or not this datasource is hosted on-premise. + trustUrlRegexForViewActivity: + type: boolean + description: True if browser activity is able to report the correct URL for VIEW events. Set this to true if the URLs reported by Chrome are constant throughout each page load. Set this to false if the page has Javascript that modifies the URL during or after the load. + default: true + includeUtmSource: + type: boolean + description: If true, a utm_source query param will be added to outbound links to this datasource within Glean. + stripFragmentInCanonicalUrl: + type: boolean + description: If true, the fragment part of the URL will be stripped when converting to a canonical url. + default: true + required: + - name + description: Structure describing shared config properties of a datasource with no multi-instance support. + CustomDatasourceConfig: + allOf: + - $ref: '#/components/schemas/SharedDatasourceConfigNoInstance' + - type: object + properties: + identityDatasourceName: + type: string + description: If the datasource uses another datasource for identity info, then the name of the datasource. The identity datasource must exist already and the datasource with identity info should have its visibility enabled for search results. + productAccessGroup: + type: string + description: If the datasource uses a specific product access group, then the name of that group. + isUserReferencedByEmail: + type: boolean + description: whether email is used to reference users in document ACLs and in group memberships. + isEntityDatasource: + type: boolean + description: True if this datasource is used to push custom entities. + default: false + isTestDatasource: + type: boolean + description: True if this datasource will be used for testing purpose only. Documents from such a datasource wouldn't have any effect on search rankings. + default: false + description: Structure describing config properties of a custom datasource + ShortcutProperties: + properties: + inputAlias: + type: string + description: link text following the viewPrefix as entered by the user. For example, if the view prefix is `go/` and the shortened URL is `go/abc`, then `abc` is the inputAlias. + description: + type: string + description: A short, plain text blurb to help people understand the intent of the shortcut. + destinationUrl: + type: string + format: url + description: destination URL for the shortcut. + createdBy: + type: string + description: Email of the user who created this shortcut. + createTime: + type: integer + format: int64 + description: The time the shortcut was created in epoch seconds. + updatedBy: + type: string + description: Email of the user who last updated this shortcut. + updateTime: + type: integer + format: int64 + description: The time the shortcut was updated in epoch seconds. + ExternalShortcut: + allOf: + - $ref: '#/components/schemas/ShortcutProperties' + - type: object + required: + - destinationUrl + - intermediateUrl + - createdBy + - inputAlias + properties: + title: + type: string + description: Title of the golink + intermediateUrl: + type: string + format: url + description: The URL from which the user is then redirected to the destination URL. + decayedVisitScore: + type: number + format: double + description: decayed visits score for ranking + editUrl: + type: string + format: url + description: The URL using which the user can access the edit page of the shortcut. + SharedDatasourceConfig: + allOf: + - $ref: '#/components/schemas/SharedDatasourceConfigNoInstance' + - type: object + properties: + datasourceName: + type: string + description: The (non-unique) name of the datasource of which this config is an instance, e.g. "jira". + instanceOnlyName: + type: string + description: The instance of the datasource for this particular config, e.g. "onprem". + instanceDescription: + type: string + description: A human readable string identifying this instance as compared to its peers, e.g. "github.com/askscio" or "github.askscio.com" + description: Structure describing shared config properties of the datasource (including multi-instance support) + IndexingShortcut: + allOf: + - $ref: '#/components/schemas/ShortcutProperties' + - type: object + required: + - destinationUrl + - createdBy + - inputAlias + properties: + unlisted: + type: boolean + description: Whether this shortcut is unlisted or not. Unlisted shortcuts are visible to author and admins only. + urlTemplate: + type: string + description: For variable shortcuts, contains the URL template; note, `destinationUrl` contains default URL. + SensitiveInfoType: + properties: + likelihoodThreshold: + type: string + enum: + - LIKELY + - VERY_LIKELY + - POSSIBLE + - UNLIKELY + - VERY_UNLIKELY + deprecated: true + x-glean-deprecated: + - id: d45039ec-d6f6-47ba-93b7-ab2307b07f84 + introduced: "2026-02-05" + kind: property + message: Field is deprecated + removal: "2026-10-15" + x-speakeasy-deprecation-message: "Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Field is deprecated" + infoType: + type: string + description: Text representation of an info-type to scan for. + TimeRange: + properties: + startTime: + type: string + format: date-time + description: start time of the time range, applicable for the CUSTOM type. + endTime: + type: string + format: date-time + description: end time of the time range, applicable for the CUSTOM type. + lastNDaysValue: + type: integer + format: int64 + description: The number of days to look back from the current time, applicable for the LAST_N_DAYS type. + InputOptions: + properties: + urlGreenlist: + type: array + items: + type: string + description: list of url regex matching documents excluded from report + deprecated: true + x-glean-deprecated: + id: e022aaa5-56e6-4b57-bca3-b11943da76a0 + introduced: "2026-02-05" + message: Field is deprecated + removal: "2026-10-15" + x-speakeasy-deprecation-message: "Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Field is deprecated" + datasourcesType: + type: string + enum: + - ALL + - CUSTOM + description: The types of datasource for which to run the report/policy. + datasources: + type: array + items: + type: string + description: List of datasources to consider for report. DEPRECATED - use datasourceInstances instead. + deprecated: true + x-glean-deprecated: + id: 97e35970-e0ed-4248-be13-2af8c22e7894 + introduced: "2026-02-05" + message: Use datasourceInstances instead + removal: "2026-10-15" + x-speakeasy-deprecation-message: "Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use datasourceInstances instead" + datasourceInstances: + type: array + items: + type: string + description: List of datasource instances to consider for report/policy. + timePeriodType: + type: string + enum: + - ALL_TIME + - PAST_YEAR + - PAST_DAY + - CUSTOM + - LAST_N_DAYS + description: Type of time period for which to run the report/policy. PAST_DAY is deprecated. + customTimeRange: + $ref: '#/components/schemas/TimeRange' + subsetDocIdsToScan: + type: array + items: + type: string + description: Subset of document IDs to scan. If empty, all documents matching other scope criteria will be scanned. + description: Controls which data-sources and what time-range to include in scans. + SharingOptions: + properties: + enabled: + type: boolean + deprecated: true + x-glean-deprecated: + id: e9260be6-209b-4ce2-a4b3-f7f22879dd86 + introduced: "2026-02-05" + message: Field is deprecated + removal: "2026-10-15" + x-speakeasy-deprecation-message: "Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Field is deprecated" + threshold: + type: integer + description: The minimum number of users the document is shared with. + thresholdEnabled: + type: boolean + description: Documents will be filtered based on how many people have access to it. + anyoneWithLinkEnabled: + type: boolean + deprecated: true + x-glean-deprecated: + id: 30646ced-e0db-43ef-8412-64a67c5d0f53 + introduced: "2026-02-05" + message: Field is deprecated + removal: "2026-10-15" + x-speakeasy-deprecation-message: "Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Field is deprecated" + anyoneInternalEnabled: + type: boolean + description: Only users within the organization can access the document. + anonymousAccessEnabled: + type: boolean + description: Anyone on the internet can access the document. + userAccessEnabled: + type: boolean + description: Enable user access check + userIds: + type: array + items: + type: string + description: Any one of the specified users can access the document. + description: Controls how "shared" a document must be to get picked for scans. + ExternalSharingOptions: + allOf: + - description: DEPRECATED - use `broadSharingOptions` instead. + - $ref: '#/components/schemas/SharingOptions' + - type: object + properties: + domainAccessEnabled: + type: boolean + deprecated: true + x-glean-deprecated: + id: 7c9e4a1d-3f8b-4e2c-9a5d-6b0f1c8e2d4a + introduced: "2026-02-05" + message: Use broadSharingOptions instead + removal: "2026-10-15" + x-speakeasy-deprecation-message: "Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use broadSharingOptions instead" + HotwordProximity: + properties: + windowBefore: + type: integer + windowAfter: + type: integer + Hotword: + properties: + regex: + type: string + proximity: + $ref: '#/components/schemas/HotwordProximity' + SensitiveExpression: + properties: + expression: + type: string + description: Sensitive word, phrase, or regular expression. + hotwords: + type: array + items: + $ref: '#/components/schemas/Hotword' + description: Zero to three proximate regular expressions necessary to consider an expression as sensitive content. + CustomSensitiveRuleType: + type: string + enum: + - REGEX + - TERM + - INFO_TYPE + description: Type of the custom sensitive rule. + CustomSensitiveRule: + properties: + id: + type: string + description: Identifier for the custom sensitive expression. + value: + type: string + description: The value of the custom sensitive rule. For REGEX type, this is the regex pattern; for TERM type, it is the term to match; and for INFO_TYPE type, it refers to predefined categories of sensitive content. See https://cloud.google.com/dlp/docs/infotypes-reference for available options. + type: + $ref: '#/components/schemas/CustomSensitiveRuleType' + likelihoodThreshold: + type: string + enum: + - LIKELY + - VERY_LIKELY + - POSSIBLE + - UNLIKELY + - VERY_UNLIKELY + description: Likelihood threshold for BUILT_IN infotypes (e.g., LIKELY, VERY_LIKELY). Only applicable for BUILT_IN type. + CustomSensitiveExpression: + properties: + id: + type: string + description: Identifier for the custom sensitive expression. + keyword: + $ref: '#/components/schemas/CustomSensitiveRule' + description: The keyword to match against. + evaluationExpression: + type: string + description: The expression to evaluate the keyword match. + SensitiveContentOptions: + properties: + sensitiveInfoTypes: + type: array + items: + $ref: '#/components/schemas/SensitiveInfoType' + description: DEPRECATED - use 'customSensitiveExpressions' instead. + deprecated: true + x-glean-deprecated: + id: 3497cb1c-f7aa-42d8-81b8-309c3adeed84 + introduced: "2026-02-05" + message: Use customSensitiveExpressions instead + removal: "2026-10-15" + x-speakeasy-deprecation-message: "Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use customSensitiveExpressions instead" + sensitiveTerms: + type: array + items: + $ref: '#/components/schemas/SensitiveExpression' + description: DEPRECATED - use 'customSensitiveExpressions' instead. + deprecated: true + x-glean-deprecated: + id: b0713b37-472e-4c29-80ba-6f5d6f2b449c + introduced: "2026-02-05" + message: Use customSensitiveExpressions instead + removal: "2026-10-15" + x-speakeasy-deprecation-message: "Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use customSensitiveExpressions instead" + sensitiveRegexes: + type: array + items: + $ref: '#/components/schemas/SensitiveExpression' + description: DEPRECATED - use 'customSensitiveExpressions' instead. + deprecated: true + x-glean-deprecated: + id: a26e1920-36b6-4c0f-981f-57b09a9ebce3 + introduced: "2026-02-05" + message: Use customSensitiveExpressions instead + removal: "2026-10-15" + x-speakeasy-deprecation-message: "Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use customSensitiveExpressions instead" + customSensitiveExpressions: + type: array + items: + $ref: '#/components/schemas/CustomSensitiveExpression' + description: list of custom sensitive expressions to consider as sensitive content + description: Options for defining sensitive content within scanned documents. + DlpPersonMetadata: + properties: + firstName: + type: string + description: The first name of the person + email: + type: string + description: The user's primary email address + DlpPerson: + properties: + name: + type: string + description: The display name. + obfuscatedId: + type: string + description: An opaque identifier that can be used to request metadata for a Person. + metadata: + $ref: '#/components/schemas/DlpPersonMetadata' + required: + - name + - obfuscatedId + description: Details about the person who created this report/policy. + AllowlistOptions: + properties: + terms: + type: array + items: + type: string + description: list of words and phrases to consider as whitelisted content + regexes: + type: array + items: + type: string + description: list of regular expressions whose matches are considered whitelisted content + description: Terms and regexes that are allow-listed during the scans. If any finding picked up by a rule exactly matches a term, or matches a regex, in the allow-list, it will not be counted as a violation. + DlpConfig: + properties: + version: + type: integer + format: int64 + description: Synonymous with report/policy id. + sensitiveInfoTypes: + type: array + items: + $ref: '#/components/schemas/SensitiveInfoType' + description: DEPRECATED - use `sensitiveContentOptions` instead. + deprecated: true + x-glean-deprecated: + id: 60d6d182-e9d0-448d-af75-137f68bbdcbf + introduced: "2026-02-05" + message: Use sensitiveContentOptions instead + removal: "2026-10-15" + x-speakeasy-deprecation-message: "Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use sensitiveContentOptions instead" + inputOptions: + $ref: '#/components/schemas/InputOptions' + description: Options for documents to include or exclude in a report + externalSharingOptions: + $ref: '#/components/schemas/ExternalSharingOptions' + description: DEPRECATED - use `broadSharingOptions` instead. + deprecated: true + x-glean-deprecated: + id: 6484ec17-a133-4176-b2ce-28e25b0e9065 + introduced: "2026-02-05" + message: Use broadSharingOptions instead + removal: "2026-10-15" + x-speakeasy-deprecation-message: "Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use broadSharingOptions instead" + broadSharingOptions: + $ref: '#/components/schemas/SharingOptions' + description: Options for defining documents to scan for sensitive content. + sensitiveContentOptions: + $ref: '#/components/schemas/SensitiveContentOptions' + description: Options for defining sensitive content within scanned documents. + reportName: + type: string + frequency: + type: string + description: Interval between scans. + createdBy: + $ref: '#/components/schemas/DlpPerson' + description: Person who created this report/policy. + createdAt: + type: string + format: iso-date-time + description: Timestamp at which this configuration was created. + redactQuote: + type: boolean + description: redact quote in findings of the report + autoHideDocs: + type: boolean + description: auto hide documents with findings in the report + allowlistOptions: + $ref: '#/components/schemas/AllowlistOptions' + description: Options for defining whitelisting content within scanned documents + description: Detailed configuration of what documents and sensitive content will be scanned. + DlpFrequency: + type: string + enum: + - ONCE + - DAILY + - WEEKLY + - CONTINUOUS + - NONE + description: Interval between scans. DAILY is deprecated. + x-include-enum-class-prefix: true + DlpReportStatus: + type: string + enum: + - ACTIVE + - INACTIVE + - CANCELLED + - NONE + description: The status of the policy/report. Only ACTIVE status will be picked for scans. + x-include-enum-class-prefix: true + DlpReport: + properties: + id: + type: string + name: + type: string + config: + $ref: '#/components/schemas/DlpConfig' + description: All details of the policy that is needed for a scan. + frequency: + $ref: '#/components/schemas/DlpFrequency' + description: The interval between scans. + status: + $ref: '#/components/schemas/DlpReportStatus' + description: The status of the policy. + createdBy: + $ref: '#/components/schemas/DlpPerson' + description: Person who created this report. + createdAt: + type: string + format: iso-date-time + description: Timestamp at which the policy was created. + lastUpdatedAt: + type: string + format: iso-date-time + description: Timestamp at which the policy was last updated. + autoHideDocs: + type: boolean + description: Auto hide documents with findings in the policy. + lastScanStatus: + type: string + enum: + - PENDING + - SUCCESS + - FAILURE + - CANCELLED + - CANCELLING + - ACTIVE + lastScanStartTime: + type: string + format: iso-date-time + description: The timestamp at which the report's last run/scan began. + updatedBy: + $ref: '#/components/schemas/DlpPerson' + description: Person who last updated this report. + description: Full policy information that will be used for scans. + GetDlpReportResponse: + properties: + report: + $ref: '#/components/schemas/DlpReport' + UpdateDlpReportRequest: + properties: + config: + $ref: '#/components/schemas/DlpConfig' + description: The new configuration the policy will follow if provided. + frequency: + $ref: '#/components/schemas/DlpFrequency' + description: The new frequency the policy will follow if provided. + status: + $ref: '#/components/schemas/DlpReportStatus' + description: The new status the policy will be updated to if provided. + autoHideDocs: + type: boolean + description: The new autoHideDoc boolean the policy will be updated to if provided. + reportName: + type: string + description: The new name of the policy if provided. + DlpSimpleResult: + type: string + enum: + - SUCCESS + - FAILURE + UpdateDlpReportResponse: + properties: + result: + $ref: '#/components/schemas/DlpSimpleResult' + ListDlpReportsResponse: + properties: + reports: + type: array + items: + $ref: '#/components/schemas/DlpReport' + CreateDlpReportRequest: + properties: + name: + type: string + description: Name of the policy being created. + config: + $ref: '#/components/schemas/DlpConfig' + description: Details on the configuration used in the scans. + frequency: + $ref: '#/components/schemas/DlpFrequency' + description: Interval between scans. + autoHideDocs: + type: boolean + description: Controls whether the policy should hide documents with violations. + CreateDlpReportResponse: + properties: + report: + $ref: '#/components/schemas/DlpReport' + UpdateDlpConfigRequest: + properties: + config: + $ref: '#/components/schemas/DlpConfig' + frequency: + type: string + description: Only "ONCE" is supported for reports. + UpdateDlpConfigResponse: + properties: + result: + $ref: '#/components/schemas/DlpSimpleResult' + reportId: + type: string + description: The id of the report that was just created and run. + ReportStatusResponse: + properties: + status: + type: string + enum: + - PENDING + - SUCCESS + - FAILURE + - CANCELLED + - CANCELLING + - ACTIVE + startTime: + type: string + format: iso-date-time + description: The timestamp at which the report's run/scan began. + DocumentVisibilityOverride: + properties: + docId: + type: string + override: + type: string + enum: + - NONE + - HIDE_FROM_ALL + - HIDE_FROM_GROUPS + - HIDE_FROM_ALL_EXCEPT_OWNER + description: The visibility-override state of the document. + GetDocumentVisibilityOverridesResponse: + properties: + visibilityOverrides: + type: array + items: + $ref: '#/components/schemas/DocumentVisibilityOverride' + UpdateDocumentVisibilityOverridesRequest: + properties: + visibilityOverrides: + type: array + items: + $ref: '#/components/schemas/DocumentVisibilityOverride' + DocumentVisibilityUpdateResult: + allOf: + - $ref: '#/components/schemas/DocumentVisibilityOverride' + - type: object + properties: + success: + type: boolean + description: Whether this document was successfully set to its desired visibility state. + UpdateDocumentVisibilityOverridesResponse: + properties: + results: + type: array + items: + $ref: '#/components/schemas/DocumentVisibilityUpdateResult' + description: The documents and whether their visibility was successfully updated. + DlpSeverity: + type: string + enum: + - UNSPECIFIED + - LOW + - MEDIUM + - HIGH + - FALSE_POSITIVE + description: Severity levels for DLP findings and analyses. FALSE_POSITIVE ranks below LOW and marks analyses that concluded every flagged entity is a detector false positive. + x-include-enum-class-prefix: true + DlpIssueStatus: + type: string + enum: + - OPEN + - CLOSED + - IN_PROGRESS + - RESOLVED + description: Status of a DLP issue. + x-include-enum-class-prefix: true + TimeRangeFilter: + properties: + timePeriodType: + type: string + enum: + - PAST_DAY + - PAST_WEEK + - PAST_MONTH + - PAST_YEAR + - CUSTOM + description: The type of time period for which to filter findings. + customTimeRange: + $ref: '#/components/schemas/TimeRange' + DlpFindingFilter: + properties: + infoType: + type: string + regexId: + type: string + reportId: + type: string + datasource: + type: string + visibility: + type: string + documentIds: + type: array + items: + type: string + severity: + $ref: '#/components/schemas/DlpSeverity' + documentSeverity: + type: array + items: + $ref: '#/components/schemas/DlpSeverity' + statuses: + type: array + items: + $ref: '#/components/schemas/DlpIssueStatus' + timeRange: + $ref: '#/components/schemas/TimeRangeFilter' + archived: + type: boolean + DlpIssueFilter: + properties: + searchText: + type: string + description: Text to search for in issue fields. + statuses: + type: array + items: + $ref: '#/components/schemas/DlpIssueStatus' + description: Filter by one or more issue statuses. + assigneeId: + type: string + description: Filter by a single assignee user ID. Deprecated; use assigneeIds. + deprecated: true + assigneeIds: + type: array + items: + type: string + description: Filter by one or more assignee user IDs. Use the sentinel value "UNASSIGNED" to match issues with no assignee. + infoType: + type: string + description: Filter by a single built-in info type. Deprecated; use infoTypes. + deprecated: true + infoTypes: + type: array + items: + type: string + description: Filter by one or more built-in info types. + regexId: + type: string + description: Filter by a single regex rule ID. Deprecated; use regexIds. + deprecated: true + regexIds: + type: array + items: + type: string + description: Filter by one or more regex rule IDs. + reportIds: + type: array + items: + type: string + description: Filter by one or more report/policy IDs. + docId: + type: string + datasource: + type: string + description: Filter by a single datasource. Deprecated; use datasources. + deprecated: true + datasources: + type: array + items: + type: string + description: Filter by one or more datasources. + visibility: + type: string + severities: + type: array + items: + $ref: '#/components/schemas/DlpSeverity' + description: Filter by one or more severity levels. + timeRange: + $ref: '#/components/schemas/TimeRangeFilter' + description: Filter for DLP issues. Includes document-level filters and issue-specific filters. + ExportInfo: + properties: + createdBy: + $ref: '#/components/schemas/DlpPerson' + description: person who triggered this export + startTime: + type: string + format: iso-date-time + description: Timestamp at which this export started. + endTime: + type: string + format: iso-date-time + description: Timestamp at which this export completed. + exportId: + type: string + description: The ID of the export + fileName: + type: string + description: The name of the file to export the findings to + exportType: + type: string + enum: + - FINDINGS + - DOCUMENTS + - ISSUES + description: The type of export to perform + filter: + $ref: '#/components/schemas/DlpFindingFilter' + description: The filters used to export the findings. Set for FINDINGS and DOCUMENTS exports. + issueFilter: + $ref: '#/components/schemas/DlpIssueFilter' + description: The filters used for ISSUES exports. + status: + type: string + enum: + - PENDING + - COMPLETED + - FAILED + description: The status of the export + exportSize: + type: integer + format: int64 + description: The size of the exported file in bytes + ListDlpFindingsExportsResponse: + properties: + exports: + type: array + items: + $ref: '#/components/schemas/ExportInfo' + DlpExportFindingsRequest: + properties: + exportType: + type: string + enum: + - FINDINGS + - DOCUMENTS + - ISSUES + description: The type of export to perform + filter: + $ref: '#/components/schemas/DlpFindingFilter' + issueFilter: + $ref: '#/components/schemas/DlpIssueFilter' + description: Filter for ISSUE-level exports. Used when exportType is ISSUES. + fileName: + type: string + description: The name of the file to export the findings to + fieldScope: + type: string + enum: + - ALL + - EXCLUDE_SENSITIVE + - CUSTOM + description: Controls which fields to include in the export + fieldsToExclude: + type: array + items: + type: string + description: List of field names to exclude from the export + ConfigurationValue: + type: object + properties: + value: + type: string + description: The configuration value as a string. Only one of value or valueList should be populated. + valueList: + type: array + items: + type: string + description: The configuration value as a list of strings. Only one of value or valueList should be populated. + description: A single configuration value, either a scalar or a list + ConfigurationValues: + type: object + additionalProperties: + $ref: '#/components/schemas/ConfigurationValue' + description: A map from configuration key names to their values + DatasourceInstanceConfiguration: + type: object + properties: + values: + $ref: '#/components/schemas/ConfigurationValues' + required: + - values + description: Configuration for a datasource instance + DatasourceConfigurationResponse: + type: object + properties: + configuration: + $ref: '#/components/schemas/DatasourceInstanceConfiguration' + required: + - configuration + description: | + The greenlisted configuration values for a datasource instance. Only keys that are exposed via the public API greenlist are included. + UpdateDatasourceConfigurationRequest: + type: object + properties: + configuration: + $ref: '#/components/schemas/DatasourceInstanceConfiguration' + required: + - configuration + description: | + Request to update greenlisted configuration values for a datasource instance. Only keys that are exposed via the public API greenlist may be set. + DatasourceCredentialStatus: + type: string + enum: + - VALID + - VALID_WITH_WARNINGS + - VALIDATING + - INVALID + - MISSING + description: | + Lifecycle state of the credentials installed for a datasource instance. Mirrors the internal admin Status enum so the handler can surface the same health signals already tracked today. EXPIRING_SOON is represented as VALID_WITH_WARNINGS (with detail in `message`); EXPIRED is surfaced as INVALID plus a non-null `expiresAt` in the past. + DatasourceCredentialStatusResponse: + type: object + properties: + status: + $ref: '#/components/schemas/DatasourceCredentialStatus' + lastRotatedAt: + type: string + format: date-time + description: When the credentials were last rotated. Omitted when not known. + expiresAt: + type: string + format: date-time + description: | + When the active credentials expire. Omitted when not known or not applicable to this credential type. + message: + type: string + description: Optional human-readable detail about the current credential status. + required: + - status + description: Status of the credentials currently installed for a datasource instance. + RotateDatasourceCredentialsRequest: + type: object + properties: + credentials: + $ref: '#/components/schemas/DatasourceInstanceConfiguration' + required: + - credentials + description: | + Request to rotate the credentials used by a datasource instance. Replaces the active credential material with the supplied values. + `credentials.values` must contain only keys recognized as credential material for the datasource type (for example `clientSecret` for OAuth, `apiToken` for API-token auth, `privateKey` for certificate auth). Unrecognized keys, or keys that correspond to non-credential configuration, cause a 400; use the configure endpoint to change non-credential config. + ChatRequestStream: + required: + - messages + properties: + saveChat: + type: boolean + description: >- + Save the current interaction as a Chat for the user to access and potentially continue later. + chatId: + type: string + description: >- + The id of the Chat that context should be retrieved from and messages added to. An empty id starts a new Chat, and the Chat is saved if saveChat is true. + messages: + type: array + description: >- + A list of chat messages, from most recent to least recent. It can be assumed that the first chat message in the list is the user's most recent query. + items: + $ref: '#/components/schemas/ChatMessage' + agentConfig: + $ref: '#/components/schemas/AgentConfig' + description: Describes the agent that will execute the request. + inclusions: + $ref: '#/components/schemas/ChatRestrictionFilters' + description: >- + A list of filters which only allows chat to access certain content. + exclusions: + $ref: '#/components/schemas/ChatRestrictionFilters' + description: >- + A list of filters which disallows chat from accessing certain content. If content is in both inclusions and exclusions, it'll be excluded. + timeoutMillis: + type: integer + description: >- + Timeout in milliseconds for the request. A `408` error will be returned if handling the request takes longer. + example: 30000 + applicationId: + type: string + description: >- + The ID of the application this request originates from, used to determine the configuration of underlying chat processes. This should correspond to the ID set during admin setup. If not specified, the default chat experience will be used. + stream: + type: boolean + description: >- + If set, response lines will be streamed one-by-one as they become available. Each will be a ChatResponse, formatted as JSON, and separated by a new line. If false, the entire response will be returned at once. Note that if this is set and the model being used does not support streaming, the model's response will not be streamed, but other messages from the endpoint still will be. + default: true + CustomMetadataPropertyDefinition: + type: object + description: The definition for a key within a Custom Metadata schema. Only the fields applicable to Custom Metadata are exposed. + properties: + name: + type: string + description: The name of the metadata key. + propertyType: + type: string + enum: + - TEXT + - PICKLIST + - TEXTLIST + - MULTIPICKLIST + description: The type of metadata key. This governs the search and faceting behavior. + skipIndexing: + type: boolean + description: If true then the property will not be indexed for retrieval and ranking. + required: + - name + - propertyType + responses: + PlatformBadRequest: + description: Invalid request (malformed JSON, invalid parameter values, unknown fields). + content: + application/problem+json: + schema: + $ref: "#/components/schemas/PlatformProblemDetail" + PlatformUnauthorized: + description: Missing or invalid authentication token. + content: + application/problem+json: + schema: + $ref: "#/components/schemas/PlatformProblemDetail" + PlatformForbidden: + description: Token valid but lacks permission for the requested operation. + content: + application/problem+json: + schema: + $ref: "#/components/schemas/PlatformProblemDetail" + PlatformNotFound: + description: Resource not found. + content: + application/problem+json: + schema: + $ref: "#/components/schemas/PlatformProblemDetail" + PlatformRequestTimeout: + description: Backend did not respond within the timeout window. + content: + application/problem+json: + schema: + $ref: "#/components/schemas/PlatformProblemDetail" + PlatformRequestTooLarge: + description: Request body exceeds the maximum allowed size. + content: + application/problem+json: + schema: + $ref: "#/components/schemas/PlatformProblemDetail" + PlatformTooManyRequests: + description: Rate limit exceeded. Includes Retry-After header. + content: + application/problem+json: + schema: + $ref: "#/components/schemas/PlatformProblemDetail" + PlatformInternalServerError: + description: Unexpected server-side failure. + content: + application/problem+json: + schema: + $ref: "#/components/schemas/PlatformProblemDetail" + PlatformServiceUnavailable: + description: Backend temporarily unavailable. + content: + application/problem+json: + schema: + $ref: "#/components/schemas/PlatformProblemDetail" + PlatformConflict: + description: Request conflicts with current state of the resource. + content: + application/problem+json: + schema: + $ref: "#/components/schemas/PlatformProblemDetail" + PlatformUnprocessableEntity: + description: Syntactically valid but semantically incorrect request. + content: + application/problem+json: + schema: + $ref: "#/components/schemas/PlatformProblemDetail" + SuccessResponse: + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/SuccessResponse' + BadRequestError: + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorInfoResponse' + UnauthorizedError: + description: Not Authorized + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorInfoResponse' + NotFoundError: + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorInfoResponse' + TooManyRequestsError: + description: Too Many Requests + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorInfoResponse' + InternalServerError: + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorInfoResponse' + parameters: + TriggerWebhookId: + name: webhook-id + in: header + required: true + description: Opaque delivery ID. It remains stable across retries of the same event and can be used as an idempotency key. + schema: + type: string + minLength: 1 + example: msg_test_123 + TriggerWebhookTimestamp: + name: webhook-timestamp + in: header + required: true + description: Unix time in seconds when this delivery attempt was signed. + schema: + type: integer + format: int64 + example: 1700000000 + TriggerWebhookSignature: + name: webhook-signature + in: header + required: true + description: | + `v1,` followed by the standard Base64-encoded HMAC-SHA256 digest. To verify it, remove the + `whsec_` prefix from `signing_secret`, standard-Base64-decode the remainder, and use those + bytes as the HMAC key. Sign the UTF-8 bytes of `webhook-id + "." + webhook-timestamp + "." + + raw request body`. Verify the signature against the unmodified request body before + parsing JSON, and use a constant-time comparison. + + Fixed test vector (the raw body is one line with no trailing newline): + + - decoded signing key bytes (UTF-8; test only): `test_webhook_signing_secret_1234` + - `webhook-id`: `81e6dc877ac553ef96ecbc939c1e46431159491991ba55cd131fbd0e3746c6bc` + - `webhook-timestamp`: `1700000000` + - `raw request body`: `{"version":"1","trigger_id":"trigger_test_123","datasource":"GITHUB","reason":"REVIEW_REQUESTED","doc_type":"pull","event_type":"DOCUMENT_CHANGE","doc_id":"GITHUB_pull_123","view_url":"https://github.com/acme/payments-api/pull/123","title":"Add retry backoff to the crawler","event_time":"2025-04-23T11:00:00Z"}` + - `webhook-signature`: `v1,JqvHW0dwAOSLndiwQdXLUS/P+2RvOO8x4sOWgA/w0Gs=` + schema: + type: string + pattern: ^v1,[A-Za-z0-9+/=]+$ + example: v1,xxx + locale: + name: locale + in: query + description: 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`. + required: false + schema: + type: string + timezoneOffset: + name: timezoneOffset + in: query + description: The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. + schema: + type: integer + datasourceId: + name: datasourceId + in: path + description: The datasource type identifier (e.g. o365sharepoint) + required: true + schema: + type: string + example: o365sharepoint + instanceId: + name: instanceId + in: path + description: The datasource instance identifier + required: true + schema: + type: string + example: o365sharepoint_abc123 + datasourceInstanceId: + name: datasourceInstanceId + in: path + description: The full datasource instance identifier (e.g. o365sharepoint_abc123) + required: true + schema: + type: string + example: o365sharepoint_abc123 tags: - - name: Datasources - description: Manage datasources. - - name: Documents - description: Index documents from a datasource. - - name: People - description: Index employee people data. - - name: Permissions - description: Manage users, groups and membership. - - name: Authentication - description: Manage indexing API tokens. + - name: Datasources + description: Manage datasources. + - name: Documents + description: Index documents from a datasource. + - name: People + description: Index employee people data. + - name: Permissions + description: Manage users, groups and membership. + - name: Authentication + description: Manage indexing API tokens. +x-tagGroups: + - name: Search & Generative AI + tags: + - Chat + - Search + - Summarize + - Tools + - name: Connected Content + tags: + - Calendar + - Documents + - Entities + - Messages + - name: User Generated Content + tags: + - Announcements + - Answers + - Collections + - Displayable Lists + - Images + - Pins + - Shortcuts + - Verification + - name: General + tags: + - Activity + - Authentication + - Insights + - User diff --git a/.speakeasy/tests.arazzo.yaml b/.speakeasy/tests.arazzo.yaml index 22679c7e..17668422 100644 --- a/.speakeasy/tests.arazzo.yaml +++ b/.speakeasy/tests.arazzo.yaml @@ -158417,7 +158417,7 @@ workflows: condition: | {} type: simple - x-speakeasy-test-group: Governance + x-speakeasy-test-group: findings x-speakeasy-test-rebuild: true - workflowId: downloadfindingsexport steps: @@ -158434,5 +158434,1037 @@ workflows: condition: | "" type: simple - x-speakeasy-test-group: Governance + x-speakeasy-test-group: findings + x-speakeasy-test-rebuild: true + - workflowId: checkdatasourceauth + steps: + - stepId: test + operationId: checkdatasourceauth + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == application/json + - context: $response.body + condition: | + {"unauthorizedDatasourceInstances":[{"datasourceInstance":"slack_0","displayName":"Slack"}]} + type: simple + x-speakeasy-test-group: client_authentication + x-speakeasy-test-rebuild: true + - workflowId: getDatasourceInstanceConfiguration + steps: + - stepId: test + operationId: getDatasourceInstanceConfiguration + parameters: + - name: datasourceId + in: path + value: o365sharepoint + - name: instanceId + in: path + value: o365sharepoint_abc123 + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == application/json + - context: $response.body + condition: | + {"configuration":{"values":{"key":{}}}} + type: simple + x-speakeasy-test-group: client_datasources + x-speakeasy-test-rebuild: true + - workflowId: updateDatasourceInstanceConfiguration + steps: + - stepId: test + operationId: updateDatasourceInstanceConfiguration + parameters: + - name: datasourceId + in: path + value: o365sharepoint + - name: instanceId + in: path + value: o365sharepoint_abc123 + requestBody: + contentType: application/json + payload: + configuration: + values: {} + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == application/json + - context: $response.body + condition: | + {"configuration":{"values":{}}} + type: simple + x-speakeasy-test-group: client_datasources + x-speakeasy-test-rebuild: true + - workflowId: getChatFile + steps: + - stepId: test + operationId: getChatFile + parameters: + - name: fileId + in: path + value: + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == application/octet-stream + - context: $response.body + condition: | + "x-file: example.file" + type: simple + x-speakeasy-test-group: client_chat + x-speakeasy-test-rebuild: true + - workflowId: getPersonPhoto + steps: + - stepId: test + operationId: getPersonPhoto + parameters: + - name: person_id + in: path + value: + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == image/png + - context: $response.body + condition: | + "x-file: example.file" + type: simple + x-speakeasy-test-group: entities + x-speakeasy-test-rebuild: true + - workflowId: getActionPackAuthStatus + steps: + - stepId: test + operationId: getActionPackAuthStatus + parameters: + - name: actionPackId + in: path + value: + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == application/json + - context: $response.body + condition: | + {"actionPack":{"authenticated":true,"authType":"AUTH_USER_OAUTH"}} + type: simple + x-speakeasy-test-group: tools + x-speakeasy-test-rebuild: true + - workflowId: authorizeActionPack + steps: + - stepId: test + operationId: authorizeActionPack + parameters: + - name: actionPackId + in: path + value: + requestBody: + contentType: application/json + payload: + returnUrl: https://merry-allocation.org/ + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == application/json + - context: $response.body + condition: | + {"redirectUrl":"https://unconscious-diversity.net"} + type: simple + x-speakeasy-test-group: tools + x-speakeasy-test-rebuild: true + - workflowId: put_/rest/api/index/document/{docId}/custom-metadata/{groupName} + steps: + - stepId: test + operationId: put_/rest/api/index/document/{docId}/custom-metadata/{groupName} + parameters: + - name: docId + in: path + value: + - name: groupName + in: path + value: + requestBody: + contentType: application/json + payload: + customMetadata: [] + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == application/json + - context: $response.body + condition: | + {"success":true} + type: simple + x-speakeasy-test-group: customMetadata + x-speakeasy-test-rebuild: true + - workflowId: delete_/rest/api/index/document/{docId}/custom-metadata/{groupName} + steps: + - stepId: test + operationId: delete_/rest/api/index/document/{docId}/custom-metadata/{groupName} + parameters: + - name: docId + in: path + value: + - name: groupName + in: path + value: + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == application/json + - context: $response.body + condition: | + {"success":true} + type: simple + x-speakeasy-test-group: customMetadata + x-speakeasy-test-rebuild: true + - workflowId: get_/rest/api/index/custom-metadata/schema/{groupName} + steps: + - stepId: test + operationId: get_/rest/api/index/custom-metadata/schema/{groupName} + parameters: + - name: groupName + in: path + value: + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == application/json + - context: $response.body + condition: | + {"metadataKeys":[]} + type: simple + x-speakeasy-test-group: customMetadata + x-speakeasy-test-rebuild: true + - workflowId: put_/rest/api/index/custom-metadata/schema/{groupName} + steps: + - stepId: test + operationId: put_/rest/api/index/custom-metadata/schema/{groupName} + parameters: + - name: groupName + in: path + value: + requestBody: + contentType: application/json + payload: + metadataKeys: [] + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == application/json + - context: $response.body + condition: | + {"success":true} + type: simple + x-speakeasy-test-group: customMetadata + x-speakeasy-test-rebuild: true + - workflowId: delete_/rest/api/index/custom-metadata/schema/{groupName} + steps: + - stepId: test + operationId: delete_/rest/api/index/custom-metadata/schema/{groupName} + parameters: + - name: groupName + in: path + value: + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == application/json + - context: $response.body + condition: | + {"success":true} + type: simple + x-speakeasy-test-group: customMetadata + x-speakeasy-test-rebuild: true + - workflowId: getDatasourceCredentialStatus + steps: + - stepId: test + operationId: getDatasourceCredentialStatus + parameters: + - name: datasourceInstanceId + in: path + value: o365sharepoint_abc123 + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == application/json + - context: $response.body + condition: | + {"status":"VALID"} + type: simple + x-speakeasy-test-group: client_datasources + x-speakeasy-test-rebuild: true + - workflowId: rotateDatasourceCredentials + steps: + - stepId: test + operationId: rotateDatasourceCredentials + parameters: + - name: datasourceInstanceId + in: path + value: o365sharepoint_abc123 + requestBody: + contentType: application/json + payload: + credentials: + values: + key: {} + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == application/json + - context: $response.body + condition: | + {"status":"MISSING"} + type: simple + x-speakeasy-test-group: client_datasources + x-speakeasy-test-rebuild: true + - workflowId: createAgent + steps: + - stepId: test + operationId: createAgent + requestBody: + contentType: application/json + payload: {} + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == application/json + - context: $response.body + condition: | + {"workflow":{"author":{"name":"George Clooney","obfuscatedId":"abc123"},"lastDraftSavedBy":{"name":"George Clooney","obfuscatedId":"abc123"},"lastUpdatedBy":{"name":"George Clooney","obfuscatedId":"abc123"}}} + type: simple + x-speakeasy-test-group: client_agents + x-speakeasy-test-rebuild: true + - workflowId: platform-agents-search + steps: + - stepId: test + operationId: platform-agents-search + requestBody: + contentType: application/json + payload: + name: HR Policy Agent + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == application/json + - context: $response.body + condition: | + {"agents":[],"request_id":""} + type: simple + x-speakeasy-test-group: agents + x-speakeasy-test-rebuild: true + - workflowId: platform-agents-get + steps: + - stepId: test + operationId: platform-agents-get + parameters: + - name: agent_id + in: path + value: + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == application/json + - context: $response.body + condition: | + {"agent":{"agent_id":"mho4lwzylcozgoc2","name":"HR Policy Agent","capabilities":{}},"request_id":""} + type: simple + x-speakeasy-test-group: agents + x-speakeasy-test-rebuild: true + - workflowId: platform-agents-get-schemas + steps: + - stepId: test + operationId: platform-agents-get-schemas + parameters: + - name: agent_id + in: path + value: + - name: include_tools + in: query + value: false + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == application/json + - context: $response.body + condition: | + {"agent_id":"","input_schema":{},"output_schema":{"key":"","key1":"","key2":""},"request_id":""} + type: simple + x-speakeasy-test-group: agents + x-speakeasy-test-rebuild: true + - workflowId: platform-agents-create-run + steps: + - stepId: test + operationId: platform-agents-create-run + parameters: + - name: agent_id + in: path + value: + requestBody: + contentType: application/json + payload: + messages: + - content: [] + role: USER + stream: false + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == application/json + - context: $response.body + condition: | + {"run":{"agent_id":"","messages":[{"role":"USER","content":[]}],"status":"error"},"messages":[{"role":"USER","content":[]}],"request_id":""} + type: simple + x-speakeasy-test-group: agents + x-speakeasy-test-rebuild: true + - workflowId: platform-search + steps: + - stepId: test + operationId: platform-search + requestBody: + contentType: application/json + payload: + datasources: + - confluence + - google_drive + filters: + - field: type + values: + - spreadsheet + - presentation + page_size: 10 + query: quarterly planning 2026 + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == application/json + - context: $response.body + condition: | + {"results":[],"has_more":false,"next_cursor":"","request_id":"","warnings":[]} + type: simple + x-speakeasy-test-group: search + x-speakeasy-test-rebuild: true + - workflowId: getToolServerAuthStatus + steps: + - stepId: test + operationId: getToolServerAuthStatus + parameters: + - name: serverId + in: path + value: + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == application/json + - context: $response.body + condition: | + {"authStatus":"AUTHORIZED","authType":"AUTH_NONE"} + type: simple + x-speakeasy-test-group: tools + x-speakeasy-test-rebuild: true + - workflowId: authorizeToolServer + steps: + - stepId: test + operationId: authorizeToolServer + parameters: + - name: serverId + in: path + value: + requestBody: + contentType: application/json + payload: + returnUrl: https://lucky-disadvantage.com + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == application/json + - context: $response.body + condition: | + {"authorizationUrl":"https://shocked-casket.name/"} + type: simple + x-speakeasy-test-group: tools + x-speakeasy-test-rebuild: true + - workflowId: platform-skills-create + steps: + - stepId: test + operationId: platform-skills-create + requestBody: + contentType: multipart/form-data + payload: + file: 'x-file: example.file' + successCriteria: + - condition: $statusCode == 200 + - 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":""} + type: simple + x-speakeasy-test-group: skills + x-speakeasy-test-rebuild: true + - workflowId: platform-skills-list + steps: + - stepId: test + operationId: platform-skills-list + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == application/json + - context: $response.body + condition: | + {"skills":[],"has_more":true,"next_cursor":"","request_id":""} + type: simple + x-speakeasy-test-group: skills + x-speakeasy-test-rebuild: true + - workflowId: platform-skills-validate + steps: + - stepId: test + operationId: platform-skills-validate + requestBody: + contentType: multipart/form-data + payload: + file: 'x-file: example.file' + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == application/json + - context: $response.body + condition: | + {"metadata":{"display_name":"Hattie10","description":"overburden actual impact"},"files":[],"warnings":[],"request_id":""} + type: simple + x-speakeasy-test-group: skills + x-speakeasy-test-rebuild: true + - workflowId: platform-skills-get + steps: + - stepId: test + operationId: platform-skills-get + parameters: + - name: skill_id + in: path + value: + successCriteria: + - condition: $statusCode == 200 + - 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":""} + type: simple + x-speakeasy-test-group: skills + x-speakeasy-test-rebuild: true + - workflowId: platform-skills-get-content + steps: + - stepId: test + operationId: platform-skills-get-content + parameters: + - name: skill_id + in: path + value: + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == application/octet-stream + - context: $response.body + condition: | + "x-file: example.file" + type: simple + x-speakeasy-test-group: skills + x-speakeasy-test-rebuild: true + - workflowId: platform-skills-create-version + steps: + - stepId: test + operationId: platform-skills-create-version + parameters: + - name: skill_id + in: path + value: + requestBody: + contentType: multipart/form-data + payload: + file: 'x-file: example.file' + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == application/json + - context: $response.body + condition: | + {"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":""} + type: simple + x-speakeasy-test-group: skills + x-speakeasy-test-rebuild: true + - workflowId: platform-skills-list-versions + steps: + - stepId: test + operationId: platform-skills-list-versions + parameters: + - name: skill_id + in: path + value: + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == application/json + - context: $response.body + condition: | + {"versions":[],"has_more":false,"next_cursor":"","request_id":""} + type: simple + x-speakeasy-test-group: skills + x-speakeasy-test-rebuild: true + - workflowId: platform-skills-get-version + steps: + - stepId: test + operationId: platform-skills-get-version + parameters: + - name: skill_id + in: path + value: + - name: version + in: path + value: 495658 + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == application/json + - context: $response.body + condition: | + {"version":{"skill_id":"","version":81632,"minor_version":646412,"is_latest":false,"created_by":{"name":""},"created_at":"2025-02-17T18:47:57.025Z","updated_at":"2024-12-19T03:10:35.770Z"},"request_id":""} + type: simple + x-speakeasy-test-group: skills + x-speakeasy-test-rebuild: true + - workflowId: platform-skills-get-version-content + steps: + - stepId: test + operationId: platform-skills-get-version-content + parameters: + - name: skill_id + in: path + value: + - name: version + in: path + value: 117760 + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == application/octet-stream + - context: $response.body + condition: | + "x-file: example.file" + type: simple + x-speakeasy-test-group: skills + x-speakeasy-test-rebuild: true + - workflowId: post_/rest/api/index/submissions/{datasourceInstance}/{type} + steps: + - stepId: test + operationId: post_/rest/api/index/submissions/{datasourceInstance}/{type} + parameters: + - name: datasourceInstance + in: path + value: + - name: type + in: path + value: + requestBody: + contentType: application/json + payload: + key: + key1: + key2: + successCriteria: + - condition: $statusCode == 202 + - condition: $response.header.Content-Type == application/json + - context: $response.body + condition: | + {"requestId":""} + type: simple + x-speakeasy-test-group: indexing_datasources + x-speakeasy-test-rebuild: true + - workflowId: platform-chat-create + steps: + - stepId: test + operationId: platform-chat-create + requestBody: + contentType: application/json + payload: + input: + store: true + stream: false + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == application/json + - context: $response.body + condition: | + {"id":"","object":"RESPONSE","created_at":"2026-05-19T05:32:52.505Z","status":"COMPLETED","output":[{"type":"MESSAGE","role":"ASSISTANT","content":[{"type":"OUTPUT_TEXT","text":""}]}],"store":false,"request_id":""} + type: simple + x-speakeasy-test-group: chat_SDK + x-speakeasy-test-rebuild: true + - workflowId: platform-skills-import + steps: + - stepId: test + operationId: platform-skills-import + requestBody: + contentType: application/json + payload: + source_urls: + - + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == application/json + - context: $response.body + condition: | + {"skills":[],"request_id":""} + type: simple + x-speakeasy-test-group: skills + x-speakeasy-test-rebuild: true + - workflowId: platform-skills-preview-source + steps: + - stepId: test + operationId: platform-skills-preview-source + requestBody: + contentType: application/json + payload: + source_url: https://ugly-information.name/ + stream: false + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == application/json + - context: $response.body + condition: | + {"skills":[],"failures":[{"source_url":"https://slimy-availability.org","code":"SKILL_FETCH_FAILED","detail":""}],"request_id":""} + type: simple + x-speakeasy-test-group: skills + x-speakeasy-test-rebuild: true + - workflowId: platform-skills-update + steps: + - stepId: test + operationId: platform-skills-update + parameters: + - name: skill_id + in: path + value: + requestBody: + contentType: application/json + payload: + status: DISABLED + successCriteria: + - condition: $statusCode == 200 + - 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":""} + type: simple + x-speakeasy-test-group: skills + x-speakeasy-test-rebuild: true + - workflowId: platform-skills-sync + steps: + - stepId: test + operationId: platform-skills-sync + parameters: + - name: skill_id + in: path + value: + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == application/json + - context: $response.body + condition: | + {"sync_status":"UP_TO_DATE","commit_sha":"","updated":false,"request_id":""} + type: simple + x-speakeasy-test-group: skills + x-speakeasy-test-rebuild: true + - workflowId: platform-search-filters + steps: + - stepId: test + operationId: platform-search-filters + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == application/json + - context: $response.body + condition: | + {"datasources":[],"request_id":""} + type: simple + x-speakeasy-test-group: search + x-speakeasy-test-rebuild: true + - workflowId: importAgent + steps: + - stepId: test + operationId: importAgent + parameters: + - name: agent_id + in: path + value: + requestBody: + contentType: multipart/form-data + payload: + bundle: 'x-file: example.file' + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == application/json + - context: $response.body + condition: | + {"workflowResult":{"workflow":{"author":{"name":"George Clooney","obfuscatedId":"abc123"},"lastDraftSavedBy":{"name":"George Clooney","obfuscatedId":"abc123"},"lastUpdatedBy":{"name":"George Clooney","obfuscatedId":"abc123"}}}} + type: simple + x-speakeasy-test-group: client_agents + x-speakeasy-test-rebuild: true + - workflowId: getToolServerTools + steps: + - stepId: test + operationId: getToolServerTools + parameters: + - name: serverId + in: path + value: + - name: toolNames + in: query + value: + - + - + - + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == application/json + - context: $response.body + condition: | + {"tools":[{"serverId":"","name":""}]} + type: simple + x-speakeasy-test-group: tools + x-speakeasy-test-rebuild: true + - workflowId: post_/api/index/v1/debug/{datasource}/document + steps: + - stepId: test + operationId: post_/api/index/v1/debug/{datasource}/document + parameters: + - name: datasource + in: path + value: + requestBody: + contentType: application/json + payload: + docId: art123 + objectType: Article + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == application/json + - context: $response.body + condition: | + {"status":{"uploadStatus":"UPLOADED","lastUploadedAt":"2021-08-06T17:58:01.000Z","indexingStatus":"INDEXED","lastIndexedAt":"2021-08-06T17:58:01.000Z","permissionIdentityStatus":"UPLOADED"}} + type: simple + x-speakeasy-test-group: indexing_documents + x-speakeasy-test-rebuild: true + - workflowId: post_/api/index/v1/debug/{datasource}/documents + steps: + - stepId: test + operationId: post_/api/index/v1/debug/{datasource}/documents + parameters: + - name: datasource + in: path + value: + requestBody: + contentType: application/json + payload: + debugDocuments: [] + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == application/json + - context: $response.body + condition: | + {"documentStatuses":[{"debugInfo":{"status":{"uploadStatus":"UPLOADED","lastUploadedAt":"2021-08-06T17:58:01.000Z","indexingStatus":"INDEXED","lastIndexedAt":"2021-08-06T17:58:01.000Z","permissionIdentityStatus":"UPLOADED"}}}]} + type: simple + x-speakeasy-test-group: indexing_documents + x-speakeasy-test-rebuild: true + - workflowId: post_/api/index/v1/debug/{datasource}/document/events + steps: + - stepId: test + operationId: post_/api/index/v1/debug/{datasource}/document/events + parameters: + - name: datasource + in: path + value: + requestBody: + contentType: application/json + payload: + docId: art123 + maxEvents: 50 + objectType: Article + startDate: "2025-05-01" + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == application/json + - context: $response.body + condition: | + {"lifeCycleEvents":[{"event":"INDEXED","timestamp":"2021-08-06T17:58:01.000Z"}]} + type: simple + x-speakeasy-test-group: indexing_documents + x-speakeasy-test-rebuild: true + - workflowId: post_/api/index/v1/debug/{datasource}/user + steps: + - stepId: test + operationId: post_/api/index/v1/debug/{datasource}/user + parameters: + - name: datasource + in: path + value: + requestBody: + contentType: application/json + payload: + email: u1@foo.com + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == application/json + - context: $response.body + condition: | + {"status":{"isActiveUser":true,"uploadStatus":"UPLOADED","lastUploadedAt":"2021-08-06T17:58:01.000Z"}} + type: simple + x-speakeasy-test-group: people + x-speakeasy-test-rebuild: true + - workflowId: platform-triggers-create + steps: + - stepId: test + operationId: platform-triggers-create + requestBody: + contentType: application/json + payload: + delivery: + auth: + secret: secret_test_123 + type: BEARER + webhook_url: https://customer.app/webhook + description: Reviews I am tagged on, sent to my team's review channel + inputs: + repository: acme/payments-api + preset_id: GITHUB_1 + successCriteria: + - condition: $statusCode == 201 + - condition: $response.header.Content-Type == application/json + - context: $response.body + condition: | + {"trigger":{"trigger_id":"trigger_test_123","preset_id":"GITHUB_1","description":"Reviews I am tagged on, sent to my team's review channel","status":"ENABLED","inputs":{"repository":"acme/payments-api"},"delivery":{"webhook_url":"https://customer.app/webhook"},"created_at":"2025-08-17T18:19:46.877Z","updated_at":"2024-09-14T03:27:40.201Z","signing_secret":"whsec_xxx"},"request_id":""} + type: simple + x-speakeasy-test-group: triggers + x-speakeasy-test-rebuild: true + - workflowId: platform-triggers-list + steps: + - stepId: test + operationId: platform-triggers-list + parameters: + - name: page_size + in: query + value: 50 + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == application/json + - context: $response.body + condition: | + {"results":[],"has_more":true,"next_cursor":"","request_id":""} + type: simple + x-speakeasy-test-group: triggers + x-speakeasy-test-rebuild: true + - workflowId: platform-triggers-get + steps: + - stepId: test + operationId: platform-triggers-get + parameters: + - name: trigger_id + in: path + value: + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == application/json + - context: $response.body + condition: | + {"trigger":{"trigger_id":"trigger_test_123","preset_id":"GITHUB_1","description":"Reviews I am tagged on, sent to my team's review channel","status":"ENABLED","inputs":{"repository":"acme/payments-api"},"delivery":{"webhook_url":"https://customer.app/webhook"},"created_at":"2024-01-06T01:37:37.232Z","updated_at":"2025-07-02T01:19:47.126Z"},"request_id":""} + type: simple + x-speakeasy-test-group: triggers + x-speakeasy-test-rebuild: true + - workflowId: platform-triggers-update + steps: + - stepId: test + operationId: platform-triggers-update + parameters: + - name: trigger_id + in: path + value: + requestBody: + contentType: application/json + payload: + delivery: + auth: + secret: secret_test_123 + type: BEARER + webhook_url: https://customer.app/webhook + description: Reviews I am tagged on, sent to my team's review channel + inputs: + repository: acme/payments-api + status: ENABLED + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == application/json + - context: $response.body + condition: | + {"trigger":{"trigger_id":"trigger_test_123","preset_id":"GITHUB_1","description":"Reviews I am tagged on, sent to my team's review channel","status":"ENABLED","inputs":{"repository":"acme/payments-api"},"delivery":{"webhook_url":"https://customer.app/webhook"},"created_at":"2026-09-03T11:57:47.699Z","updated_at":"2026-01-25T02:15:09.513Z"},"request_id":""} + type: simple + x-speakeasy-test-group: triggers + x-speakeasy-test-rebuild: true + - workflowId: platform-triggers-events-search + steps: + - stepId: test + operationId: platform-triggers-events-search + parameters: + - name: trigger_id + in: path + value: + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == application/json + - context: $response.body + condition: | + {"results":[{"event_type":"DOCUMENT_CHANGE","datasource":"GITHUB","reason":"REVIEW_REQUESTED","doc_type":"pull","doc_id":"","view_url":"https://silent-omelet.biz","title":"","event_time":"2024-06-12T22:23:25.274Z"}],"has_more":false,"request_id":""} + type: simple + x-speakeasy-test-group: triggers + x-speakeasy-test-rebuild: true + - workflowId: platform-trigger-presets-list + steps: + - stepId: test + operationId: platform-trigger-presets-list + parameters: + - name: page_size + in: query + value: 50 + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == application/json + - context: $response.body + condition: | + {"results":[],"has_more":false,"next_cursor":null,"request_id":""} + type: simple + x-speakeasy-test-group: triggers + x-speakeasy-test-rebuild: true + - workflowId: platform-trigger-presets-get + steps: + - stepId: test + operationId: platform-trigger-presets-get + parameters: + - name: preset_id + in: path + value: + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == application/json + - context: $response.body + condition: | + {"trigger_preset":{"preset_id":"GITHUB_1","datasource":"github","display_name":"Review requested from me","description":"A review is requested from the trigger creator on a pull request","inputs":[]},"request_id":""} + type: simple + x-speakeasy-test-group: triggers + x-speakeasy-test-rebuild: true + - workflowId: platform-trigger-presets-input-values-list + steps: + - stepId: test + operationId: platform-trigger-presets-input-values-list + parameters: + - name: preset_id + in: path + value: + - name: field + in: query + value: + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == application/json + - context: $response.body + condition: | + {"results":[{"value":"acme/payments-api","display_name":"acme/payments-api"}],"is_truncated":false,"request_id":""} + type: simple + x-speakeasy-test-group: triggers + x-speakeasy-test-rebuild: true + - workflowId: platform-trigger-presets-events-search + steps: + - stepId: test + operationId: platform-trigger-presets-events-search + parameters: + - name: preset_id + in: path + value: + requestBody: + contentType: application/json + payload: + inputs: + repository: acme/payments-api + page_size: 10 + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == application/json + - context: $response.body + condition: | + {"results":[{"event_type":"DOCUMENT_CHANGE","datasource":"GITHUB","reason":"REVIEW_REQUESTED","doc_type":"pull","doc_id":"","view_url":"https://prickly-cutover.info/","title":"","event_time":"2025-04-15T15:45:31.544Z"}],"has_more":false,"request_id":""} + type: simple + x-speakeasy-test-group: triggers x-speakeasy-test-rebuild: true diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock index 7163a0bc..626778f7 100644 --- a/.speakeasy/workflow.lock +++ b/.speakeasy/workflow.lock @@ -1,12 +1,11 @@ -speakeasyVersion: 1.686.0 +speakeasyVersion: 1.795.1 sources: Glean API: sourceNamespace: glean-api-specs - sourceRevisionDigest: sha256:fcb56a3a1b355cdff7e63a0b76385f81472ce01a748f25a409b13b70d89436cc - sourceBlobDigest: sha256:01a8dbd2649712ab871b1799b6c76f92f4edb070c675738cac74685c81879a37 + sourceRevisionDigest: sha256:90133ae2ed4bca7f388138e9d043405e381f920c07c8e54bdf3af2505b0a24ae + sourceBlobDigest: sha256:ffea0cebe421d06f6145114c557713c6b11600ae8dc1e06469304d89e720bf27 tags: - latest - - speakeasy-sdk-regen-1768441819 Glean Client API: sourceNamespace: glean-client-api sourceRevisionDigest: sha256:4edc63ad559e4f2c9fb9ebf5edaaaaa9269f1874d271cfd84b441d6dacac43d2 @@ -17,10 +16,10 @@ targets: glean: source: Glean API sourceNamespace: glean-api-specs - sourceRevisionDigest: sha256:fcb56a3a1b355cdff7e63a0b76385f81472ce01a748f25a409b13b70d89436cc - sourceBlobDigest: sha256:01a8dbd2649712ab871b1799b6c76f92f4edb070c675738cac74685c81879a37 + sourceRevisionDigest: sha256:90133ae2ed4bca7f388138e9d043405e381f920c07c8e54bdf3af2505b0a24ae + sourceBlobDigest: sha256:ffea0cebe421d06f6145114c557713c6b11600ae8dc1e06469304d89e720bf27 codeSamplesNamespace: glean-api-specs-python-code-samples - codeSamplesRevisionDigest: sha256:77edd92d12a6f8e9e87bc2578f8369e25dba1060192ba455304996c267701c6a + codeSamplesRevisionDigest: sha256:985280ee4fe1f57740b53a8a893bbcd79361460bcc2ab8b2696bb0f81e6350f4 workflow: workflowVersion: 1.0.0 speakeasyVersion: latest diff --git a/README.md b/README.md index c4d81a82..bdb7349c 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ Each namespace has its own authentication requirements and access patterns. Whil from glean.api_client import Glean import os -with Glean(api_token="client-token", instance="instance-name") as glean: +with Glean(api_token="client-token", server_url="https://mycompany-be.glean.com") as glean: search_response = glean.client.search.query(query="search term") print(search_response) @@ -26,7 +26,7 @@ with Glean(api_token="client-token", instance="instance-name") as glean: from glean.api_client import Glean, models import os -with Glean(api_token="indexing-token", instance="instance-name") as glean: +with Glean(api_token="indexing-token", server_url="https://mycompany-be.glean.com") as glean: document_response = glean.indexing.documents.index( document=models.Document( id="doc-123", @@ -263,8 +263,7 @@ This SDK supports the following security scheme globally: To authenticate with the API the `api_token` parameter must be set when initializing the SDK client instance. For example: ```python -from glean.api_client import Glean, models -from glean.api_client.utils import parse_datetime +from glean.api_client import Glean import os @@ -272,32 +271,10 @@ with Glean( api_token=os.getenv("GLEAN_API_TOKEN", ""), ) as glean: - glean.client.activity.report(events=[ - { - "action": models.ActivityEventAction.HISTORICAL_VIEW, - "timestamp": parse_datetime("2000-01-23T04:56:07.000Z"), - "url": "https://example.com/", - }, - { - "action": models.ActivityEventAction.SEARCH, - "params": { - "query": "query", - }, - "timestamp": parse_datetime("2000-01-23T04:56:07.000Z"), - "url": "https://example.com/search?q=query", - }, - { - "action": models.ActivityEventAction.VIEW, - "params": { - "duration": 20, - "referrer": "https://example.com/document", - }, - "timestamp": parse_datetime("2000-01-23T04:56:07.000Z"), - "url": "https://example.com/", - }, - ]) + res = glean.agents.search(name="HR Policy Agent") - # Use the SDK ... + # Handle response + print(res) ``` @@ -337,18 +314,32 @@ For more information on obtaining the appropriate token type, please contact you
Available methods +### [Agents](docs/sdks/agents/README.md) + +* [search](docs/sdks/agents/README.md#search) - Search agents +* [get](docs/sdks/agents/README.md#get) - Get agent +* [get_schemas](docs/sdks/agents/README.md#get_schemas) - Get agent schemas +* [create_run](docs/sdks/agents/README.md#create_run) - Create agent run + +### [Chat](docs/sdks/chatsdk/README.md) + +* [create](docs/sdks/chatsdk/README.md#create) - Create a chat response + ### [Client.Activity](docs/sdks/clientactivity/README.md) * [report](docs/sdks/clientactivity/README.md#report) - Report document activity * [feedback](docs/sdks/clientactivity/README.md#feedback) - Report client activity -### [Client.Agents](docs/sdks/agents/README.md) +### [Client.Agents](docs/sdks/clientagents/README.md) -* [retrieve](docs/sdks/agents/README.md#retrieve) - Retrieve an agent -* [retrieve_schemas](docs/sdks/agents/README.md#retrieve_schemas) - List an agent's schemas -* [list](docs/sdks/agents/README.md#list) - Search agents -* [run_stream](docs/sdks/agents/README.md#run_stream) - Create an agent run and stream the response -* [run](docs/sdks/agents/README.md#run) - Create an agent run and wait for the response +* [create](docs/sdks/clientagents/README.md#create) - Create an agent +* [retrieve](docs/sdks/clientagents/README.md#retrieve) - Retrieve an agent +* [update](docs/sdks/clientagents/README.md#update) - Edit an agent +* [retrieve_schemas](docs/sdks/clientagents/README.md#retrieve_schemas) - List an agent's schemas +* [import_](docs/sdks/clientagents/README.md#import_) - Import an agent +* [list](docs/sdks/clientagents/README.md#list) - Search agents +* [run_stream](docs/sdks/clientagents/README.md#run_stream) - Create an agent run and stream the response +* [run](docs/sdks/clientagents/README.md#run) - Create an agent run and wait for the response ### [Client.Announcements](docs/sdks/announcements/README.md) @@ -366,6 +357,7 @@ For more information on obtaining the appropriate token type, please contact you ### [Client.Authentication](docs/sdks/clientauthentication/README.md) +* [check_datasource_auth](docs/sdks/clientauthentication/README.md#check_datasource_auth) - Check datasource authorization * [create_token](docs/sdks/clientauthentication/README.md#create_token) - Create authentication token ### [Client.Chat](docs/sdks/clientchat/README.md) @@ -376,9 +368,10 @@ For more information on obtaining the appropriate token type, please contact you * [retrieve](docs/sdks/clientchat/README.md#retrieve) - Retrieves a Chat * [list](docs/sdks/clientchat/README.md#list) - Retrieves all saved Chats * [retrieve_application](docs/sdks/clientchat/README.md#retrieve_application) - Gets the metadata for a custom Chat application -* [upload_files](docs/sdks/clientchat/README.md#upload_files) - Upload files for Chat. -* [retrieve_files](docs/sdks/clientchat/README.md#retrieve_files) - Get files uploaded by a user for Chat. -* [delete_files](docs/sdks/clientchat/README.md#delete_files) - Delete files uploaded by a user for chat. +* [upload_files](docs/sdks/clientchat/README.md#upload_files) - Upload files for Chat +* [retrieve_files](docs/sdks/clientchat/README.md#retrieve_files) - Get files uploaded by a user for Chat +* [delete_files](docs/sdks/clientchat/README.md#delete_files) - Delete files uploaded by a user for chat +* [retrieve_file](docs/sdks/clientchat/README.md#retrieve_file) - Download a chat file * [create_stream](docs/sdks/clientchat/README.md#create_stream) - Chat ### [Client.Collections](docs/sdks/collections/README.md) @@ -392,6 +385,13 @@ For more information on obtaining the appropriate token type, please contact you * [retrieve](docs/sdks/collections/README.md#retrieve) - Read Collection * [list](docs/sdks/collections/README.md#list) - List Collections +### [Client.Datasources](docs/sdks/clientdatasources/README.md) + +* [retrieve_configuration](docs/sdks/clientdatasources/README.md#retrieve_configuration) - Get datasource instance configuration +* [update_configuration](docs/sdks/clientdatasources/README.md#update_configuration) - Update datasource instance configuration +* [retrieve_credential_status](docs/sdks/clientdatasources/README.md#retrieve_credential_status) - Get datasource instance credential status +* [rotate_credentials](docs/sdks/clientdatasources/README.md#rotate_credentials) - Rotate datasource instance credentials + ### [Client.Documents](docs/sdks/clientdocuments/README.md) * [retrieve_permissions](docs/sdks/clientdocuments/README.md#retrieve_permissions) - Read document permissions @@ -403,6 +403,14 @@ For more information on obtaining the appropriate token type, please contact you * [list](docs/sdks/entities/README.md#list) - List entities * [read_people](docs/sdks/entities/README.md#read_people) - Read people +* [retrieve_person_photo](docs/sdks/entities/README.md#retrieve_person_photo) - Get person photo + +### [Client.Governance.Data.Findings](docs/sdks/findings/README.md) + +* [create](docs/sdks/findings/README.md#create) - Creates findings export +* [list](docs/sdks/findings/README.md#list) - Lists findings exports +* [download](docs/sdks/findings/README.md#download) - Downloads findings export +* [delete](docs/sdks/findings/README.md#delete) - Deletes findings export ### [Client.Governance.Data.Policies](docs/sdks/policies/README.md) @@ -439,13 +447,13 @@ For more information on obtaining the appropriate token type, please contact you * [create](docs/sdks/pins/README.md#create) - Create pin * [remove](docs/sdks/pins/README.md#remove) - Delete pin -### [Client.Search](docs/sdks/search/README.md) +### [Client.Search](docs/sdks/clientsearch/README.md) -* [query_as_admin](docs/sdks/search/README.md#query_as_admin) - Search the index (admin) -* [autocomplete](docs/sdks/search/README.md#autocomplete) - Autocomplete -* [retrieve_feed](docs/sdks/search/README.md#retrieve_feed) - Feed of documents and events -* [recommendations](docs/sdks/search/README.md#recommendations) - Recommend documents -* [query](docs/sdks/search/README.md#query) - Search +* [query_as_admin](docs/sdks/clientsearch/README.md#query_as_admin) - Search the index (admin) +* [autocomplete](docs/sdks/clientsearch/README.md#autocomplete) - Autocomplete +* [retrieve_feed](docs/sdks/clientsearch/README.md#retrieve_feed) - Feed of documents and events +* [recommendations](docs/sdks/clientsearch/README.md#recommendations) - Recommend documents +* [query](docs/sdks/clientsearch/README.md#query) - Search ### [Client.Shortcuts](docs/sdks/clientshortcuts/README.md) @@ -459,6 +467,11 @@ For more information on obtaining the appropriate token type, please contact you * [list](docs/sdks/tools/README.md#list) - List available tools * [run](docs/sdks/tools/README.md#run) - Execute the specified tool +* [retrieve_action_pack_auth_status](docs/sdks/tools/README.md#retrieve_action_pack_auth_status) - Get end-user authentication status for an action pack. +* [authorize_action_pack](docs/sdks/tools/README.md#authorize_action_pack) - Start the OAuth authorization flow for an action pack. +* [retrieve_tool_server_auth_status](docs/sdks/tools/README.md#retrieve_tool_server_auth_status) - Get end-user authentication status for a tool server. +* [authorize_tool_server](docs/sdks/tools/README.md#authorize_tool_server) - Start the OAuth authorization flow for a tool server. +* [get_tool_server_tools](docs/sdks/tools/README.md#get_tool_server_tools) - Get tool definitions from a tool server. ### [Client.Verification](docs/sdks/clientverification/README.md) @@ -466,26 +479,28 @@ For more information on obtaining the appropriate token type, please contact you * [list](docs/sdks/clientverification/README.md#list) - List verifications * [verify](docs/sdks/clientverification/README.md#verify) - Update verification -### [Governance](docs/sdks/governance/README.md) - -* [createfindingsexport](docs/sdks/governance/README.md#createfindingsexport) - Creates findings export -* [listfindingsexports](docs/sdks/governance/README.md#listfindingsexports) - Lists findings exports -* [downloadfindingsexport](docs/sdks/governance/README.md#downloadfindingsexport) - Downloads findings export -* [deletefindingsexport](docs/sdks/governance/README.md#deletefindingsexport) - Deletes findings export - ### [Indexing.Authentication](docs/sdks/indexingauthentication/README.md) * [rotate_token](docs/sdks/indexingauthentication/README.md#rotate_token) - Rotate token +### [Indexing.CustomMetadata](docs/sdks/custommetadata/README.md) + +* [upsert](docs/sdks/custommetadata/README.md#upsert) - Add or update custom metadata +* [delete](docs/sdks/custommetadata/README.md#delete) - Remove custom metadata +* [get_schema](docs/sdks/custommetadata/README.md#get_schema) - Retrieve metadata schema +* [upsert_schema](docs/sdks/custommetadata/README.md#upsert_schema) - Create or update metadata schema +* [delete_schema](docs/sdks/custommetadata/README.md#delete_schema) - Remove metadata schema + ### [Indexing.Datasource](docs/sdks/indexingdatasource/README.md) * [status](docs/sdks/indexingdatasource/README.md#status) - Beta: Get datasource status -### [Indexing.Datasources](docs/sdks/datasources/README.md) +### [Indexing.Datasources](docs/sdks/indexingdatasources/README.md) -* [add](docs/sdks/datasources/README.md#add) - Add or update datasource -* [retrieve_config](docs/sdks/datasources/README.md#retrieve_config) - Get datasource config +* [add](docs/sdks/indexingdatasources/README.md#add) - Add or update datasource +* [retrieve_config](docs/sdks/indexingdatasources/README.md#retrieve_config) - Get datasource config +* [submit](docs/sdks/indexingdatasources/README.md#submit) - Submit datasource data ### [Indexing.Documents](docs/sdks/indexingdocuments/README.md) @@ -501,6 +516,8 @@ For more information on obtaining the appropriate token type, please contact you * [check_access](docs/sdks/indexingdocuments/README.md#check_access) - Check document access * [~~status~~](docs/sdks/indexingdocuments/README.md#status) - Get document upload and indexing status :warning: **Deprecated** * [~~count~~](docs/sdks/indexingdocuments/README.md#count) - Get document count :warning: **Deprecated** +* [debug_events](docs/sdks/indexingdocuments/README.md#debug_events) - Beta: Get document lifecycle events + ### [Indexing.People](docs/sdks/people/README.md) @@ -508,7 +525,7 @@ For more information on obtaining the appropriate token type, please contact you * [~~count~~](docs/sdks/people/README.md#count) - Get user count :warning: **Deprecated** * [index](docs/sdks/people/README.md#index) - Index employee -* [bulk_index](docs/sdks/people/README.md#bulk_index) - Bulk index employees +* [~~bulk_index~~](docs/sdks/people/README.md#bulk_index) - Bulk index employees :warning: **Deprecated** * [process_all_employees_and_teams](docs/sdks/people/README.md#process_all_employees_and_teams) - Schedules the processing of uploaded employees and teams * [delete](docs/sdks/people/README.md#delete) - Delete employee * [index_team](docs/sdks/people/README.md#index_team) - Index team @@ -535,6 +552,41 @@ For more information on obtaining the appropriate token type, please contact you * [bulk_index](docs/sdks/indexingshortcuts/README.md#bulk_index) - Bulk index external shortcuts * [upload](docs/sdks/indexingshortcuts/README.md#upload) - Upload shortcuts +### [Search](docs/sdks/search/README.md) + +* [query](docs/sdks/search/README.md#query) - Search +* [list_filters](docs/sdks/search/README.md#list_filters) - List search filters + +### [Skills](docs/sdks/skills/README.md) + +* [create](docs/sdks/skills/README.md#create) - Create skill +* [list](docs/sdks/skills/README.md#list) - List skills +* [import_](docs/sdks/skills/README.md#import_) - Import skills from GitHub +* [validate](docs/sdks/skills/README.md#validate) - Validate skill bundle +* [preview_source](docs/sdks/skills/README.md#preview_source) - Preview a GitHub skill source +* [update](docs/sdks/skills/README.md#update) - Update skill +* [delete](docs/sdks/skills/README.md#delete) - Delete skill +* [retrieve](docs/sdks/skills/README.md#retrieve) - Retrieve skill +* [retrieve_content](docs/sdks/skills/README.md#retrieve_content) - Download skill content +* [sync](docs/sdks/skills/README.md#sync) - Sync a GitHub-imported skill +* [create_version](docs/sdks/skills/README.md#create_version) - Create skill version +* [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 + +### [Triggers](docs/sdks/triggers/README.md) + +* [create](docs/sdks/triggers/README.md#create) - Create trigger +* [list](docs/sdks/triggers/README.md#list) - List triggers +* [get](docs/sdks/triggers/README.md#get) - Get trigger +* [update](docs/sdks/triggers/README.md#update) - Update trigger +* [delete](docs/sdks/triggers/README.md#delete) - Delete trigger +* [search_events](docs/sdks/triggers/README.md#search_events) - Search events for a trigger +* [list_presets](docs/sdks/triggers/README.md#list_presets) - List trigger presets +* [get_preset](docs/sdks/triggers/README.md#get_preset) - Get trigger preset +* [list_preset_input_values](docs/sdks/triggers/README.md#list_preset_input_values) - Search trigger preset input values +* [search_preset_events](docs/sdks/triggers/README.md#search_preset_events) - Search events for a trigger preset +
@@ -557,7 +609,10 @@ with Glean( api_token=os.getenv("GLEAN_API_TOKEN", ""), ) as glean: - res = glean.client.chat.upload_files(files=[]) + res = glean.skills.create(file={ + "file_name": "example.file", + "content": open("example.file", "rb"), + }) # Handle response print(res) @@ -572,8 +627,8 @@ Some of the endpoints in this SDK support retries. If you use the SDK without an To change the default retry strategy for a single API call, simply provide a `RetryConfig` object to the call: ```python -from glean.api_client import Glean, models -from glean.api_client.utils import BackoffStrategy, RetryConfig, parse_datetime +from glean.api_client import Glean +from glean.api_client.utils import BackoffStrategy, RetryConfig import os @@ -581,40 +636,18 @@ with Glean( api_token=os.getenv("GLEAN_API_TOKEN", ""), ) as glean: - glean.client.activity.report(events=[ - { - "action": models.ActivityEventAction.HISTORICAL_VIEW, - "timestamp": parse_datetime("2000-01-23T04:56:07.000Z"), - "url": "https://example.com/", - }, - { - "action": models.ActivityEventAction.SEARCH, - "params": { - "query": "query", - }, - "timestamp": parse_datetime("2000-01-23T04:56:07.000Z"), - "url": "https://example.com/search?q=query", - }, - { - "action": models.ActivityEventAction.VIEW, - "params": { - "duration": 20, - "referrer": "https://example.com/document", - }, - "timestamp": parse_datetime("2000-01-23T04:56:07.000Z"), - "url": "https://example.com/", - }, - ], + res = glean.agents.search(name="HR Policy Agent", RetryConfig("backoff", BackoffStrategy(1, 50, 1.1, 100), False)) - # Use the SDK ... + # Handle response + print(res) ``` If you'd like to override the default retry strategy for all operations that support retries, you can use the `retry_config` optional parameter when initializing the SDK: ```python -from glean.api_client import Glean, models -from glean.api_client.utils import BackoffStrategy, RetryConfig, parse_datetime +from glean.api_client import Glean +from glean.api_client.utils import BackoffStrategy, RetryConfig import os @@ -623,32 +656,10 @@ with Glean( api_token=os.getenv("GLEAN_API_TOKEN", ""), ) as glean: - glean.client.activity.report(events=[ - { - "action": models.ActivityEventAction.HISTORICAL_VIEW, - "timestamp": parse_datetime("2000-01-23T04:56:07.000Z"), - "url": "https://example.com/", - }, - { - "action": models.ActivityEventAction.SEARCH, - "params": { - "query": "query", - }, - "timestamp": parse_datetime("2000-01-23T04:56:07.000Z"), - "url": "https://example.com/search?q=query", - }, - { - "action": models.ActivityEventAction.VIEW, - "params": { - "duration": 20, - "referrer": "https://example.com/document", - }, - "timestamp": parse_datetime("2000-01-23T04:56:07.000Z"), - "url": "https://example.com/", - }, - ]) + res = glean.agents.search(name="HR Policy Agent") - # Use the SDK ... + # Handle response + print(res) ``` @@ -751,8 +762,7 @@ The default server `https://{instance}-be.glean.com` contains variables and is s #### Example ```python -from glean.api_client import Glean, models -from glean.api_client.utils import parse_datetime +from glean.api_client import Glean import os @@ -762,32 +772,10 @@ with Glean( api_token=os.getenv("GLEAN_API_TOKEN", ""), ) as glean: - glean.client.activity.report(events=[ - { - "action": models.ActivityEventAction.HISTORICAL_VIEW, - "timestamp": parse_datetime("2000-01-23T04:56:07.000Z"), - "url": "https://example.com/", - }, - { - "action": models.ActivityEventAction.SEARCH, - "params": { - "query": "query", - }, - "timestamp": parse_datetime("2000-01-23T04:56:07.000Z"), - "url": "https://example.com/search?q=query", - }, - { - "action": models.ActivityEventAction.VIEW, - "params": { - "duration": 20, - "referrer": "https://example.com/document", - }, - "timestamp": parse_datetime("2000-01-23T04:56:07.000Z"), - "url": "https://example.com/", - }, - ]) + res = glean.agents.search(name="HR Policy Agent") - # Use the SDK ... + # Handle response + print(res) ``` @@ -795,8 +783,7 @@ with Glean( The default server can be overridden globally by passing a URL to the `server_url: str` optional parameter when initializing the SDK client instance. For example: ```python -from glean.api_client import Glean, models -from glean.api_client.utils import parse_datetime +from glean.api_client import Glean import os @@ -805,32 +792,33 @@ with Glean( api_token=os.getenv("GLEAN_API_TOKEN", ""), ) as glean: - glean.client.activity.report(events=[ - { - "action": models.ActivityEventAction.HISTORICAL_VIEW, - "timestamp": parse_datetime("2000-01-23T04:56:07.000Z"), - "url": "https://example.com/", - }, - { - "action": models.ActivityEventAction.SEARCH, - "params": { - "query": "query", - }, - "timestamp": parse_datetime("2000-01-23T04:56:07.000Z"), - "url": "https://example.com/search?q=query", - }, - { - "action": models.ActivityEventAction.VIEW, - "params": { - "duration": 20, - "referrer": "https://example.com/document", - }, - "timestamp": parse_datetime("2000-01-23T04:56:07.000Z"), - "url": "https://example.com/", - }, - ]) + res = glean.agents.search(name="HR Policy Agent") + + # Handle response + print(res) + +``` - # Use the SDK ... +### Override Server URL Per-Operation + +The server URL can also be overridden on a per-operation basis, provided a server list was specified for the operation. For example: +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.indexing.datasources.submit(datasource_instance="", type_="", request_body={ + "key": "", + "key1": "", + "key2": "", + }, server_url="https://instance-name-be.glean.com") + + # Handle response + print(res) ``` @@ -914,6 +902,20 @@ class CustomClient(AsyncHttpClient): s = Glean(async_client=CustomClient(httpx.AsyncClient())) ``` +### httpx2 (Pydantic's httpx fork) + +[httpx2](https://httpx2.pydantic.dev/) is Pydantic's maintained fork of `httpx`. To run this SDK on httpx2, call `alias_httpx()` at your program's entry point, before importing the SDK, so every `import httpx` — including the ones inside the SDK — resolves to `httpx2`: +```python +import httpx2 + +httpx2.alias_httpx() + +from glean.api_client import Glean + +s = Glean() +``` + +An SDK can also be generated against httpx2 directly, so it depends on the fork instead of `httpx`, by setting `python.httpClientLibrary: httpx2` in `gen.yaml`. @@ -985,7 +987,7 @@ from glean.api_client import Glean glean = Glean( api_token=os.environ.get("GLEAN_API_TOKEN", ""), - instance=os.environ.get("GLEAN_INSTANCE", ""), + server_url="https://mycompany-be.glean.com", ) ``` @@ -998,7 +1000,7 @@ from glean.api_client import Glean glean = Glean( api_token=os.environ.get("GLEAN_API_TOKEN", ""), - instance=os.environ.get("GLEAN_INSTANCE", ""), + server_url="https://mycompany-be.glean.com", exclude_deprecated_after="2026-10-15", include_experimental=True, ) diff --git a/RELEASES.md b/RELEASES.md index 96a2a717..d632e591 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -498,4 +498,334 @@ Based on: ### Generated - [python v0.11.27] . ### Releases -- [PyPI v0.11.27] https://pypi.org/project/glean-api-client/0.11.27 - . \ No newline at end of file +- [PyPI v0.11.27] https://pypi.org/project/glean-api-client/0.11.27 - . + +## 2026-02-05 02:09:47 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.704.0 (2.806.4) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.12.0] . +### Releases +- [PyPI v0.12.0] https://pypi.org/project/glean-api-client/0.12.0 - . + +## 2026-02-06 02:10:01 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.706.1 (2.809.2) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.12.1] . +### Releases +- [PyPI v0.12.1] https://pypi.org/project/glean-api-client/0.12.1 - . + +## 2026-02-06 20:25:52 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.708.0 (2.811.2) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.12.2] . +### Releases +- [PyPI v0.12.2] https://pypi.org/project/glean-api-client/0.12.2 - . + +## 2026-02-09 08:15:10 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.709.1 (2.812.2) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.12.3] . +### Releases +- [PyPI v0.12.3] https://pypi.org/project/glean-api-client/0.12.3 - . + +## 2026-02-09 17:35:34 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.709.1 (2.812.2) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.12.4] . +### Releases +- [PyPI v0.12.4] https://pypi.org/project/glean-api-client/0.12.4 - . + +## 2026-02-10 17:09:12 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.709.3 (2.814.0) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.12.5] . +### Releases +- [PyPI v0.12.5] https://pypi.org/project/glean-api-client/0.12.5 - . + +## 2026-02-18 02:24:12 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.722.0 (2.829.1) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.12.6] . +### Releases +- [PyPI v0.12.6] https://pypi.org/project/glean-api-client/0.12.6 - . + +## 2026-02-19 15:47:56 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.722.7 (2.832.9) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.12.7] . +### Releases +- [PyPI v0.12.7] https://pypi.org/project/glean-api-client/0.12.7 - . + +## 2026-02-20 02:10:28 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.722.7 (2.832.9) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.12.8] . +### Releases +- [PyPI v0.12.8] https://pypi.org/project/glean-api-client/0.12.8 - . + +## 2026-03-09 18:33:28 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.750.0 (2.856.1) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.12.9] . +### Releases +- [PyPI v0.12.9] https://pypi.org/project/glean-api-client/0.12.9 - . + +## 2026-03-11 09:01:27 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.751.0 (2.858.2) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.12.10] . +### Releases +- [PyPI v0.12.10] https://pypi.org/project/glean-api-client/0.12.10 - . + +## 2026-03-16 02:33:55 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.755.0 (2.865.2) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.12.11] . +### Releases +- [PyPI v0.12.11] https://pypi.org/project/glean-api-client/0.12.11 - . + +## 2026-03-17 02:12:41 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.755.1 (2.865.2) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.12.12] . +### Releases +- [PyPI v0.12.12] https://pypi.org/project/glean-api-client/0.12.12 - . + +## 2026-03-18 02:24:18 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.757.0 (2.866.0) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.12.13] . +### Releases +- [PyPI v0.12.13] https://pypi.org/project/glean-api-client/0.12.13 - . + +## 2026-03-19 14:04:02 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.757.1 (2.866.2) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.12.14] . +### Releases +- [PyPI v0.12.14] https://pypi.org/project/glean-api-client/0.12.14 - . + +## 2026-03-23 09:42:32 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.759.1 (2.869.10) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.12.15] . +### Releases +- [PyPI v0.12.15] https://pypi.org/project/glean-api-client/0.12.15 - . + +## 2026-03-23 19:42:07 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.759.1 (2.869.10) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.12.16] . +### Releases +- [PyPI v0.12.16] https://pypi.org/project/glean-api-client/0.12.16 - . + +## 2026-03-25 02:23:37 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.759.2 (2.869.23) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.12.17] . +### Releases +- [PyPI v0.12.17] https://pypi.org/project/glean-api-client/0.12.17 - . + +## 2026-03-27 02:31:31 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.759.3 (2.869.25) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.12.18] . +### Releases +- [PyPI v0.12.18] https://pypi.org/project/glean-api-client/0.12.18 - . + +## 2026-04-06 17:39:23 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.761.1 (2.879.6) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.12.19] . +### Releases +- [PyPI v0.12.19] https://pypi.org/project/glean-api-client/0.12.19 - . + +## 2026-04-09 02:28:47 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.761.1 (2.879.6) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.12.20] . +### Releases +- [PyPI v0.12.20] https://pypi.org/project/glean-api-client/0.12.20 - . + +## 2026-04-13 17:28:50 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.761.3 (2.879.11) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.12.21] . +### Releases +- [PyPI v0.12.21] https://pypi.org/project/glean-api-client/0.12.21 - . + +## 2026-04-15 08:37:31 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.761.5 (2.879.13) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.12.22] . +### Releases +- [PyPI v0.12.22] https://pypi.org/project/glean-api-client/0.12.22 - . + +## 2026-04-20 02:49:34 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.761.8 (2.881.2) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.12.23] . +### Releases +- [PyPI v0.12.23] https://pypi.org/project/glean-api-client/0.12.23 - . + +## 2026-06-05 03:53:55 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.770.0 (2.893.0) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.13.0] . +### Releases +- [PyPI v0.13.0] https://pypi.org/project/glean-api-client/0.13.0 - . + +## 2026-06-29 04:01:33 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.786.1 (2.913.3) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.14.0] . +### Releases +- [PyPI v0.14.0] https://pypi.org/project/glean-api-client/0.14.0 - . + +## 2026-07-02 17:47:32 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.788.0 (2.915.0) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.15.0] . +### Releases +- [PyPI v0.15.0] https://pypi.org/project/glean-api-client/0.15.0 - . + +## 2026-07-06 03:38:03 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.788.1 (2.915.1) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.15.1] . +### Releases +- [PyPI v0.15.1] https://pypi.org/project/glean-api-client/0.15.1 - . + +## 2026-07-08 02:45:44 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.789.0 (2.916.2) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.15.2] . +### Releases +- [PyPI v0.15.2] https://pypi.org/project/glean-api-client/0.15.2 - . + +## 2026-07-10 16:28:47 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.789.2 (2.916.4) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.15.3] . +### Releases +- [PyPI v0.15.3] https://pypi.org/project/glean-api-client/0.15.3 - . + +## 2026-07-21 08:58:47 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.790.3 (2.918.4) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.15.4] . +### Releases +- [PyPI v0.15.4] https://pypi.org/project/glean-api-client/0.15.4 - . + +## 2026-08-07 21:20:27 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.792.0 (2.927.0) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.15.5] . +### Releases +- [PyPI v0.15.5] https://pypi.org/project/glean-api-client/0.15.5 - . + +## 2026-08-21 02:32:05 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.795.1 (2.932.9) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.16.0] . +### Releases +- [PyPI v0.16.0] https://pypi.org/project/glean-api-client/0.16.0 - . \ No newline at end of file diff --git a/docs/errors/accessrequestpermissiondeniedresponseerror.md b/docs/errors/accessrequestpermissiondeniedresponseerror.md new file mode 100644 index 00000000..05736270 --- /dev/null +++ b/docs/errors/accessrequestpermissiondeniedresponseerror.md @@ -0,0 +1,11 @@ +# AccessRequestPermissionDeniedResponseError + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `error_type` | [models.AccessRequestPermissionDeniedResponseErrorType](../models/accessrequestpermissiondeniedresponseerrortype.md) | :heavy_check_mark: | N/A | | +| `created_by` | [models.Person](../models/person.md) | :heavy_check_mark: | N/A | {
"name": "George Clooney",
"obfuscatedId": "abc123"
} | +| `requestable_roles` | List[[models.UserRole](../models/userrole.md)] | :heavy_check_mark: | N/A | | +| `has_pending_request` | *bool* | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/errors/errorinforesponse.md b/docs/errors/errorinforesponse.md new file mode 100644 index 00000000..09e01a60 --- /dev/null +++ b/docs/errors/errorinforesponse.md @@ -0,0 +1,11 @@ +# ErrorInfoResponse + +Error response for custom metadata operations + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | +| `error` | *str* | :heavy_check_mark: | Error message describing what went wrong | +| `message` | *Optional[str]* | :heavy_minus_sign: | Additional details about the error | \ No newline at end of file diff --git a/docs/errors/errorresponse.md b/docs/errors/errorresponse.md new file mode 100644 index 00000000..7ac30077 --- /dev/null +++ b/docs/errors/errorresponse.md @@ -0,0 +1,10 @@ +# ErrorResponse + +Error response returned for failed requests + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | +| `message` | *Optional[str]* | :heavy_minus_sign: | Client-facing error message describing what went wrong | \ No newline at end of file diff --git a/docs/errors/gleandataerror.md b/docs/errors/gleandataerror.md index f1df02d4..7c4c0d90 100644 --- a/docs/errors/gleandataerror.md +++ b/docs/errors/gleandataerror.md @@ -3,9 +3,10 @@ ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -| `bad_gmail_token` | *Optional[bool]* | :heavy_minus_sign: | Indicates the gmail results could not be fetched due to bad token. | -| `bad_outlook_token` | *Optional[bool]* | :heavy_minus_sign: | Indicates the outlook results could not be fetched due to bad token. | -| `invalid_operators` | List[[models.InvalidOperatorValueError](../models/invalidoperatorvalueerror.md)] | :heavy_minus_sign: | Indicates results could not be fetched due to invalid operators in the query. | -| `error_messages` | List[[models.ErrorMessage](../models/errormessage.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | +| `bad_gmail_token` | *Optional[bool]* | :heavy_minus_sign: | Indicates the gmail results could not be fetched due to bad token. | +| `bad_outlook_token` | *Optional[bool]* | :heavy_minus_sign: | Indicates the outlook results could not be fetched due to bad token. | +| `invalid_operators` | List[[models.InvalidOperatorValueError](../models/invalidoperatorvalueerror.md)] | :heavy_minus_sign: | Indicates results could not be fetched due to invalid operators in the query. | +| `error_messages` | List[[models.ErrorMessage](../models/errormessage.md)] | :heavy_minus_sign: | N/A | +| `federated_search_rate_limit_error` | *Optional[bool]* | :heavy_minus_sign: | Indicates the federated search results could not be fetched due to rate limiting. | \ No newline at end of file diff --git a/docs/errors/platformproblemdetailerror.md b/docs/errors/platformproblemdetailerror.md new file mode 100644 index 00000000..d5a6d0ab --- /dev/null +++ b/docs/errors/platformproblemdetailerror.md @@ -0,0 +1,18 @@ +# PlatformProblemDetailError + +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/errors/platformunauthorizedagenttoolsproblemerror.md b/docs/errors/platformunauthorizedagenttoolsproblemerror.md new file mode 100644 index 00000000..38c45b09 --- /dev/null +++ b/docs/errors/platformunauthorizedagenttoolsproblemerror.md @@ -0,0 +1,18 @@ +# PlatformUnauthorizedAgentToolsProblemError + +Problem detail extended with `authentication_suggestions` naming each tool the caller must authorize. + + +## 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. | | +| `authentication_suggestions` | List[[models.PlatformAuthenticationSuggestion](../models/platformauthenticationsuggestion.md)] | :heavy_check_mark: | One entry per tool the caller must authorize. | | \ No newline at end of file diff --git a/docs/errors/unauthorizedagenttoolserror.md b/docs/errors/unauthorizedagenttoolserror.md new file mode 100644 index 00000000..38819b2d --- /dev/null +++ b/docs/errors/unauthorizedagenttoolserror.md @@ -0,0 +1,11 @@ +# UnauthorizedAgentToolsError + +Returned when the agent has tools the caller must authorize before the run can start. Each entry in `authenticationSuggestions` names one such tool; POST its `serverId` to `/tool-servers/{serverId}/auth` with `returnUrl` in the request body to obtain an `authorizationUrl` to redirect the end user to, then retry the run once OAuth completes. + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | +| `message` | *str* | :heavy_check_mark: | Human-readable description of the failure. | +| `authentication_suggestions` | List[[models.ServerToolRequest](../models/servertoolrequest.md)] | :heavy_check_mark: | One entry per tool the caller must authorize. | \ No newline at end of file diff --git a/docs/models/accessrequestpermissiondeniedresponseerrortype.md b/docs/models/accessrequestpermissiondeniedresponseerrortype.md new file mode 100644 index 00000000..2c42a604 --- /dev/null +++ b/docs/models/accessrequestpermissiondeniedresponseerrortype.md @@ -0,0 +1,16 @@ +# AccessRequestPermissionDeniedResponseErrorType + +## Example Usage + +```python +from glean.api_client.models import AccessRequestPermissionDeniedResponseErrorType + +value = AccessRequestPermissionDeniedResponseErrorType.PERMISSION_DENIED +``` + + +## Values + +| Name | Value | +| ------------------- | ------------------- | +| `PERMISSION_DENIED` | PERMISSION_DENIED | \ No newline at end of file diff --git a/docs/models/actionauthtype.md b/docs/models/actionauthtype.md new file mode 100644 index 00000000..d288ff5c --- /dev/null +++ b/docs/models/actionauthtype.md @@ -0,0 +1,26 @@ +# ActionAuthType + +Authentication mechanism used by an action pack. + - `AUTH_USER_OAUTH`: Requires per-user OAuth consent to the third-party tool. + - `AUTH_ADMIN`: Uses a service-account / admin-owned credential. End users do not authorize individually. + - `AUTH_NONE`: Action pack requires no authentication. + + +## Example Usage + +```python +from glean.api_client.models import ActionAuthType + +value = ActionAuthType.AUTH_USER_OAUTH + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + + +## Values + +| Name | Value | +| ----------------- | ----------------- | +| `AUTH_USER_OAUTH` | AUTH_USER_OAUTH | +| `AUTH_ADMIN` | AUTH_ADMIN | +| `AUTH_NONE` | AUTH_NONE | \ No newline at end of file diff --git a/docs/models/actionpackauthstatus.md b/docs/models/actionpackauthstatus.md new file mode 100644 index 00000000..70a7b624 --- /dev/null +++ b/docs/models/actionpackauthstatus.md @@ -0,0 +1,9 @@ +# ActionPackAuthStatus + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `authenticated` | *bool* | :heavy_check_mark: | Whether the calling user is already authenticated to the tool backing the action pack. | +| `auth_type` | [models.ActionAuthType](../models/actionauthtype.md) | :heavy_check_mark: | Authentication mechanism used by an action pack.
- `AUTH_USER_OAUTH`: Requires per-user OAuth consent to the third-party tool.
- `AUTH_ADMIN`: Uses a service-account / admin-owned credential. End users do not authorize individually.
- `AUTH_NONE`: Action pack requires no authentication.
| \ No newline at end of file diff --git a/docs/models/actionpackauthstatusresponse.md b/docs/models/actionpackauthstatusresponse.md new file mode 100644 index 00000000..af0cfc2e --- /dev/null +++ b/docs/models/actionpackauthstatusresponse.md @@ -0,0 +1,8 @@ +# ActionPackAuthStatusResponse + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | +| `action_pack` | [models.ActionPackAuthStatus](../models/actionpackauthstatus.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/actionpreview.md b/docs/models/actionpreview.md new file mode 100644 index 00000000..1f46c6b5 --- /dev/null +++ b/docs/models/actionpreview.md @@ -0,0 +1,11 @@ +# ActionPreview + +Preview information for an action being executed. + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `markdown` | *Optional[str]* | :heavy_minus_sign: | Markdown preview describing what the action will do. | +| `description` | *Optional[str]* | :heavy_minus_sign: | Short summary of what this specific tool invocation will do. | \ No newline at end of file diff --git a/docs/models/actionsummary.md b/docs/models/actionsummary.md new file mode 100644 index 00000000..fc60149c --- /dev/null +++ b/docs/models/actionsummary.md @@ -0,0 +1,16 @@ +# ActionSummary + +Represents a minimal summary of an action. + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `tool_id` | *str* | :heavy_check_mark: | The unique identifier of the action. | +| `display_name` | *str* | :heavy_check_mark: | The display name of the action. | +| `type` | *Optional[str]* | :heavy_minus_sign: | The type of tool - RETRIEVAL for read-only operations, ACTION for operations that modify data. | +| `auth_type` | *Optional[str]* | :heavy_minus_sign: | The authentication type required - OAUTH_USER, OAUTH_ADMIN, API_KEY, BASIC_AUTH, DWD (domain-wide delegation), or NONE. | +| `write_action_type` | *Optional[str]* | :heavy_minus_sign: | For write actions only - REDIRECT (client renders URL) or EXECUTION (external server call). | +| `is_setup_finished` | *Optional[bool]* | :heavy_minus_sign: | Whether this action has been fully configured and validated. | +| `data_source` | *Optional[str]* | :heavy_minus_sign: | Indicates the kind of knowledge a tool would access or modify.
Company knowledge:
- Glean search, and any native tools that derive from it (e.g., expert search, code search)
- Native federated tools to company data sources (e.g., outlook search)
World knowledge:
- Platform action like bravewebsearch, geminiwebsearch, etc
Neutral knowledge:
- Native tools that don't access or modify content via APIs (e.g., file analyst, think)
- Platform read or write tools (creator has to determine their knowledge implications)
| \ No newline at end of file diff --git a/docs/models/actiontypesource.md b/docs/models/actiontypesource.md new file mode 100644 index 00000000..bde2a8b4 --- /dev/null +++ b/docs/models/actiontypesource.md @@ -0,0 +1,31 @@ +# ActionTypeSource + +Analytics-only signal (product snapshot) describing WHERE the action's +read/write determination came from. Complementary to the effective +read/write value (the tool's ToolType, which drives HITL): the value says +read-or-write, this says how confident that is. MCP_ANNOTATION = from the +tool's read-only/destructive hints; ADMIN_OVERRIDE = an admin set it; +NONE = no usable hint (the effective value then defaults to write); +NATIVE_TOOL_DEFINITION = from a curated native tool (snapshot-derived). +Does not affect runtime behavior. + + +## Example Usage + +```python +from glean.api_client.models import ActionTypeSource + +value = ActionTypeSource.MCP_ANNOTATION + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + + +## Values + +| Name | Value | +| ------------------------ | ------------------------ | +| `MCP_ANNOTATION` | MCP_ANNOTATION | +| `ADMIN_OVERRIDE` | ADMIN_OVERRIDE | +| `NONE` | NONE | +| `NATIVE_TOOL_DEFINITION` | NATIVE_TOOL_DEFINITION | \ No newline at end of file diff --git a/docs/models/activityenum.md b/docs/models/activityenum.md index 249769c9..7e266e55 100644 --- a/docs/models/activityenum.md +++ b/docs/models/activityenum.md @@ -2,6 +2,16 @@ Activity e.g. search, home page visit or all. +## Example Usage + +```python +from glean.api_client.models import ActivityEnum + +value = ActivityEnum.ALL + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/activityeventaction.md b/docs/models/activityeventaction.md index d364b2f6..f2a30c1b 100644 --- a/docs/models/activityeventaction.md +++ b/docs/models/activityeventaction.md @@ -2,6 +2,14 @@ The type of activity this represents. +## Example Usage + +```python +from glean.api_client.models import ActivityEventAction + +value = ActivityEventAction.VIEW +``` + ## Values diff --git a/docs/models/addcollectionitemserrorerrortype.md b/docs/models/addcollectionitemserrorerrortype.md index da1476fc..761a12fe 100644 --- a/docs/models/addcollectionitemserrorerrortype.md +++ b/docs/models/addcollectionitemserrorerrortype.md @@ -1,8 +1,19 @@ # AddCollectionItemsErrorErrorType +## Example Usage + +```python +from glean.api_client.models import AddCollectionItemsErrorErrorType + +value = AddCollectionItemsErrorErrorType.EXISTING_ITEM + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values | Name | Value | | --------------- | --------------- | -| `EXISTING_ITEM` | EXISTING_ITEM | \ No newline at end of file +| `EXISTING_ITEM` | EXISTING_ITEM | +| `CORRUPT_ITEM` | CORRUPT_ITEM | \ No newline at end of file diff --git a/docs/models/addcollectionitemsrequestrequest.md b/docs/models/addcollectionitemsrequestrequest.md new file mode 100644 index 00000000..06b734c8 --- /dev/null +++ b/docs/models/addcollectionitemsrequestrequest.md @@ -0,0 +1,9 @@ +# AddcollectionitemsRequestRequest + + +## Fields + +| Field | 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`. | +| `add_collection_items_request` | [models.AddCollectionItemsRequest](../models/addcollectionitemsrequest.md) | :heavy_check_mark: | Data describing the add operation. | \ No newline at end of file diff --git a/docs/models/addverificationreminderrequest.md b/docs/models/addverificationreminderrequest.md new file mode 100644 index 00000000..ac943c10 --- /dev/null +++ b/docs/models/addverificationreminderrequest.md @@ -0,0 +1,9 @@ +# AddverificationreminderRequest + + +## Fields + +| Field | 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`. | +| `reminder_request` | [models.ReminderRequest](../models/reminderrequest.md) | :heavy_check_mark: | Details about the reminder. | \ No newline at end of file diff --git a/docs/models/adminsearchrequest.md b/docs/models/adminsearchrequest.md new file mode 100644 index 00000000..608a7bad --- /dev/null +++ b/docs/models/adminsearchrequest.md @@ -0,0 +1,9 @@ +# AdminsearchRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `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`. | | +| `search_request` | [models.SearchRequest](../models/searchrequest.md) | :heavy_check_mark: | Admin search request | {
"trackingToken": "trackingToken",
"query": "vacation policy",
"pageSize": 10,
"requestOptions": {
"facetFilters": [
{
"fieldName": "type",
"values": [
{
"value": "article",
"relationType": "EQUALS"
},
{
"value": "document",
"relationType": "EQUALS"
}
]
},
{
"fieldName": "department",
"values": [
{
"value": "engineering",
"relationType": "EQUALS"
}
]
}
]
}
} | \ No newline at end of file diff --git a/docs/models/agentenum.md b/docs/models/agentenum.md index b80a0fea..561a7e77 100644 --- a/docs/models/agentenum.md +++ b/docs/models/agentenum.md @@ -2,6 +2,16 @@ Name of the agent. +## Example Usage + +```python +from glean.api_client.models import AgentEnum + +value = AgentEnum.DEFAULT + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values @@ -11,4 +21,5 @@ Name of the agent. | `GPT` | GPT | | `UNIVERSAL` | UNIVERSAL | | `FAST` | FAST | -| `ADVANCED` | ADVANCED | \ No newline at end of file +| `ADVANCED` | ADVANCED | +| `AUTO` | AUTO | \ No newline at end of file diff --git a/docs/models/agentexecutionstatus.md b/docs/models/agentexecutionstatus.md index c1bd49e6..d15717b2 100644 --- a/docs/models/agentexecutionstatus.md +++ b/docs/models/agentexecutionstatus.md @@ -2,6 +2,16 @@ The status of the run. One of 'error', 'success'. +## Example Usage + +```python +from glean.api_client.models import AgentExecutionStatus + +value = AgentExecutionStatus.ERROR + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/agentrun.md b/docs/models/agentrun.md index ba0e0f9a..534e9371 100644 --- a/docs/models/agentrun.md +++ b/docs/models/agentrun.md @@ -1,14 +1,14 @@ # AgentRun -Payload for creating a run. +Payload for creating a run. **Important**: If the agent uses an input form trigger, the `input` field is required and must include all fields defined in the form schema. Even fields marked as optional in the UI must be included in the request—use an empty string (`""`) for optional fields without values. Omitting required form fields will result in a 500 error. ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -| `agent_id` | *str* | :heavy_check_mark: | The ID of the agent to run. | -| `input` | Dict[str, *Any*] | :heavy_minus_sign: | The input to the agent. | -| `messages` | List[[models.Message](../models/message.md)] | :heavy_minus_sign: | The messages to pass an input to the agent. | -| `metadata` | Dict[str, *Any*] | :heavy_minus_sign: | The metadata to pass to the agent. | -| `status` | [Optional[models.AgentExecutionStatus]](../models/agentexecutionstatus.md) | :heavy_minus_sign: | The status of the run. One of 'error', 'success'. | \ No newline at end of file +| Field | Type | Required | Description | +| --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | +| `agent_id` | *str* | :heavy_check_mark: | The ID of the agent to run. | +| `input` | Dict[str, *Any*] | :heavy_minus_sign: | The input to the agent. Required when the agent uses an input form trigger. | +| `messages` | List[[models.Message](../models/message.md)] | :heavy_minus_sign: | The messages to pass an input to the agent. | +| `metadata` | Dict[str, *Any*] | :heavy_minus_sign: | The metadata to pass to the agent. | +| `status` | [Optional[models.AgentExecutionStatus]](../models/agentexecutionstatus.md) | :heavy_minus_sign: | The status of the run. One of 'error', 'success'. | \ No newline at end of file diff --git a/docs/models/agentruncreate.md b/docs/models/agentruncreate.md index 8c52882a..46d31de6 100644 --- a/docs/models/agentruncreate.md +++ b/docs/models/agentruncreate.md @@ -1,13 +1,13 @@ # AgentRunCreate -Payload for creating a run. +Payload for creating a run. **Important**: If the agent uses an input form trigger, the `input` field is required and must include all fields defined in the form schema. Even fields marked as optional in the UI must be included in the request—use an empty string (`""`) for optional fields without values. Omitting required form fields will result in a 500 error. ## Fields -| Field | Type | Required | Description | -| -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | -| `agent_id` | *str* | :heavy_check_mark: | The ID of the agent to run. | -| `input` | Dict[str, *Any*] | :heavy_minus_sign: | The input to the agent. | -| `messages` | List[[models.Message](../models/message.md)] | :heavy_minus_sign: | The messages to pass an input to the agent. | -| `metadata` | Dict[str, *Any*] | :heavy_minus_sign: | The metadata to pass to the agent. | \ No newline at end of file +| Field | Type | Required | Description | +| --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | +| `agent_id` | *str* | :heavy_check_mark: | The ID of the agent to run. | +| `input` | Dict[str, *Any*] | :heavy_minus_sign: | The input to the agent. Required when the agent uses an input form trigger. | +| `messages` | List[[models.Message](../models/message.md)] | :heavy_minus_sign: | The messages to pass an input to the agent. | +| `metadata` | Dict[str, *Any*] | :heavy_minus_sign: | The metadata to pass to the agent. | \ No newline at end of file diff --git a/docs/models/agentschemas.md b/docs/models/agentschemas.md index 3535a940..4ccba78f 100644 --- a/docs/models/agentschemas.md +++ b/docs/models/agentschemas.md @@ -5,8 +5,10 @@ Defines the structure and properties of an agent. ## Fields -| Field | Type | Required | Description | Example | -| ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | -| `agent_id` | *str* | :heavy_check_mark: | The ID of the agent. | mho4lwzylcozgoc2 | -| `input_schema` | [models.InputSchema](../models/inputschema.md) | :heavy_check_mark: | The schema for the agent input. In JSON Schema format. | | -| `output_schema` | [models.OutputSchema](../models/outputschema.md) | :heavy_check_mark: | The schema for the agent output. In JSON Schema format. | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | +| `agent_id` | *str* | :heavy_check_mark: | The ID of the agent. | mho4lwzylcozgoc2 | +| `name` | *Optional[str]* | :heavy_minus_sign: | The name of the agent. | HR Policy Agent | +| `input_schema` | [models.InputSchema](../models/inputschema.md) | :heavy_check_mark: | The schema for the agent input. In JSON Schema format. | | +| `output_schema` | [models.OutputSchema](../models/outputschema.md) | :heavy_check_mark: | The schema for the agent output. In JSON Schema format. | | +| `tools` | List[[models.ActionSummary](../models/actionsummary.md)] | :heavy_minus_sign: | List of tools that the agent can invoke. Only included when include_tools query parameter is set to true. | | \ No newline at end of file diff --git a/docs/models/agentsinsightsv2request.md b/docs/models/agentsinsightsv2request.md index fc4a769f..0218c6fa 100644 --- a/docs/models/agentsinsightsv2request.md +++ b/docs/models/agentsinsightsv2request.md @@ -7,4 +7,5 @@ | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | | `agent_ids` | List[*str*] | :heavy_minus_sign: | IDs of the Agents for which Insights should be returned. An empty array signifies all. | | `departments` | List[*str*] | :heavy_minus_sign: | Departments for which Insights are requested. | +| `manager_emails` | List[*str*] | :heavy_minus_sign: | Manager emails whose teams should be filtered for. Empty array means no filtering. | | `day_range` | [Optional[models.Period]](../models/period.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/agentsinsightsv2response.md b/docs/models/agentsinsightsv2response.md index c0812335..bde7e4fd 100644 --- a/docs/models/agentsinsightsv2response.md +++ b/docs/models/agentsinsightsv2response.md @@ -5,15 +5,20 @@ | Field | Type | Required | Description | | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | -| `monthly_active_users` | *Optional[int]* | :heavy_minus_sign: | Number of current Monthly Active Users, in the specified departments. | -| `weekly_active_users` | *Optional[int]* | :heavy_minus_sign: | Number of current Weekly Active Users, in the specified departments. | +| `monthly_active_users` | *Optional[int]* | :heavy_minus_sign: | Number of current Monthly Active Users. | +| `weekly_active_users` | *Optional[int]* | :heavy_minus_sign: | Number of current Weekly Active Users. | | `monthly_active_user_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | | `weekly_active_user_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | | `daily_active_user_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | | `shared_agents_count` | *Optional[int]* | :heavy_minus_sign: | Total number of shared agents. | | `top_agents_insights` | List[[models.PerAgentInsight](../models/peragentinsight.md)] | :heavy_minus_sign: | N/A | +| `top_use_cases_insights` | List[[models.AgentUseCaseInsight](../models/agentusecaseinsight.md)] | :heavy_minus_sign: | N/A | | `agents_usage_by_department_insights` | List[[models.AgentsUsageByDepartmentInsight](../models/agentsusagebydepartmentinsight.md)] | :heavy_minus_sign: | N/A | | `agent_users_insights` | List[[models.AgentUsersInsight](../models/agentusersinsight.md)] | :heavy_minus_sign: | N/A | +| `agents_time_saved_insights` | List[[models.AgentsTimeSavedInsight](../models/agentstimesavedinsight.md)] | :heavy_minus_sign: | Insights for agents time saved over the specified time period. | | `daily_agent_runs_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | +| `successful_runs_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | +| `failed_runs_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | +| `paused_runs_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | | `upvotes_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | | `downvotes_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/agentstimesavedinsight.md b/docs/models/agentstimesavedinsight.md new file mode 100644 index 00000000..552714b4 --- /dev/null +++ b/docs/models/agentstimesavedinsight.md @@ -0,0 +1,14 @@ +# AgentsTimeSavedInsight + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `agent_id` | *Optional[str]* | :heavy_minus_sign: | Agent ID | | +| `agent_name` | *Optional[str]* | :heavy_minus_sign: | Agent name | | +| `icon` | [Optional[models.IconConfig]](../models/iconconfig.md) | :heavy_minus_sign: | Defines how to render an icon | {
"color": "#343CED",
"key": "person_icon",
"iconType": "GLYPH",
"name": "user"
} | +| `is_deleted` | *Optional[bool]* | :heavy_minus_sign: | Indicates whether the agent has been deleted | | +| `run_count` | *Optional[int]* | :heavy_minus_sign: | Total number of runs for this agent over the specified time period. | | +| `mins_per_run` | *Optional[float]* | :heavy_minus_sign: | Average minutes saved per run for this agent over the specified time period. | | +| `feedback_user_count` | *Optional[int]* | :heavy_minus_sign: | Total number of users who provided feedback on time saved for this agent over the specified time period. | | \ No newline at end of file diff --git a/docs/models/agentusecaseinsight.md b/docs/models/agentusecaseinsight.md new file mode 100644 index 00000000..88a6bd23 --- /dev/null +++ b/docs/models/agentusecaseinsight.md @@ -0,0 +1,15 @@ +# AgentUseCaseInsight + + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | +| `use_case` | *Optional[str]* | :heavy_minus_sign: | Use case name | | +| `run_count` | *Optional[int]* | :heavy_minus_sign: | Total number of runs for this use case over the specified time period. | | +| `trend` | *Optional[float]* | :heavy_minus_sign: | Percentage change in runs compared to the previous equivalent time period. | | +| `top_departments` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of the top departments using this use case. | | +| `top_agent_id` | *Optional[str]* | :heavy_minus_sign: | ID of the most-used agent for this use case. | | +| `top_agent_name` | *Optional[str]* | :heavy_minus_sign: | Name of the most-used agent for this use case. | | +| `top_agent_icon` | [Optional[models.IconConfig]](../models/iconconfig.md) | :heavy_minus_sign: | Defines how to render an icon | {
"color": "#343CED",
"key": "person_icon",
"iconType": "GLYPH",
"name": "user"
} | +| `top_agent_is_deleted` | *Optional[bool]* | :heavy_minus_sign: | Indicates whether the top agent has been deleted. | | \ No newline at end of file diff --git a/docs/models/aiappactioncounts.md b/docs/models/aiappactioncounts.md deleted file mode 100644 index cb0b5e37..00000000 --- a/docs/models/aiappactioncounts.md +++ /dev/null @@ -1,16 +0,0 @@ -# AiAppActionCounts - -Map from action to frequency. - - -## Fields - -| Field | Type | Required | Description | -| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | -| `total_slackbot_responses` | *Optional[int]* | :heavy_minus_sign: | Total number of Slackbot responses, both proactive and reactive. | -| `total_slackbot_responses_shared` | *Optional[int]* | :heavy_minus_sign: | Total number of Slackbot responses shared publicly (upvoted). | -| `total_slackbot_responses_not_helpful` | *Optional[int]* | :heavy_minus_sign: | Total number of Slackbot responses rejected as not helpful (downvoted). | -| `total_chat_messages` | *Optional[int]* | :heavy_minus_sign: | Total number of Chat messages sent in requested period. | -| `total_upvotes` | *Optional[int]* | :heavy_minus_sign: | Total number of Chat messages which received upvotes by the user. | -| `total_downvotes` | *Optional[int]* | :heavy_minus_sign: | Total number of Chat messages which received downvotes by the user. | -| `__pydantic_extra__` | Dict[str, *int*] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/aiappsinsightsresponse.md b/docs/models/aiappsinsightsresponse.md deleted file mode 100644 index 81de9209..00000000 --- a/docs/models/aiappsinsightsresponse.md +++ /dev/null @@ -1,12 +0,0 @@ -# AiAppsInsightsResponse - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | -| `last_log_timestamp` | *Optional[int]* | :heavy_minus_sign: | Unix timestamp of the last activity processed to make the response (in seconds since epoch UTC). | -| `ai_app_insights` | List[[models.UserActivityInsight](../models/useractivityinsight.md)] | :heavy_minus_sign: | N/A | -| `total_active_users` | *Optional[int]* | :heavy_minus_sign: | Total number of active users on the Ai App in the requested period. | -| `action_counts` | [Optional[models.AiAppActionCounts]](../models/aiappactioncounts.md) | :heavy_minus_sign: | Map from action to frequency. | -| `departments` | List[*str*] | :heavy_minus_sign: | list of departments applicable for users tab. | \ No newline at end of file diff --git a/docs/models/aiinsightsresponse.md b/docs/models/aiinsightsresponse.md deleted file mode 100644 index 670dbf43..00000000 --- a/docs/models/aiinsightsresponse.md +++ /dev/null @@ -1,19 +0,0 @@ -# AiInsightsResponse - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | -| `last_log_timestamp` | *Optional[int]* | :heavy_minus_sign: | Unix timestamp of the last activity processed to make the response (in seconds since epoch UTC). | -| `assistant_insights` | List[[models.UserActivityInsight](../models/useractivityinsight.md)] | :heavy_minus_sign: | N/A | -| `total_active_assistant_users` | *Optional[int]* | :heavy_minus_sign: | Total number of Active Assistant users (chat, summary, AIA) in requested period. | -| `total_chat_messages` | *Optional[int]* | :heavy_minus_sign: | Total number of Chat messages sent in requested period. | -| `total_ai_summarizations` | *Optional[int]* | :heavy_minus_sign: | Total number of AI Document Summarizations invoked in the requested period. | -| `total_ai_answers` | *Optional[int]* | :heavy_minus_sign: | Total number of AI Answers generated in the requested period. | -| `total_upvotes` | *Optional[int]* | :heavy_minus_sign: | Total number of Chat messages which received upvotes by the user. | -| `total_downvotes` | *Optional[int]* | :heavy_minus_sign: | Total number of Chat messages which received downvotes by the user. | -| `total_gleanbot_responses` | *Optional[int]* | :heavy_minus_sign: | Total number of Gleanbot responses, both proactive and reactive. | -| `total_gleanbot_responses_shared` | *Optional[int]* | :heavy_minus_sign: | Total number of Gleanbot responses shared publicly (upvoted). | -| `total_gleanbot_responses_not_helpful` | *Optional[int]* | :heavy_minus_sign: | Total number of Glean responses rejected as not helpful (downvoted). | -| `departments` | List[*str*] | :heavy_minus_sign: | list of departments applicable for users tab. | \ No newline at end of file diff --git a/docs/models/allowlistoptions.md b/docs/models/allowlistoptions.md index e986d966..e1c6f387 100644 --- a/docs/models/allowlistoptions.md +++ b/docs/models/allowlistoptions.md @@ -1,10 +1,11 @@ # AllowlistOptions -Terms that are allow-listed during the scans. If any finding picked up by a rule exactly matches a term in the allow-list, it will not be counted as a violation. +Terms and regexes that are allow-listed during the scans. If any finding picked up by a rule exactly matches a term, or matches a regex, in the allow-list, it will not be counted as a violation. ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -| `terms` | List[*str*] | :heavy_minus_sign: | list of words and phrases to consider as whitelisted content | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | +| `terms` | List[*str*] | :heavy_minus_sign: | list of words and phrases to consider as whitelisted content | +| `regexes` | List[*str*] | :heavy_minus_sign: | list of regular expressions whose matches are considered whitelisted content | \ No newline at end of file diff --git a/docs/models/announcement.md b/docs/models/announcement.md index dc590582..74daa7c9 100644 --- a/docs/models/announcement.md +++ b/docs/models/announcement.md @@ -21,6 +21,7 @@ | `view_url` | *Optional[str]* | :heavy_minus_sign: | URL for viewing the announcement. It will be set to document URL for announcements from other datasources e.g. simpplr. Can only be written when channel="SOCIAL_FEED". | | | `draft_id` | *Optional[int]* | :heavy_minus_sign: | The opaque id of the associated draft. | | | `permissions` | [Optional[models.ObjectPermissions]](../models/objectpermissions.md) | :heavy_minus_sign: | N/A | | +| `tracking_token` | *Optional[str]* | :heavy_minus_sign: | An opaque token that represents this particular UGC. To be used for `/feedback` reporting. | | | `id` | *Optional[int]* | :heavy_minus_sign: | The opaque id of the announcement. | | | `author` | [Optional[models.Person]](../models/person.md) | :heavy_minus_sign: | N/A | {
"name": "George Clooney",
"obfuscatedId": "abc123"
} | | `create_timestamp` | *Optional[int]* | :heavy_minus_sign: | Server Unix timestamp of the creation time (in seconds since epoch UTC). | | @@ -28,4 +29,5 @@ | `updated_by` | [Optional[models.Person]](../models/person.md) | :heavy_minus_sign: | N/A | {
"name": "George Clooney",
"obfuscatedId": "abc123"
} | | `viewer_info` | [Optional[models.AnnouncementViewerInfo]](../models/announcementviewerinfo.md) | :heavy_minus_sign: | N/A | | | `source_document` | [Optional[models.Document]](../models/document.md) | :heavy_minus_sign: | N/A | | -| `is_published` | *Optional[bool]* | :heavy_minus_sign: | Whether or not the announcement is published. | | \ No newline at end of file +| `is_published` | *Optional[bool]* | :heavy_minus_sign: | Whether or not the announcement is published. | | +| `favorite_info` | [Optional[models.FavoriteInfo]](../models/favoriteinfo.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/announcementchannel.md b/docs/models/announcementchannel.md index 17d0d36c..cf846a33 100644 --- a/docs/models/announcementchannel.md +++ b/docs/models/announcementchannel.md @@ -2,6 +2,16 @@ This determines whether this is a Social Feed post or a regular announcement. +## Example Usage + +```python +from glean.api_client.models import AnnouncementChannel + +value = AnnouncementChannel.MAIN + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/announcementposttype.md b/docs/models/announcementposttype.md index 4fdf8058..cd25f0b9 100644 --- a/docs/models/announcementposttype.md +++ b/docs/models/announcementposttype.md @@ -2,6 +2,16 @@ This determines whether this is an external-link post or a regular announcement post. TEXT - Regular announcement that can contain rich text. LINK - Announcement that is linked to an external site. +## Example Usage + +```python +from glean.api_client.models import AnnouncementPostType + +value = AnnouncementPostType.TEXT + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/anonymouseventeventtype.md b/docs/models/anonymouseventeventtype.md index c49c89c1..484b59b0 100644 --- a/docs/models/anonymouseventeventtype.md +++ b/docs/models/anonymouseventeventtype.md @@ -2,6 +2,16 @@ The nature of the event, for example "out of office". +## Example Usage + +```python +from glean.api_client.models import AnonymousEventEventType + +value = AnonymousEventEventType.DEFAULT + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/answer.md b/docs/models/answer.md index a7f382b4..70996a33 100644 --- a/docs/models/answer.md +++ b/docs/models/answer.md @@ -3,28 +3,29 @@ ## Fields -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `id` | *int* | :heavy_check_mark: | The opaque ID of the Answer. | 3 | -| `doc_id` | *Optional[str]* | :heavy_minus_sign: | Glean Document ID of the Answer. The Glean Document ID is supported for cases where the Answer ID isn't available. If both are available, using the Answer ID is preferred. | ANSWERS_answer_3 | -| `question` | *Optional[str]* | :heavy_minus_sign: | N/A | Why is the sky blue? | -| `question_variations` | List[*str*] | :heavy_minus_sign: | Additional ways of phrasing this question. | | -| `body_text` | *Optional[str]* | :heavy_minus_sign: | The plain text answer to the question. | From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light. | -| ~~`board_id`~~ | *Optional[int]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

The parent board ID of this Answer, or 0 if it's a floating Answer. Adding Answers to Answer Boards is no longer permitted. | | -| `audience_filters` | List[[models.FacetFilter](../models/facetfilter.md)] | :heavy_minus_sign: | Filters which restrict who should see the answer. Values are taken from the corresponding filters in people search. | | -| `added_roles` | List[[models.UserRoleSpecification](../models/userrolespecification.md)] | :heavy_minus_sign: | A list of user roles for the answer added by the owner. | | -| `removed_roles` | List[[models.UserRoleSpecification](../models/userrolespecification.md)] | :heavy_minus_sign: | A list of user roles for the answer removed by the owner. | | -| `roles` | List[[models.UserRoleSpecification](../models/userrolespecification.md)] | :heavy_minus_sign: | A list of roles for this answer explicitly granted by an owner, editor, or admin. | | -| `source_document_spec` | [Optional[models.DocumentSpecUnion]](../models/documentspecunion.md) | :heavy_minus_sign: | N/A | | -| `source_type` | [Optional[models.AnswerSourceType]](../models/answersourcetype.md) | :heavy_minus_sign: | N/A | | -| `permissions` | [Optional[models.ObjectPermissions]](../models/objectpermissions.md) | :heavy_minus_sign: | N/A | | -| `combined_answer_text` | [Optional[models.StructuredText]](../models/structuredtext.md) | :heavy_minus_sign: | N/A | | -| `likes` | [Optional[models.AnswerLikes]](../models/answerlikes.md) | :heavy_minus_sign: | N/A | | -| `author` | [Optional[models.Person]](../models/person.md) | :heavy_minus_sign: | N/A | {
"name": "George Clooney",
"obfuscatedId": "abc123"
} | -| `create_time` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | The time the answer was created in ISO format (ISO 8601). | | -| `update_time` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | The time the answer was last updated in ISO format (ISO 8601). | | -| `updated_by` | [Optional[models.Person]](../models/person.md) | :heavy_minus_sign: | N/A | {
"name": "George Clooney",
"obfuscatedId": "abc123"
} | -| `verification` | [Optional[models.Verification]](../models/verification.md) | :heavy_minus_sign: | N/A | | -| `collections` | List[[models.Collection](../models/collection.md)] | :heavy_minus_sign: | The collections to which the answer belongs. | | -| `document_category` | *Optional[str]* | :heavy_minus_sign: | The document's document_category(.proto). | | -| `source_document` | [Optional[models.Document]](../models/document.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *int* | :heavy_check_mark: | The opaque ID of the Answer. | 3 | +| `doc_id` | *Optional[str]* | :heavy_minus_sign: | Glean Document ID of the Answer. The Glean Document ID is supported for cases where the Answer ID isn't available. If both are available, using the Answer ID is preferred. | ANSWERS_answer_3 | +| `question` | *Optional[str]* | :heavy_minus_sign: | N/A | Why is the sky blue? | +| `question_variations` | List[*str*] | :heavy_minus_sign: | Additional ways of phrasing this question. | | +| `body_text` | *Optional[str]* | :heavy_minus_sign: | The plain text answer to the question. | From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light. | +| ~~`board_id`~~ | *Optional[int]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Answer Boards no longer supported.

The parent board ID of this Answer, or 0 if it's a floating Answer. Adding Answers to Answer Boards is no longer permitted. | | +| `audience_filters` | List[[models.FacetFilter](../models/facetfilter.md)] | :heavy_minus_sign: | Filters which restrict who should see the answer. Values are taken from the corresponding filters in people search. | | +| `added_roles` | List[[models.UserRoleSpecification](../models/userrolespecification.md)] | :heavy_minus_sign: | A list of user roles for the answer added by the owner. | | +| `removed_roles` | List[[models.UserRoleSpecification](../models/userrolespecification.md)] | :heavy_minus_sign: | A list of user roles for the answer removed by the owner. | | +| `roles` | List[[models.UserRoleSpecification](../models/userrolespecification.md)] | :heavy_minus_sign: | A list of roles for this answer explicitly granted by an owner, editor, or admin. | | +| `source_document_spec` | [Optional[models.DocumentSpecUnion]](../models/documentspecunion.md) | :heavy_minus_sign: | N/A | | +| `source_type` | [Optional[models.AnswerSourceType]](../models/answersourcetype.md) | :heavy_minus_sign: | N/A | | +| `permissions` | [Optional[models.ObjectPermissions]](../models/objectpermissions.md) | :heavy_minus_sign: | N/A | | +| `tracking_token` | *Optional[str]* | :heavy_minus_sign: | An opaque token that represents this particular UGC. To be used for `/feedback` reporting. | | +| `combined_answer_text` | [Optional[models.StructuredText]](../models/structuredtext.md) | :heavy_minus_sign: | N/A | | +| `likes` | [Optional[models.AnswerLikes]](../models/answerlikes.md) | :heavy_minus_sign: | N/A | | +| `author` | [Optional[models.Person]](../models/person.md) | :heavy_minus_sign: | N/A | {
"name": "George Clooney",
"obfuscatedId": "abc123"
} | +| `create_time` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | The time the answer was created in ISO format (ISO 8601). | | +| `update_time` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | The time the answer was last updated in ISO format (ISO 8601). | | +| `updated_by` | [Optional[models.Person]](../models/person.md) | :heavy_minus_sign: | N/A | {
"name": "George Clooney",
"obfuscatedId": "abc123"
} | +| `verification` | [Optional[models.Verification]](../models/verification.md) | :heavy_minus_sign: | N/A | | +| `collections` | List[[models.Collection](../models/collection.md)] | :heavy_minus_sign: | The collections to which the answer belongs. | | +| `document_category` | *Optional[str]* | :heavy_minus_sign: | The document's document_category(.proto). | | +| `source_document` | [Optional[models.Document]](../models/document.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/answercreationdata.md b/docs/models/answercreationdata.md index d373c0f9..d9670ace 100644 --- a/docs/models/answercreationdata.md +++ b/docs/models/answercreationdata.md @@ -3,17 +3,17 @@ ## Fields -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `question` | *Optional[str]* | :heavy_minus_sign: | N/A | Why is the sky blue? | -| `question_variations` | List[*str*] | :heavy_minus_sign: | Additional ways of phrasing this question. | | -| `body_text` | *Optional[str]* | :heavy_minus_sign: | The plain text answer to the question. | From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light. | -| ~~`board_id`~~ | *Optional[int]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

The parent board ID of this Answer, or 0 if it's a floating Answer. Adding Answers to Answer Boards is no longer permitted. | | -| `audience_filters` | List[[models.FacetFilter](../models/facetfilter.md)] | :heavy_minus_sign: | Filters which restrict who should see the answer. Values are taken from the corresponding filters in people search. | | -| `added_roles` | List[[models.UserRoleSpecification](../models/userrolespecification.md)] | :heavy_minus_sign: | A list of user roles for the answer added by the owner. | | -| `removed_roles` | List[[models.UserRoleSpecification](../models/userrolespecification.md)] | :heavy_minus_sign: | A list of user roles for the answer removed by the owner. | | -| `roles` | List[[models.UserRoleSpecification](../models/userrolespecification.md)] | :heavy_minus_sign: | A list of roles for this answer explicitly granted by an owner, editor, or admin. | | -| `source_document_spec` | [Optional[models.DocumentSpecUnion]](../models/documentspecunion.md) | :heavy_minus_sign: | N/A | | -| `source_type` | [Optional[models.AnswerCreationDataSourceType]](../models/answercreationdatasourcetype.md) | :heavy_minus_sign: | N/A | | -| `added_collections` | List[*int*] | :heavy_minus_sign: | IDs of Collections to which a document is added. | | -| `combined_answer_text` | [Optional[models.StructuredTextMutableProperties]](../models/structuredtextmutableproperties.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `question` | *Optional[str]* | :heavy_minus_sign: | N/A | Why is the sky blue? | +| `question_variations` | List[*str*] | :heavy_minus_sign: | Additional ways of phrasing this question. | | +| `body_text` | *Optional[str]* | :heavy_minus_sign: | The plain text answer to the question. | From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light. | +| ~~`board_id`~~ | *Optional[int]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Answer Boards no longer supported.

The parent board ID of this Answer, or 0 if it's a floating Answer. Adding Answers to Answer Boards is no longer permitted. | | +| `audience_filters` | List[[models.FacetFilter](../models/facetfilter.md)] | :heavy_minus_sign: | Filters which restrict who should see the answer. Values are taken from the corresponding filters in people search. | | +| `added_roles` | List[[models.UserRoleSpecification](../models/userrolespecification.md)] | :heavy_minus_sign: | A list of user roles for the answer added by the owner. | | +| `removed_roles` | List[[models.UserRoleSpecification](../models/userrolespecification.md)] | :heavy_minus_sign: | A list of user roles for the answer removed by the owner. | | +| `roles` | List[[models.UserRoleSpecification](../models/userrolespecification.md)] | :heavy_minus_sign: | A list of roles for this answer explicitly granted by an owner, editor, or admin. | | +| `source_document_spec` | [Optional[models.DocumentSpecUnion]](../models/documentspecunion.md) | :heavy_minus_sign: | N/A | | +| `source_type` | [Optional[models.AnswerCreationDataSourceType]](../models/answercreationdatasourcetype.md) | :heavy_minus_sign: | N/A | | +| `added_collections` | List[*int*] | :heavy_minus_sign: | IDs of Collections to which a document is added. | | +| `combined_answer_text` | [Optional[models.StructuredTextMutableProperties]](../models/structuredtextmutableproperties.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/answercreationdatasourcetype.md b/docs/models/answercreationdatasourcetype.md index a3a2a0c0..22902121 100644 --- a/docs/models/answercreationdatasourcetype.md +++ b/docs/models/answercreationdatasourcetype.md @@ -1,5 +1,13 @@ # AnswerCreationDataSourceType +## Example Usage + +```python +from glean.api_client.models import AnswerCreationDataSourceType + +value = AnswerCreationDataSourceType.DOCUMENT +``` + ## Values diff --git a/docs/models/answerresult.md b/docs/models/answerresult.md index ef148e0a..3b877b10 100644 --- a/docs/models/answerresult.md +++ b/docs/models/answerresult.md @@ -3,7 +3,8 @@ ## Fields -| Field | Type | Required | Description | -| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | -| `answer` | [models.Answer](../models/answer.md) | :heavy_check_mark: | N/A | -| `tracking_token` | *Optional[str]* | :heavy_minus_sign: | An opaque token that represents this particular Answer. To be used for `/feedback` reporting. | \ No newline at end of file +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `answer` | [models.Answer](../models/answer.md) | :heavy_check_mark: | N/A | +| ~~`tracking_token`~~ | *Optional[str]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: Deprecated on 2026-05-07, removal scheduled for 2027-01-15: Use `answer.trackingToken` instead..

Use `answer.trackingToken` instead. | +| `favorite_info` | [Optional[models.FavoriteInfo]](../models/favoriteinfo.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/answersourcetype.md b/docs/models/answersourcetype.md index 052e5e4e..6de61089 100644 --- a/docs/models/answersourcetype.md +++ b/docs/models/answersourcetype.md @@ -1,5 +1,15 @@ # AnswerSourceType +## Example Usage + +```python +from glean.api_client.models import AnswerSourceType + +value = AnswerSourceType.DOCUMENT + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/assistantactivitytype.md b/docs/models/assistantactivitytype.md deleted file mode 100644 index 9502cc83..00000000 --- a/docs/models/assistantactivitytype.md +++ /dev/null @@ -1,11 +0,0 @@ -# AssistantActivityType - - -## Values - -| Name | Value | -| ------------------- | ------------------- | -| `GLEAN_CHAT` | GLEAN_CHAT | -| `AI_SUMMARY` | AI_SUMMARY | -| `AI_ANSWER` | AI_ANSWER | -| `GLEANBOT_RESPONSE` | GLEANBOT_RESPONSE | \ No newline at end of file diff --git a/docs/models/assistantinsightsresponse.md b/docs/models/assistantinsightsresponse.md index 022c4ee4..d5cc0973 100644 --- a/docs/models/assistantinsightsresponse.md +++ b/docs/models/assistantinsightsresponse.md @@ -5,8 +5,8 @@ | Field | Type | Required | Description | | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | -| `monthly_active_users` | *Optional[int]* | :heavy_minus_sign: | Number of current Monthly Active Users, in the specified departments. | -| `weekly_active_users` | *Optional[int]* | :heavy_minus_sign: | Number of current Weekly Active Users, in the specified departments. | +| `monthly_active_users` | *Optional[int]* | :heavy_minus_sign: | Number of current Monthly Active Users. | +| `weekly_active_users` | *Optional[int]* | :heavy_minus_sign: | Number of current Weekly Active Users. | | `last_updated_ts` | *Optional[int]* | :heavy_minus_sign: | Unix timestamp of the last update for the insights data in the response. | | `monthly_active_user_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | | `weekly_active_user_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | diff --git a/docs/models/authconfig.md b/docs/models/authconfig.md index 4f7c0191..deafc0ea 100644 --- a/docs/models/authconfig.md +++ b/docs/models/authconfig.md @@ -16,4 +16,7 @@ Config for tool's authentication method. | `scopes` | List[*str*] | :heavy_minus_sign: | A list of strings denoting the different scopes or access levels required by the tool. | | `audiences` | List[*str*] | :heavy_minus_sign: | A list of strings denoting the different audience which can access the tool. | | `authorization_url` | *Optional[str]* | :heavy_minus_sign: | The OAuth provider's endpoint, where access tokens are requested. | +| `resource` | *Optional[str]* | :heavy_minus_sign: | The OAuth 2.0 Resource Indicator (RFC 8707) for the protected resource. Discovered from Protected Resource Metadata (RFC 9728) during DCR. Included in authorization and token exchange requests when present. | +| `token_endpoint_auth_method` | [Optional[models.TokenEndpointAuthMethod]](../models/tokenendpointauthmethod.md) | :heavy_minus_sign: | The OAuth 2.0 token endpoint authentication method (RFC 7591). Determines how the client authenticates when exchanging an authorization code for a token. Values use lowercase to match the OAuth 2.0 wire format (RFC 7591 Section 2). | +| `auth_header_type` | [Optional[models.AuthHeaderType]](../models/authheadertype.md) | :heavy_minus_sign: | Defines the header structure for sending the API key or token to the server. Defaults to AUTHORIZATION_BEARER. Select the specific header format the server expects for transmitting the key. | | `last_authorized_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | The time the tool was last authorized in ISO format (ISO 8601). | \ No newline at end of file diff --git a/docs/models/authconfigstatus.md b/docs/models/authconfigstatus.md index 60f45500..62132edb 100644 --- a/docs/models/authconfigstatus.md +++ b/docs/models/authconfigstatus.md @@ -2,6 +2,16 @@ Auth status of the tool. +## Example Usage + +```python +from glean.api_client.models import AuthConfigStatus + +value = AuthConfigStatus.AWAITING_AUTH + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/authconfigtype.md b/docs/models/authconfigtype.md index 03e3f113..0427eb93 100644 --- a/docs/models/authconfigtype.md +++ b/docs/models/authconfigtype.md @@ -7,6 +7,16 @@ Use 'OAUTH_*' when Glean calls an external API (e.g., Jira) on behalf of a user 'DWD' refers to domain wide delegation. +## Example Usage + +```python +from glean.api_client.models import AuthConfigType + +value = AuthConfigType.NONE + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/authcontext.md b/docs/models/authcontext.md new file mode 100644 index 00000000..e861d79b --- /dev/null +++ b/docs/models/authcontext.md @@ -0,0 +1,11 @@ +# AuthContext + +Context for authentication responses, containing identifiers for the entity being authenticated. + + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | +| `server_id` | *Optional[str]* | :heavy_minus_sign: | ID of the MCP server (populated when toolType is MCP). | \ No newline at end of file diff --git a/docs/models/authheadertype.md b/docs/models/authheadertype.md new file mode 100644 index 00000000..8a6b33fa --- /dev/null +++ b/docs/models/authheadertype.md @@ -0,0 +1,23 @@ +# AuthHeaderType + +Defines the header structure for sending the API key or token to the server. Defaults to AUTHORIZATION_BEARER. Select the specific header format the server expects for transmitting the key. + +## Example Usage + +```python +from glean.api_client.models import AuthHeaderType + +value = AuthHeaderType.AUTHORIZATION_BEARER + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + + +## Values + +| Name | Value | +| ----------------------- | ----------------------- | +| `AUTHORIZATION_BEARER` | AUTHORIZATION_BEARER | +| `AUTHORIZATION_TOKEN` | AUTHORIZATION_TOKEN | +| `AUTHORIZATION_API_KEY` | AUTHORIZATION_API_KEY | +| `X_API_KEY` | X_API_KEY | \ No newline at end of file diff --git a/docs/models/author.md b/docs/models/author.md index d936487d..9145b866 100644 --- a/docs/models/author.md +++ b/docs/models/author.md @@ -1,5 +1,15 @@ # Author +## Example Usage + +```python +from glean.api_client.models import Author + +value = Author.USER + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/authorizeactionpackrequest.md b/docs/models/authorizeactionpackrequest.md new file mode 100644 index 00000000..1b8864fe --- /dev/null +++ b/docs/models/authorizeactionpackrequest.md @@ -0,0 +1,8 @@ +# AuthorizeActionPackRequest + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `return_url` | *str* | :heavy_check_mark: | URL on the customer's domain to redirect the end user's browser back to after the third-party OAuth
callback completes. Must be present in the tenant's return URL allowlist.
| \ No newline at end of file diff --git a/docs/models/authorizeactionpackrequestrequest.md b/docs/models/authorizeactionpackrequestrequest.md new file mode 100644 index 00000000..8b8fbeb8 --- /dev/null +++ b/docs/models/authorizeactionpackrequestrequest.md @@ -0,0 +1,9 @@ +# AuthorizeActionPackRequestRequest + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | +| `action_pack_id` | *str* | :heavy_check_mark: | ID of the action pack to query or authorize. | +| `authorize_action_pack_request` | [models.AuthorizeActionPackRequest](../models/authorizeactionpackrequest.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/authorizeactionpackresponse.md b/docs/models/authorizeactionpackresponse.md new file mode 100644 index 00000000..24363138 --- /dev/null +++ b/docs/models/authorizeactionpackresponse.md @@ -0,0 +1,8 @@ +# AuthorizeActionPackResponse + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `redirect_url` | *str* | :heavy_check_mark: | URL that the customer UI should navigate the end user to in order to begin the third-party OAuth flow.
After the user consents, control returns to `returnUrl` from the request.
| \ No newline at end of file diff --git a/docs/models/authorizetoolserverrequest.md b/docs/models/authorizetoolserverrequest.md new file mode 100644 index 00000000..f6697f25 --- /dev/null +++ b/docs/models/authorizetoolserverrequest.md @@ -0,0 +1,8 @@ +# AuthorizeToolServerRequest + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | +| `return_url` | *str* | :heavy_check_mark: | URL to redirect the end user's browser back to after the OAuth flow completes.
Must be present in the tenant's configured return URL allowlist.
| \ No newline at end of file diff --git a/docs/models/authorizetoolserverrequestrequest.md b/docs/models/authorizetoolserverrequestrequest.md new file mode 100644 index 00000000..31792316 --- /dev/null +++ b/docs/models/authorizetoolserverrequestrequest.md @@ -0,0 +1,9 @@ +# AuthorizeToolServerRequestRequest + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | +| `server_id` | *str* | :heavy_check_mark: | Unique identifier of the tool server. | +| `authorize_tool_server_request` | [models.AuthorizeToolServerRequest](../models/authorizetoolserverrequest.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/authorizetoolserverresponse.md b/docs/models/authorizetoolserverresponse.md new file mode 100644 index 00000000..b74d0886 --- /dev/null +++ b/docs/models/authorizetoolserverresponse.md @@ -0,0 +1,8 @@ +# AuthorizeToolServerResponse + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `authorization_url` | *str* | :heavy_check_mark: | URL that the client should navigate the end user to in order to begin the OAuth flow.
After the user consents, control returns to `returnUrl` from the request.
| \ No newline at end of file diff --git a/docs/models/authstatus.md b/docs/models/authstatus.md new file mode 100644 index 00000000..f686ee27 --- /dev/null +++ b/docs/models/authstatus.md @@ -0,0 +1,24 @@ +# AuthStatus + +The per-user authorization status for a datasource. + +## Example Usage + +```python +from glean.api_client.models import AuthStatus + +value = AuthStatus.DISABLED + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + + +## Values + +| Name | Value | +| --------------- | --------------- | +| `DISABLED` | DISABLED | +| `AWAITING_AUTH` | AWAITING_AUTH | +| `AUTHORIZED` | AUTHORIZED | +| `STALE_OAUTH` | STALE_OAUTH | +| `SEG_MIGRATION` | SEG_MIGRATION | \ No newline at end of file diff --git a/docs/models/authtype.md b/docs/models/authtype.md index 7be58bb9..120f9898 100644 --- a/docs/models/authtype.md +++ b/docs/models/authtype.md @@ -7,6 +7,16 @@ Use 'OAUTH_*' when Glean calls an external API (e.g., Jira) on behalf of a user 'DWD' refers to domain wide delegation. +## Example Usage + +```python +from glean.api_client.models import AuthType + +value = AuthType.NONE + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/autocompleterequestrequest.md b/docs/models/autocompleterequestrequest.md new file mode 100644 index 00000000..f52bd9ee --- /dev/null +++ b/docs/models/autocompleterequestrequest.md @@ -0,0 +1,9 @@ +# AutocompleteRequestRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `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`. | | +| `autocomplete_request` | [models.AutocompleteRequest](../models/autocompleterequest.md) | :heavy_check_mark: | Autocomplete request | {
"trackingToken": "trackingToken",
"query": "what is a que",
"datasource": "GDRIVE",
"resultSize": 10
} | \ No newline at end of file diff --git a/docs/models/autocompleterequestresulttype.md b/docs/models/autocompleterequestresulttype.md index ead3f82a..1133a59c 100644 --- a/docs/models/autocompleterequestresulttype.md +++ b/docs/models/autocompleterequestresulttype.md @@ -1,5 +1,13 @@ # AutocompleteRequestResultType +## Example Usage + +```python +from glean.api_client.models import AutocompleteRequestResultType + +value = AutocompleteRequestResultType.ADDITIONAL_DOCUMENT +``` + ## Values diff --git a/docs/models/autocompleteresultresulttype.md b/docs/models/autocompleteresultresulttype.md index bb8a1893..9e2a7661 100644 --- a/docs/models/autocompleteresultresulttype.md +++ b/docs/models/autocompleteresultresulttype.md @@ -1,5 +1,15 @@ # AutocompleteResultResultType +## Example Usage + +```python +from glean.api_client.models import AutocompleteResultResultType + +value = AutocompleteResultResultType.ADDITIONAL_DOCUMENT + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/breakdowntype.md b/docs/models/breakdowntype.md new file mode 100644 index 00000000..dbe36727 --- /dev/null +++ b/docs/models/breakdowntype.md @@ -0,0 +1,21 @@ +# BreakdownType + +Type of breakdown to return. + +## Example Usage + +```python +from glean.api_client.models import BreakdownType + +value = BreakdownType.USERS +``` + + +## Values + +| Name | Value | +| ------------------- | ------------------- | +| `USERS` | USERS | +| `HOST_APPLICATIONS` | HOST_APPLICATIONS | +| `TOOLS` | TOOLS | +| `SERVERS` | SERVERS | \ No newline at end of file diff --git a/docs/models/bulkuploadhistoryeventstatus.md b/docs/models/bulkuploadhistoryeventstatus.md index d146ed1e..dcc80367 100644 --- a/docs/models/bulkuploadhistoryeventstatus.md +++ b/docs/models/bulkuploadhistoryeventstatus.md @@ -2,6 +2,16 @@ The status of the upload, an enum of ACTIVE, SUCCESSFUL +## Example Usage + +```python +from glean.api_client.models import BulkUploadHistoryEventStatus + +value = BulkUploadHistoryEventStatus.ACTIVE + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/bundle.md b/docs/models/bundle.md new file mode 100644 index 00000000..be383178 --- /dev/null +++ b/docs/models/bundle.md @@ -0,0 +1,10 @@ +# Bundle + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------ | ------------------------------------ | ------------------------------------ | ------------------------------------ | +| `file_name` | *str* | :heavy_check_mark: | N/A | +| `content` | *Union[bytes, IO[bytes], io.IOBase]* | :heavy_check_mark: | N/A | +| `content_type` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/calendarevent.md b/docs/models/calendarevent.md index 91c8c22a..077d4b46 100644 --- a/docs/models/calendarevent.md +++ b/docs/models/calendarevent.md @@ -5,18 +5,21 @@ A generic, light-weight calendar event. ## Fields -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | -| `time` | [Optional[models.TimeInterval]](../models/timeinterval.md) | :heavy_minus_sign: | N/A | -| `event_type` | [Optional[models.CalendarEventEventType]](../models/calendareventeventtype.md) | :heavy_minus_sign: | The nature of the event, for example "out of office". | -| `id` | *str* | :heavy_check_mark: | The calendar event id | -| `url` | *str* | :heavy_check_mark: | A permalink for this calendar event | -| `attendees` | [Optional[models.CalendarAttendees]](../models/calendarattendees.md) | :heavy_minus_sign: | N/A | -| `location` | *Optional[str]* | :heavy_minus_sign: | The location that this event is taking place at. | -| `conference_data` | [Optional[models.ConferenceData]](../models/conferencedata.md) | :heavy_minus_sign: | N/A | -| `description` | *Optional[str]* | :heavy_minus_sign: | The HTML description of the event. | -| `datasource` | *Optional[str]* | :heavy_minus_sign: | The app or other repository type from which the event was extracted | -| `has_transcript` | *Optional[bool]* | :heavy_minus_sign: | The event has a transcript associated with it enabling features like summarization | -| `transcript_url` | *Optional[str]* | :heavy_minus_sign: | A link to the transcript of the event | -| `classifications` | List[[models.EventClassification](../models/eventclassification.md)] | :heavy_minus_sign: | N/A | -| `generated_attachments` | List[[models.GeneratedAttachment](../models/generatedattachment.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | +| `time` | [Optional[models.TimeInterval]](../models/timeinterval.md) | :heavy_minus_sign: | N/A | +| `event_type` | [Optional[models.CalendarEventEventType]](../models/calendareventeventtype.md) | :heavy_minus_sign: | The nature of the event, for example "out of office". | +| `id` | *str* | :heavy_check_mark: | The calendar event id | +| `url` | *str* | :heavy_check_mark: | A permalink for this calendar event | +| `attendees` | [Optional[models.CalendarAttendees]](../models/calendarattendees.md) | :heavy_minus_sign: | N/A | +| `is_organizer` | *OptionalNullable[bool]* | :heavy_minus_sign: | Whether the requesting user is the organizer of this event. | +| `room_booking_status` | [Optional[models.CalendarRoomBookingStatus]](../models/calendarroombookingstatus.md) | :heavy_minus_sign: | The current booking status of the room resource associated with an event. | +| `room_name` | *Optional[str]* | :heavy_minus_sign: | The display name of the room resource associated with this event. | +| `location` | *Optional[str]* | :heavy_minus_sign: | The location that this event is taking place at. | +| `conference_data` | [Optional[models.ConferenceData]](../models/conferencedata.md) | :heavy_minus_sign: | N/A | +| `description` | *Optional[str]* | :heavy_minus_sign: | The HTML description of the event. | +| `datasource` | *Optional[str]* | :heavy_minus_sign: | The app or other repository type from which the event was extracted | +| `has_transcript` | *Optional[bool]* | :heavy_minus_sign: | The event has a transcript associated with it enabling features like summarization | +| `transcript_url` | *Optional[str]* | :heavy_minus_sign: | A link to the transcript of the event | +| `classifications` | List[[models.EventClassification](../models/eventclassification.md)] | :heavy_minus_sign: | N/A | +| `generated_attachments` | List[[models.GeneratedAttachment](../models/generatedattachment.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/calendareventeventtype.md b/docs/models/calendareventeventtype.md index 8d5d6eb9..d477e13e 100644 --- a/docs/models/calendareventeventtype.md +++ b/docs/models/calendareventeventtype.md @@ -2,6 +2,16 @@ The nature of the event, for example "out of office". +## Example Usage + +```python +from glean.api_client.models import CalendarEventEventType + +value = CalendarEventEventType.DEFAULT + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/calendarroombookingstatus.md b/docs/models/calendarroombookingstatus.md new file mode 100644 index 00000000..a26d6c42 --- /dev/null +++ b/docs/models/calendarroombookingstatus.md @@ -0,0 +1,23 @@ +# CalendarRoomBookingStatus + +The current booking status of the room resource associated with an event. + +## Example Usage + +```python +from glean.api_client.models import CalendarRoomBookingStatus + +value = CalendarRoomBookingStatus.NONE + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + + +## Values + +| Name | Value | +| ---------- | ---------- | +| `NONE` | NONE | +| `ACCEPTED` | ACCEPTED | +| `DECLINED` | DECLINED | +| `PENDING` | PENDING | \ No newline at end of file diff --git a/docs/models/chatfilefailurereason.md b/docs/models/chatfilefailurereason.md index 64426814..cef1b10b 100644 --- a/docs/models/chatfilefailurereason.md +++ b/docs/models/chatfilefailurereason.md @@ -2,6 +2,16 @@ Reason for failed status. +## Example Usage + +```python +from glean.api_client.models import ChatFileFailureReason + +value = ChatFileFailureReason.PARSE_FAILED + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/chatfilestatus.md b/docs/models/chatfilestatus.md index ebbb1951..d531ff5b 100644 --- a/docs/models/chatfilestatus.md +++ b/docs/models/chatfilestatus.md @@ -2,12 +2,23 @@ Current status of the file. +## Example Usage + +```python +from glean.api_client.models import ChatFileStatus + +value = ChatFileStatus.PROCESSING + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values -| Name | Value | -| ------------ | ------------ | -| `PROCESSING` | PROCESSING | -| `PROCESSED` | PROCESSED | -| `FAILED` | FAILED | -| `DELETED` | DELETED | \ No newline at end of file +| Name | Value | +| --------------------- | --------------------- | +| `PROCESSING` | PROCESSING | +| `PROCESSED` | PROCESSED | +| `PARTIALLY_PROCESSED` | PARTIALLY_PROCESSED | +| `FAILED` | FAILED | +| `DELETED` | DELETED | \ No newline at end of file diff --git a/docs/models/chatmessage.md b/docs/models/chatmessage.md index 7d770c5a..7134cbbb 100644 --- a/docs/models/chatmessage.md +++ b/docs/models/chatmessage.md @@ -5,15 +5,15 @@ A message that is rendered as one coherent unit with one given sender. ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `agent_config` | [Optional[models.AgentConfig]](../models/agentconfig.md) | :heavy_minus_sign: | Describes the agent that executes the request. | -| `author` | [Optional[models.Author]](../models/author.md) | :heavy_minus_sign: | N/A | -| `citations` | List[[models.ChatMessageCitation](../models/chatmessagecitation.md)] | :heavy_minus_sign: | A list of Citations that were used to generate the response. | -| `uploaded_file_ids` | List[*str*] | :heavy_minus_sign: | IDs of files uploaded in the message that are referenced to generate the answer. | -| `fragments` | List[[models.ChatMessageFragment](../models/chatmessagefragment.md)] | :heavy_minus_sign: | A list of rich data used to represent the response or formulate a request. These are linearly stitched together to support richer data formats beyond simple text. | -| `ts` | *Optional[str]* | :heavy_minus_sign: | Response timestamp of the message. | -| `message_id` | *Optional[str]* | :heavy_minus_sign: | A unique server-side generated ID used to identify a message, automatically populated for any USER authored messages. | -| `message_tracking_token` | *Optional[str]* | :heavy_minus_sign: | Opaque tracking token generated server-side. | -| `message_type` | [Optional[models.MessageType]](../models/messagetype.md) | :heavy_minus_sign: | Semantically groups content of a certain type. It can be used for purposes such as differential UI treatment. USER authored messages should be of type CONTENT and do not need `messageType` specified. | -| ~~`has_more_fragments`~~ | *Optional[bool]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

Signals there are additional response fragments incoming. | \ No newline at end of file +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `agent_config` | [Optional[models.AgentConfig]](../models/agentconfig.md) | :heavy_minus_sign: | Describes the agent that executes the request. | +| `author` | [Optional[models.Author]](../models/author.md) | :heavy_minus_sign: | N/A | +| ~~`citations`~~ | List[[models.ChatMessageCitation](../models/chatmessagecitation.md)] | :heavy_minus_sign: | : warning: ** DEPRECATED **: Deprecated on 2026-02-06, removal scheduled for 2026-10-15: Use inline citations via ChatMessageFragment.citation and ChatMessageCitation.referenceRanges instead. This field is still populated for backward compatibility..

Deprecated: Use inline citations via ChatMessageFragment.citation instead. For detailed reference information, use ChatMessageCitation.referenceRanges. This field is still populated for backward compatibility. | +| `uploaded_file_ids` | List[*str*] | :heavy_minus_sign: | IDs of files uploaded in the message that are referenced to generate the answer. | +| `fragments` | List[[models.ChatMessageFragment](../models/chatmessagefragment.md)] | :heavy_minus_sign: | A list of rich data used to represent the response or formulate a request. These are linearly stitched together to support richer data formats beyond simple text. | +| `ts` | *Optional[str]* | :heavy_minus_sign: | Response timestamp of the message. | +| `message_id` | *Optional[str]* | :heavy_minus_sign: | A unique server-side generated ID used to identify a message, automatically populated for any USER authored messages. | +| `message_tracking_token` | *Optional[str]* | :heavy_minus_sign: | Opaque tracking token generated server-side. | +| `message_type` | [Optional[models.MessageType]](../models/messagetype.md) | :heavy_minus_sign: | Semantically groups content of a certain type. It can be used for purposes such as differential UI treatment. USER authored messages should be of type CONTENT and do not need `messageType` specified. | +| ~~`has_more_fragments`~~ | *Optional[bool]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

Signals there are additional response fragments incoming. | \ No newline at end of file diff --git a/docs/models/chatmessagecitation.md b/docs/models/chatmessagecitation.md index 976651ca..66737ea5 100644 --- a/docs/models/chatmessagecitation.md +++ b/docs/models/chatmessagecitation.md @@ -11,4 +11,6 @@ Information about the source for a ChatMessage. | `source_document` | [Optional[models.Document]](../models/document.md) | :heavy_minus_sign: | N/A | | | `source_file` | [Optional[models.ChatFile]](../models/chatfile.md) | :heavy_minus_sign: | Structure for file uploaded by a user for Chat. | | | `source_person` | [Optional[models.Person]](../models/person.md) | :heavy_minus_sign: | N/A | {
"name": "George Clooney",
"obfuscatedId": "abc123"
} | +| `source_custom_entity` | [Optional[models.CustomEntity]](../models/customentity.md) | :heavy_minus_sign: | N/A | | +| `source_skill` | [Optional[models.ChatSkill]](../models/chatskill.md) | :heavy_minus_sign: | A skill cited by Assistant. | | | `reference_ranges` | List[[models.ReferenceRange](../models/referencerange.md)] | :heavy_minus_sign: | Each reference range and its corresponding snippets | | \ No newline at end of file diff --git a/docs/models/chatmessagefragment.md b/docs/models/chatmessagefragment.md index f7de9397..1a6f0ed2 100644 --- a/docs/models/chatmessagefragment.md +++ b/docs/models/chatmessagefragment.md @@ -5,12 +5,14 @@ Represents a part of a ChatMessage that originates from a single action/tool. It ## Fields -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `structured_results` | List[[models.StructuredResult](../models/structuredresult.md)] | :heavy_minus_sign: | An array of entities in the work graph retrieved via a data request. | | -| `tracking_token` | *Optional[str]* | :heavy_minus_sign: | An opaque token that represents this particular result in this particular query. To be used for /feedback reporting. | | -| `text` | *Optional[str]* | :heavy_minus_sign: | N/A | | -| `query_suggestion` | [Optional[models.QuerySuggestion]](../models/querysuggestion.md) | :heavy_minus_sign: | N/A | {
"query": "app:github type:pull author:mortimer",
"label": "Mortimer's PRs",
"datasource": "github"
} | -| `file` | [Optional[models.ChatFile]](../models/chatfile.md) | :heavy_minus_sign: | Structure for file uploaded by a user for Chat. | | -| `action` | [Optional[models.ToolInfo]](../models/toolinfo.md) | :heavy_minus_sign: | N/A | | -| `citation` | [Optional[models.ChatMessageCitation]](../models/chatmessagecitation.md) | :heavy_minus_sign: | Information about the source for a ChatMessage. | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `structured_results` | List[[models.StructuredResult](../models/structuredresult.md)] | :heavy_minus_sign: | An array of entities in the work graph retrieved via a data request. | | +| `tracking_token` | *Optional[str]* | :heavy_minus_sign: | An opaque token that represents this particular result in this particular query. To be used for /feedback reporting. | | +| `text` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `query_suggestion` | [Optional[models.QuerySuggestion]](../models/querysuggestion.md) | :heavy_minus_sign: | N/A | {
"query": "app:github type:pull author:mortimer",
"label": "Mortimer's PRs",
"datasource": "github"
} | +| `file` | [Optional[models.ChatFile]](../models/chatfile.md) | :heavy_minus_sign: | Structure for file uploaded by a user for Chat. | | +| `action` | [Optional[models.ToolInfo]](../models/toolinfo.md) | :heavy_minus_sign: | N/A | | +| `citation` | [Optional[models.ChatMessageCitation]](../models/chatmessagecitation.md) | :heavy_minus_sign: | Information about the source for a ChatMessage. | | +| `server_tool_request` | [Optional[models.ServerToolRequest]](../models/servertoolrequest.md) | :heavy_minus_sign: | N/A | | +| `server_tool_response` | [Optional[models.ServerToolResponse]](../models/servertoolresponse.md) | :heavy_minus_sign: | Response to a server tool request. The applicable fields depend on requestType:

For EXECUTION requests:
- isGranted: whether tool execution is approved
- reason: optional explanation

For AUTHENTICATION_SUGGESTION requests:
- isGranted: whether auth completed successfully (true=connected, false=skipped)
- authContext: contains serverId or actionPackId for identifying the authenticated entity
- reason: optional explanation for skip

For VOTE_SUGGESTION requests:
- voted: whether the user voted for this tool
| | \ No newline at end of file diff --git a/docs/models/chatrequestrequest.md b/docs/models/chatrequestrequest.md index 733a2720..743e1fd1 100644 --- a/docs/models/chatrequestrequest.md +++ b/docs/models/chatrequestrequest.md @@ -3,7 +3,8 @@ ## 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. | -| `chat_request` | [models.ChatRequest](../models/chatrequest.md) | :heavy_check_mark: | Includes chat history for Glean AI to respond to. | \ No newline at end of file +| Field | 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. | +| `chat_request` | [models.ChatRequest](../models/chatrequest.md) | :heavy_check_mark: | Includes chat history for Glean AI to respond to. | \ No newline at end of file diff --git a/docs/models/chatresponse.md b/docs/models/chatresponse.md index c1e42aeb..5c844077 100644 --- a/docs/models/chatresponse.md +++ b/docs/models/chatresponse.md @@ -5,10 +5,11 @@ A single response from the /chat backend. ## Fields -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -| `messages` | List[[models.ChatMessage](../models/chatmessage.md)] | :heavy_minus_sign: | N/A | | -| `chat_id` | *Optional[str]* | :heavy_minus_sign: | The id of the associated Chat the messages belong to, if one exists. | | -| `follow_up_prompts` | List[*str*] | :heavy_minus_sign: | Follow-up prompts for the user to potentially use | | -| `backend_time_millis` | *Optional[int]* | :heavy_minus_sign: | Time in milliseconds the backend took to respond to the request. | 1100 | -| `chat_session_tracking_token` | *Optional[str]* | :heavy_minus_sign: | A token that is used to track the session. | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | +| `messages` | List[[models.ChatMessage](../models/chatmessage.md)] | :heavy_minus_sign: | N/A | | +| `chat_id` | *Optional[str]* | :heavy_minus_sign: | The id of the associated Chat the messages belong to, if one exists. | | +| `chat` | [Optional[models.ChatMetadata]](../models/chatmetadata.md) | :heavy_minus_sign: | Metadata of a Chat a user had with Glean Assistant. This contains no actual conversational content. | | +| `follow_up_prompts` | List[*str*] | :heavy_minus_sign: | Follow-up prompts for the user to potentially use | | +| `backend_time_millis` | *Optional[int]* | :heavy_minus_sign: | Time in milliseconds the backend took to respond to the request. | 1100 | +| `chat_session_tracking_token` | *Optional[str]* | :heavy_minus_sign: | A token that is used to track the session. | | \ No newline at end of file diff --git a/docs/models/chatskill.md b/docs/models/chatskill.md new file mode 100644 index 00000000..a49cc284 --- /dev/null +++ b/docs/models/chatskill.md @@ -0,0 +1,12 @@ +# ChatSkill + +A skill cited by Assistant. + + +## Fields + +| Field | Type | Required | Description | +| -------------------------- | -------------------------- | -------------------------- | -------------------------- | +| `id` | *str* | :heavy_check_mark: | Artifact ID of the skill. | +| `name` | *Optional[str]* | :heavy_minus_sign: | Name of the skill. | +| `url` | *Optional[str]* | :heavy_minus_sign: | URL for viewing the skill. | \ No newline at end of file diff --git a/docs/models/chatsuggestion.md b/docs/models/chatsuggestion.md index 7d749127..e18aae7b 100644 --- a/docs/models/chatsuggestion.md +++ b/docs/models/chatsuggestion.md @@ -6,4 +6,6 @@ | Field | Type | Required | Description | | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | | `query` | *Optional[str]* | :heavy_minus_sign: | The actionable chat query to run when the user selects this suggestion. | -| `feature` | *Optional[str]* | :heavy_minus_sign: | Targeted Glean Chat feature for the suggestion. | \ No newline at end of file +| `cta` | *Optional[str]* | :heavy_minus_sign: | Button text to show for the suggestion action. | +| `feature` | *Optional[str]* | :heavy_minus_sign: | Targeted Glean Chat feature for the suggestion. | +| `source_document_ids` | List[*str*] | :heavy_minus_sign: | Document IDs that grounded the suggestion. | \ No newline at end of file diff --git a/docs/models/checkdatasourceauthresponse.md b/docs/models/checkdatasourceauthresponse.md new file mode 100644 index 00000000..be60699c --- /dev/null +++ b/docs/models/checkdatasourceauthresponse.md @@ -0,0 +1,8 @@ +# CheckDatasourceAuthResponse + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | +| `unauthorized_datasource_instances` | List[[models.UnauthorizedDatasourceInstance](../models/unauthorizeddatasourceinstance.md)] | :heavy_check_mark: | Datasource instances that require per-user OAuth authorization. Empty when all datasources are authorized.
| \ No newline at end of file diff --git a/docs/models/clustertypeenum.md b/docs/models/clustertypeenum.md index 53fe04d6..11effcca 100644 --- a/docs/models/clustertypeenum.md +++ b/docs/models/clustertypeenum.md @@ -2,6 +2,16 @@ The reason for inclusion of clusteredResults. +## Example Usage + +```python +from glean.api_client.models import ClusterTypeEnum + +value = ClusterTypeEnum.SIMILAR + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/collection.md b/docs/models/collection.md index f5984328..3f51dfa3 100644 --- a/docs/models/collection.md +++ b/docs/models/collection.md @@ -16,6 +16,7 @@ | `thumbnail` | [Optional[models.Thumbnail]](../models/thumbnail.md) | :heavy_minus_sign: | N/A | | | `allowed_datasource` | *Optional[str]* | :heavy_minus_sign: | The datasource type this Collection can hold. | | | `permissions` | [Optional[models.ObjectPermissions]](../models/objectpermissions.md) | :heavy_minus_sign: | N/A | | +| `tracking_token` | *Optional[str]* | :heavy_minus_sign: | An opaque token that represents this particular UGC. To be used for `/feedback` reporting. | | | `id` | *int* | :heavy_check_mark: | The unique ID of the Collection. | | | `create_time` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | N/A | | | `update_time` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | N/A | | @@ -27,4 +28,5 @@ | `pin_metadata` | [Optional[models.CollectionPinnedMetadata]](../models/collectionpinnedmetadata.md) | :heavy_minus_sign: | N/A | | | `shortcuts` | List[*str*] | :heavy_minus_sign: | The names of the shortcuts (Go Links) that point to this Collection. | | | `children` | List[[models.Collection](../models/collection.md)] | :heavy_minus_sign: | The children Collections of this Collection. | | -| `roles` | List[[models.UserRoleSpecification](../models/userrolespecification.md)] | :heavy_minus_sign: | A list of user roles for the Collection. | | \ No newline at end of file +| `roles` | List[[models.UserRoleSpecification](../models/userrolespecification.md)] | :heavy_minus_sign: | A list of user roles for the Collection. | | +| `favorite_info` | [Optional[models.FavoriteInfo]](../models/favoriteinfo.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/collectionerrorerrorcode.md b/docs/models/collectionerrorerrorcode.md index 7903ee61..2aedaf4a 100644 --- a/docs/models/collectionerrorerrorcode.md +++ b/docs/models/collectionerrorerrorcode.md @@ -1,5 +1,15 @@ # CollectionErrorErrorCode +## Example Usage + +```python +from glean.api_client.models import CollectionErrorErrorCode + +value = CollectionErrorErrorCode.NAME_EXISTS + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values @@ -11,4 +21,5 @@ | `CONCURRENT_HIERARCHY_EDIT` | CONCURRENT_HIERARCHY_EDIT | | `HEIGHT_VIOLATION` | HEIGHT_VIOLATION | | `WIDTH_VIOLATION` | WIDTH_VIOLATION | -| `NO_PERMISSIONS` | NO_PERMISSIONS | \ No newline at end of file +| `NO_PERMISSIONS` | NO_PERMISSIONS | +| `CORRUPT_ITEM` | CORRUPT_ITEM | \ No newline at end of file diff --git a/docs/models/collectionitemdescriptoritemtype.md b/docs/models/collectionitemdescriptoritemtype.md index 25e2a57f..46d88741 100644 --- a/docs/models/collectionitemdescriptoritemtype.md +++ b/docs/models/collectionitemdescriptoritemtype.md @@ -1,5 +1,13 @@ # CollectionItemDescriptorItemType +## Example Usage + +```python +from glean.api_client.models import CollectionItemDescriptorItemType + +value = CollectionItemDescriptorItemType.DOCUMENT +``` + ## Values diff --git a/docs/models/collectionitemitemtype.md b/docs/models/collectionitemitemtype.md index 937308f8..69999ace 100644 --- a/docs/models/collectionitemitemtype.md +++ b/docs/models/collectionitemitemtype.md @@ -1,5 +1,15 @@ # CollectionItemItemType +## Example Usage + +```python +from glean.api_client.models import CollectionItemItemType + +value = CollectionItemItemType.DOCUMENT + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/collectionpinnablecategories.md b/docs/models/collectionpinnablecategories.md index d9ab23f1..f9ed8d05 100644 --- a/docs/models/collectionpinnablecategories.md +++ b/docs/models/collectionpinnablecategories.md @@ -2,6 +2,16 @@ Categories a Collection can be pinned to. +## Example Usage + +```python +from glean.api_client.models import CollectionPinnableCategories + +value = CollectionPinnableCategories.COMPANY_RESOURCE + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/collectionpinnabletargets.md b/docs/models/collectionpinnabletargets.md index 74222966..e58d9dfb 100644 --- a/docs/models/collectionpinnabletargets.md +++ b/docs/models/collectionpinnabletargets.md @@ -2,6 +2,16 @@ What targets can a Collection be pinned to. +## Example Usage + +```python +from glean.api_client.models import CollectionPinnableTargets + +value = CollectionPinnableTargets.RESOURCE_CARD + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/communicationchannel.md b/docs/models/communicationchannel.md index eee4a859..4acce537 100644 --- a/docs/models/communicationchannel.md +++ b/docs/models/communicationchannel.md @@ -1,5 +1,15 @@ # CommunicationChannel +## Example Usage + +```python +from glean.api_client.models import CommunicationChannel + +value = CommunicationChannel.COMMUNICATION_CHANNEL_EMAIL + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/conferencedatasource.md b/docs/models/conferencedatasource.md index b9e1060a..a01e5df9 100644 --- a/docs/models/conferencedatasource.md +++ b/docs/models/conferencedatasource.md @@ -1,5 +1,15 @@ # ConferenceDataSource +## Example Usage + +```python +from glean.api_client.models import ConferenceDataSource + +value = ConferenceDataSource.NATIVE_CONFERENCE + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/configurationvalue.md b/docs/models/configurationvalue.md new file mode 100644 index 00000000..aea215fe --- /dev/null +++ b/docs/models/configurationvalue.md @@ -0,0 +1,11 @@ +# ConfigurationValue + +A single configuration value, either a scalar or a list + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | +| `value` | *Optional[str]* | :heavy_minus_sign: | The configuration value as a string. Only one of value or valueList should be populated. | +| `value_list` | List[*str*] | :heavy_minus_sign: | The configuration value as a list of strings. Only one of value or valueList should be populated. | \ No newline at end of file diff --git a/docs/models/connectortype.md b/docs/models/connectortype.md index 94042984..39fa8c6e 100644 --- a/docs/models/connectortype.md +++ b/docs/models/connectortype.md @@ -2,6 +2,16 @@ The source from which document content was pulled, e.g. an API crawl or browser history +## Example Usage + +```python +from glean.api_client.models import ConnectorType + +value = ConnectorType.API_CRAWL + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/contentinsightsresponse.md b/docs/models/contentinsightsresponse.md deleted file mode 100644 index 54d206ac..00000000 --- a/docs/models/contentinsightsresponse.md +++ /dev/null @@ -1,12 +0,0 @@ -# ContentInsightsResponse - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | -| `last_log_timestamp` | *Optional[int]* | :heavy_minus_sign: | Unix timestamp of the last activity processed to make the response (in seconds since epoch UTC). | -| `document_insights` | List[[models.DocumentInsight](../models/documentinsight.md)] | :heavy_minus_sign: | Insights for documents. | -| `departments` | List[*str*] | :heavy_minus_sign: | list of departments applicable for contents tab. | -| `min_department_size_threshold` | *Optional[int]* | :heavy_minus_sign: | Min threshold in size of departments while populating results, otherwise 0. | -| `min_visitor_threshold` | *Optional[int]* | :heavy_minus_sign: | Minimum number of visitors to a document required to be included in insights. | \ No newline at end of file diff --git a/docs/models/contenttype.md b/docs/models/contenttype.md index a68e84da..f20d9c65 100644 --- a/docs/models/contenttype.md +++ b/docs/models/contenttype.md @@ -1,5 +1,13 @@ # ContentType +## Example Usage + +```python +from glean.api_client.models import ContentType + +value = ContentType.TEXT +``` + ## Values diff --git a/docs/models/createagentrequest.md b/docs/models/createagentrequest.md new file mode 100644 index 00000000..6d556c53 --- /dev/null +++ b/docs/models/createagentrequest.md @@ -0,0 +1,10 @@ +# CreateAgentRequest + + +## Fields + +| Field | 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. | +| `create_workflow_request` | [models.CreateWorkflowRequest](../models/createworkflowrequest.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/createannouncementrequestchannel.md b/docs/models/createannouncementrequestchannel.md index 2cefcb7e..e9068e68 100644 --- a/docs/models/createannouncementrequestchannel.md +++ b/docs/models/createannouncementrequestchannel.md @@ -2,6 +2,14 @@ This determines whether this is a Social Feed post or a regular announcement. +## Example Usage + +```python +from glean.api_client.models import CreateAnnouncementRequestChannel + +value = CreateAnnouncementRequestChannel.MAIN +``` + ## Values diff --git a/docs/models/createannouncementrequestposttype.md b/docs/models/createannouncementrequestposttype.md index f5442c47..0c04105d 100644 --- a/docs/models/createannouncementrequestposttype.md +++ b/docs/models/createannouncementrequestposttype.md @@ -2,6 +2,14 @@ This determines whether this is an external-link post or a regular announcement post. TEXT - Regular announcement that can contain rich text. LINK - Announcement that is linked to an external site. +## Example Usage + +```python +from glean.api_client.models import CreateAnnouncementRequestPostType + +value = CreateAnnouncementRequestPostType.TEXT +``` + ## Values diff --git a/docs/models/createannouncementrequestrequest.md b/docs/models/createannouncementrequestrequest.md new file mode 100644 index 00000000..69fa43dd --- /dev/null +++ b/docs/models/createannouncementrequestrequest.md @@ -0,0 +1,9 @@ +# CreateannouncementRequestRequest + + +## Fields + +| Field | 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`. | +| `create_announcement_request` | [models.CreateAnnouncementRequest](../models/createannouncementrequest.md) | :heavy_check_mark: | Announcement content | \ No newline at end of file diff --git a/docs/models/createanswerrequestrequest.md b/docs/models/createanswerrequestrequest.md new file mode 100644 index 00000000..297b5967 --- /dev/null +++ b/docs/models/createanswerrequestrequest.md @@ -0,0 +1,9 @@ +# CreateanswerRequestRequest + + +## Fields + +| Field | 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`. | +| `create_answer_request` | [models.CreateAnswerRequest](../models/createanswerrequest.md) | :heavy_check_mark: | CreateAnswer request | \ No newline at end of file diff --git a/docs/models/createcollectionrequestrequest.md b/docs/models/createcollectionrequestrequest.md new file mode 100644 index 00000000..7eaa07b6 --- /dev/null +++ b/docs/models/createcollectionrequestrequest.md @@ -0,0 +1,9 @@ +# CreatecollectionRequestRequest + + +## Fields + +| Field | 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`. | +| `create_collection_request` | [models.CreateCollectionRequest](../models/createcollectionrequest.md) | :heavy_check_mark: | Collection content plus any additional metadata for the request. | \ No newline at end of file diff --git a/docs/models/createshortcutrequestrequest.md b/docs/models/createshortcutrequestrequest.md new file mode 100644 index 00000000..558b5abf --- /dev/null +++ b/docs/models/createshortcutrequestrequest.md @@ -0,0 +1,9 @@ +# CreateshortcutRequestRequest + + +## Fields + +| Field | 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`. | +| `create_shortcut_request` | [models.CreateShortcutRequest](../models/createshortcutrequest.md) | :heavy_check_mark: | CreateShortcut request | \ No newline at end of file diff --git a/docs/models/createworkflowrequest.md b/docs/models/createworkflowrequest.md new file mode 100644 index 00000000..e955a419 --- /dev/null +++ b/docs/models/createworkflowrequest.md @@ -0,0 +1,10 @@ +# CreateWorkflowRequest + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------- | +| `name` | *Optional[str]* | :heavy_minus_sign: | The name of the workflow. | +| `transient` | *Optional[bool]* | :heavy_minus_sign: | Used to create a transient workflow. | +| `parent_workflow_id` | *Optional[str]* | :heavy_minus_sign: | id of the parent workflow for transient workflows | \ No newline at end of file diff --git a/docs/models/currentactiveusers.md b/docs/models/currentactiveusers.md index 3852b41c..f5cb3add 100644 --- a/docs/models/currentactiveusers.md +++ b/docs/models/currentactiveusers.md @@ -3,7 +3,7 @@ ## Fields -| Field | Type | Required | Description | -| --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | -| `monthly_active_users` | *Optional[int]* | :heavy_minus_sign: | Number of current Monthly Active Users, in the specified departments. | -| `weekly_active_users` | *Optional[int]* | :heavy_minus_sign: | Number of current Weekly Active Users, in the specified departments. | \ No newline at end of file +| Field | Type | Required | Description | +| --------------------------------------- | --------------------------------------- | --------------------------------------- | --------------------------------------- | +| `monthly_active_users` | *Optional[int]* | :heavy_minus_sign: | Number of current Monthly Active Users. | +| `weekly_active_users` | *Optional[int]* | :heavy_minus_sign: | Number of current Weekly Active Users. | \ No newline at end of file diff --git a/docs/models/customdatasourceconfigconnectortype.md b/docs/models/customdatasourceconfigconnectortype.md index 81126c24..0478f668 100644 --- a/docs/models/customdatasourceconfigconnectortype.md +++ b/docs/models/customdatasourceconfigconnectortype.md @@ -2,6 +2,16 @@ The source from which document content was pulled, e.g. an API crawl or browser history +## Example Usage + +```python +from glean.api_client.models import CustomDatasourceConfigConnectorType + +value = CustomDatasourceConfigConnectorType.API_CRAWL + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/custommetadatapropertydefinition.md b/docs/models/custommetadatapropertydefinition.md new file mode 100644 index 00000000..302418b2 --- /dev/null +++ b/docs/models/custommetadatapropertydefinition.md @@ -0,0 +1,12 @@ +# CustomMetadataPropertyDefinition + +The definition for a key within a Custom Metadata schema. Only the fields applicable to Custom Metadata are exposed. + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `name` | *str* | :heavy_check_mark: | The name of the metadata key. | +| `property_type` | [models.CustomMetadataPropertyDefinitionPropertyType](../models/custommetadatapropertydefinitionpropertytype.md) | :heavy_check_mark: | The type of metadata key. This governs the search and faceting behavior. | +| `skip_indexing` | *Optional[bool]* | :heavy_minus_sign: | If true then the property will not be indexed for retrieval and ranking. | \ No newline at end of file diff --git a/docs/models/custommetadatapropertydefinitionpropertytype.md b/docs/models/custommetadatapropertydefinitionpropertytype.md new file mode 100644 index 00000000..39018720 --- /dev/null +++ b/docs/models/custommetadatapropertydefinitionpropertytype.md @@ -0,0 +1,23 @@ +# CustomMetadataPropertyDefinitionPropertyType + +The type of metadata key. This governs the search and faceting behavior. + +## Example Usage + +```python +from glean.api_client.models import CustomMetadataPropertyDefinitionPropertyType + +value = CustomMetadataPropertyDefinitionPropertyType.TEXT + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + + +## Values + +| Name | Value | +| --------------- | --------------- | +| `TEXT` | TEXT | +| `PICKLIST` | PICKLIST | +| `TEXTLIST` | TEXTLIST | +| `MULTIPICKLIST` | MULTIPICKLIST | \ No newline at end of file diff --git a/docs/models/custommetadataputrequest.md b/docs/models/custommetadataputrequest.md new file mode 100644 index 00000000..cce52d05 --- /dev/null +++ b/docs/models/custommetadataputrequest.md @@ -0,0 +1,10 @@ +# CustomMetadataPutRequest + +Request body for adding or updating custom metadata on a document + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | +| `custom_metadata` | List[[models.CustomProperty](../models/customproperty.md)] | :heavy_check_mark: | Array of custom metadata key-value pairs | \ No newline at end of file diff --git a/docs/models/custommetadataschema.md b/docs/models/custommetadataschema.md new file mode 100644 index 00000000..0795bcb5 --- /dev/null +++ b/docs/models/custommetadataschema.md @@ -0,0 +1,10 @@ +# CustomMetadataSchema + +Schema for custom metadata containing metadata key definitions + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | +| `metadata_keys` | List[[models.CustomMetadataPropertyDefinition](../models/custommetadatapropertydefinition.md)] | :heavy_check_mark: | Array of metadata key definitions | \ No newline at end of file diff --git a/docs/models/customproperty.md b/docs/models/customproperty.md index 3b363fbe..415897d4 100644 --- a/docs/models/customproperty.md +++ b/docs/models/customproperty.md @@ -5,7 +5,7 @@ Describes the custom properties of the object. ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `name` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `value` | *Optional[Any]* | :heavy_minus_sign: | Must either be a string or an array of strings. An integer, boolean, etc. is not valid. When OpenAPI Generator supports `oneOf`, we can semantically enforce this. | \ No newline at end of file +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `name` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `value` | *Optional[Any]* | :heavy_minus_sign: | Must be a string, a number (for INT properties), or an array of strings. A boolean is not valid. When OpenAPI Generator supports `oneOf`, we can semantically enforce this. | \ No newline at end of file diff --git a/docs/models/customsensitiverulelikelihoodthreshold.md b/docs/models/customsensitiverulelikelihoodthreshold.md index b7676f4d..fae76418 100644 --- a/docs/models/customsensitiverulelikelihoodthreshold.md +++ b/docs/models/customsensitiverulelikelihoodthreshold.md @@ -2,6 +2,16 @@ Likelihood threshold for BUILT_IN infotypes (e.g., LIKELY, VERY_LIKELY). Only applicable for BUILT_IN type. +## Example Usage + +```python +from glean.api_client.models import CustomSensitiveRuleLikelihoodThreshold + +value = CustomSensitiveRuleLikelihoodThreshold.LIKELY + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/customsensitiveruletype.md b/docs/models/customsensitiveruletype.md index fe80b6f8..6961690d 100644 --- a/docs/models/customsensitiveruletype.md +++ b/docs/models/customsensitiveruletype.md @@ -2,6 +2,16 @@ Type of the custom sensitive rule. +## Example Usage + +```python +from glean.api_client.models import CustomSensitiveRuleType + +value = CustomSensitiveRuleType.REGEX + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/datasource.md b/docs/models/datasource.md index 154a81d3..c9eaa5a7 100644 --- a/docs/models/datasource.md +++ b/docs/models/datasource.md @@ -2,6 +2,14 @@ The type of the data source. +## Example Usage + +```python +from glean.api_client.models import Datasource + +value = Datasource.SLACK +``` + ## Values diff --git a/docs/models/datasourcecategory.md b/docs/models/datasourcecategory.md index 44d81a93..c7a5d3c3 100644 --- a/docs/models/datasourcecategory.md +++ b/docs/models/datasourcecategory.md @@ -2,6 +2,16 @@ The type of this datasource. It is an important signal for relevance and must be specified and cannot be UNCATEGORIZED. Please refer to [this](https://developers.glean.com/docs/indexing_api_datasource_category/) for more details. +## Example Usage + +```python +from glean.api_client.models import DatasourceCategory + +value = DatasourceCategory.UNCATEGORIZED + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values @@ -24,4 +34,6 @@ The type of this datasource. It is an important signal for relevance and must be | `EXTERNAL_SHORTCUT` | EXTERNAL_SHORTCUT | | `ENTITY` | ENTITY | | `CALENDAR` | CALENDAR | -| `AGENTS` | AGENTS | \ No newline at end of file +| `AGENTS` | AGENTS | +| `AI_CONVERSATION` | AI_CONVERSATION | +| `AI_ARTIFACT` | AI_ARTIFACT | \ No newline at end of file diff --git a/docs/models/insightsagentsrequestoptions.md b/docs/models/datasourceconfigurationresponse.md similarity index 58% rename from docs/models/insightsagentsrequestoptions.md rename to docs/models/datasourceconfigurationresponse.md index 98c92da5..ba3be132 100644 --- a/docs/models/insightsagentsrequestoptions.md +++ b/docs/models/datasourceconfigurationresponse.md @@ -1,8 +1,11 @@ -# InsightsAgentsRequestOptions +# DatasourceConfigurationResponse + +The greenlisted configuration values for a datasource instance. Only keys that are exposed via the public API greenlist are included. + ## Fields | Field | Type | Required | Description | | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -| `agent_ids` | List[*str*] | :heavy_minus_sign: | IDs of the Agents for which Insights should be returned. An empty array signifies all. | \ No newline at end of file +| `configuration` | [models.DatasourceInstanceConfiguration](../models/datasourceinstanceconfiguration.md) | :heavy_check_mark: | Configuration for a datasource instance | \ No newline at end of file diff --git a/docs/models/datasourcecredentialstatus.md b/docs/models/datasourcecredentialstatus.md new file mode 100644 index 00000000..546c77b9 --- /dev/null +++ b/docs/models/datasourcecredentialstatus.md @@ -0,0 +1,25 @@ +# DatasourceCredentialStatus + +Lifecycle state of the credentials installed for a datasource instance. Mirrors the internal admin Status enum so the handler can surface the same health signals already tracked today. EXPIRING_SOON is represented as VALID_WITH_WARNINGS (with detail in `message`); EXPIRED is surfaced as INVALID plus a non-null `expiresAt` in the past. + + +## Example Usage + +```python +from glean.api_client.models import DatasourceCredentialStatus + +value = DatasourceCredentialStatus.VALID + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + + +## Values + +| Name | Value | +| --------------------- | --------------------- | +| `VALID` | VALID | +| `VALID_WITH_WARNINGS` | VALID_WITH_WARNINGS | +| `VALIDATING` | VALIDATING | +| `INVALID` | INVALID | +| `MISSING` | MISSING | \ No newline at end of file diff --git a/docs/models/datasourcecredentialstatusresponse.md b/docs/models/datasourcecredentialstatusresponse.md new file mode 100644 index 00000000..29641fd5 --- /dev/null +++ b/docs/models/datasourcecredentialstatusresponse.md @@ -0,0 +1,13 @@ +# DatasourceCredentialStatusResponse + +Status of the credentials currently installed for a datasource instance. + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `status` | [models.DatasourceCredentialStatus](../models/datasourcecredentialstatus.md) | :heavy_check_mark: | Lifecycle state of the credentials installed for a datasource instance. Mirrors the internal admin Status enum so the handler can surface the same health signals already tracked today. EXPIRING_SOON is represented as VALID_WITH_WARNINGS (with detail in `message`); EXPIRED is surfaced as INVALID plus a non-null `expiresAt` in the past.
| +| `last_rotated_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | When the credentials were last rotated. Omitted when not known. | +| `expires_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | When the active credentials expire. Omitted when not known or not applicable to this credential type.
| +| `message` | *Optional[str]* | :heavy_minus_sign: | Optional human-readable detail about the current credential status. | \ No newline at end of file diff --git a/docs/models/datasourceinstanceconfiguration.md b/docs/models/datasourceinstanceconfiguration.md new file mode 100644 index 00000000..4aa3cb98 --- /dev/null +++ b/docs/models/datasourceinstanceconfiguration.md @@ -0,0 +1,10 @@ +# DatasourceInstanceConfiguration + +Configuration for a datasource instance + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | +| `values` | Dict[str, [models.ConfigurationValue](../models/configurationvalue.md)] | :heavy_check_mark: | A map from configuration key names to their values | \ No newline at end of file diff --git a/docs/models/datasourcestype.md b/docs/models/datasourcestype.md index 41b7c170..d20e1336 100644 --- a/docs/models/datasourcestype.md +++ b/docs/models/datasourcestype.md @@ -2,6 +2,16 @@ The types of datasource for which to run the report/policy. +## Example Usage + +```python +from glean.api_client.models import DatasourcesType + +value = DatasourcesType.ALL + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/datasourcevisibility.md b/docs/models/datasourcevisibility.md index f9ff5b88..3ae0d199 100644 --- a/docs/models/datasourcevisibility.md +++ b/docs/models/datasourcevisibility.md @@ -2,6 +2,16 @@ The visibility of the datasource, an enum of VISIBLE_TO_ALL, VISIBLE_TO_TEST_GROUP, NOT_VISIBLE +## Example Usage + +```python +from glean.api_client.models import DatasourceVisibility + +value = DatasourceVisibility.ENABLED_FOR_ALL + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/debugdocumentlifecyclerequest.md b/docs/models/debugdocumentlifecyclerequest.md new file mode 100644 index 00000000..f17f8e7e --- /dev/null +++ b/docs/models/debugdocumentlifecyclerequest.md @@ -0,0 +1,13 @@ +# DebugDocumentLifecycleRequest + +Describes the request body of the /debug/{datasource}/document/events API call. + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| `object_type` | *str* | :heavy_check_mark: | Object type of the document to get lifecycle events for. | Article | +| `doc_id` | *str* | :heavy_check_mark: | Glean Document ID within the datasource to get lifecycle events for. | art123 | +| `start_date` | *Optional[str]* | :heavy_minus_sign: | The start date for events to be fetched. Cannot be more than 30 days (default 7 days) in the past. | 2025-05-01 | +| `max_events` | *Optional[int]* | :heavy_minus_sign: | Max number of events to be fetched. Cannot be more than 100 (default 20). | 50 | \ No newline at end of file diff --git a/docs/models/debugdocumentlifecycleresponse.md b/docs/models/debugdocumentlifecycleresponse.md new file mode 100644 index 00000000..401d2b6c --- /dev/null +++ b/docs/models/debugdocumentlifecycleresponse.md @@ -0,0 +1,10 @@ +# DebugDocumentLifecycleResponse + +Describes the response body of the /debug/{datasource}/document/events API call + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | +| `life_cycle_events` | List[[models.LifeCycleEvent](../models/lifecycleevent.md)] | :heavy_minus_sign: | List of lifecycle events corresponding to the document | \ No newline at end of file diff --git a/docs/models/deleteallchatsrequest.md b/docs/models/deleteallchatsrequest.md index f98987ba..01ac00c0 100644 --- a/docs/models/deleteallchatsrequest.md +++ b/docs/models/deleteallchatsrequest.md @@ -3,6 +3,7 @@ ## 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. | \ No newline at end of file +| Field | 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. | \ No newline at end of file diff --git a/docs/models/deleteannouncementrequestrequest.md b/docs/models/deleteannouncementrequestrequest.md new file mode 100644 index 00000000..689b1e04 --- /dev/null +++ b/docs/models/deleteannouncementrequestrequest.md @@ -0,0 +1,9 @@ +# DeleteannouncementRequestRequest + + +## Fields + +| Field | 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`. | +| `delete_announcement_request` | [models.DeleteAnnouncementRequest](../models/deleteannouncementrequest.md) | :heavy_check_mark: | Delete announcement request | \ No newline at end of file diff --git a/docs/models/deleteanswerrequestrequest.md b/docs/models/deleteanswerrequestrequest.md new file mode 100644 index 00000000..05520c6f --- /dev/null +++ b/docs/models/deleteanswerrequestrequest.md @@ -0,0 +1,9 @@ +# DeleteanswerRequestRequest + + +## Fields + +| Field | 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`. | +| `delete_answer_request` | [models.DeleteAnswerRequest](../models/deleteanswerrequest.md) | :heavy_check_mark: | DeleteAnswer request | \ No newline at end of file diff --git a/docs/models/deletechatfilesrequestrequest.md b/docs/models/deletechatfilesrequestrequest.md index 4c37d7ca..4aa1d9f2 100644 --- a/docs/models/deletechatfilesrequestrequest.md +++ b/docs/models/deletechatfilesrequestrequest.md @@ -3,7 +3,8 @@ ## 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. | -| `delete_chat_files_request` | [models.DeleteChatFilesRequest](../models/deletechatfilesrequest.md) | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | 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. | +| `delete_chat_files_request` | [models.DeleteChatFilesRequest](../models/deletechatfilesrequest.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/deletechatsrequestrequest.md b/docs/models/deletechatsrequestrequest.md index 24814ad3..9f0ae5c5 100644 --- a/docs/models/deletechatsrequestrequest.md +++ b/docs/models/deletechatsrequestrequest.md @@ -3,7 +3,8 @@ ## 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. | -| `delete_chats_request` | [models.DeleteChatsRequest](../models/deletechatsrequest.md) | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | 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. | +| `delete_chats_request` | [models.DeleteChatsRequest](../models/deletechatsrequest.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/deletecollectionitemrequestrequest.md b/docs/models/deletecollectionitemrequestrequest.md new file mode 100644 index 00000000..3c1c904e --- /dev/null +++ b/docs/models/deletecollectionitemrequestrequest.md @@ -0,0 +1,9 @@ +# DeletecollectionitemRequestRequest + + +## Fields + +| Field | 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`. | +| `delete_collection_item_request` | [models.DeleteCollectionItemRequest](../models/deletecollectionitemrequest.md) | :heavy_check_mark: | Data describing the delete operation. | \ No newline at end of file diff --git a/docs/models/deletecollectionrequestrequest.md b/docs/models/deletecollectionrequestrequest.md new file mode 100644 index 00000000..b7767151 --- /dev/null +++ b/docs/models/deletecollectionrequestrequest.md @@ -0,0 +1,9 @@ +# DeletecollectionRequestRequest + + +## Fields + +| Field | 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`. | +| `delete_collection_request` | [models.DeleteCollectionRequest](../models/deletecollectionrequest.md) | :heavy_check_mark: | DeleteCollection request | \ No newline at end of file diff --git a/docs/models/deleterestapiindexcustommetadataschemagroupnamerequest.md b/docs/models/deleterestapiindexcustommetadataschemagroupnamerequest.md new file mode 100644 index 00000000..fc0cdd0a --- /dev/null +++ b/docs/models/deleterestapiindexcustommetadataschemagroupnamerequest.md @@ -0,0 +1,8 @@ +# DeleteRestAPIIndexCustomMetadataSchemaGroupNameRequest + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------- | --------------------------------- | --------------------------------- | --------------------------------- | +| `group_name` | *str* | :heavy_check_mark: | Name of the metadata group schema | \ No newline at end of file diff --git a/docs/models/deleterestapiindexdocumentdocidcustommetadatagroupnamerequest.md b/docs/models/deleterestapiindexdocumentdocidcustommetadatagroupnamerequest.md new file mode 100644 index 00000000..2214e13e --- /dev/null +++ b/docs/models/deleterestapiindexdocumentdocidcustommetadatagroupnamerequest.md @@ -0,0 +1,9 @@ +# DeleteRestAPIIndexDocumentDocIDCustomMetadataGroupNameRequest + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | +| `doc_id` | *str* | :heavy_check_mark: | Unique Glean identifier of the document | +| `group_name` | *str* | :heavy_check_mark: | Name of the metadata group as specified while adding schema | \ No newline at end of file diff --git a/docs/models/deleteshortcutrequestrequest.md b/docs/models/deleteshortcutrequestrequest.md new file mode 100644 index 00000000..8c355d07 --- /dev/null +++ b/docs/models/deleteshortcutrequestrequest.md @@ -0,0 +1,9 @@ +# DeleteshortcutRequestRequest + + +## Fields + +| Field | 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`. | +| `delete_shortcut_request` | [models.DeleteShortcutRequest](../models/deleteshortcutrequest.md) | :heavy_check_mark: | DeleteShortcut request | \ No newline at end of file diff --git a/docs/models/direction.md b/docs/models/direction.md index 14a61a1d..efe05ba9 100644 --- a/docs/models/direction.md +++ b/docs/models/direction.md @@ -2,6 +2,14 @@ The direction of the results asked with respect to the reference timestamp. Missing field defaults to OLDER. Only applicable when using a message_id. +## Example Usage + +```python +from glean.api_client.models import Direction + +value = Direction.OLDER +``` + ## Values diff --git a/docs/models/dlpconfig.md b/docs/models/dlpconfig.md index 1aeca220..e99c7c03 100644 --- a/docs/models/dlpconfig.md +++ b/docs/models/dlpconfig.md @@ -5,18 +5,18 @@ Detailed configuration of what documents and sensitive content will be scanned. ## Fields -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `version` | *Optional[int]* | :heavy_minus_sign: | Synonymous with report/policy id. | -| ~~`sensitive_info_types`~~ | List[[models.SensitiveInfoType](../models/sensitiveinfotype.md)] | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

DEPRECATED - use `sensitiveContentOptions` instead. | -| `input_options` | [Optional[models.InputOptions]](../models/inputoptions.md) | :heavy_minus_sign: | Controls which data-sources and what time-range to include in scans. | -| ~~`external_sharing_options`~~ | [Optional[models.ExternalSharingOptions]](../models/externalsharingoptions.md) | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible. | -| `broad_sharing_options` | [Optional[models.SharingOptions]](../models/sharingoptions.md) | :heavy_minus_sign: | Controls how "shared" a document must be to get picked for scans. | -| `sensitive_content_options` | [Optional[models.SensitiveContentOptions]](../models/sensitivecontentoptions.md) | :heavy_minus_sign: | Options for defining sensitive content within scanned documents. | -| `report_name` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `frequency` | *Optional[str]* | :heavy_minus_sign: | Interval between scans. | -| `created_by` | [Optional[models.DlpPerson]](../models/dlpperson.md) | :heavy_minus_sign: | Details about the person who created this report/policy. | -| `created_at` | *Optional[str]* | :heavy_minus_sign: | Timestamp at which this configuration was created. | -| `redact_quote` | *Optional[bool]* | :heavy_minus_sign: | redact quote in findings of the report | -| `auto_hide_docs` | *Optional[bool]* | :heavy_minus_sign: | auto hide documents with findings in the report | -| `allowlist_options` | [Optional[models.AllowlistOptions]](../models/allowlistoptions.md) | :heavy_minus_sign: | Terms that are allow-listed during the scans. If any finding picked up by a rule exactly matches a term in the allow-list, it will not be counted as a violation. | \ No newline at end of file +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `version` | *Optional[int]* | :heavy_minus_sign: | Synonymous with report/policy id. | +| ~~`sensitive_info_types`~~ | List[[models.SensitiveInfoType](../models/sensitiveinfotype.md)] | :heavy_minus_sign: | : warning: ** DEPRECATED **: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use sensitiveContentOptions instead.

DEPRECATED - use `sensitiveContentOptions` instead. | +| `input_options` | [Optional[models.InputOptions]](../models/inputoptions.md) | :heavy_minus_sign: | Controls which data-sources and what time-range to include in scans. | +| ~~`external_sharing_options`~~ | [Optional[models.ExternalSharingOptions]](../models/externalsharingoptions.md) | :heavy_minus_sign: | : warning: ** DEPRECATED **: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use broadSharingOptions instead. | +| `broad_sharing_options` | [Optional[models.SharingOptions]](../models/sharingoptions.md) | :heavy_minus_sign: | Controls how "shared" a document must be to get picked for scans. | +| `sensitive_content_options` | [Optional[models.SensitiveContentOptions]](../models/sensitivecontentoptions.md) | :heavy_minus_sign: | Options for defining sensitive content within scanned documents. | +| `report_name` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `frequency` | *Optional[str]* | :heavy_minus_sign: | Interval between scans. | +| `created_by` | [Optional[models.DlpPerson]](../models/dlpperson.md) | :heavy_minus_sign: | Details about the person who created this report/policy. | +| `created_at` | *Optional[str]* | :heavy_minus_sign: | Timestamp at which this configuration was created. | +| `redact_quote` | *Optional[bool]* | :heavy_minus_sign: | redact quote in findings of the report | +| `auto_hide_docs` | *Optional[bool]* | :heavy_minus_sign: | auto hide documents with findings in the report | +| `allowlist_options` | [Optional[models.AllowlistOptions]](../models/allowlistoptions.md) | :heavy_minus_sign: | Terms and regexes that are allow-listed during the scans. If any finding picked up by a rule exactly matches a term, or matches a regex, in the allow-list, it will not be counted as a violation. | \ No newline at end of file diff --git a/docs/models/dlpexportfindingsrequest.md b/docs/models/dlpexportfindingsrequest.md index 1ecf2023..3b8f7ff6 100644 --- a/docs/models/dlpexportfindingsrequest.md +++ b/docs/models/dlpexportfindingsrequest.md @@ -3,10 +3,11 @@ ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | -| `export_type` | [Optional[models.ExportType]](../models/exporttype.md) | :heavy_minus_sign: | The type of export to perform | -| `filter_` | [Optional[models.DlpFindingFilter]](../models/dlpfindingfilter.md) | :heavy_minus_sign: | N/A | -| `file_name` | *Optional[str]* | :heavy_minus_sign: | The name of the file to export the findings to | -| `field_scope` | [Optional[models.FieldScope]](../models/fieldscope.md) | :heavy_minus_sign: | Controls which fields to include in the export | -| `fields_to_exclude` | List[*str*] | :heavy_minus_sign: | List of field names to exclude from the export | \ No newline at end of file +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | +| `export_type` | [Optional[models.DlpExportFindingsRequestExportType]](../models/dlpexportfindingsrequestexporttype.md) | :heavy_minus_sign: | The type of export to perform | +| `filter_` | [Optional[models.DlpFindingFilter]](../models/dlpfindingfilter.md) | :heavy_minus_sign: | N/A | +| `issue_filter` | [Optional[models.DlpIssueFilter]](../models/dlpissuefilter.md) | :heavy_minus_sign: | Filter for DLP issues. Includes document-level filters and issue-specific filters. | +| `file_name` | *Optional[str]* | :heavy_minus_sign: | The name of the file to export the findings to | +| `field_scope` | [Optional[models.FieldScope]](../models/fieldscope.md) | :heavy_minus_sign: | Controls which fields to include in the export | +| `fields_to_exclude` | List[*str*] | :heavy_minus_sign: | List of field names to exclude from the export | \ No newline at end of file diff --git a/docs/models/dlpexportfindingsrequestexporttype.md b/docs/models/dlpexportfindingsrequestexporttype.md new file mode 100644 index 00000000..7e9aee47 --- /dev/null +++ b/docs/models/dlpexportfindingsrequestexporttype.md @@ -0,0 +1,20 @@ +# DlpExportFindingsRequestExportType + +The type of export to perform + +## Example Usage + +```python +from glean.api_client.models import DlpExportFindingsRequestExportType + +value = DlpExportFindingsRequestExportType.FINDINGS +``` + + +## Values + +| Name | Value | +| ----------- | ----------- | +| `FINDINGS` | FINDINGS | +| `DOCUMENTS` | DOCUMENTS | +| `ISSUES` | ISSUES | \ No newline at end of file diff --git a/docs/models/dlpfindingfilter.md b/docs/models/dlpfindingfilter.md index cf64c8cf..083bd836 100644 --- a/docs/models/dlpfindingfilter.md +++ b/docs/models/dlpfindingfilter.md @@ -3,15 +3,16 @@ ## Fields -| Field | Type | Required | Description | -| ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | -| `info_type` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `regex_id` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `report_id` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `datasource` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `visibility` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `document_ids` | List[*str*] | :heavy_minus_sign: | N/A | -| `severity` | [Optional[models.DlpSeverity]](../models/dlpseverity.md) | :heavy_minus_sign: | Severity levels for DLP findings and analyses. | -| `document_severity` | List[[models.DlpSeverity](../models/dlpseverity.md)] | :heavy_minus_sign: | N/A | -| `time_range` | [Optional[models.TimeRangeFilter]](../models/timerangefilter.md) | :heavy_minus_sign: | N/A | -| `archived` | *Optional[bool]* | :heavy_minus_sign: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `info_type` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `regex_id` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `report_id` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `datasource` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `visibility` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `document_ids` | List[*str*] | :heavy_minus_sign: | N/A | +| `severity` | [Optional[models.DlpSeverity]](../models/dlpseverity.md) | :heavy_minus_sign: | Severity levels for DLP findings and analyses. FALSE_POSITIVE ranks below LOW and marks analyses that concluded every flagged entity is a detector false positive. | +| `document_severity` | List[[models.DlpSeverity](../models/dlpseverity.md)] | :heavy_minus_sign: | N/A | +| `statuses` | List[[models.DlpIssueStatus](../models/dlpissuestatus.md)] | :heavy_minus_sign: | N/A | +| `time_range` | [Optional[models.TimeRangeFilter]](../models/timerangefilter.md) | :heavy_minus_sign: | N/A | +| `archived` | *Optional[bool]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/dlpfrequency.md b/docs/models/dlpfrequency.md index 9ae76ef7..17476f3f 100644 --- a/docs/models/dlpfrequency.md +++ b/docs/models/dlpfrequency.md @@ -2,6 +2,16 @@ Interval between scans. DAILY is deprecated. +## Example Usage + +```python +from glean.api_client.models import DlpFrequency + +value = DlpFrequency.ONCE + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/dlpissuefilter.md b/docs/models/dlpissuefilter.md new file mode 100644 index 00000000..69f4a0b8 --- /dev/null +++ b/docs/models/dlpissuefilter.md @@ -0,0 +1,24 @@ +# DlpIssueFilter + +Filter for DLP issues. Includes document-level filters and issue-specific filters. + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `search_text` | *Optional[str]* | :heavy_minus_sign: | Text to search for in issue fields. | +| `statuses` | List[[models.DlpIssueStatus](../models/dlpissuestatus.md)] | :heavy_minus_sign: | Filter by one or more issue statuses. | +| ~~`assignee_id`~~ | *Optional[str]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

Filter by a single assignee user ID. Deprecated; use assigneeIds. | +| `assignee_ids` | List[*str*] | :heavy_minus_sign: | Filter by one or more assignee user IDs. Use the sentinel value "UNASSIGNED" to match issues with no assignee. | +| ~~`info_type`~~ | *Optional[str]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

Filter by a single built-in info type. Deprecated; use infoTypes. | +| `info_types` | List[*str*] | :heavy_minus_sign: | Filter by one or more built-in info types. | +| ~~`regex_id`~~ | *Optional[str]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

Filter by a single regex rule ID. Deprecated; use regexIds. | +| `regex_ids` | List[*str*] | :heavy_minus_sign: | Filter by one or more regex rule IDs. | +| `report_ids` | List[*str*] | :heavy_minus_sign: | Filter by one or more report/policy IDs. | +| `doc_id` | *Optional[str]* | :heavy_minus_sign: | N/A | +| ~~`datasource`~~ | *Optional[str]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

Filter by a single datasource. Deprecated; use datasources. | +| `datasources` | List[*str*] | :heavy_minus_sign: | Filter by one or more datasources. | +| `visibility` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `severities` | List[[models.DlpSeverity](../models/dlpseverity.md)] | :heavy_minus_sign: | Filter by one or more severity levels. | +| `time_range` | [Optional[models.TimeRangeFilter]](../models/timerangefilter.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/dlpissuestatus.md b/docs/models/dlpissuestatus.md new file mode 100644 index 00000000..26c2139d --- /dev/null +++ b/docs/models/dlpissuestatus.md @@ -0,0 +1,23 @@ +# DlpIssueStatus + +Status of a DLP issue. + +## Example Usage + +```python +from glean.api_client.models import DlpIssueStatus + +value = DlpIssueStatus.OPEN + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + + +## Values + +| Name | Value | +| ------------- | ------------- | +| `OPEN` | OPEN | +| `CLOSED` | CLOSED | +| `IN_PROGRESS` | IN_PROGRESS | +| `RESOLVED` | RESOLVED | \ No newline at end of file diff --git a/docs/models/dlpreportstatus.md b/docs/models/dlpreportstatus.md index ba04744a..ed2a14b5 100644 --- a/docs/models/dlpreportstatus.md +++ b/docs/models/dlpreportstatus.md @@ -2,6 +2,16 @@ The status of the policy/report. Only ACTIVE status will be picked for scans. +## Example Usage + +```python +from glean.api_client.models import DlpReportStatus + +value = DlpReportStatus.ACTIVE + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/dlpseverity.md b/docs/models/dlpseverity.md index f53e3d5b..657e9962 100644 --- a/docs/models/dlpseverity.md +++ b/docs/models/dlpseverity.md @@ -1,13 +1,24 @@ # DlpSeverity -Severity levels for DLP findings and analyses. +Severity levels for DLP findings and analyses. FALSE_POSITIVE ranks below LOW and marks analyses that concluded every flagged entity is a detector false positive. + +## Example Usage + +```python +from glean.api_client.models import DlpSeverity + +value = DlpSeverity.UNSPECIFIED + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` ## Values -| Name | Value | -| ------------- | ------------- | -| `UNSPECIFIED` | UNSPECIFIED | -| `LOW` | LOW | -| `MEDIUM` | MEDIUM | -| `HIGH` | HIGH | \ No newline at end of file +| Name | Value | +| ---------------- | ---------------- | +| `UNSPECIFIED` | UNSPECIFIED | +| `LOW` | LOW | +| `MEDIUM` | MEDIUM | +| `HIGH` | HIGH | +| `FALSE_POSITIVE` | FALSE_POSITIVE | \ No newline at end of file diff --git a/docs/models/dlpsimpleresult.md b/docs/models/dlpsimpleresult.md index f6e42384..52a18a11 100644 --- a/docs/models/dlpsimpleresult.md +++ b/docs/models/dlpsimpleresult.md @@ -1,5 +1,15 @@ # DlpSimpleResult +## Example Usage + +```python +from glean.api_client.models import DlpSimpleResult + +value = DlpSimpleResult.SUCCESS + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/doccategory.md b/docs/models/doccategory.md index 3f3a7ec6..0e883592 100644 --- a/docs/models/doccategory.md +++ b/docs/models/doccategory.md @@ -2,6 +2,16 @@ The document category of this object type. +## Example Usage + +```python +from glean.api_client.models import DocCategory + +value = DocCategory.UNCATEGORIZED + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values @@ -24,4 +34,6 @@ The document category of this object type. | `EXTERNAL_SHORTCUT` | EXTERNAL_SHORTCUT | | `ENTITY` | ENTITY | | `CALENDAR` | CALENDAR | -| `AGENTS` | AGENTS | \ No newline at end of file +| `AGENTS` | AGENTS | +| `AI_CONVERSATION` | AI_CONVERSATION | +| `AI_ARTIFACT` | AI_ARTIFACT | \ No newline at end of file diff --git a/docs/models/document.md b/docs/models/document.md index 0ef8d71b..4b9f0240 100644 --- a/docs/models/document.md +++ b/docs/models/document.md @@ -3,16 +3,16 @@ ## Fields -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `id` | *Optional[str]* | :heavy_minus_sign: | The Glean Document ID. | | -| `datasource` | *Optional[str]* | :heavy_minus_sign: | The app or other repository type from which the document was extracted | | -| `connector_type` | [Optional[models.ConnectorType]](../models/connectortype.md) | :heavy_minus_sign: | The source from which document content was pulled, e.g. an API crawl or browser history | | -| `doc_type` | *Optional[str]* | :heavy_minus_sign: | The datasource-specific type of the document (e.g. for Jira issues, this is the issue type such as Bug or Feature Request). | | -| `content` | [Optional[models.DocumentContent]](../models/documentcontent.md) | :heavy_minus_sign: | N/A | | -| `container_document` | [Optional[models.Document]](../models/document.md) | :heavy_minus_sign: | N/A | | -| `parent_document` | [Optional[models.Document]](../models/document.md) | :heavy_minus_sign: | N/A | | -| `title` | *Optional[str]* | :heavy_minus_sign: | The title of the document. | | -| `url` | *Optional[str]* | :heavy_minus_sign: | A permalink for the document. | | -| `metadata` | [Optional[models.DocumentMetadata]](../models/documentmetadata.md) | :heavy_minus_sign: | N/A | {
"container": "container",
"parentId": "JIRA_EN-1337",
"createTime": "2000-01-23T04:56:07.000Z",
"datasource": "datasource",
"author": {
"name": "name"
},
"documentId": "documentId",
"updateTime": "2000-01-23T04:56:07.000Z",
"mimeType": "mimeType",
"objectType": "Feature Request",
"components": [
"Backend",
"Networking"
],
"status": [
"Done"
],
"customData": {
"someCustomField": "someCustomValue"
}
} | -| `sections` | List[[models.DocumentSection](../models/documentsection.md)] | :heavy_minus_sign: | A list of content sub-sections in the document, e.g. text blocks with different headings in a Drive doc or Confluence page. | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *Optional[str]* | :heavy_minus_sign: | The Glean Document ID. | | +| `datasource` | *Optional[str]* | :heavy_minus_sign: | The app or other repository type from which the document was extracted | | +| `connector_type` | [Optional[models.ConnectorType]](../models/connectortype.md) | :heavy_minus_sign: | The source from which document content was pulled, e.g. an API crawl or browser history | | +| `doc_type` | *Optional[str]* | :heavy_minus_sign: | The datasource-specific type of the document (e.g. for Jira issues, this is the issue type such as Bug or Feature Request). | | +| `content` | [Optional[models.DocumentContent]](../models/documentcontent.md) | :heavy_minus_sign: | N/A | | +| `container_document` | [Optional[models.Document]](../models/document.md) | :heavy_minus_sign: | N/A | | +| `parent_document` | [Optional[models.Document]](../models/document.md) | :heavy_minus_sign: | N/A | | +| `title` | *Optional[str]* | :heavy_minus_sign: | The title of the document. | | +| `url` | *Optional[str]* | :heavy_minus_sign: | A permalink for the document. | | +| `metadata` | [Optional[models.DocumentMetadata]](../models/documentmetadata.md) | :heavy_minus_sign: | N/A | {
"container": "container",
"parentId": "JIRA_EN-1337",
"createTime": "2000-01-23T04:56:07.000Z",
"datasource": "datasource",
"author": {
"name": "name"
},
"documentId": "documentId",
"updateTime": "2000-01-23T04:56:07.000Z",
"mimeType": "mimeType",
"objectType": "Feature Request",
"components": [
"Backend",
"Networking"
],
"status": "Done",
"customData": {
"someCustomField": {
"stringValue": "someCustomValue"
}
}
} | +| `sections` | List[[models.DocumentSection](../models/documentsection.md)] | :heavy_minus_sign: | A list of content sub-sections in the document, e.g. text blocks with different headings in a Drive doc or Confluence page. | | \ No newline at end of file diff --git a/docs/models/documentdefinition.md b/docs/models/documentdefinition.md index 497f8be3..c1c884b1 100644 --- a/docs/models/documentdefinition.md +++ b/docs/models/documentdefinition.md @@ -28,5 +28,6 @@ Indexable document structure | `interactions` | [Optional[models.DocumentInteractionsDefinition]](../models/documentinteractionsdefinition.md) | :heavy_minus_sign: | describes the interactions on the document | | `status` | *Optional[str]* | :heavy_minus_sign: | N/A | | `additional_urls` | List[*str*] | :heavy_minus_sign: | Additional variations of the URL that this document points to. | +| `native_app_url` | *Optional[str]* | :heavy_minus_sign: | A deep link, if available, into the datasource's native application for the user's platform (e.g. slack://channel/message). | | `comments` | List[[models.CommentDefinition](../models/commentdefinition.md)] | :heavy_minus_sign: | Comments associated with the document. | | `custom_properties` | List[[models.CustomProperty](../models/customproperty.md)] | :heavy_minus_sign: | Additional metadata properties of the document. These can surface as [facets and operators](https://developers.glean.com/indexing/datasource/custom-properties/operators_and_facets). | \ No newline at end of file diff --git a/docs/models/documentinsight.md b/docs/models/documentinsight.md deleted file mode 100644 index 278e30df..00000000 --- a/docs/models/documentinsight.md +++ /dev/null @@ -1,10 +0,0 @@ -# DocumentInsight - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | -| `document` | [models.Document](../models/document.md) | :heavy_check_mark: | N/A | -| `view_count` | [Optional[models.CountInfo]](../models/countinfo.md) | :heavy_minus_sign: | N/A | -| `visitor_count` | [Optional[models.CountInfo]](../models/countinfo.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/documentinteractions.md b/docs/models/documentinteractions.md index 42713431..6c5eb1a1 100644 --- a/docs/models/documentinteractions.md +++ b/docs/models/documentinteractions.md @@ -3,11 +3,11 @@ ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `num_comments` | *Optional[int]* | :heavy_minus_sign: | The count of comments (thread replies in the case of slack). | -| `num_reactions` | *Optional[int]* | :heavy_minus_sign: | The count of reactions on the document. | -| ~~`reactions`~~ | List[*str*] | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

To be deprecated in favor of reacts. A (potentially non-exhaustive) list of reactions for the document. | -| `reacts` | List[[models.Reaction](../models/reaction.md)] | :heavy_minus_sign: | N/A | -| `shares` | List[[models.Share](../models/share.md)] | :heavy_minus_sign: | Describes instances of someone posting a link to this document in one of our indexed datasources. | -| `visitor_count` | [Optional[models.CountInfo]](../models/countinfo.md) | :heavy_minus_sign: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `num_comments` | *Optional[int]* | :heavy_minus_sign: | The count of comments (thread replies in the case of slack). | +| `num_reactions` | *Optional[int]* | :heavy_minus_sign: | The count of reactions on the document. | +| ~~`reactions`~~ | List[*str*] | :heavy_minus_sign: | : warning: ** DEPRECATED **: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use reacts instead.

To be deprecated in favor of reacts. A (potentially non-exhaustive) list of reactions for the document. | +| `reacts` | List[[models.Reaction](../models/reaction.md)] | :heavy_minus_sign: | N/A | +| `shares` | List[[models.Share](../models/share.md)] | :heavy_minus_sign: | Describes instances of someone posting a link to this document in one of our indexed datasources. | +| `visitor_count` | [Optional[models.CountInfo]](../models/countinfo.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/documentspecugctype1.md b/docs/models/documentspecugctype1.md index 8dababc6..6b1e6c24 100644 --- a/docs/models/documentspecugctype1.md +++ b/docs/models/documentspecugctype1.md @@ -2,6 +2,16 @@ The type of the user generated content (UGC datasource). +## Example Usage + +```python +from glean.api_client.models import DocumentSpecUgcType1 + +value = DocumentSpecUgcType1.ANNOUNCEMENTS + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/documentspecugctype2.md b/docs/models/documentspecugctype2.md index 313e7a43..fea16d9d 100644 --- a/docs/models/documentspecugctype2.md +++ b/docs/models/documentspecugctype2.md @@ -2,6 +2,16 @@ The type of the user generated content (UGC datasource). +## Example Usage + +```python +from glean.api_client.models import DocumentSpecUgcType2 + +value = DocumentSpecUgcType2.ANNOUNCEMENTS + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values @@ -9,6 +19,7 @@ The type of the user generated content (UGC datasource). | --------------- | --------------- | | `ANNOUNCEMENTS` | ANNOUNCEMENTS | | `ANSWERS` | ANSWERS | +| `ARTIFACTS` | ARTIFACTS | | `COLLECTIONS` | COLLECTIONS | | `SHORTCUTS` | SHORTCUTS | | `CHATS` | CHATS | \ No newline at end of file diff --git a/docs/models/documentvisibility.md b/docs/models/documentvisibility.md index e8538a99..794df8a8 100644 --- a/docs/models/documentvisibility.md +++ b/docs/models/documentvisibility.md @@ -2,6 +2,16 @@ The level of visibility of the document as understood by our system. +## Example Usage + +```python +from glean.api_client.models import DocumentVisibility + +value = DocumentVisibility.PRIVATE + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/documentvisibilityoverrideoverride.md b/docs/models/documentvisibilityoverrideoverride.md index 0f15995d..fc4aad73 100644 --- a/docs/models/documentvisibilityoverrideoverride.md +++ b/docs/models/documentvisibilityoverrideoverride.md @@ -2,6 +2,16 @@ The visibility-override state of the document. +## Example Usage + +```python +from glean.api_client.models import DocumentVisibilityOverrideOverride + +value = DocumentVisibilityOverrideOverride.NONE + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/documentvisibilityupdateresultoverride.md b/docs/models/documentvisibilityupdateresultoverride.md index c60dc325..519b41ba 100644 --- a/docs/models/documentvisibilityupdateresultoverride.md +++ b/docs/models/documentvisibilityupdateresultoverride.md @@ -2,6 +2,16 @@ The visibility-override state of the document. +## Example Usage + +```python +from glean.api_client.models import DocumentVisibilityUpdateResultOverride + +value = DocumentVisibilityUpdateResultOverride.NONE + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/editagentrequest.md b/docs/models/editagentrequest.md new file mode 100644 index 00000000..41e6d8ed --- /dev/null +++ b/docs/models/editagentrequest.md @@ -0,0 +1,11 @@ +# EditAgentRequest + + +## Fields + +| Field | 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. | +| `agent_id` | *str* | :heavy_check_mark: | The ID of the agent. | +| `edit_workflow_request` | [models.EditWorkflowRequest](../models/editworkflowrequest.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/editanswerrequest.md b/docs/models/editanswerrequest.md index 36f51e20..3b3680d3 100644 --- a/docs/models/editanswerrequest.md +++ b/docs/models/editanswerrequest.md @@ -3,20 +3,20 @@ ## Fields -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `id` | *int* | :heavy_check_mark: | The opaque ID of the Answer. | 3 | -| `doc_id` | *Optional[str]* | :heavy_minus_sign: | Glean Document ID of the Answer. The Glean Document ID is supported for cases where the Answer ID isn't available. If both are available, using the Answer ID is preferred. | ANSWERS_answer_3 | -| `question` | *Optional[str]* | :heavy_minus_sign: | N/A | Why is the sky blue? | -| `question_variations` | List[*str*] | :heavy_minus_sign: | Additional ways of phrasing this question. | | -| `body_text` | *Optional[str]* | :heavy_minus_sign: | The plain text answer to the question. | From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light. | -| ~~`board_id`~~ | *Optional[int]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

The parent board ID of this Answer, or 0 if it's a floating Answer. Adding Answers to Answer Boards is no longer permitted. | | -| `audience_filters` | List[[models.FacetFilter](../models/facetfilter.md)] | :heavy_minus_sign: | Filters which restrict who should see the answer. Values are taken from the corresponding filters in people search. | | -| `added_roles` | List[[models.UserRoleSpecification](../models/userrolespecification.md)] | :heavy_minus_sign: | A list of user roles for the answer added by the owner. | | -| `removed_roles` | List[[models.UserRoleSpecification](../models/userrolespecification.md)] | :heavy_minus_sign: | A list of user roles for the answer removed by the owner. | | -| `roles` | List[[models.UserRoleSpecification](../models/userrolespecification.md)] | :heavy_minus_sign: | A list of roles for this answer explicitly granted by an owner, editor, or admin. | | -| `source_document_spec` | [Optional[models.DocumentSpecUnion]](../models/documentspecunion.md) | :heavy_minus_sign: | N/A | | -| `source_type` | [Optional[models.EditAnswerRequestSourceType]](../models/editanswerrequestsourcetype.md) | :heavy_minus_sign: | N/A | | -| `added_collections` | List[*int*] | :heavy_minus_sign: | IDs of Collections to which a document is added. | | -| `removed_collections` | List[*int*] | :heavy_minus_sign: | IDs of Collections from which a document is removed. | | -| `combined_answer_text` | [Optional[models.StructuredTextMutableProperties]](../models/structuredtextmutableproperties.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *int* | :heavy_check_mark: | The opaque ID of the Answer. | 3 | +| `doc_id` | *Optional[str]* | :heavy_minus_sign: | Glean Document ID of the Answer. The Glean Document ID is supported for cases where the Answer ID isn't available. If both are available, using the Answer ID is preferred. | ANSWERS_answer_3 | +| `question` | *Optional[str]* | :heavy_minus_sign: | N/A | Why is the sky blue? | +| `question_variations` | List[*str*] | :heavy_minus_sign: | Additional ways of phrasing this question. | | +| `body_text` | *Optional[str]* | :heavy_minus_sign: | The plain text answer to the question. | From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light. | +| ~~`board_id`~~ | *Optional[int]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Answer Boards no longer supported.

The parent board ID of this Answer, or 0 if it's a floating Answer. Adding Answers to Answer Boards is no longer permitted. | | +| `audience_filters` | List[[models.FacetFilter](../models/facetfilter.md)] | :heavy_minus_sign: | Filters which restrict who should see the answer. Values are taken from the corresponding filters in people search. | | +| `added_roles` | List[[models.UserRoleSpecification](../models/userrolespecification.md)] | :heavy_minus_sign: | A list of user roles for the answer added by the owner. | | +| `removed_roles` | List[[models.UserRoleSpecification](../models/userrolespecification.md)] | :heavy_minus_sign: | A list of user roles for the answer removed by the owner. | | +| `roles` | List[[models.UserRoleSpecification](../models/userrolespecification.md)] | :heavy_minus_sign: | A list of roles for this answer explicitly granted by an owner, editor, or admin. | | +| `source_document_spec` | [Optional[models.DocumentSpecUnion]](../models/documentspecunion.md) | :heavy_minus_sign: | N/A | | +| `source_type` | [Optional[models.EditAnswerRequestSourceType]](../models/editanswerrequestsourcetype.md) | :heavy_minus_sign: | N/A | | +| `added_collections` | List[*int*] | :heavy_minus_sign: | IDs of Collections to which a document is added. | | +| `removed_collections` | List[*int*] | :heavy_minus_sign: | IDs of Collections from which a document is removed. | | +| `combined_answer_text` | [Optional[models.StructuredTextMutableProperties]](../models/structuredtextmutableproperties.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/editanswerrequestrequest.md b/docs/models/editanswerrequestrequest.md new file mode 100644 index 00000000..07d1c826 --- /dev/null +++ b/docs/models/editanswerrequestrequest.md @@ -0,0 +1,9 @@ +# EditanswerRequestRequest + + +## Fields + +| Field | 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`. | +| `edit_answer_request` | [models.EditAnswerRequest](../models/editanswerrequest.md) | :heavy_check_mark: | EditAnswer request | \ No newline at end of file diff --git a/docs/models/editanswerrequestsourcetype.md b/docs/models/editanswerrequestsourcetype.md index 19a8a427..2b4fcbd7 100644 --- a/docs/models/editanswerrequestsourcetype.md +++ b/docs/models/editanswerrequestsourcetype.md @@ -1,5 +1,13 @@ # EditAnswerRequestSourceType +## Example Usage + +```python +from glean.api_client.models import EditAnswerRequestSourceType + +value = EditAnswerRequestSourceType.DOCUMENT +``` + ## Values diff --git a/docs/models/editcollectionitemrequestrequest.md b/docs/models/editcollectionitemrequestrequest.md new file mode 100644 index 00000000..a43167ab --- /dev/null +++ b/docs/models/editcollectionitemrequestrequest.md @@ -0,0 +1,9 @@ +# EditcollectionitemRequestRequest + + +## Fields + +| Field | 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`. | +| `edit_collection_item_request` | [models.EditCollectionItemRequest](../models/editcollectionitemrequest.md) | :heavy_check_mark: | Edit Collection Items request | \ No newline at end of file diff --git a/docs/models/editcollectionrequestrequest.md b/docs/models/editcollectionrequestrequest.md new file mode 100644 index 00000000..b806bc37 --- /dev/null +++ b/docs/models/editcollectionrequestrequest.md @@ -0,0 +1,9 @@ +# EditcollectionRequestRequest + + +## Fields + +| Field | 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`. | +| `edit_collection_request` | [models.EditCollectionRequest](../models/editcollectionrequest.md) | :heavy_check_mark: | Collection content plus any additional metadata for the request. | \ No newline at end of file diff --git a/docs/models/editcollectionresponse.md b/docs/models/editcollectionresponse.md index 5dfbdfba..25aa8e42 100644 --- a/docs/models/editcollectionresponse.md +++ b/docs/models/editcollectionresponse.md @@ -16,6 +16,7 @@ | `thumbnail` | [Optional[models.Thumbnail]](../models/thumbnail.md) | :heavy_minus_sign: | N/A | | | `allowed_datasource` | *Optional[str]* | :heavy_minus_sign: | The datasource type this Collection can hold. | | | `permissions` | [Optional[models.ObjectPermissions]](../models/objectpermissions.md) | :heavy_minus_sign: | N/A | | +| `tracking_token` | *Optional[str]* | :heavy_minus_sign: | An opaque token that represents this particular UGC. To be used for `/feedback` reporting. | | | `id` | *int* | :heavy_check_mark: | The unique ID of the Collection. | | | `create_time` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | N/A | | | `update_time` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | N/A | | @@ -28,6 +29,7 @@ | `shortcuts` | List[*str*] | :heavy_minus_sign: | The names of the shortcuts (Go Links) that point to this Collection. | | | `children` | List[[models.Collection](../models/collection.md)] | :heavy_minus_sign: | The children Collections of this Collection. | | | `roles` | List[[models.UserRoleSpecification](../models/userrolespecification.md)] | :heavy_minus_sign: | A list of user roles for the Collection. | | +| `favorite_info` | [Optional[models.FavoriteInfo]](../models/favoriteinfo.md) | :heavy_minus_sign: | N/A | | | `error_code` | [models.EditCollectionResponseErrorCode](../models/editcollectionresponseerrorcode.md) | :heavy_check_mark: | N/A | | | `collection` | [Optional[models.Collection]](../models/collection.md) | :heavy_minus_sign: | N/A | | | `error` | [Optional[models.CollectionError]](../models/collectionerror.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/editcollectionresponseerrorcode.md b/docs/models/editcollectionresponseerrorcode.md index e6f6a8fa..bc8f34aa 100644 --- a/docs/models/editcollectionresponseerrorcode.md +++ b/docs/models/editcollectionresponseerrorcode.md @@ -1,5 +1,15 @@ # EditCollectionResponseErrorCode +## Example Usage + +```python +from glean.api_client.models import EditCollectionResponseErrorCode + +value = EditCollectionResponseErrorCode.NAME_EXISTS + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values @@ -11,4 +21,5 @@ | `CONCURRENT_HIERARCHY_EDIT` | CONCURRENT_HIERARCHY_EDIT | | `HEIGHT_VIOLATION` | HEIGHT_VIOLATION | | `WIDTH_VIOLATION` | WIDTH_VIOLATION | -| `NO_PERMISSIONS` | NO_PERMISSIONS | \ No newline at end of file +| `NO_PERMISSIONS` | NO_PERMISSIONS | +| `CORRUPT_ITEM` | CORRUPT_ITEM | \ No newline at end of file diff --git a/docs/models/editpinrequestrequest.md b/docs/models/editpinrequestrequest.md new file mode 100644 index 00000000..5a6db80b --- /dev/null +++ b/docs/models/editpinrequestrequest.md @@ -0,0 +1,9 @@ +# EditpinRequestRequest + + +## Fields + +| Field | 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`. | +| `edit_pin_request` | [models.EditPinRequest](../models/editpinrequest.md) | :heavy_check_mark: | Edit pins request | \ No newline at end of file diff --git a/docs/models/editworkflowrequest.md b/docs/models/editworkflowrequest.md new file mode 100644 index 00000000..3577eaa2 --- /dev/null +++ b/docs/models/editworkflowrequest.md @@ -0,0 +1,9 @@ +# EditWorkflowRequest + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | +| `name` | *Optional[str]* | :heavy_minus_sign: | The name of the workflow. | +| `id` | *Optional[str]* | :heavy_minus_sign: | The workflow ID we want to update. | \ No newline at end of file diff --git a/docs/models/employeeinfodefinition.md b/docs/models/employeeinfodefinition.md index b22b23bd..c6c8ed10 100644 --- a/docs/models/employeeinfodefinition.md +++ b/docs/models/employeeinfodefinition.md @@ -13,7 +13,7 @@ Describes employee info | `preferred_name` | *Optional[str]* | :heavy_minus_sign: | The preferred name or nickname of the employee | | `id` | *Optional[str]* | :heavy_minus_sign: | **[Advanced]** A unique universal internal identifier for the employee. This is solely used for understanding manager relationships along with `managerId`.
| | `phone_number` | *Optional[str]* | :heavy_minus_sign: | The employee's phone number. | -| ~~`location`~~ | *Optional[str]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

The employee's location (city/office name etc). | +| ~~`location`~~ | *Optional[str]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Field is deprecated.

The employee's location (city/office name etc). | | `structured_location` | [Optional[models.StructuredLocation]](../models/structuredlocation.md) | :heavy_minus_sign: | Detailed location with information about country, state, city etc. | | `title` | *Optional[str]* | :heavy_minus_sign: | The employee's role title. | | `photo_url` | *Optional[str]* | :heavy_minus_sign: | The employee's profile pic | diff --git a/docs/models/entitiessortorder.md b/docs/models/entitiessortorder.md index 3a360150..35de67c5 100644 --- a/docs/models/entitiessortorder.md +++ b/docs/models/entitiessortorder.md @@ -2,6 +2,16 @@ Different ways of sorting entities +## Example Usage + +```python +from glean.api_client.models import EntitiesSortOrder + +value = EntitiesSortOrder.ENTITY_NAME + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/entitytype.md b/docs/models/entitytype.md index e9114485..cc245095 100644 --- a/docs/models/entitytype.md +++ b/docs/models/entitytype.md @@ -2,6 +2,16 @@ The type of entity. +## Example Usage + +```python +from glean.api_client.models import EntityType + +value = EntityType.PERSON + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/eventclassificationname.md b/docs/models/eventclassificationname.md index f66268a0..809a1e83 100644 --- a/docs/models/eventclassificationname.md +++ b/docs/models/eventclassificationname.md @@ -2,6 +2,14 @@ The name for a generated classification of an event. +## Example Usage + +```python +from glean.api_client.models import EventClassificationName + +value = EventClassificationName.EXTERNAL_EVENT +``` + ## Values diff --git a/docs/models/eventstrategyname.md b/docs/models/eventstrategyname.md index 51c02370..9fa8de74 100644 --- a/docs/models/eventstrategyname.md +++ b/docs/models/eventstrategyname.md @@ -2,6 +2,16 @@ The name of method used to surface relevant data for a given calendar event. +## Example Usage + +```python +from glean.api_client.models import EventStrategyName + +value = EventStrategyName.CUSTOMER_CARD + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/exportinfo.md b/docs/models/exportinfo.md index fd1547a8..606ef59e 100644 --- a/docs/models/exportinfo.md +++ b/docs/models/exportinfo.md @@ -3,13 +3,15 @@ ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | -| `created_by` | [Optional[models.DlpPerson]](../models/dlpperson.md) | :heavy_minus_sign: | Details about the person who created this report/policy. | -| `start_time` | *Optional[str]* | :heavy_minus_sign: | Timestamp at which this export started. | -| `end_time` | *Optional[str]* | :heavy_minus_sign: | Timestamp at which this export completed. | -| `export_id` | *Optional[str]* | :heavy_minus_sign: | The ID of the export | -| `file_name` | *Optional[str]* | :heavy_minus_sign: | The name of the file to export the findings to | -| `filter_` | [Optional[models.DlpFindingFilter]](../models/dlpfindingfilter.md) | :heavy_minus_sign: | N/A | -| `status` | [Optional[models.ExportInfoStatus]](../models/exportinfostatus.md) | :heavy_minus_sign: | The status of the export | -| `export_size` | *Optional[int]* | :heavy_minus_sign: | The size of the exported file in bytes | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| `created_by` | [Optional[models.DlpPerson]](../models/dlpperson.md) | :heavy_minus_sign: | Details about the person who created this report/policy. | +| `start_time` | *Optional[str]* | :heavy_minus_sign: | Timestamp at which this export started. | +| `end_time` | *Optional[str]* | :heavy_minus_sign: | Timestamp at which this export completed. | +| `export_id` | *Optional[str]* | :heavy_minus_sign: | The ID of the export | +| `file_name` | *Optional[str]* | :heavy_minus_sign: | The name of the file to export the findings to | +| `export_type` | [Optional[models.ExportInfoExportType]](../models/exportinfoexporttype.md) | :heavy_minus_sign: | The type of export to perform | +| `filter_` | [Optional[models.DlpFindingFilter]](../models/dlpfindingfilter.md) | :heavy_minus_sign: | N/A | +| `issue_filter` | [Optional[models.DlpIssueFilter]](../models/dlpissuefilter.md) | :heavy_minus_sign: | Filter for DLP issues. Includes document-level filters and issue-specific filters. | +| `status` | [Optional[models.ExportInfoStatus]](../models/exportinfostatus.md) | :heavy_minus_sign: | The status of the export | +| `export_size` | *Optional[int]* | :heavy_minus_sign: | The size of the exported file in bytes | \ No newline at end of file diff --git a/docs/models/exportinfoexporttype.md b/docs/models/exportinfoexporttype.md new file mode 100644 index 00000000..fd269c2f --- /dev/null +++ b/docs/models/exportinfoexporttype.md @@ -0,0 +1,22 @@ +# ExportInfoExportType + +The type of export to perform + +## Example Usage + +```python +from glean.api_client.models import ExportInfoExportType + +value = ExportInfoExportType.FINDINGS + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + + +## Values + +| Name | Value | +| ----------- | ----------- | +| `FINDINGS` | FINDINGS | +| `DOCUMENTS` | DOCUMENTS | +| `ISSUES` | ISSUES | \ No newline at end of file diff --git a/docs/models/exportinfostatus.md b/docs/models/exportinfostatus.md index 1639f2fa..f257dc52 100644 --- a/docs/models/exportinfostatus.md +++ b/docs/models/exportinfostatus.md @@ -2,6 +2,16 @@ The status of the export +## Example Usage + +```python +from glean.api_client.models import ExportInfoStatus + +value = ExportInfoStatus.PENDING + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/exporttype.md b/docs/models/exporttype.md deleted file mode 100644 index fda2a24f..00000000 --- a/docs/models/exporttype.md +++ /dev/null @@ -1,11 +0,0 @@ -# ExportType - -The type of export to perform - - -## Values - -| Name | Value | -| ----------- | ----------- | -| `FINDINGS` | FINDINGS | -| `DOCUMENTS` | DOCUMENTS | \ No newline at end of file diff --git a/docs/models/externalsharingoptions.md b/docs/models/externalsharingoptions.md index 967c5f81..96a8d1eb 100644 --- a/docs/models/externalsharingoptions.md +++ b/docs/models/externalsharingoptions.md @@ -2,19 +2,19 @@ Controls how "shared" a document must be to get picked for scans. -> :warning: **DEPRECATED**: This will be removed in a future release, please migrate away from it as soon as possible. +> :warning: **DEPRECATED**: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use broadSharingOptions instead. ## Fields -| Field | Type | Required | Description | -| ----------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | -| ~~`enabled`~~ | *Optional[bool]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible. | -| `threshold` | *Optional[int]* | :heavy_minus_sign: | The minimum number of users the document is shared with. | -| `threshold_enabled` | *Optional[bool]* | :heavy_minus_sign: | Documents will be filtered based on how many people have access to it. | -| ~~`anyone_with_link_enabled`~~ | *Optional[bool]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible. | -| `anyone_internal_enabled` | *Optional[bool]* | :heavy_minus_sign: | Only users within the organization can access the document. | -| `anonymous_access_enabled` | *Optional[bool]* | :heavy_minus_sign: | Anyone on the internet can access the document. | -| `user_access_enabled` | *Optional[bool]* | :heavy_minus_sign: | Enable user access check | -| `user_ids` | List[*str*] | :heavy_minus_sign: | Any one of the specified users can access the document. | -| `domain_access_enabled` | *Optional[bool]* | :heavy_minus_sign: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | +| ~~`enabled`~~ | *Optional[bool]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Field is deprecated. | +| `threshold` | *Optional[int]* | :heavy_minus_sign: | The minimum number of users the document is shared with. | +| `threshold_enabled` | *Optional[bool]* | :heavy_minus_sign: | Documents will be filtered based on how many people have access to it. | +| ~~`anyone_with_link_enabled`~~ | *Optional[bool]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Field is deprecated. | +| `anyone_internal_enabled` | *Optional[bool]* | :heavy_minus_sign: | Only users within the organization can access the document. | +| `anonymous_access_enabled` | *Optional[bool]* | :heavy_minus_sign: | Anyone on the internet can access the document. | +| `user_access_enabled` | *Optional[bool]* | :heavy_minus_sign: | Enable user access check | +| `user_ids` | List[*str*] | :heavy_minus_sign: | Any one of the specified users can access the document. | +| `domain_access_enabled` | *Optional[bool]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/extractedqna.md b/docs/models/extractedqna.md index 5bf715b9..f7e9ba66 100644 --- a/docs/models/extractedqna.md +++ b/docs/models/extractedqna.md @@ -3,8 +3,8 @@ ## Fields -| Field | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `heading` | *Optional[str]* | :heavy_minus_sign: | Heading text that was matched to produce this result. | | -| `question` | *Optional[str]* | :heavy_minus_sign: | Question text that was matched to produce this result. | | -| `question_result` | [Optional[models.SearchResult]](../models/searchresult.md) | :heavy_minus_sign: | N/A | {
"snippets": [
{
"snippet": "snippet",
"mimeType": "mimeType"
}
],
"metadata": {
"container": "container",
"createTime": "2000-01-23T04:56:07.000Z",
"datasource": "datasource",
"author": {
"name": "name"
},
"documentId": "documentId",
"updateTime": "2000-01-23T04:56:07.000Z",
"mimeType": "mimeType",
"objectType": "objectType"
},
"title": "title",
"url": "https://example.com/foo/bar",
"nativeAppUrl": "slack://foo/bar",
"mustIncludeSuggestions": [
{
"missingTerm": "container",
"query": "container"
}
]
} | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `heading` | *Optional[str]* | :heavy_minus_sign: | Heading text that was matched to produce this result. | | +| `question` | *Optional[str]* | :heavy_minus_sign: | Question text that was matched to produce this result. | | +| `question_result` | [Optional[models.SearchResult]](../models/searchresult.md) | :heavy_minus_sign: | N/A | {
"snippets": [
{
"snippet": "snippet",
"mimeType": "mimeType"
}
],
"metadata": {
"container": "container",
"createTime": "2000-01-23T04:56:07.000Z",
"datasource": "datasource",
"author": {
"name": "name"
},
"documentId": "documentId",
"updateTime": "2000-01-23T04:56:07.000Z",
"mimeType": "mimeType",
"objectType": "objectType"
},
"title": "title",
"url": "https://example.com/foo/bar",
"nativeAppUrl": "slack://foo/bar",
"mustIncludeSuggestions": {
"suggestions": [
{
"missingTerm": "container",
"query": "container"
}
]
}
} | \ No newline at end of file diff --git a/docs/models/facetfiltervalue.md b/docs/models/facetfiltervalue.md index 74ab3a85..84c21704 100644 --- a/docs/models/facetfiltervalue.md +++ b/docs/models/facetfiltervalue.md @@ -3,8 +3,8 @@ ## Fields -| Field | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `value` | *Optional[str]* | :heavy_minus_sign: | N/A | Spreadsheet | -| `relation_type` | [Optional[models.RelationType]](../models/relationtype.md) | :heavy_minus_sign: | N/A | EQUALS | -| ~~`is_negated`~~ | *Optional[bool]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

DEPRECATED - please use relationType instead | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `value` | *Optional[str]* | :heavy_minus_sign: | N/A | Spreadsheet | +| `relation_type` | [Optional[models.RelationType]](../models/relationtype.md) | :heavy_minus_sign: | N/A | EQUALS | +| ~~`is_negated`~~ | *Optional[bool]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use relationType instead.

DEPRECATED - please use relationType instead | | \ No newline at end of file diff --git a/docs/models/feedback.md b/docs/models/feedback.md index 6fe107ab..635bde27 100644 --- a/docs/models/feedback.md +++ b/docs/models/feedback.md @@ -8,7 +8,7 @@ | `id` | *Optional[str]* | :heavy_minus_sign: | Universally unique identifier of the event. To allow for reliable retransmission, only the earliest received event of a given UUID is considered valid by the server and subsequent are ignored. | | `category` | [Optional[models.FeedbackCategory]](../models/feedbackcategory.md) | :heavy_minus_sign: | The feature category to which the feedback applies. These should be broad product areas such as Announcements, Answers, Search, etc. rather than specific components or UI treatments within those areas. | | `tracking_tokens` | List[*str*] | :heavy_check_mark: | A list of server-generated trackingTokens to which this event applies. | -| `event` | [models.Event](../models/event.md) | :heavy_check_mark: | The action the user took within a Glean client with respect to the object referred to by the given `trackingToken`. | +| `event` | [models.FeedbackEvent](../models/feedbackevent.md) | :heavy_check_mark: | The action the user took within a Glean client with respect to the object referred to by the given `trackingToken`. | | `position` | *Optional[int]* | :heavy_minus_sign: | Position of the element in the case that the client controls order (such as feed and autocomplete). | | `payload` | *Optional[str]* | :heavy_minus_sign: | For type MANUAL_FEEDBACK, contains string of user feedback. For autocomplete, partial query string. For feed, string of user feedback in addition to manual feedback signals extracted from all suggested content. | | `session_info` | [Optional[models.SessionInfo]](../models/sessioninfo.md) | :heavy_minus_sign: | N/A | diff --git a/docs/models/feedbackcategory.md b/docs/models/feedbackcategory.md index 0cd81ec7..53cf5fdb 100644 --- a/docs/models/feedbackcategory.md +++ b/docs/models/feedbackcategory.md @@ -2,12 +2,22 @@ The feature category to which the feedback applies. These should be broad product areas such as Announcements, Answers, Search, etc. rather than specific components or UI treatments within those areas. +## Example Usage + +```python +from glean.api_client.models import FeedbackCategory + +value = FeedbackCategory.ANNOUNCEMENT +``` + ## Values | Name | Value | | -------------- | -------------- | | `ANNOUNCEMENT` | ANNOUNCEMENT | +| `ANSWERS` | ANSWERS | +| `ARTIFACTS` | ARTIFACTS | | `AUTOCOMPLETE` | AUTOCOMPLETE | | `COLLECTIONS` | COLLECTIONS | | `FEED` | FEED | diff --git a/docs/models/feedbackchannel.md b/docs/models/feedbackchannel.md index e1126a1f..10a59bd3 100644 --- a/docs/models/feedbackchannel.md +++ b/docs/models/feedbackchannel.md @@ -1,5 +1,13 @@ # FeedbackChannel +## Example Usage + +```python +from glean.api_client.models import FeedbackChannel + +value = FeedbackChannel.COMPANY +``` + ## Values diff --git a/docs/models/event.md b/docs/models/feedbackevent.md similarity index 92% rename from docs/models/event.md rename to docs/models/feedbackevent.md index 399107aa..e64b3749 100644 --- a/docs/models/event.md +++ b/docs/models/feedbackevent.md @@ -1,7 +1,15 @@ -# Event +# FeedbackEvent The action the user took within a Glean client with respect to the object referred to by the given `trackingToken`. +## Example Usage + +```python +from glean.api_client.models import FeedbackEvent + +value = FeedbackEvent.CLICK +``` + ## Values @@ -21,6 +29,7 @@ The action the user took within a Glean client with respect to the object referr | `LAST_TOKEN` | LAST_TOKEN | | `MANUAL_FEEDBACK` | MANUAL_FEEDBACK | | `MANUAL_FEEDBACK_SIDE_BY_SIDE` | MANUAL_FEEDBACK_SIDE_BY_SIDE | +| `FEEDBACK_TIME_SAVED` | FEEDBACK_TIME_SAVED | | `MARK_AS_READ` | MARK_AS_READ | | `MESSAGE` | MESSAGE | | `MIDDLE_CLICK` | MIDDLE_CLICK | diff --git a/docs/models/feedrequestcategory.md b/docs/models/feedrequestcategory.md index b6590356..833e3e94 100644 --- a/docs/models/feedrequestcategory.md +++ b/docs/models/feedrequestcategory.md @@ -1,5 +1,13 @@ # FeedRequestCategory +## Example Usage + +```python +from glean.api_client.models import FeedRequestCategory + +value = FeedRequestCategory.DOCUMENT_SUGGESTION +``` + ## Values @@ -29,4 +37,26 @@ | `ZERO_STATE_WORKFLOW_RECENT` | ZERO_STATE_WORKFLOW_RECENT | | `ZERO_STATE_WORKFLOW_SUGGESTION` | ZERO_STATE_WORKFLOW_SUGGESTION | | `PERSONALIZED_CHAT_SUGGESTION` | PERSONALIZED_CHAT_SUGGESTION | -| `DAILY_DIGEST` | DAILY_DIGEST | \ No newline at end of file +| `DAILY_DIGEST` | DAILY_DIGEST | +| `PODCAST` | PODCAST | +| `TASK` | TASK | +| `PLAN_MY_DAY` | PLAN_MY_DAY | +| `END_MY_DAY` | END_MY_DAY | +| `STARTER_KIT` | STARTER_KIT | +| `MEETING_PREP_AUTOMATION` | MEETING_PREP_AUTOMATION | +| `MID_DAY_CATCH_UP` | MID_DAY_CATCH_UP | +| `QUERY_SUGGESTION` | QUERY_SUGGESTION | +| `COWORK_CUJ_PROMO` | COWORK_CUJ_PROMO | +| `CARD_STACK_PROMO` | CARD_STACK_PROMO | +| `WEEKLY_MEETINGS` | WEEKLY_MEETINGS | +| `FOLLOW_UP` | FOLLOW_UP | +| `MILESTONE_TIMELINE_CHECK` | MILESTONE_TIMELINE_CHECK | +| `PROJECT_DISCUSSION_DIGEST` | PROJECT_DISCUSSION_DIGEST | +| `PROJECT_FOCUS_BLOCK` | PROJECT_FOCUS_BLOCK | +| `PROJECT_NEXT_STEP` | PROJECT_NEXT_STEP | +| `DEMO_CARD` | DEMO_CARD | +| `RESOLVE_MEETING_CONFLICT` | RESOLVE_MEETING_CONFLICT | +| `OOO_PLANNER` | OOO_PLANNER | +| `OOO_CATCH_UP` | OOO_CATCH_UP | +| `ADMIN_HEALTH_CENTER` | ADMIN_HEALTH_CENTER | +| `KNOWLEDGE_GAP` | KNOWLEDGE_GAP | \ No newline at end of file diff --git a/docs/models/feedrequestrequest.md b/docs/models/feedrequestrequest.md new file mode 100644 index 00000000..e662bffd --- /dev/null +++ b/docs/models/feedrequestrequest.md @@ -0,0 +1,9 @@ +# FeedRequestRequest + + +## Fields + +| Field | 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`. | +| `feed_request` | [models.FeedRequest](../models/feedrequest.md) | :heavy_check_mark: | Includes request params, client data and more for making user's feed. | \ No newline at end of file diff --git a/docs/models/feedresult.md b/docs/models/feedresult.md index 6318b020..f6f92abf 100644 --- a/docs/models/feedresult.md +++ b/docs/models/feedresult.md @@ -3,9 +3,10 @@ ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -| `category` | [models.FeedResultCategory](../models/feedresultcategory.md) | :heavy_check_mark: | Category of the result, one of the requested categories in incoming request. | -| `primary_entry` | [models.FeedEntry](../models/feedentry.md) | :heavy_check_mark: | N/A | -| `secondary_entries` | List[[models.FeedEntry](../models/feedentry.md)] | :heavy_minus_sign: | Secondary entries for the result e.g. suggested docs for the calendar, carousel. | -| `rank` | *Optional[int]* | :heavy_minus_sign: | Rank of the result. Rank is suggested by server. Client side rank may differ. | \ No newline at end of file +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `category` | [models.FeedResultCategory](../models/feedresultcategory.md) | :heavy_check_mark: | Category of the result, one of the requested categories in incoming request. | +| `primary_entry` | [models.FeedEntry](../models/feedentry.md) | :heavy_check_mark: | N/A | +| `secondary_entries` | List[[models.FeedEntry](../models/feedentry.md)] | :heavy_minus_sign: | Secondary entries for the result e.g. suggested docs for the calendar, carousel. | +| `rank` | *Optional[int]* | :heavy_minus_sign: | Rank of the result. Rank is suggested by server. Client side rank may differ. | +| `placement_reason` | [Optional[models.PlacementReason]](../models/placementreason.md) | :heavy_minus_sign: | Placement source for ranked feed results. ORGANIC means the card was emitted by normal feed ranking. PROMO means the card was inserted by the homepage cards promo framework. PINNED means the card was moved to the head of the ranked stack (e.g. knowledge-gap pilot cards). | \ No newline at end of file diff --git a/docs/models/feedresultcategory.md b/docs/models/feedresultcategory.md index 5de26d31..cf763445 100644 --- a/docs/models/feedresultcategory.md +++ b/docs/models/feedresultcategory.md @@ -2,6 +2,16 @@ Category of the result, one of the requested categories in incoming request. +## Example Usage + +```python +from glean.api_client.models import FeedResultCategory + +value = FeedResultCategory.DOCUMENT_SUGGESTION + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values @@ -31,4 +41,26 @@ Category of the result, one of the requested categories in incoming request. | `ZERO_STATE_WORKFLOW_RECENT` | ZERO_STATE_WORKFLOW_RECENT | | `ZERO_STATE_WORKFLOW_SUGGESTION` | ZERO_STATE_WORKFLOW_SUGGESTION | | `PERSONALIZED_CHAT_SUGGESTION` | PERSONALIZED_CHAT_SUGGESTION | -| `DAILY_DIGEST` | DAILY_DIGEST | \ No newline at end of file +| `DAILY_DIGEST` | DAILY_DIGEST | +| `PODCAST` | PODCAST | +| `TASK` | TASK | +| `PLAN_MY_DAY` | PLAN_MY_DAY | +| `END_MY_DAY` | END_MY_DAY | +| `STARTER_KIT` | STARTER_KIT | +| `MEETING_PREP_AUTOMATION` | MEETING_PREP_AUTOMATION | +| `MID_DAY_CATCH_UP` | MID_DAY_CATCH_UP | +| `QUERY_SUGGESTION` | QUERY_SUGGESTION | +| `COWORK_CUJ_PROMO` | COWORK_CUJ_PROMO | +| `CARD_STACK_PROMO` | CARD_STACK_PROMO | +| `WEEKLY_MEETINGS` | WEEKLY_MEETINGS | +| `FOLLOW_UP` | FOLLOW_UP | +| `MILESTONE_TIMELINE_CHECK` | MILESTONE_TIMELINE_CHECK | +| `PROJECT_DISCUSSION_DIGEST` | PROJECT_DISCUSSION_DIGEST | +| `PROJECT_FOCUS_BLOCK` | PROJECT_FOCUS_BLOCK | +| `PROJECT_NEXT_STEP` | PROJECT_NEXT_STEP | +| `DEMO_CARD` | DEMO_CARD | +| `RESOLVE_MEETING_CONFLICT` | RESOLVE_MEETING_CONFLICT | +| `OOO_PLANNER` | OOO_PLANNER | +| `OOO_CATCH_UP` | OOO_CATCH_UP | +| `ADMIN_HEALTH_CENTER` | ADMIN_HEALTH_CENTER | +| `KNOWLEDGE_GAP` | KNOWLEDGE_GAP | \ No newline at end of file diff --git a/docs/models/fieldscope.md b/docs/models/fieldscope.md index e57e7233..3c3c097a 100644 --- a/docs/models/fieldscope.md +++ b/docs/models/fieldscope.md @@ -2,6 +2,14 @@ Controls which fields to include in the export +## Example Usage + +```python +from glean.api_client.models import FieldScope + +value = FieldScope.ALL +``` + ## Values diff --git a/docs/models/file.md b/docs/models/file.md deleted file mode 100644 index 37cc418f..00000000 --- a/docs/models/file.md +++ /dev/null @@ -1,10 +0,0 @@ -# File - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | -| `file_name` | *str* | :heavy_check_mark: | N/A | -| `content` | *Union[bytes, IO[bytes], io.BufferedReader]* | :heavy_check_mark: | N/A | -| `content_type` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/format_.md b/docs/models/format_.md index 8e5b70d9..d5119bf1 100644 --- a/docs/models/format_.md +++ b/docs/models/format_.md @@ -2,6 +2,14 @@ defines how to render this particular displayable list card +## Example Usage + +```python +from glean.api_client.models import Format + +value = Format.LIST +``` + ## Values diff --git a/docs/models/generatedqna.md b/docs/models/generatedqna.md index 45bd3342..52fbfb41 100644 --- a/docs/models/generatedqna.md +++ b/docs/models/generatedqna.md @@ -3,13 +3,13 @@ ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `question` | *Optional[str]* | :heavy_minus_sign: | Search query rephrased into a question. | -| `answer` | *Optional[str]* | :heavy_minus_sign: | Answer generated for the given query or the generated question. | -| `follow_up_prompts` | List[*str*] | :heavy_minus_sign: | List of all follow-up prompts generated for the given query or the generated question. | -| `followup_actions` | List[[models.FollowupAction](../models/followupaction.md)] | :heavy_minus_sign: | List of follow-up actions generated for the given query or the generated question. | -| `ranges` | List[[models.TextRange](../models/textrange.md)] | :heavy_minus_sign: | Answer subsections to mark with special formatting (citations, bolding etc) | -| `status` | [Optional[models.GeneratedQnaStatus]](../models/generatedqnastatus.md) | :heavy_minus_sign: | Status of backend generating the answer | -| `cursor` | *Optional[str]* | :heavy_minus_sign: | An opaque cursor representing the search request | -| `tracking_token` | *Optional[str]* | :heavy_minus_sign: | An opaque token that represents this particular result in this particular query. To be used for /feedback reporting. | \ No newline at end of file +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `question` | *Optional[str]* | :heavy_minus_sign: | Search query rephrased into a question. | | +| `answer` | *Optional[str]* | :heavy_minus_sign: | Answer generated for the given query or the generated question. | | +| `follow_up_prompts` | List[*str*] | :heavy_minus_sign: | List of all follow-up prompts generated for the given query or the generated question. | | +| `followup_actions` | List[[models.FollowupAction](../models/followupaction.md)] | :heavy_minus_sign: | List of follow-up actions generated for the given query or the generated question. | | +| `ranges` | List[[models.TextRange](../models/textrange.md)] | :heavy_minus_sign: | Answer subsections to mark with special formatting (citations, bolding etc) | | +| `status` | [Optional[models.GeneratedQnaStatus]](../models/generatedqnastatus.md) | :heavy_minus_sign: | Status of backend generating the answer | | +| `cursor` | *Optional[str]* | :heavy_minus_sign: | An opaque cursor representing the search request | | +| `tracking_token` | *Optional[str]* | :heavy_minus_sign: | An opaque token that represents this particular result in this particular query. To be used for /feedback reporting. | | \ No newline at end of file diff --git a/docs/models/generatedqnastatus.md b/docs/models/generatedqnastatus.md index 5a8c5499..a7b0cc91 100644 --- a/docs/models/generatedqnastatus.md +++ b/docs/models/generatedqnastatus.md @@ -2,6 +2,16 @@ Status of backend generating the answer +## Example Usage + +```python +from glean.api_client.models import GeneratedQnaStatus + +value = GeneratedQnaStatus.COMPUTING + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/getactionpackauthstatusrequest.md b/docs/models/getactionpackauthstatusrequest.md new file mode 100644 index 00000000..60ccf15d --- /dev/null +++ b/docs/models/getactionpackauthstatusrequest.md @@ -0,0 +1,8 @@ +# GetActionPackAuthStatusRequest + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | +| `action_pack_id` | *str* | :heavy_check_mark: | ID of the action pack to query or authorize. | \ No newline at end of file diff --git a/docs/models/getagentrequest.md b/docs/models/getagentrequest.md index 2b1bcba3..7418c2ce 100644 --- a/docs/models/getagentrequest.md +++ b/docs/models/getagentrequest.md @@ -3,7 +3,8 @@ ## 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. | -| `agent_id` | *str* | :heavy_check_mark: | The ID of the agent. | \ No newline at end of file +| Field | 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. | +| `agent_id` | *str* | :heavy_check_mark: | The ID of the agent. | \ No newline at end of file diff --git a/docs/models/getagentschemasrequest.md b/docs/models/getagentschemasrequest.md index 925f9ef5..110d7172 100644 --- a/docs/models/getagentschemasrequest.md +++ b/docs/models/getagentschemasrequest.md @@ -3,7 +3,8 @@ ## 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. | -| `agent_id` | *str* | :heavy_check_mark: | The ID of the agent. | \ No newline at end of file +| Field | 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. | +| `agent_id` | *str* | :heavy_check_mark: | The ID of the agent. | \ No newline at end of file diff --git a/docs/models/getanswererrorerrortype.md b/docs/models/getanswererrorerrortype.md index d2af7588..3f9be2ec 100644 --- a/docs/models/getanswererrorerrortype.md +++ b/docs/models/getanswererrorerrortype.md @@ -1,5 +1,15 @@ # GetAnswerErrorErrorType +## Example Usage + +```python +from glean.api_client.models import GetAnswerErrorErrorType + +value = GetAnswerErrorErrorType.NO_PERMISSION + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/getanswerrequestrequest.md b/docs/models/getanswerrequestrequest.md new file mode 100644 index 00000000..3502669e --- /dev/null +++ b/docs/models/getanswerrequestrequest.md @@ -0,0 +1,9 @@ +# GetanswerRequestRequest + + +## Fields + +| Field | 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`. | +| `get_answer_request` | [models.GetAnswerRequest](../models/getanswerrequest.md) | :heavy_check_mark: | GetAnswer request | \ No newline at end of file diff --git a/docs/models/getchatapplicationrequestrequest.md b/docs/models/getchatapplicationrequestrequest.md index 6920abdc..79cddc37 100644 --- a/docs/models/getchatapplicationrequestrequest.md +++ b/docs/models/getchatapplicationrequestrequest.md @@ -3,7 +3,8 @@ ## 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. | -| `get_chat_application_request` | [models.GetChatApplicationRequest](../models/getchatapplicationrequest.md) | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | 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. | +| `get_chat_application_request` | [models.GetChatApplicationRequest](../models/getchatapplicationrequest.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/getchatfilerequest.md b/docs/models/getchatfilerequest.md new file mode 100644 index 00000000..c4a020cc --- /dev/null +++ b/docs/models/getchatfilerequest.md @@ -0,0 +1,9 @@ +# GetChatFileRequest + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | +| `file_id` | *str* | :heavy_check_mark: | Identifier of the chat file to download. | +| `preview` | *Optional[bool]* | :heavy_minus_sign: | When true and the file is a PDF, the response is served inline (Content-Disposition: inline) instead of as an attachment.
| \ No newline at end of file diff --git a/docs/models/getchatfilesrequestrequest.md b/docs/models/getchatfilesrequestrequest.md index b9c9dbd2..886c639f 100644 --- a/docs/models/getchatfilesrequestrequest.md +++ b/docs/models/getchatfilesrequestrequest.md @@ -3,7 +3,8 @@ ## 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. | -| `get_chat_files_request` | [models.GetChatFilesRequest](../models/getchatfilesrequest.md) | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | 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. | +| `get_chat_files_request` | [models.GetChatFilesRequest](../models/getchatfilesrequest.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/getchatrequestrequest.md b/docs/models/getchatrequestrequest.md index 95fa7077..e810c575 100644 --- a/docs/models/getchatrequestrequest.md +++ b/docs/models/getchatrequestrequest.md @@ -3,7 +3,8 @@ ## 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. | -| `get_chat_request` | [models.GetChatRequest](../models/getchatrequest.md) | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | 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. | +| `get_chat_request` | [models.GetChatRequest](../models/getchatrequest.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/getcollectionrequestrequest.md b/docs/models/getcollectionrequestrequest.md new file mode 100644 index 00000000..63737249 --- /dev/null +++ b/docs/models/getcollectionrequestrequest.md @@ -0,0 +1,9 @@ +# GetcollectionRequestRequest + + +## Fields + +| Field | 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`. | +| `get_collection_request` | [models.GetCollectionRequest](../models/getcollectionrequest.md) | :heavy_check_mark: | GetCollection request | \ No newline at end of file diff --git a/docs/models/getcollectionresponse.md b/docs/models/getcollectionresponse.md index e146e4fb..e4795b0d 100644 --- a/docs/models/getcollectionresponse.md +++ b/docs/models/getcollectionresponse.md @@ -3,9 +3,9 @@ ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | -| `collection` | [Optional[models.Collection]](../models/collection.md) | :heavy_minus_sign: | N/A | -| `root_collection` | [Optional[models.Collection]](../models/collection.md) | :heavy_minus_sign: | N/A | -| `tracking_token` | *Optional[str]* | :heavy_minus_sign: | An opaque token that represents this particular Collection. To be used for `/feedback` reporting. | -| `error` | [Optional[models.CollectionError]](../models/collectionerror.md) | :heavy_minus_sign: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `collection` | [Optional[models.Collection]](../models/collection.md) | :heavy_minus_sign: | N/A | +| `root_collection` | [Optional[models.Collection]](../models/collection.md) | :heavy_minus_sign: | N/A | +| `error` | [Optional[models.CollectionError]](../models/collectionerror.md) | :heavy_minus_sign: | N/A | +| ~~`tracking_token`~~ | *Optional[str]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: Deprecated on 2026-05-07, removal scheduled for 2027-01-15: Use `collection.trackingToken` instead..

Use `collection.trackingToken` instead. | \ No newline at end of file diff --git a/docs/models/getdatasourcecredentialstatusrequest.md b/docs/models/getdatasourcecredentialstatusrequest.md new file mode 100644 index 00000000..07c45dd2 --- /dev/null +++ b/docs/models/getdatasourcecredentialstatusrequest.md @@ -0,0 +1,8 @@ +# GetDatasourceCredentialStatusRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | +| `datasource_instance_id` | *str* | :heavy_check_mark: | The full datasource instance identifier (e.g. o365sharepoint_abc123) | o365sharepoint_abc123 | \ No newline at end of file diff --git a/docs/models/getdatasourceinstanceconfigurationrequest.md b/docs/models/getdatasourceinstanceconfigurationrequest.md new file mode 100644 index 00000000..949f49d1 --- /dev/null +++ b/docs/models/getdatasourceinstanceconfigurationrequest.md @@ -0,0 +1,9 @@ +# GetDatasourceInstanceConfigurationRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | +| `datasource_id` | *str* | :heavy_check_mark: | The datasource type identifier (e.g. o365sharepoint) | o365sharepoint | +| `instance_id` | *str* | :heavy_check_mark: | The datasource instance identifier | o365sharepoint_abc123 | \ No newline at end of file diff --git a/docs/models/getdocpermissionsrequestrequest.md b/docs/models/getdocpermissionsrequestrequest.md new file mode 100644 index 00000000..3f91457d --- /dev/null +++ b/docs/models/getdocpermissionsrequestrequest.md @@ -0,0 +1,9 @@ +# GetdocpermissionsRequestRequest + + +## Fields + +| Field | 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`. | +| `get_doc_permissions_request` | [models.GetDocPermissionsRequest](../models/getdocpermissionsrequest.md) | :heavy_check_mark: | Document permissions request | \ No newline at end of file diff --git a/docs/models/getdocumentsbyfacetsrequest.md b/docs/models/getdocumentsbyfacetsrequest.md index e234fb97..31e48516 100644 --- a/docs/models/getdocumentsbyfacetsrequest.md +++ b/docs/models/getdocumentsbyfacetsrequest.md @@ -3,8 +3,8 @@ ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | -| `datasources_filter` | List[*str*] | :heavy_minus_sign: | Filter results to one or more datasources (e.g. gmail, slack). All results are returned if missing. | -| `filter_sets` | List[[models.FacetFilterSet](../models/facetfilterset.md)] | :heavy_check_mark: | A list of facet filter sets that will be OR'ed together. An AND is assumed between different filters in each set. | -| `cursor` | *Optional[str]* | :heavy_minus_sign: | Pagination cursor. A previously received opaque token representing the position in the overall results at which to start. | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | +| `datasources_filter` | List[*str*] | :heavy_minus_sign: | Filter results to one or more datasources (e.g. gmail, slack). All results are returned if missing. | | +| `filter_sets` | List[[models.FacetFilterSet](../models/facetfilterset.md)] | :heavy_check_mark: | A list of facet filter sets that will be OR'ed together. An AND is assumed between different filters in each set. | | +| `cursor` | *Optional[str]* | :heavy_minus_sign: | Pagination cursor. A previously received opaque token representing the position in the overall results at which to start. | | \ No newline at end of file diff --git a/docs/models/getdocumentsbyfacetsrequestrequest.md b/docs/models/getdocumentsbyfacetsrequestrequest.md new file mode 100644 index 00000000..6fb44cfc --- /dev/null +++ b/docs/models/getdocumentsbyfacetsrequestrequest.md @@ -0,0 +1,9 @@ +# GetdocumentsbyfacetsRequestRequest + + +## Fields + +| Field | 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`. | +| `get_documents_by_facets_request` | [Optional[models.GetDocumentsByFacetsRequest]](../models/getdocumentsbyfacetsrequest.md) | :heavy_minus_sign: | Information about facet conditions for documents to be retrieved. | \ No newline at end of file diff --git a/docs/models/getdocumentsbyfacetsresponse.md b/docs/models/getdocumentsbyfacetsresponse.md index 84a6fc87..b7f02a4e 100644 --- a/docs/models/getdocumentsbyfacetsresponse.md +++ b/docs/models/getdocumentsbyfacetsresponse.md @@ -3,8 +3,8 @@ ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | -| `documents` | List[[models.Document](../models/document.md)] | :heavy_minus_sign: | The document details, ordered by score. | -| `has_more_results` | *Optional[bool]* | :heavy_minus_sign: | Whether more results are available. Use cursor to retrieve them. | -| `cursor` | *Optional[str]* | :heavy_minus_sign: | Cursor that indicates the start of the next page of results. To be passed in "more" requests for this query. | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | +| `documents` | List[[models.Document](../models/document.md)] | :heavy_minus_sign: | The document details, ordered by score. | | +| `has_more_results` | *Optional[bool]* | :heavy_minus_sign: | Whether more results are available. Use cursor to retrieve them. | | +| `cursor` | *Optional[str]* | :heavy_minus_sign: | Cursor that indicates the start of the next page of results. To be passed in "more" requests for this query. | | \ No newline at end of file diff --git a/docs/models/getdocumentsrequestincludefield.md b/docs/models/getdocumentsrequestincludefield.md index 1db38b74..6d537deb 100644 --- a/docs/models/getdocumentsrequestincludefield.md +++ b/docs/models/getdocumentsrequestincludefield.md @@ -1,5 +1,13 @@ # GetDocumentsRequestIncludeField +## Example Usage + +```python +from glean.api_client.models import GetDocumentsRequestIncludeField + +value = GetDocumentsRequestIncludeField.LAST_VIEWED_AT +``` + ## Values diff --git a/docs/models/getdocumentsrequestrequest.md b/docs/models/getdocumentsrequestrequest.md new file mode 100644 index 00000000..d1c6b7a4 --- /dev/null +++ b/docs/models/getdocumentsrequestrequest.md @@ -0,0 +1,9 @@ +# GetdocumentsRequestRequest + + +## Fields + +| Field | 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`. | +| `get_documents_request` | [Optional[models.GetDocumentsRequest]](../models/getdocumentsrequest.md) | :heavy_minus_sign: | Information about documents requested. | \ No newline at end of file diff --git a/docs/models/getpersonphotorequest.md b/docs/models/getpersonphotorequest.md new file mode 100644 index 00000000..a81c0243 --- /dev/null +++ b/docs/models/getpersonphotorequest.md @@ -0,0 +1,9 @@ +# GetPersonPhotoRequest + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `person_id` | *str* | :heavy_check_mark: | The obfuscated ID of the person whose photo to retrieve. | +| `ds` | *Optional[str]* | :heavy_minus_sign: | Optional datasource override for crawled photos (e.g. AZURE, GDRIVE, OKTA). When omitted, the datasource is derived from the person's stored photo URL or the deployment's primary person datasource.
| \ No newline at end of file diff --git a/docs/models/getpersonphotoresponse.md b/docs/models/getpersonphotoresponse.md new file mode 100644 index 00000000..a8fca12e --- /dev/null +++ b/docs/models/getpersonphotoresponse.md @@ -0,0 +1,9 @@ +# GetPersonPhotoResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | +| `result` | [models.GetPersonPhotoResponseResult](../models/getpersonphotoresponseresult.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/getpersonphotoresponseresult.md b/docs/models/getpersonphotoresponseresult.md new file mode 100644 index 00000000..39cfd737 --- /dev/null +++ b/docs/models/getpersonphotoresponseresult.md @@ -0,0 +1,17 @@ +# GetPersonPhotoResponseResult + + +## Supported Types + +### `httpx.Response` + +```python +value: httpx.Response = /* values here */ +``` + +### `httpx.Response` + +```python +value: httpx.Response = /* values here */ +``` + diff --git a/docs/models/getpinrequestrequest.md b/docs/models/getpinrequestrequest.md new file mode 100644 index 00000000..ac7a1f22 --- /dev/null +++ b/docs/models/getpinrequestrequest.md @@ -0,0 +1,9 @@ +# GetpinRequestRequest + + +## Fields + +| Field | 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`. | +| `get_pin_request` | [models.GetPinRequest](../models/getpinrequest.md) | :heavy_check_mark: | Get pin request | \ No newline at end of file diff --git a/docs/models/getrestapiindexcustommetadataschemagroupnamerequest.md b/docs/models/getrestapiindexcustommetadataschemagroupnamerequest.md new file mode 100644 index 00000000..8ad9325e --- /dev/null +++ b/docs/models/getrestapiindexcustommetadataschemagroupnamerequest.md @@ -0,0 +1,8 @@ +# GetRestAPIIndexCustomMetadataSchemaGroupNameRequest + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------- | --------------------------------- | --------------------------------- | --------------------------------- | +| `group_name` | *str* | :heavy_check_mark: | Name of the metadata group schema | \ No newline at end of file diff --git a/docs/models/getshortcutrequest.md b/docs/models/getshortcutrequest.md index af868a75..9da57465 100644 --- a/docs/models/getshortcutrequest.md +++ b/docs/models/getshortcutrequest.md @@ -1,8 +1,17 @@ # GetShortcutRequest -## Fields +## Supported Types + +### `models.UserGeneratedContentID` + +```python +value: models.UserGeneratedContentID = /* values here */ +``` + +### `models.GetShortcutRequest1` + +```python +value: models.GetShortcutRequest1 = /* values here */ +``` -| Field | Type | Required | Description | -| --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | -| `alias` | *str* | :heavy_check_mark: | The alias for the shortcut, including any arguments for variable shortcuts. | \ No newline at end of file diff --git a/docs/models/getshortcutrequest1.md b/docs/models/getshortcutrequest1.md new file mode 100644 index 00000000..e8d23716 --- /dev/null +++ b/docs/models/getshortcutrequest1.md @@ -0,0 +1,8 @@ +# GetShortcutRequest1 + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | +| `alias` | *str* | :heavy_check_mark: | The alias for the shortcut, including any arguments for variable shortcuts. | \ No newline at end of file diff --git a/docs/models/getshortcutrequestrequest.md b/docs/models/getshortcutrequestrequest.md new file mode 100644 index 00000000..79056b95 --- /dev/null +++ b/docs/models/getshortcutrequestrequest.md @@ -0,0 +1,9 @@ +# GetshortcutRequestRequest + + +## Fields + +| Field | 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`. | +| `get_shortcut_request` | [models.GetShortcutRequest](../models/getshortcutrequest.md) | :heavy_check_mark: | GetShortcut request | \ No newline at end of file diff --git a/docs/models/getshortcutrequestunion.md b/docs/models/getshortcutrequestunion.md deleted file mode 100644 index 43835d51..00000000 --- a/docs/models/getshortcutrequestunion.md +++ /dev/null @@ -1,17 +0,0 @@ -# GetShortcutRequestUnion - - -## Supported Types - -### `models.UserGeneratedContentID` - -```python -value: models.UserGeneratedContentID = /* values here */ -``` - -### `models.GetShortcutRequest` - -```python -value: models.GetShortcutRequest = /* values here */ -``` - diff --git a/docs/models/gettoolserverauthstatusrequest.md b/docs/models/gettoolserverauthstatusrequest.md new file mode 100644 index 00000000..a0ca5b75 --- /dev/null +++ b/docs/models/gettoolserverauthstatusrequest.md @@ -0,0 +1,8 @@ +# GetToolServerAuthStatusRequest + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------- | ------------------------------------- | ------------------------------------- | ------------------------------------- | +| `server_id` | *str* | :heavy_check_mark: | Unique identifier of the tool server. | \ No newline at end of file diff --git a/docs/models/gettoolservertoolsrequest.md b/docs/models/gettoolservertoolsrequest.md new file mode 100644 index 00000000..2de10562 --- /dev/null +++ b/docs/models/gettoolservertoolsrequest.md @@ -0,0 +1,9 @@ +# GetToolServerToolsRequest + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `server_id` | *str* | :heavy_check_mark: | Unique identifier of the tool server. | +| `tool_names` | List[*str*] | :heavy_check_mark: | Tool names to look up on this server. Maximum 100. | \ No newline at end of file diff --git a/docs/models/gleandataerror.md b/docs/models/gleandataerror.md index f1df02d4..7c4c0d90 100644 --- a/docs/models/gleandataerror.md +++ b/docs/models/gleandataerror.md @@ -3,9 +3,10 @@ ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -| `bad_gmail_token` | *Optional[bool]* | :heavy_minus_sign: | Indicates the gmail results could not be fetched due to bad token. | -| `bad_outlook_token` | *Optional[bool]* | :heavy_minus_sign: | Indicates the outlook results could not be fetched due to bad token. | -| `invalid_operators` | List[[models.InvalidOperatorValueError](../models/invalidoperatorvalueerror.md)] | :heavy_minus_sign: | Indicates results could not be fetched due to invalid operators in the query. | -| `error_messages` | List[[models.ErrorMessage](../models/errormessage.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | +| `bad_gmail_token` | *Optional[bool]* | :heavy_minus_sign: | Indicates the gmail results could not be fetched due to bad token. | +| `bad_outlook_token` | *Optional[bool]* | :heavy_minus_sign: | Indicates the outlook results could not be fetched due to bad token. | +| `invalid_operators` | List[[models.InvalidOperatorValueError](../models/invalidoperatorvalueerror.md)] | :heavy_minus_sign: | Indicates results could not be fetched due to invalid operators in the query. | +| `error_messages` | List[[models.ErrorMessage](../models/errormessage.md)] | :heavy_minus_sign: | N/A | +| `federated_search_rate_limit_error` | *Optional[bool]* | :heavy_minus_sign: | Indicates the federated search results could not be fetched due to rate limiting. | \ No newline at end of file diff --git a/docs/models/grantscope.md b/docs/models/grantscope.md new file mode 100644 index 00000000..372a2faf --- /dev/null +++ b/docs/models/grantscope.md @@ -0,0 +1,23 @@ +# GrantScope + +Scope of the approval grant. Only applicable when isGranted is true and requestType is EXECUTION. + + +## Example Usage + +```python +from glean.api_client.models import GrantScope + +value = GrantScope.CURRENT_REQUEST + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + + +## Values + +| Name | Value | +| ----------------- | ----------------- | +| `CURRENT_REQUEST` | CURRENT_REQUEST | +| `CURRENT_SESSION` | CURRENT_SESSION | +| `ALWAYS` | ALWAYS | \ No newline at end of file diff --git a/docs/models/granttype.md b/docs/models/granttype.md index 503fb8a6..6e2e1b8f 100644 --- a/docs/models/granttype.md +++ b/docs/models/granttype.md @@ -2,6 +2,16 @@ The type of grant type being used. +## Example Usage + +```python +from glean.api_client.models import GrantType + +value = GrantType.AUTH_CODE + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/grouptype.md b/docs/models/grouptype.md index b1d6ca4f..28950611 100644 --- a/docs/models/grouptype.md +++ b/docs/models/grouptype.md @@ -2,16 +2,27 @@ The type of user group +## Example Usage + +```python +from glean.api_client.models import GroupType + +value = GroupType.DEPARTMENT + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values -| Name | Value | -| ---------------- | ---------------- | -| `DEPARTMENT` | DEPARTMENT | -| `ALL` | ALL | -| `TEAM` | TEAM | -| `JOB_TITLE` | JOB_TITLE | -| `ROLE_TYPE` | ROLE_TYPE | -| `LOCATION` | LOCATION | -| `REGION` | REGION | -| `EXTERNAL_GROUP` | EXTERNAL_GROUP | \ No newline at end of file +| Name | Value | +| --------------------- | --------------------- | +| `DEPARTMENT` | DEPARTMENT | +| `ALL` | ALL | +| `TEAM` | TEAM | +| `JOB_TITLE` | JOB_TITLE | +| `ROLE_TYPE` | ROLE_TYPE | +| `LOCATION` | LOCATION | +| `REGION` | REGION | +| `EXTERNAL_GROUP` | EXTERNAL_GROUP | +| `COLLECTION_AUDIENCE` | COLLECTION_AUDIENCE | \ No newline at end of file diff --git a/docs/models/hidebuiltinfacet.md b/docs/models/hidebuiltinfacet.md index 35925329..50276f1d 100644 --- a/docs/models/hidebuiltinfacet.md +++ b/docs/models/hidebuiltinfacet.md @@ -1,5 +1,15 @@ # HideBuiltInFacet +## Example Usage + +```python +from glean.api_client.models import HideBuiltInFacet + +value = HideBuiltInFacet.TYPE + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/icontype.md b/docs/models/icontype.md index 611f3f3f..f0abae40 100644 --- a/docs/models/icontype.md +++ b/docs/models/icontype.md @@ -1,5 +1,15 @@ # IconType +## Example Usage + +```python +from glean.api_client.models import IconType + +value = IconType.COLLECTION + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/idtype.md b/docs/models/idtype.md index d1f0b1f8..4f71310b 100644 --- a/docs/models/idtype.md +++ b/docs/models/idtype.md @@ -2,6 +2,14 @@ Type of the id in the incoming request. +## Example Usage + +```python +from glean.api_client.models import IDType + +value = IDType.CHANNEL_NAME +``` + ## Values diff --git a/docs/models/importagentrequest.md b/docs/models/importagentrequest.md new file mode 100644 index 00000000..d9f9e2a4 --- /dev/null +++ b/docs/models/importagentrequest.md @@ -0,0 +1,13 @@ +# ImportAgentRequest + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `bundle` | [models.Bundle](../models/bundle.md) | :heavy_check_mark: | Zip of the agent folder (spec.yaml, instructions.md, skills/, subagents/) with symlinks dereferenced.
| +| `git_commit_sha` | *Optional[str]* | :heavy_minus_sign: | Optional Git commit SHA to associate with this import. | +| `git_author_id` | *Optional[str]* | :heavy_minus_sign: | Optional VCS commit author ID to associate with this import. | +| `commit_message` | *Optional[str]* | :heavy_minus_sign: | Optional commit message for the imported version. | +| `sync_mode` | [Optional[models.ImportAgentSyncMode]](../models/importagentsyncmode.md) | :heavy_minus_sign: | Whether the imported version is staged (saved without updating the live version) or published directly to the live version.
| +| `is_draft` | *Optional[bool]* | :heavy_minus_sign: | When true, validates and stores a draft preview without publishing (used for PR preview links). Takes precedence over `syncMode`: when `isDraft` is true, `syncMode` is ignored.
| \ No newline at end of file diff --git a/docs/models/importagentrequestrequest.md b/docs/models/importagentrequestrequest.md new file mode 100644 index 00000000..1eae6787 --- /dev/null +++ b/docs/models/importagentrequestrequest.md @@ -0,0 +1,11 @@ +# ImportAgentRequestRequest + + +## Fields + +| Field | 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. | +| `agent_id` | *str* | :heavy_check_mark: | The ID of the agent to create or update. | +| `import_agent_request` | [models.ImportAgentRequest](../models/importagentrequest.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/importagentresponse.md b/docs/models/importagentresponse.md new file mode 100644 index 00000000..5b5e9322 --- /dev/null +++ b/docs/models/importagentresponse.md @@ -0,0 +1,9 @@ +# ImportAgentResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | +| `workflow_result` | [Optional[models.WorkflowResult]](../models/workflowresult.md) | :heavy_minus_sign: | N/A | +| `status` | [Optional[models.ImportAgentStatus]](../models/importagentstatus.md) | :heavy_minus_sign: | Outcome of the import for the target agent. | \ No newline at end of file diff --git a/docs/models/importagentstatus.md b/docs/models/importagentstatus.md new file mode 100644 index 00000000..2b83dfea --- /dev/null +++ b/docs/models/importagentstatus.md @@ -0,0 +1,22 @@ +# ImportAgentStatus + +Outcome of the import for the target agent. + +## Example Usage + +```python +from glean.api_client.models import ImportAgentStatus + +value = ImportAgentStatus.CREATED + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + + +## Values + +| Name | Value | +| --------------- | --------------- | +| `CREATED` | CREATED | +| `UPDATED` | UPDATED | +| `DRAFT_PREVIEW` | DRAFT_PREVIEW | \ No newline at end of file diff --git a/docs/models/importagentsyncmode.md b/docs/models/importagentsyncmode.md new file mode 100644 index 00000000..c0af50c5 --- /dev/null +++ b/docs/models/importagentsyncmode.md @@ -0,0 +1,20 @@ +# ImportAgentSyncMode + +Whether the imported version is staged (saved without updating the live version) or published directly to the live version. + + +## Example Usage + +```python +from glean.api_client.models import ImportAgentSyncMode + +value = ImportAgentSyncMode.STAGED +``` + + +## Values + +| Name | Value | +| ----------- | ----------- | +| `STAGED` | STAGED | +| `PUBLISHED` | PUBLISHED | \ No newline at end of file diff --git a/docs/models/includetype.md b/docs/models/includetype.md index a01749ba..bd1e080c 100644 --- a/docs/models/includetype.md +++ b/docs/models/includetype.md @@ -1,5 +1,13 @@ # IncludeType +## Example Usage + +```python +from glean.api_client.models import IncludeType + +value = IncludeType.PEOPLE_WITHOUT_MANAGER +``` + ## Values diff --git a/docs/models/input.md b/docs/models/input.md new file mode 100644 index 00000000..c54bec05 --- /dev/null +++ b/docs/models/input.md @@ -0,0 +1,20 @@ +# Input + +Either a plain string (single user turn) or a chronological array of `USER`/`ASSISTANT` messages. The final array message must be `USER`. + + + +## Supported Types + +### `str` + +```python +value: str = /* values here */ +``` + +### `List[models.PlatformChatInputMessage]` + +```python +value: List[models.PlatformChatInputMessage] = /* values here */ +``` + diff --git a/docs/models/inputoptions.md b/docs/models/inputoptions.md index 6d068496..b45ddba5 100644 --- a/docs/models/inputoptions.md +++ b/docs/models/inputoptions.md @@ -5,11 +5,12 @@ Controls which data-sources and what time-range to include in scans. ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| ~~`url_greenlist`~~ | List[*str*] | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

list of url regex matching documents excluded from report | -| `datasources_type` | [Optional[models.DatasourcesType]](../models/datasourcestype.md) | :heavy_minus_sign: | The types of datasource for which to run the report/policy. | -| ~~`datasources`~~ | List[*str*] | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

List of datasources to consider for report. DEPRECATED - use datasourceInstances instead. | -| `datasource_instances` | List[*str*] | :heavy_minus_sign: | List of datasource instances to consider for report/policy. | -| `time_period_type` | [Optional[models.InputOptionsTimePeriodType]](../models/inputoptionstimeperiodtype.md) | :heavy_minus_sign: | Type of time period for which to run the report/policy. PAST_DAY is deprecated. | -| `custom_time_range` | [Optional[models.TimeRange]](../models/timerange.md) | :heavy_minus_sign: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| ~~`url_greenlist`~~ | List[*str*] | :heavy_minus_sign: | : warning: ** DEPRECATED **: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Field is deprecated.

list of url regex matching documents excluded from report | +| `datasources_type` | [Optional[models.DatasourcesType]](../models/datasourcestype.md) | :heavy_minus_sign: | The types of datasource for which to run the report/policy. | +| ~~`datasources`~~ | List[*str*] | :heavy_minus_sign: | : warning: ** DEPRECATED **: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use datasourceInstances instead.

List of datasources to consider for report. DEPRECATED - use datasourceInstances instead. | +| `datasource_instances` | List[*str*] | :heavy_minus_sign: | List of datasource instances to consider for report/policy. | +| `time_period_type` | [Optional[models.InputOptionsTimePeriodType]](../models/inputoptionstimeperiodtype.md) | :heavy_minus_sign: | Type of time period for which to run the report/policy. PAST_DAY is deprecated. | +| `custom_time_range` | [Optional[models.TimeRange]](../models/timerange.md) | :heavy_minus_sign: | N/A | +| `subset_doc_ids_to_scan` | List[*str*] | :heavy_minus_sign: | Subset of document IDs to scan. If empty, all documents matching other scope criteria will be scanned. | \ No newline at end of file diff --git a/docs/models/inputoptionstimeperiodtype.md b/docs/models/inputoptionstimeperiodtype.md index c3ec83a8..26843791 100644 --- a/docs/models/inputoptionstimeperiodtype.md +++ b/docs/models/inputoptionstimeperiodtype.md @@ -2,6 +2,16 @@ Type of time period for which to run the report/policy. PAST_DAY is deprecated. +## Example Usage + +```python +from glean.api_client.models import InputOptionsTimePeriodType + +value = InputOptionsTimePeriodType.ALL_TIME + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/insightsaiapprequestoptions.md b/docs/models/insightsaiapprequestoptions.md deleted file mode 100644 index 596378b6..00000000 --- a/docs/models/insightsaiapprequestoptions.md +++ /dev/null @@ -1,8 +0,0 @@ -# InsightsAiAppRequestOptions - - -## Fields - -| Field | Type | Required | Description | -| --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | -| `ai_app_ids` | List[*str*] | :heavy_minus_sign: | IDs of the AI Apps for which Insights should be returned. An empty array signifies all. | \ No newline at end of file diff --git a/docs/models/insightsassistantrequest.md b/docs/models/insightsassistantrequest.md index 83e8e5b1..5bca0572 100644 --- a/docs/models/insightsassistantrequest.md +++ b/docs/models/insightsassistantrequest.md @@ -3,7 +3,8 @@ ## Fields -| Field | Type | Required | Description | -| ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | -| `departments` | List[*str*] | :heavy_minus_sign: | Departments for which Insights are requested. | -| `day_range` | [Optional[models.Period]](../models/period.md) | :heavy_minus_sign: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| `departments` | List[*str*] | :heavy_minus_sign: | Departments for which Insights are requested. | +| `manager_emails` | List[*str*] | :heavy_minus_sign: | Manager emails whose teams should be filtered for. Empty array means no filtering. | +| `day_range` | [Optional[models.Period]](../models/period.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/insightschatsummary.md b/docs/models/insightschatsummary.md index ecbd7385..21fc84d4 100644 --- a/docs/models/insightschatsummary.md +++ b/docs/models/insightschatsummary.md @@ -5,7 +5,7 @@ | Field | Type | Required | Description | | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | -| `monthly_active_users` | *Optional[int]* | :heavy_minus_sign: | Number of current Monthly Active Users, in the specified departments. | -| `weekly_active_users` | *Optional[int]* | :heavy_minus_sign: | Number of current Weekly Active Users, in the specified departments. | +| `monthly_active_users` | *Optional[int]* | :heavy_minus_sign: | Number of current Monthly Active Users. | +| `weekly_active_users` | *Optional[int]* | :heavy_minus_sign: | Number of current Weekly Active Users. | | `num_chats` | *Optional[int]* | :heavy_minus_sign: | Total number of chats by users over the specified time period. | | `num_chat_users` | *Optional[int]* | :heavy_minus_sign: | Total number of distinct users who used Chat over the specified time period. | \ No newline at end of file diff --git a/docs/models/insightsoverviewrequest.md b/docs/models/insightsoverviewrequest.md index 90e12f31..b6fc7e69 100644 --- a/docs/models/insightsoverviewrequest.md +++ b/docs/models/insightsoverviewrequest.md @@ -3,7 +3,8 @@ ## Fields -| Field | Type | Required | Description | -| ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | -| `departments` | List[*str*] | :heavy_minus_sign: | Departments for which Insights are requested. | -| `day_range` | [Optional[models.Period]](../models/period.md) | :heavy_minus_sign: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| `departments` | List[*str*] | :heavy_minus_sign: | Departments for which Insights are requested. | +| `manager_emails` | List[*str*] | :heavy_minus_sign: | Manager emails whose teams should be filtered for. Empty array means no filtering. | +| `day_range` | [Optional[models.Period]](../models/period.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/insightsoverviewresponse.md b/docs/models/insightsoverviewresponse.md index 76c9c9a8..56bb2b24 100644 --- a/docs/models/insightsoverviewresponse.md +++ b/docs/models/insightsoverviewresponse.md @@ -3,34 +3,42 @@ ## Fields -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `monthly_active_users` | *Optional[int]* | :heavy_minus_sign: | Number of current Monthly Active Users, in the specified departments. | -| `weekly_active_users` | *Optional[int]* | :heavy_minus_sign: | Number of current Weekly Active Users, in the specified departments. | -| `departments` | List[*str*] | :heavy_minus_sign: | Department name(s). | -| `employee_count` | *Optional[int]* | :heavy_minus_sign: | Number of current employees in the specified departments, according to the Org Chart. | -| `total_signups` | *Optional[int]* | :heavy_minus_sign: | Number of current signed up employees in the specified departments, according to the Org Chart. | -| `search_summary` | [Optional[models.InsightsSearchSummary]](../models/insightssearchsummary.md) | :heavy_minus_sign: | N/A | -| `chat_summary` | [Optional[models.InsightsChatSummary]](../models/insightschatsummary.md) | :heavy_minus_sign: | N/A | -| `extension_summary` | [Optional[models.CurrentActiveUsers]](../models/currentactiveusers.md) | :heavy_minus_sign: | N/A | -| `ugc_summary` | [Optional[models.CurrentActiveUsers]](../models/currentactiveusers.md) | :heavy_minus_sign: | N/A | -| `last_updated_ts` | *Optional[int]* | :heavy_minus_sign: | Unix timestamp of the last update for the insights data in the response. | -| `search_session_satisfaction` | *Optional[float]* | :heavy_minus_sign: | Search session satisfaction rate, over the specified time period in the specified departments. | -| `monthly_active_user_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | -| `weekly_active_user_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | -| `daily_active_user_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | -| `search_monthly_active_user_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | -| `search_weekly_active_user_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | -| `search_daily_active_user_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | -| `assistant_monthly_active_user_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | -| `assistant_weekly_active_user_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | -| `assistant_daily_active_user_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | -| `agents_monthly_active_user_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | -| `agents_weekly_active_user_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | -| `agents_daily_active_user_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | -| `searches_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | -| `assistant_interactions_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | -| `agent_runs_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | -| `search_datasource_counts` | Dict[str, *int*] | :heavy_minus_sign: | Counts of search result clicks, by datasource, over the specified time period in the specified departments. | -| `chat_datasource_counts` | Dict[str, *int*] | :heavy_minus_sign: | Counts of cited documents in chat, by datasource, over the specified time period in the specified departments. | -| `per_user_insights` | List[[models.PerUserInsight](../models/peruserinsight.md)] | :heavy_minus_sign: | Per-user insights, over the specified time period in the specified departments. All current users in the organization who have signed into Glean at least once are included. | \ No newline at end of file +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `monthly_active_users` | *Optional[int]* | :heavy_minus_sign: | Number of current Monthly Active Users. | +| `weekly_active_users` | *Optional[int]* | :heavy_minus_sign: | Number of current Weekly Active Users. | +| `departments` | List[*str*] | :heavy_minus_sign: | Department name(s). | +| `employee_count` | *Optional[int]* | :heavy_minus_sign: | Number of current employees in the specified departments, according to the Org Chart. | +| `total_signups` | *Optional[int]* | :heavy_minus_sign: | Number of current signed up employees in the specified departments, according to the Org Chart. | +| `search_summary` | [Optional[models.InsightsSearchSummary]](../models/insightssearchsummary.md) | :heavy_minus_sign: | N/A | +| `chat_summary` | [Optional[models.InsightsChatSummary]](../models/insightschatsummary.md) | :heavy_minus_sign: | N/A | +| `search_active_users` | [Optional[models.CurrentActiveUsers]](../models/currentactiveusers.md) | :heavy_minus_sign: | N/A | +| `assistant_active_users` | [Optional[models.CurrentActiveUsers]](../models/currentactiveusers.md) | :heavy_minus_sign: | N/A | +| `agents_active_users` | [Optional[models.CurrentActiveUsers]](../models/currentactiveusers.md) | :heavy_minus_sign: | N/A | +| `mcp_active_users` | [Optional[models.CurrentActiveUsers]](../models/currentactiveusers.md) | :heavy_minus_sign: | N/A | +| `extension_summary` | [Optional[models.CurrentActiveUsers]](../models/currentactiveusers.md) | :heavy_minus_sign: | N/A | +| `ugc_summary` | [Optional[models.CurrentActiveUsers]](../models/currentactiveusers.md) | :heavy_minus_sign: | N/A | +| `last_updated_ts` | *Optional[int]* | :heavy_minus_sign: | Unix timestamp of the last update for the insights data in the response. | +| ~~`search_session_satisfaction`~~ | *Optional[float]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: Deprecated on 2026-05-13, removal scheduled for 2027-01-15: This property is no longer supported. Please contact Support for alternatives..

Search session satisfaction rate, over the specified time period in the specified departments. | +| `monthly_active_user_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | +| `weekly_active_user_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | +| `daily_active_user_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | +| `search_monthly_active_user_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | +| `search_weekly_active_user_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | +| `search_daily_active_user_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | +| `assistant_monthly_active_user_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | +| `assistant_weekly_active_user_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | +| `assistant_daily_active_user_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | +| `agents_monthly_active_user_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | +| `agents_weekly_active_user_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | +| `agents_daily_active_user_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | +| `mcp_monthly_active_user_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | +| `mcp_weekly_active_user_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | +| `mcp_daily_active_user_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | +| `searches_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | +| `assistant_interactions_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | +| `agent_runs_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | +| `mcp_calls_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | +| `search_datasource_counts` | Dict[str, *int*] | :heavy_minus_sign: | Counts of search result clicks, by datasource, over the specified time period in the specified departments. | +| `chat_datasource_counts` | Dict[str, *int*] | :heavy_minus_sign: | Counts of cited documents in chat, by datasource, over the specified time period in the specified departments. | +| `per_user_insights` | List[[models.PerUserInsight](../models/peruserinsight.md)] | :heavy_minus_sign: | Per-user insights, over the specified time period in the specified departments. All current users in the organization who have signed into Glean at least once are included. | \ No newline at end of file diff --git a/docs/models/insightsrequest.md b/docs/models/insightsrequest.md index b9c2ea45..9bb517e8 100644 --- a/docs/models/insightsrequest.md +++ b/docs/models/insightsrequest.md @@ -3,15 +3,11 @@ ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `overview_request` | [Optional[models.InsightsOverviewRequest]](../models/insightsoverviewrequest.md) | :heavy_minus_sign: | N/A | -| `assistant_request` | [Optional[models.InsightsAssistantRequest]](../models/insightsassistantrequest.md) | :heavy_minus_sign: | N/A | -| `agents_request` | [Optional[models.AgentsInsightsV2Request]](../models/agentsinsightsv2request.md) | :heavy_minus_sign: | N/A | -| `disable_per_user_insights` | *Optional[bool]* | :heavy_minus_sign: | If true, suppresses the generation of per-user Insights in the response. Default is false. | -| ~~`categories`~~ | List[[models.InsightsRequestCategory](../models/insightsrequestcategory.md)] | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

Categories of data requested. Request can include single or multiple types. | -| ~~`departments`~~ | List[*str*] | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

Departments that the data is requested for. If this is empty, corresponds to whole company. | -| `day_range` | [Optional[models.Period]](../models/period.md) | :heavy_minus_sign: | N/A | -| `ai_app_request_options` | [Optional[models.InsightsAiAppRequestOptions]](../models/insightsaiapprequestoptions.md) | :heavy_minus_sign: | N/A | -| `agents_request_options` | [Optional[models.InsightsAgentsRequestOptions]](../models/insightsagentsrequestoptions.md) | :heavy_minus_sign: | N/A | -| ~~`assistant_activity_types`~~ | List[[models.AssistantActivityType](../models/assistantactivitytype.md)] | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

Types of activity that should count in the definition of an Assistant Active User. Affects only insights for AI category. | \ No newline at end of file +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | +| `overview_request` | [Optional[models.InsightsOverviewRequest]](../models/insightsoverviewrequest.md) | :heavy_minus_sign: | N/A | +| `assistant_request` | [Optional[models.InsightsAssistantRequest]](../models/insightsassistantrequest.md) | :heavy_minus_sign: | N/A | +| `agents_request` | [Optional[models.AgentsInsightsV2Request]](../models/agentsinsightsv2request.md) | :heavy_minus_sign: | N/A | +| `mcp_request` | [Optional[models.McpInsightsRequest]](../models/mcpinsightsrequest.md) | :heavy_minus_sign: | N/A | +| `mcp_breakdown_request` | [Optional[models.McpBreakdownInsightsRequest]](../models/mcpbreakdowninsightsrequest.md) | :heavy_minus_sign: | N/A | +| `disable_per_user_insights` | *Optional[bool]* | :heavy_minus_sign: | If true, suppresses the generation of per-user Insights in the response. Default is false. | \ No newline at end of file diff --git a/docs/models/insightsrequestcategory.md b/docs/models/insightsrequestcategory.md deleted file mode 100644 index f5831a04..00000000 --- a/docs/models/insightsrequestcategory.md +++ /dev/null @@ -1,21 +0,0 @@ -# InsightsRequestCategory - - -## Values - -| Name | Value | -| ---------------------------- | ---------------------------- | -| `AGENTS` | AGENTS | -| `AGENT_USERS` | AGENT_USERS | -| `TOP_AGENTS` | TOP_AGENTS | -| `AGENTS_USAGE_BY_DEPARTMENT` | AGENTS_USAGE_BY_DEPARTMENT | -| `AI` | AI | -| `AI_APPS` | AI_APPS | -| `ANNOUNCEMENTS` | ANNOUNCEMENTS | -| `ANSWERS` | ANSWERS | -| `COLLECTIONS` | COLLECTIONS | -| `CONTENT` | CONTENT | -| `GLEAN_ASSIST` | GLEAN_ASSIST | -| `QUERIES` | QUERIES | -| `SHORTCUTS` | SHORTCUTS | -| `USERS` | USERS | \ No newline at end of file diff --git a/docs/models/insightsrequestrequest.md b/docs/models/insightsrequestrequest.md new file mode 100644 index 00000000..42aaa5da --- /dev/null +++ b/docs/models/insightsrequestrequest.md @@ -0,0 +1,9 @@ +# InsightsRequestRequest + + +## Fields + +| Field | 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`. | +| `insights_request` | [models.InsightsRequest](../models/insightsrequest.md) | :heavy_check_mark: | Includes request parameters for insights requests. | \ No newline at end of file diff --git a/docs/models/insightsresponse.md b/docs/models/insightsresponse.md index dcb429dc..7e11a8a1 100644 --- a/docs/models/insightsresponse.md +++ b/docs/models/insightsresponse.md @@ -3,21 +3,11 @@ ## Fields -| Field | Type | Required | Description | -| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| ~~`timeseries`~~ | List[[models.LabeledCountInfo](../models/labeledcountinfo.md)] | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

List of timeseries to make charts (if applicable). | -| `users` | [Optional[models.UserInsightsResponse]](../models/userinsightsresponse.md) | :heavy_minus_sign: | N/A | -| `content` | [Optional[models.ContentInsightsResponse]](../models/contentinsightsresponse.md) | :heavy_minus_sign: | N/A | -| `queries` | [Optional[models.QueryInsightsResponse]](../models/queryinsightsresponse.md) | :heavy_minus_sign: | N/A | -| `collections` | [Optional[models.ContentInsightsResponse]](../models/contentinsightsresponse.md) | :heavy_minus_sign: | N/A | -| `collections_v2` | [Optional[models.ContentInsightsResponse]](../models/contentinsightsresponse.md) | :heavy_minus_sign: | N/A | -| `shortcuts` | [Optional[models.ShortcutInsightsResponse]](../models/shortcutinsightsresponse.md) | :heavy_minus_sign: | N/A | -| `announcements` | [Optional[models.ContentInsightsResponse]](../models/contentinsightsresponse.md) | :heavy_minus_sign: | N/A | -| `answers` | [Optional[models.ContentInsightsResponse]](../models/contentinsightsresponse.md) | :heavy_minus_sign: | N/A | -| `ai` | [Optional[models.AiInsightsResponse]](../models/aiinsightsresponse.md) | :heavy_minus_sign: | N/A | -| `ai_apps` | [Optional[models.AiAppsInsightsResponse]](../models/aiappsinsightsresponse.md) | :heavy_minus_sign: | N/A | -| `glean_assist` | [Optional[models.GleanAssistInsightsResponse]](../models/gleanassistinsightsresponse.md) | :heavy_minus_sign: | N/A | -| ~~`departments`~~ | List[*str*] | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

list of all departments. | -| `overview_response` | [Optional[models.InsightsOverviewResponse]](../models/insightsoverviewresponse.md) | :heavy_minus_sign: | N/A | -| `assistant_response` | [Optional[models.AssistantInsightsResponse]](../models/assistantinsightsresponse.md) | :heavy_minus_sign: | N/A | -| `agents_response` | [Optional[models.AgentsInsightsV2Response]](../models/agentsinsightsv2response.md) | :heavy_minus_sign: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | +| `glean_assist` | [Optional[models.GleanAssistInsightsResponse]](../models/gleanassistinsightsresponse.md) | :heavy_minus_sign: | N/A | +| `overview_response` | [Optional[models.InsightsOverviewResponse]](../models/insightsoverviewresponse.md) | :heavy_minus_sign: | N/A | +| `assistant_response` | [Optional[models.AssistantInsightsResponse]](../models/assistantinsightsresponse.md) | :heavy_minus_sign: | N/A | +| `agents_response` | [Optional[models.AgentsInsightsV2Response]](../models/agentsinsightsv2response.md) | :heavy_minus_sign: | N/A | +| `mcp_response` | [Optional[models.McpInsightsResponse]](../models/mcpinsightsresponse.md) | :heavy_minus_sign: | N/A | +| `mcp_breakdown_response` | [Optional[models.McpBreakdownInsightsResponse]](../models/mcpbreakdowninsightsresponse.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/insightssearchsummary.md b/docs/models/insightssearchsummary.md index d527f436..940085a0 100644 --- a/docs/models/insightssearchsummary.md +++ b/docs/models/insightssearchsummary.md @@ -5,7 +5,7 @@ | Field | Type | Required | Description | | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | -| `monthly_active_users` | *Optional[int]* | :heavy_minus_sign: | Number of current Monthly Active Users, in the specified departments. | -| `weekly_active_users` | *Optional[int]* | :heavy_minus_sign: | Number of current Weekly Active Users, in the specified departments. | +| `monthly_active_users` | *Optional[int]* | :heavy_minus_sign: | Number of current Monthly Active Users. | +| `weekly_active_users` | *Optional[int]* | :heavy_minus_sign: | Number of current Weekly Active Users. | | `num_searches` | *Optional[int]* | :heavy_minus_sign: | Total number of searches by users over the specified time period. | | `num_search_users` | *Optional[int]* | :heavy_minus_sign: | Total number of distinct users who searched over the specified time period. | \ No newline at end of file diff --git a/docs/models/inviteinfo.md b/docs/models/inviteinfo.md index e929b033..62732992 100644 --- a/docs/models/inviteinfo.md +++ b/docs/models/inviteinfo.md @@ -10,5 +10,5 @@ Information regarding the invite status of a person. | `sign_up_time` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | The time this person signed up in ISO format (ISO 8601). | | | `invites` | List[[models.ChannelInviteInfo](../models/channelinviteinfo.md)] | :heavy_minus_sign: | Latest invites received by the user for each channel | | | `inviter` | [Optional[models.Person]](../models/person.md) | :heavy_minus_sign: | N/A | {
"name": "George Clooney",
"obfuscatedId": "abc123"
} | -| ~~`invite_time`~~ | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

The time this person was invited in ISO format (ISO 8601). | | -| ~~`reminder_time`~~ | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

The time this person was reminded in ISO format (ISO 8601) if a reminder was sent. | | \ No newline at end of file +| ~~`invite_time`~~ | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | : warning: ** DEPRECATED **: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use ChannelInviteInfo instead.

The time this person was invited in ISO format (ISO 8601). | | +| ~~`reminder_time`~~ | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | : warning: ** DEPRECATED **: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use ChannelInviteInfo instead.

The time this person was reminded in ISO format (ISO 8601) if a reminder was sent. | | \ No newline at end of file diff --git a/docs/models/issue.md b/docs/models/issue.md index c6db8485..647f9bb6 100644 --- a/docs/models/issue.md +++ b/docs/models/issue.md @@ -1,18 +1,32 @@ # Issue +## Example Usage + +```python +from glean.api_client.models import Issue + +value = Issue.AGENT_CANVAS_FAILED +``` + ## Values -| Name | Value | -| -------------------------- | -------------------------- | -| `INACCURATE_RESPONSE` | INACCURATE_RESPONSE | -| `INCOMPLETE_OR_NO_ANSWER` | INCOMPLETE_OR_NO_ANSWER | -| `INCORRECT_CITATION` | INCORRECT_CITATION | -| `MISSING_CITATION` | MISSING_CITATION | -| `OTHER` | OTHER | -| `OUTDATED_RESPONSE` | OUTDATED_RESPONSE | -| `RESULT_MISSING` | RESULT_MISSING | -| `RESULT_SHOULD_NOT_APPEAR` | RESULT_SHOULD_NOT_APPEAR | -| `RESULTS_HELPFUL` | RESULTS_HELPFUL | -| `RESULTS_POOR_ORDER` | RESULTS_POOR_ORDER | -| `TOO_MUCH_ONE_KIND` | TOO_MUCH_ONE_KIND | \ No newline at end of file +| Name | Value | +| --------------------------------- | --------------------------------- | +| `AGENT_CANVAS_FAILED` | AGENT_CANVAS_FAILED | +| `AGENT_CLARIFYING_QUESTIONS` | AGENT_CLARIFYING_QUESTIONS | +| `AGENT_INTERMEDIATE_STEPS_FAILED` | AGENT_INTERMEDIATE_STEPS_FAILED | +| `AGENT_TOOL_CALL_FAILED` | AGENT_TOOL_CALL_FAILED | +| `INACCURATE_RESPONSE` | INACCURATE_RESPONSE | +| `INCOMPLETE_OR_NO_ANSWER` | INCOMPLETE_OR_NO_ANSWER | +| `INCORRECT_CITATION` | INCORRECT_CITATION | +| `MISSING_CITATION` | MISSING_CITATION | +| `OTHER` | OTHER | +| `OUTDATED_RESPONSE` | OUTDATED_RESPONSE | +| `RESULT_MISSING` | RESULT_MISSING | +| `RESULT_SHOULD_NOT_APPEAR` | RESULT_SHOULD_NOT_APPEAR | +| `RESULTS_HELPFUL` | RESULTS_HELPFUL | +| `RESULTS_POOR_ORDER` | RESULTS_POOR_ORDER | +| `TOO_MUCH_ONE_KIND` | TOO_MUCH_ONE_KIND | +| `NOT_A_QUESTION` | NOT_A_QUESTION | +| `UNSURE_IF_CORRECT` | UNSURE_IF_CORRECT | \ No newline at end of file diff --git a/docs/models/justificationtype.md b/docs/models/justificationtype.md index 4bcceecf..ae3931e0 100644 --- a/docs/models/justificationtype.md +++ b/docs/models/justificationtype.md @@ -2,6 +2,16 @@ Type of the justification. +## Example Usage + +```python +from glean.api_client.models import JustificationType + +value = JustificationType.FREQUENTLY_ACCESSED + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values @@ -40,4 +50,31 @@ Type of the justification. | `ZERO_STATE_STATIC_WORKFLOW_SUGGESTION` | ZERO_STATE_STATIC_WORKFLOW_SUGGESTION | | `ZERO_STATE_AGENT_SUGGESTION` | ZERO_STATE_AGENT_SUGGESTION | | `PERSONALIZED_CHAT_SUGGESTION` | PERSONALIZED_CHAT_SUGGESTION | -| `DAILY_DIGEST` | DAILY_DIGEST | \ No newline at end of file +| `DAILY_DIGEST` | DAILY_DIGEST | +| `PODCAST` | PODCAST | +| `TASK` | TASK | +| `PLAN_MY_DAY` | PLAN_MY_DAY | +| `END_MY_DAY` | END_MY_DAY | +| `STARTER_KIT_EXTENSION` | STARTER_KIT_EXTENSION | +| `STARTER_KIT_ORG_CHART` | STARTER_KIT_ORG_CHART | +| `STARTER_KIT_ADD_DOC` | STARTER_KIT_ADD_DOC | +| `MEETING_RECAP` | MEETING_RECAP | +| `MEETING_ROOM` | MEETING_ROOM | +| `MEETING_PREP_AUTOMATION` | MEETING_PREP_AUTOMATION | +| `ACTIVE_DISCUSSION` | ACTIVE_DISCUSSION | +| `MID_DAY_CATCH_UP` | MID_DAY_CATCH_UP | +| `QUERY_SUGGESTION` | QUERY_SUGGESTION | +| `COWORK_CUJ_PROMO` | COWORK_CUJ_PROMO | +| `CARD_STACK_PROMO` | CARD_STACK_PROMO | +| `WEEKLY_MEETINGS` | WEEKLY_MEETINGS | +| `FOLLOW_UP` | FOLLOW_UP | +| `MILESTONE_TIMELINE_CHECK` | MILESTONE_TIMELINE_CHECK | +| `PROJECT_DISCUSSION_DIGEST` | PROJECT_DISCUSSION_DIGEST | +| `PROJECT_FOCUS_BLOCK` | PROJECT_FOCUS_BLOCK | +| `PROJECT_NEXT_STEP` | PROJECT_NEXT_STEP | +| `DEMO_CARD` | DEMO_CARD | +| `RESOLVE_MEETING_CONFLICT` | RESOLVE_MEETING_CONFLICT | +| `OOO_PLANNER` | OOO_PLANNER | +| `OOO_CATCH_UP` | OOO_CATCH_UP | +| `ADMIN_HEALTH_CENTER` | ADMIN_HEALTH_CENTER | +| `KNOWLEDGE_GAP` | KNOWLEDGE_GAP | \ No newline at end of file diff --git a/docs/models/knowledgetype.md b/docs/models/knowledgetype.md index 83754f3c..f08f4a63 100644 --- a/docs/models/knowledgetype.md +++ b/docs/models/knowledgetype.md @@ -2,6 +2,16 @@ Indicates the kind of knowledge a tool would access or modify. +## Example Usage + +```python +from glean.api_client.models import KnowledgeType + +value = KnowledgeType.NEUTRAL_KNOWLEDGE + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/lastscanstatus.md b/docs/models/lastscanstatus.md index 32a47a4b..b870d4d4 100644 --- a/docs/models/lastscanstatus.md +++ b/docs/models/lastscanstatus.md @@ -1,5 +1,15 @@ # LastScanStatus +## Example Usage + +```python +from glean.api_client.models import LastScanStatus + +value = LastScanStatus.PENDING + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/lifecycleevent.md b/docs/models/lifecycleevent.md new file mode 100644 index 00000000..4f9776b7 --- /dev/null +++ b/docs/models/lifecycleevent.md @@ -0,0 +1,9 @@ +# LifeCycleEvent + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | +| `event` | [Optional[models.LifeCycleEventEvent]](../models/lifecycleeventevent.md) | :heavy_minus_sign: | Type of event | INDEXED | +| `timestamp` | *Optional[str]* | :heavy_minus_sign: | Timestamp of the event | 2021-08-06T17:58:01.000Z | \ No newline at end of file diff --git a/docs/models/lifecycleeventevent.md b/docs/models/lifecycleeventevent.md new file mode 100644 index 00000000..29e4fb1a --- /dev/null +++ b/docs/models/lifecycleeventevent.md @@ -0,0 +1,23 @@ +# LifeCycleEventEvent + +Type of event + +## Example Usage + +```python +from glean.api_client.models import LifeCycleEventEvent + +value = LifeCycleEventEvent.UPLOADED + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + + +## Values + +| Name | Value | +| -------------------- | -------------------- | +| `UPLOADED` | UPLOADED | +| `INDEXED` | INDEXED | +| `DELETION_REQUESTED` | DELETION_REQUESTED | +| `DELETED` | DELETED | \ No newline at end of file diff --git a/docs/models/listanswersrequestrequest.md b/docs/models/listanswersrequestrequest.md new file mode 100644 index 00000000..cbe66c04 --- /dev/null +++ b/docs/models/listanswersrequestrequest.md @@ -0,0 +1,9 @@ +# ListanswersRequestRequest + + +## Fields + +| Field | 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`. | +| `list_answers_request` | [models.ListAnswersRequest](../models/listanswersrequest.md) | :heavy_check_mark: | ListAnswers request | \ No newline at end of file diff --git a/docs/models/listchatsrequest.md b/docs/models/listchatsrequest.md index 2b5b4b0e..9a0d7259 100644 --- a/docs/models/listchatsrequest.md +++ b/docs/models/listchatsrequest.md @@ -3,6 +3,7 @@ ## 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. | \ No newline at end of file +| Field | 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. | \ No newline at end of file diff --git a/docs/models/listchatsresponse.md b/docs/models/listchatsresponse.md index 95dfd859..98e45105 100644 --- a/docs/models/listchatsresponse.md +++ b/docs/models/listchatsresponse.md @@ -3,6 +3,7 @@ ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | -| `chat_results` | List[[models.ChatMetadataResult](../models/chatmetadataresult.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `chat_results` | List[[models.ChatMetadataResult](../models/chatmetadataresult.md)] | :heavy_minus_sign: | N/A | | +| `cursor` | *Optional[str]* | :heavy_minus_sign: | An opaque cursor for fetching the next page of results. If empty, there are no more results. | | \ No newline at end of file diff --git a/docs/models/listcollectionsrequestrequest.md b/docs/models/listcollectionsrequestrequest.md new file mode 100644 index 00000000..1ccd21f3 --- /dev/null +++ b/docs/models/listcollectionsrequestrequest.md @@ -0,0 +1,9 @@ +# ListcollectionsRequestRequest + + +## Fields + +| Field | 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`. | +| `list_collections_request` | [models.ListCollectionsRequest](../models/listcollectionsrequest.md) | :heavy_check_mark: | ListCollections request | \ No newline at end of file diff --git a/docs/models/listentitiesrequest.md b/docs/models/listentitiesrequest.md index c4ac2d31..c91150c0 100644 --- a/docs/models/listentitiesrequest.md +++ b/docs/models/listentitiesrequest.md @@ -14,4 +14,4 @@ | `page_size` | *Optional[int]* | :heavy_minus_sign: | Hint to the server about how many results to send back. Server may return less. | 100 | | `cursor` | *Optional[str]* | :heavy_minus_sign: | Pagination cursor. A previously received opaque token representing the position in the overall results at which to start. | | | `source` | *Optional[str]* | :heavy_minus_sign: | A string denoting the search surface from which the endpoint is called. | | -| `request_type` | [Optional[models.RequestType]](../models/requesttype.md) | :heavy_minus_sign: | The type of request being made. | | \ No newline at end of file +| `request_type` | [Optional[models.ListEntitiesRequestRequestType]](../models/listentitiesrequestrequesttype.md) | :heavy_minus_sign: | The type of request being made. | | \ No newline at end of file diff --git a/docs/models/listentitiesrequestentitytype.md b/docs/models/listentitiesrequestentitytype.md index 84664785..4977acf6 100644 --- a/docs/models/listentitiesrequestentitytype.md +++ b/docs/models/listentitiesrequestentitytype.md @@ -1,5 +1,13 @@ # ListEntitiesRequestEntityType +## Example Usage + +```python +from glean.api_client.models import ListEntitiesRequestEntityType + +value = ListEntitiesRequestEntityType.PEOPLE +``` + ## Values diff --git a/docs/models/listentitiesrequestincludefield.md b/docs/models/listentitiesrequestincludefield.md index dde5f54d..443d5026 100644 --- a/docs/models/listentitiesrequestincludefield.md +++ b/docs/models/listentitiesrequestincludefield.md @@ -1,5 +1,13 @@ # ListEntitiesRequestIncludeField +## Example Usage + +```python +from glean.api_client.models import ListEntitiesRequestIncludeField + +value = ListEntitiesRequestIncludeField.PEOPLE +``` + ## Values diff --git a/docs/models/listentitiesrequestrequest.md b/docs/models/listentitiesrequestrequest.md new file mode 100644 index 00000000..ec6cdd01 --- /dev/null +++ b/docs/models/listentitiesrequestrequest.md @@ -0,0 +1,9 @@ +# ListentitiesRequestRequest + + +## Fields + +| Field | 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`. | +| `list_entities_request` | [models.ListEntitiesRequest](../models/listentitiesrequest.md) | :heavy_check_mark: | List people request | \ No newline at end of file diff --git a/docs/models/requesttype.md b/docs/models/listentitiesrequestrequesttype.md similarity index 52% rename from docs/models/requesttype.md rename to docs/models/listentitiesrequestrequesttype.md index 1859501a..27ba5bb4 100644 --- a/docs/models/requesttype.md +++ b/docs/models/listentitiesrequestrequesttype.md @@ -1,7 +1,15 @@ -# RequestType +# ListEntitiesRequestRequestType The type of request being made. +## Example Usage + +```python +from glean.api_client.models import ListEntitiesRequestRequestType + +value = ListEntitiesRequestRequestType.STANDARD +``` + ## Values diff --git a/docs/models/listentitiesresponse.md b/docs/models/listentitiesresponse.md index d7699639..5a5d6546 100644 --- a/docs/models/listentitiesresponse.md +++ b/docs/models/listentitiesresponse.md @@ -3,14 +3,14 @@ ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | -| `results` | List[[models.Person](../models/person.md)] | :heavy_minus_sign: | N/A | -| `team_results` | List[[models.Team](../models/team.md)] | :heavy_minus_sign: | N/A | -| `custom_entity_results` | List[[models.CustomEntity](../models/customentity.md)] | :heavy_minus_sign: | N/A | -| `facet_results` | List[[models.FacetResult](../models/facetresult.md)] | :heavy_minus_sign: | N/A | -| `cursor` | *Optional[str]* | :heavy_minus_sign: | Pagination cursor. A previously received opaque token representing the position in the overall results at which to start. | -| `total_count` | *Optional[int]* | :heavy_minus_sign: | The total number of entities available | -| `has_more_results` | *Optional[bool]* | :heavy_minus_sign: | Whether or not more entities can be fetched. | -| `sort_options` | List[[models.EntitiesSortOrder](../models/entitiessortorder.md)] | :heavy_minus_sign: | Sort options from EntitiesSortOrder supported for this response. Default is empty list. | -| `custom_facet_names` | List[*str*] | :heavy_minus_sign: | list of Person attributes that are custom setup by deployment | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | +| `results` | List[[models.Person](../models/person.md)] | :heavy_minus_sign: | N/A | | +| `team_results` | List[[models.Team](../models/team.md)] | :heavy_minus_sign: | N/A | | +| `custom_entity_results` | List[[models.CustomEntity](../models/customentity.md)] | :heavy_minus_sign: | N/A | | +| `facet_results` | List[[models.FacetResult](../models/facetresult.md)] | :heavy_minus_sign: | N/A | | +| `cursor` | *Optional[str]* | :heavy_minus_sign: | Pagination cursor. A previously received opaque token representing the position in the overall results at which to start. | | +| `total_count` | *Optional[int]* | :heavy_minus_sign: | The total number of entities available | | +| `has_more_results` | *Optional[bool]* | :heavy_minus_sign: | Whether or not more entities can be fetched. | | +| `sort_options` | List[[models.EntitiesSortOrder](../models/entitiessortorder.md)] | :heavy_minus_sign: | Sort options from EntitiesSortOrder supported for this response. Default is empty list. | | +| `custom_facet_names` | List[*str*] | :heavy_minus_sign: | list of Person attributes that are custom setup by deployment | | \ No newline at end of file diff --git a/docs/models/listpinsrequest.md b/docs/models/listpinsrequest.md index 4c0c3889..49bbce57 100644 --- a/docs/models/listpinsrequest.md +++ b/docs/models/listpinsrequest.md @@ -1,9 +1,9 @@ # ListpinsRequest -List pins request - ## Fields -| Field | Type | Required | Description | -| ----------- | ----------- | ----------- | ----------- | \ No newline at end of file +| Field | 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`. | +| `request_body` | [models.ListpinsRequestBody](../models/listpinsrequestbody.md) | :heavy_check_mark: | List pins request | \ No newline at end of file diff --git a/docs/models/listpinsrequestbody.md b/docs/models/listpinsrequestbody.md new file mode 100644 index 00000000..ad2e4cbd --- /dev/null +++ b/docs/models/listpinsrequestbody.md @@ -0,0 +1,9 @@ +# ListpinsRequestBody + +List pins request + + +## Fields + +| Field | Type | Required | Description | +| ----------- | ----------- | ----------- | ----------- | \ No newline at end of file diff --git a/docs/models/listshortcutspaginatedrequestincludefield.md b/docs/models/listshortcutspaginatedrequestincludefield.md index a0668712..b68782a7 100644 --- a/docs/models/listshortcutspaginatedrequestincludefield.md +++ b/docs/models/listshortcutspaginatedrequestincludefield.md @@ -1,5 +1,13 @@ # ListShortcutsPaginatedRequestIncludeField +## Example Usage + +```python +from glean.api_client.models import ListShortcutsPaginatedRequestIncludeField + +value = ListShortcutsPaginatedRequestIncludeField.FACETS +``` + ## Values diff --git a/docs/models/listshortcutsrequest.md b/docs/models/listshortcutsrequest.md new file mode 100644 index 00000000..5ddc952c --- /dev/null +++ b/docs/models/listshortcutsrequest.md @@ -0,0 +1,9 @@ +# ListshortcutsRequest + + +## Fields + +| Field | 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`. | +| `list_shortcuts_paginated_request` | [models.ListShortcutsPaginatedRequest](../models/listshortcutspaginatedrequest.md) | :heavy_check_mark: | Filters, sorters, paging params required for pagination | \ No newline at end of file diff --git a/docs/models/listverificationsrequest.md b/docs/models/listverificationsrequest.md index 6852a725..320d1323 100644 --- a/docs/models/listverificationsrequest.md +++ b/docs/models/listverificationsrequest.md @@ -3,6 +3,7 @@ ## Fields -| Field | Type | Required | Description | -| ------------------------------------- | ------------------------------------- | ------------------------------------- | ------------------------------------- | -| `count` | *Optional[int]* | :heavy_minus_sign: | Maximum number of documents to return | \ No newline at end of file +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `count` | *Optional[int]* | :heavy_minus_sign: | Maximum number of documents to return | +| `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`. | \ No newline at end of file diff --git a/docs/models/manualfeedbackinfosource.md b/docs/models/manualfeedbackinfosource.md index 27c53bc4..e5e604b2 100644 --- a/docs/models/manualfeedbackinfosource.md +++ b/docs/models/manualfeedbackinfosource.md @@ -2,6 +2,14 @@ The source associated with the Feedback.event.MANUAL_FEEDBACK event. +## Example Usage + +```python +from glean.api_client.models import ManualFeedbackInfoSource + +value = ManualFeedbackInfoSource.AUTOCOMPLETE +``` + ## Values diff --git a/docs/models/manualfeedbackinfovote.md b/docs/models/manualfeedbackinfovote.md index 401fb94b..f74b7a47 100644 --- a/docs/models/manualfeedbackinfovote.md +++ b/docs/models/manualfeedbackinfovote.md @@ -2,6 +2,14 @@ The vote associated with the Feedback.event.MANUAL_FEEDBACK event. +## Example Usage + +```python +from glean.api_client.models import ManualFeedbackInfoVote + +value = ManualFeedbackInfoVote.UPVOTE +``` + ## Values diff --git a/docs/models/manualfeedbacksidebysideinfosource.md b/docs/models/manualfeedbacksidebysideinfosource.md index ac916e0d..f95896ae 100644 --- a/docs/models/manualfeedbacksidebysideinfosource.md +++ b/docs/models/manualfeedbacksidebysideinfosource.md @@ -2,6 +2,14 @@ The source associated with the side-by-side feedback event. +## Example Usage + +```python +from glean.api_client.models import ManualFeedbackSideBySideInfoSource + +value = ManualFeedbackSideBySideInfoSource.LIVE_EVAL +``` + ## Values diff --git a/docs/models/manualfeedbacksidebysideinfovote.md b/docs/models/manualfeedbacksidebysideinfovote.md index 3ba4a1be..ba4cf618 100644 --- a/docs/models/manualfeedbacksidebysideinfovote.md +++ b/docs/models/manualfeedbacksidebysideinfovote.md @@ -2,6 +2,14 @@ The vote for this specific implementation. +## Example Usage + +```python +from glean.api_client.models import ManualFeedbackSideBySideInfoVote + +value = ManualFeedbackSideBySideInfoVote.UPVOTE +``` + ## Values diff --git a/docs/models/mcpbreakdowninsightsrequest.md b/docs/models/mcpbreakdowninsightsrequest.md new file mode 100644 index 00000000..dfc79947 --- /dev/null +++ b/docs/models/mcpbreakdowninsightsrequest.md @@ -0,0 +1,15 @@ +# McpBreakdownInsightsRequest + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | +| `departments` | List[*str*] | :heavy_minus_sign: | Departments for which Insights are requested. | +| `manager_ids` | List[*str*] | :heavy_minus_sign: | Manager user IDs whose teams should be filtered for. Empty array means no filtering. | +| `manager_emails` | List[*str*] | :heavy_minus_sign: | Manager emails whose teams should be filtered for. Empty array means no filtering. | +| `day_range` | [Optional[models.Period]](../models/period.md) | :heavy_minus_sign: | N/A | +| `breakdown_type` | [Optional[models.BreakdownType]](../models/breakdowntype.md) | :heavy_minus_sign: | Type of breakdown to return. | +| `host_applications` | List[*str*] | :heavy_minus_sign: | Host applications to filter by. Empty array means all host applications. | +| `tools` | List[*str*] | :heavy_minus_sign: | MCP tools to filter by. Empty array means all tools. | +| `servers` | List[*str*] | :heavy_minus_sign: | MCP servers to filter by. Empty array means all servers. | \ No newline at end of file diff --git a/docs/models/mcpbreakdowninsightsresponse.md b/docs/models/mcpbreakdowninsightsresponse.md new file mode 100644 index 00000000..94328ff4 --- /dev/null +++ b/docs/models/mcpbreakdowninsightsresponse.md @@ -0,0 +1,11 @@ +# McpBreakdownInsightsResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | +| `users_breakdown` | List[[models.McpUserBreakdown](../models/mcpuserbreakdown.md)] | :heavy_minus_sign: | N/A | +| `host_applications_breakdown` | List[[models.McpHostApplicationBreakdown](../models/mcphostapplicationbreakdown.md)] | :heavy_minus_sign: | N/A | +| `tools_breakdown` | List[[models.McpToolBreakdown](../models/mcptoolbreakdown.md)] | :heavy_minus_sign: | N/A | +| `servers_breakdown` | List[[models.McpServerBreakdown](../models/mcpserverbreakdown.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/mcphostapplicationbreakdown.md b/docs/models/mcphostapplicationbreakdown.md new file mode 100644 index 00000000..22ebec84 --- /dev/null +++ b/docs/models/mcphostapplicationbreakdown.md @@ -0,0 +1,10 @@ +# McpHostApplicationBreakdown + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | +| `host_application` | *Optional[str]* | :heavy_minus_sign: | Host application name. | +| `total_calls` | *Optional[int]* | :heavy_minus_sign: | Total number of MCP calls made from this host application in the specified time period. | +| `active_users` | *Optional[int]* | :heavy_minus_sign: | Total number of active users from this host application in the specified time period. | \ No newline at end of file diff --git a/docs/models/mcpinsightsrequest.md b/docs/models/mcpinsightsrequest.md new file mode 100644 index 00000000..dbf8e029 --- /dev/null +++ b/docs/models/mcpinsightsrequest.md @@ -0,0 +1,11 @@ +# McpInsightsRequest + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | +| `departments` | List[*str*] | :heavy_minus_sign: | Departments for which Insights are requested. | +| `manager_ids` | List[*str*] | :heavy_minus_sign: | Manager user IDs whose teams should be filtered for. Empty array means no filtering. | +| `manager_emails` | List[*str*] | :heavy_minus_sign: | Manager emails whose teams should be filtered for. Empty array means no filtering. | +| `day_range` | [Optional[models.Period]](../models/period.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/mcpinsightsresponse.md b/docs/models/mcpinsightsresponse.md new file mode 100644 index 00000000..f52735b7 --- /dev/null +++ b/docs/models/mcpinsightsresponse.md @@ -0,0 +1,15 @@ +# McpInsightsResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `monthly_active_users` | *Optional[int]* | :heavy_minus_sign: | Number of current Monthly Active Users. | +| `weekly_active_users` | *Optional[int]* | :heavy_minus_sign: | Number of current Weekly Active Users. | +| `daily_active_users` | *Optional[int]* | :heavy_minus_sign: | Number of current Daily Active Users. | +| `monthly_active_user_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | +| `weekly_active_user_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | +| `daily_active_user_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | +| `overall_daily_active_user_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | +| `top_host_applications_active_user_timeseries` | List[[models.LabeledCountInfo](../models/labeledcountinfo.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/mcpserverbreakdown.md b/docs/models/mcpserverbreakdown.md new file mode 100644 index 00000000..d69d4ca3 --- /dev/null +++ b/docs/models/mcpserverbreakdown.md @@ -0,0 +1,11 @@ +# McpServerBreakdown + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | +| `server` | *Optional[str]* | :heavy_minus_sign: | MCP server name. | +| `total_calls` | *Optional[int]* | :heavy_minus_sign: | Total number of MCP calls for this server in the specified time period. | +| `active_users` | *Optional[int]* | :heavy_minus_sign: | Total number of active users for this server in the specified time period. | +| `host_applications` | List[*str*] | :heavy_minus_sign: | Host applications using this server in the specified time period. | \ No newline at end of file diff --git a/docs/models/mcptoolbreakdown.md b/docs/models/mcptoolbreakdown.md new file mode 100644 index 00000000..8eade300 --- /dev/null +++ b/docs/models/mcptoolbreakdown.md @@ -0,0 +1,11 @@ +# McpToolBreakdown + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | +| `tool` | *Optional[str]* | :heavy_minus_sign: | MCP tool name. | +| `total_calls` | *Optional[int]* | :heavy_minus_sign: | Total number of MCP calls for this tool in the specified time period. | +| `active_users` | *Optional[int]* | :heavy_minus_sign: | Total number of active users for this tool in the specified time period. | +| `host_applications` | List[*str*] | :heavy_minus_sign: | Host applications using this tool in the specified time period. | \ No newline at end of file diff --git a/docs/models/mcpuserbreakdown.md b/docs/models/mcpuserbreakdown.md new file mode 100644 index 00000000..1c4e22ef --- /dev/null +++ b/docs/models/mcpuserbreakdown.md @@ -0,0 +1,12 @@ +# McpUserBreakdown + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | +| `person` | [Optional[models.Person]](../models/person.md) | :heavy_minus_sign: | N/A | {
"name": "George Clooney",
"obfuscatedId": "abc123"
} | +| `total_calls` | *Optional[int]* | :heavy_minus_sign: | Total number of MCP calls made by this user in the specified time period. | | +| `host_applications` | List[*str*] | :heavy_minus_sign: | Host applications used by this user in the specified time period. | | +| `tools` | List[*str*] | :heavy_minus_sign: | MCP tools used by this user in the specified time period. | | +| `servers` | List[*str*] | :heavy_minus_sign: | MCP servers used by this user in the specified time period. | | \ No newline at end of file diff --git a/docs/models/messagesrequestrequest.md b/docs/models/messagesrequestrequest.md new file mode 100644 index 00000000..8acae398 --- /dev/null +++ b/docs/models/messagesrequestrequest.md @@ -0,0 +1,9 @@ +# MessagesRequestRequest + + +## Fields + +| Field | 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`. | +| `messages_request` | [models.MessagesRequest](../models/messagesrequest.md) | :heavy_check_mark: | Includes request params such as the id for channel/message and direction. | \ No newline at end of file diff --git a/docs/models/messagesresponse.md b/docs/models/messagesresponse.md index cd049438..13bcccb3 100644 --- a/docs/models/messagesresponse.md +++ b/docs/models/messagesresponse.md @@ -3,8 +3,8 @@ ## Fields -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `has_more` | *bool* | :heavy_check_mark: | Whether there are more results for client to continue requesting. | | -| `search_response` | [Optional[models.SearchResponse]](../models/searchresponse.md) | :heavy_minus_sign: | N/A | {
"trackingToken": "trackingToken",
"suggestedSpellCorrectedQuery": "suggestedSpellCorrectedQuery",
"hasMoreResults": true,
"errorInfo": {
"errorMessages": [
{
"source": "gmail",
"errorMessage": "invalid token"
},
{
"source": "slack",
"errorMessage": "expired token"
}
]
},
"requestID": "5e345ae500ff0befa2b9d1a3ba0001737e7363696f312d323535323137000171756572792d656e64706f696e743a323032303031333074313830343032000100",
"results": [
{
"snippets": [
{
"snippet": "snippet",
"mimeType": "mimeType"
}
],
"metadata": {
"container": "container",
"createTime": "2000-01-23T04:56:07.000Z",
"datasource": "datasource",
"author": {
"name": "name"
},
"documentId": "documentId",
"updateTime": "2000-01-23T04:56:07.000Z",
"mimeType": "mimeType",
"objectType": "objectType"
},
"title": "title",
"url": "https://www.example.com/"
},
{
"snippets": [
{
"snippet": "snippet",
"mimeType": "mimeType"
}
],
"metadata": {
"container": "container",
"createTime": "2000-01-23T04:56:07.000Z",
"datasource": "datasource",
"author": {
"name": "name"
},
"documentId": "documentId",
"updateTime": "2000-01-23T04:56:07.000Z",
"mimeType": "mimeType",
"objectType": "objectType"
},
"title": "title",
"url": "https://www.example.com/"
}
],
"facetResults": [
{
"buckets": [
{
"percentage": 5,
"count": 1,
"value": {
"stringValue": "stringValue",
"integerValue": 5
}
},
{
"percentage": 5,
"count": 1,
"value": {
"stringValue": "stringValue",
"integerValue": 5
}
}
],
"sourceName": "sourceName",
"operatorName": "operatorName",
"objectType": "objectType"
},
{
"buckets": [
{
"percentage": 5,
"count": 1,
"value": {
"stringValue": "stringValue",
"integerValue": 5
}
},
{
"percentage": 5,
"count": 1,
"value": {
"stringValue": "stringValue",
"integerValue": 5
}
}
],
"sourceName": "sourceName",
"operatorName": "operatorName",
"objectType": "objectType"
}
],
"rewrittenQuery": "rewrittenQuery",
"rewrittenFacetFilters": [
{
"fieldName": "fieldName",
"values": [
"fieldValues",
"fieldValues"
]
},
{
"fieldName": "fieldName",
"values": [
"fieldValues",
"fieldValues"
]
}
]
} | -| `root_message` | [Optional[models.SearchResult]](../models/searchresult.md) | :heavy_minus_sign: | N/A | {
"snippets": [
{
"snippet": "snippet",
"mimeType": "mimeType"
}
],
"metadata": {
"container": "container",
"createTime": "2000-01-23T04:56:07.000Z",
"datasource": "datasource",
"author": {
"name": "name"
},
"documentId": "documentId",
"updateTime": "2000-01-23T04:56:07.000Z",
"mimeType": "mimeType",
"objectType": "objectType"
},
"title": "title",
"url": "https://example.com/foo/bar",
"nativeAppUrl": "slack://foo/bar",
"mustIncludeSuggestions": [
{
"missingTerm": "container",
"query": "container"
}
]
} | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `has_more` | *bool* | :heavy_check_mark: | Whether there are more results for client to continue requesting. | | +| `search_response` | [Optional[models.SearchResponse]](../models/searchresponse.md) | :heavy_minus_sign: | N/A | {
"trackingToken": "trackingToken",
"suggestedSpellCorrectedQuery": "suggestedSpellCorrectedQuery",
"hasMoreResults": true,
"errorInfo": {
"errorMessages": [
{
"source": "gmail",
"errorMessage": "invalid token"
},
{
"source": "slack",
"errorMessage": "expired token"
}
]
},
"requestID": "5e345ae500ff0befa2b9d1a3ba0001737e7363696f312d323535323137000171756572792d656e64706f696e743a323032303031333074313830343032000100",
"results": [
{
"snippets": [
{
"snippet": "snippet",
"mimeType": "mimeType"
}
],
"metadata": {
"container": "container",
"createTime": "2000-01-23T04:56:07.000Z",
"datasource": "datasource",
"author": {
"name": "name"
},
"documentId": "documentId",
"updateTime": "2000-01-23T04:56:07.000Z",
"mimeType": "mimeType",
"objectType": "objectType"
},
"title": "title",
"url": "https://www.example.com/"
},
{
"snippets": [
{
"snippet": "snippet",
"mimeType": "mimeType"
}
],
"metadata": {
"container": "container",
"createTime": "2000-01-23T04:56:07.000Z",
"datasource": "datasource",
"author": {
"name": "name"
},
"documentId": "documentId",
"updateTime": "2000-01-23T04:56:07.000Z",
"mimeType": "mimeType",
"objectType": "objectType"
},
"title": "title",
"url": "https://www.example.com/"
}
],
"facetResults": [
{
"buckets": [
{
"percentage": 5,
"count": 1,
"value": {
"stringValue": "stringValue",
"integerValue": 5
}
},
{
"percentage": 5,
"count": 1,
"value": {
"stringValue": "stringValue",
"integerValue": 5
}
}
],
"sourceName": "sourceName",
"operatorName": "operatorName",
"objectType": "objectType"
},
{
"buckets": [
{
"percentage": 5,
"count": 1,
"value": {
"stringValue": "stringValue",
"integerValue": 5
}
},
{
"percentage": 5,
"count": 1,
"value": {
"stringValue": "stringValue",
"integerValue": 5
}
}
],
"sourceName": "sourceName",
"operatorName": "operatorName",
"objectType": "objectType"
}
],
"rewrittenQuery": "rewrittenQuery",
"rewrittenFacetFilters": [
{
"fieldName": "fieldName",
"values": [
{
"value": "fieldValues",
"relationType": "EQUALS"
},
{
"value": "fieldValues",
"relationType": "EQUALS"
}
]
},
{
"fieldName": "fieldName",
"values": [
{
"value": "fieldValues",
"relationType": "EQUALS"
},
{
"value": "fieldValues",
"relationType": "EQUALS"
}
]
}
]
} | +| `root_message` | [Optional[models.SearchResult]](../models/searchresult.md) | :heavy_minus_sign: | N/A | {
"snippets": [
{
"snippet": "snippet",
"mimeType": "mimeType"
}
],
"metadata": {
"container": "container",
"createTime": "2000-01-23T04:56:07.000Z",
"datasource": "datasource",
"author": {
"name": "name"
},
"documentId": "documentId",
"updateTime": "2000-01-23T04:56:07.000Z",
"mimeType": "mimeType",
"objectType": "objectType"
},
"title": "title",
"url": "https://example.com/foo/bar",
"nativeAppUrl": "slack://foo/bar",
"mustIncludeSuggestions": {
"suggestions": [
{
"missingTerm": "container",
"query": "container"
}
]
}
} | \ No newline at end of file diff --git a/docs/models/messagetype.md b/docs/models/messagetype.md index bbaf0ff5..8f91442a 100644 --- a/docs/models/messagetype.md +++ b/docs/models/messagetype.md @@ -2,17 +2,33 @@ Semantically groups content of a certain type. It can be used for purposes such as differential UI treatment. USER authored messages should be of type CONTENT and do not need `messageType` specified. +## Example Usage + +```python +from glean.api_client.models import MessageType + +value = MessageType.UPDATE + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values -| Name | Value | -| ---------------- | ---------------- | -| `UPDATE` | UPDATE | -| `CONTENT` | CONTENT | -| `CONTEXT` | CONTEXT | -| `DEBUG` | DEBUG | -| `DEBUG_EXTERNAL` | DEBUG_EXTERNAL | -| `ERROR` | ERROR | -| `HEADING` | HEADING | -| `WARNING` | WARNING | -| `SERVER_TOOL` | SERVER_TOOL | \ No newline at end of file +| Name | Value | +| ----------------- | ----------------- | +| `UPDATE` | UPDATE | +| `CONTENT` | CONTENT | +| `CONTEXT` | CONTEXT | +| `CONTROL` | CONTROL | +| `CONTROL_START` | CONTROL_START | +| `CONTROL_FINISH` | CONTROL_FINISH | +| `CONTROL_CANCEL` | CONTROL_CANCEL | +| `CONTROL_RETRY` | CONTROL_RETRY | +| `CONTROL_UNKNOWN` | CONTROL_UNKNOWN | +| `DEBUG` | DEBUG | +| `DEBUG_EXTERNAL` | DEBUG_EXTERNAL | +| `ERROR` | ERROR | +| `HEADING` | HEADING | +| `WARNING` | WARNING | +| `SERVER_TOOL` | SERVER_TOOL | \ No newline at end of file diff --git a/docs/models/mode.md b/docs/models/mode.md index bde5127c..b1cd1e56 100644 --- a/docs/models/mode.md +++ b/docs/models/mode.md @@ -2,6 +2,16 @@ Top level modes to run GleanChat in. +## Example Usage + +```python +from glean.api_client.models import Mode + +value = Mode.DEFAULT + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/object.md b/docs/models/object.md new file mode 100644 index 00000000..06f80d51 --- /dev/null +++ b/docs/models/object.md @@ -0,0 +1,16 @@ +# Object + +## Example Usage + +```python +from glean.api_client.models import Object + +value = Object.RESPONSE +``` + + +## Values + +| Name | Value | +| ---------- | ---------- | +| `RESPONSE` | RESPONSE | \ No newline at end of file diff --git a/docs/models/operatortype.md b/docs/models/operatortype.md index f7d9e857..7525e283 100644 --- a/docs/models/operatortype.md +++ b/docs/models/operatortype.md @@ -1,5 +1,15 @@ # OperatorType +## Example Usage + +```python +from glean.api_client.models import OperatorType + +value = OperatorType.TEXT + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/orderby.md b/docs/models/orderby.md index 96a7f95d..cb24df14 100644 --- a/docs/models/orderby.md +++ b/docs/models/orderby.md @@ -1,5 +1,13 @@ # OrderBy +## Example Usage + +```python +from glean.api_client.models import OrderBy + +value = OrderBy.ASC +``` + ## Values diff --git a/docs/models/peoplerequestincludefield.md b/docs/models/peoplerequestincludefield.md index f2216729..8b933ae8 100644 --- a/docs/models/peoplerequestincludefield.md +++ b/docs/models/peoplerequestincludefield.md @@ -1,5 +1,13 @@ # PeopleRequestIncludeField +## Example Usage + +```python +from glean.api_client.models import PeopleRequestIncludeField + +value = PeopleRequestIncludeField.BADGES +``` + ## Values diff --git a/docs/models/peoplerequestrequest.md b/docs/models/peoplerequestrequest.md new file mode 100644 index 00000000..a7ddc183 --- /dev/null +++ b/docs/models/peoplerequestrequest.md @@ -0,0 +1,9 @@ +# PeopleRequestRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `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`. | | +| `people_request` | [models.PeopleRequest](../models/peoplerequest.md) | :heavy_check_mark: | People request | {
"obfuscatedIds": [
"abc123",
"abc456"
]
} | \ No newline at end of file diff --git a/docs/models/peragentinsight.md b/docs/models/peragentinsight.md index 8e12e9f5..c8b05348 100644 --- a/docs/models/peragentinsight.md +++ b/docs/models/peragentinsight.md @@ -12,4 +12,5 @@ | `user_count` | *Optional[int]* | :heavy_minus_sign: | Total number of users for this agent over the specified time period. | | | `run_count` | *Optional[int]* | :heavy_minus_sign: | Total number of runs for this agent over the specified time period. | | | `upvote_count` | *Optional[int]* | :heavy_minus_sign: | Total number of upvotes for this agent over the specified time period. | | -| `downvote_count` | *Optional[int]* | :heavy_minus_sign: | Total number of downvotes for this agent over the specified time period. | | \ No newline at end of file +| `downvote_count` | *Optional[int]* | :heavy_minus_sign: | Total number of downvotes for this agent over the specified time period. | | +| `owner` | [Optional[models.Person]](../models/person.md) | :heavy_minus_sign: | N/A | {
"name": "George Clooney",
"obfuscatedId": "abc123"
} | \ No newline at end of file diff --git a/docs/models/person.md b/docs/models/person.md index 345b60a8..233784bc 100644 --- a/docs/models/person.md +++ b/docs/models/person.md @@ -3,9 +3,9 @@ ## Fields -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `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. | | -| `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 +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `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. | | +| `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/personmetadata.md b/docs/models/personmetadata.md index 3bf2f124..6bfd50db 100644 --- a/docs/models/personmetadata.md +++ b/docs/models/personmetadata.md @@ -11,6 +11,7 @@ | `title` | *Optional[str]* | :heavy_minus_sign: | Job title. | | | `business_unit` | *Optional[str]* | :heavy_minus_sign: | Typically the highest level organizational unit; generally applies to bigger companies with multiple distinct businesses. | | | `department` | *Optional[str]* | :heavy_minus_sign: | An organizational unit where everyone has a similar task, e.g. `Engineering`. | | +| `job_function` | *Optional[str]* | :heavy_minus_sign: | Normalized job-function category assigned by Entity Builder from the source department and, when available, job title. Unlike `department`, which preserves the company-specific organizational unit, this field groups departments into configured categories such as `Engineering`, `Sales`, or `IT`; it may be `Unknown` when the mapping is inconclusive. | | | `teams` | List[[models.PersonTeam](../models/personteam.md)] | :heavy_minus_sign: | Info about the employee's team(s). | | | `department_count` | *Optional[int]* | :heavy_minus_sign: | The number of people in this person's department. | | | `email` | *Optional[str]* | :heavy_minus_sign: | The user's primary email address | | diff --git a/docs/models/personmetadatatype.md b/docs/models/personmetadatatype.md index 1f41993c..42958478 100644 --- a/docs/models/personmetadatatype.md +++ b/docs/models/personmetadatatype.md @@ -1,5 +1,15 @@ # PersonMetadataType +## Example Usage + +```python +from glean.api_client.models import PersonMetadataType + +value = PersonMetadataType.FULL_TIME + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/personteamrelationship.md b/docs/models/personteamrelationship.md index 9d958daa..a00dde59 100644 --- a/docs/models/personteamrelationship.md +++ b/docs/models/personteamrelationship.md @@ -2,6 +2,16 @@ The team member's relationship to the team. This defaults to MEMBER if not set. +## Example Usage + +```python +from glean.api_client.models import PersonTeamRelationship + +value = PersonTeamRelationship.MEMBER + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/persontoteamrelationshiprelationship.md b/docs/models/persontoteamrelationshiprelationship.md index 2727c8ee..bfb66e7a 100644 --- a/docs/models/persontoteamrelationshiprelationship.md +++ b/docs/models/persontoteamrelationshiprelationship.md @@ -2,6 +2,16 @@ The team member's relationship to the team. This defaults to MEMBER if not set. +## Example Usage + +```python +from glean.api_client.models import PersonToTeamRelationshipRelationship + +value = PersonToTeamRelationshipRelationship.MEMBER + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/peruserinsight.md b/docs/models/peruserinsight.md index d5ac9f32..623d8c42 100644 --- a/docs/models/peruserinsight.md +++ b/docs/models/peruserinsight.md @@ -13,4 +13,5 @@ | `num_days_active` | *Optional[int]* | :heavy_minus_sign: | Total number of days this user was an Active User over the specified time period. | | | `num_summarizations` | *Optional[int]* | :heavy_minus_sign: | Total number of summarized items by this user over the specified time period. | | | `num_ai_answers` | *Optional[int]* | :heavy_minus_sign: | Total number of AI Answers interacted with by this user over the specified time period. | | -| `num_agent_runs` | *Optional[int]* | :heavy_minus_sign: | Total number of agent runs for this user over the specified time period. | | \ No newline at end of file +| `num_agent_runs` | *Optional[int]* | :heavy_minus_sign: | Total number of agent runs for this user over the specified time period. | | +| `num_mcp_calls` | *Optional[int]* | :heavy_minus_sign: | Total number of MCP calls for this user over the specified time period. | | \ No newline at end of file diff --git a/docs/models/pindocument.md b/docs/models/pindocument.md index def0aeba..3a7208b2 100644 --- a/docs/models/pindocument.md +++ b/docs/models/pindocument.md @@ -12,4 +12,5 @@ | `attribution` | [Optional[models.Person]](../models/person.md) | :heavy_minus_sign: | N/A | {
"name": "George Clooney",
"obfuscatedId": "abc123"
} | | `updated_by` | [Optional[models.Person]](../models/person.md) | :heavy_minus_sign: | N/A | {
"name": "George Clooney",
"obfuscatedId": "abc123"
} | | `create_time` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | N/A | | -| `update_time` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | N/A | | \ No newline at end of file +| `update_time` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | N/A | | +| `favorite_info` | [Optional[models.FavoriteInfo]](../models/favoriteinfo.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/pinrequestrequest.md b/docs/models/pinrequestrequest.md new file mode 100644 index 00000000..a24b8b95 --- /dev/null +++ b/docs/models/pinrequestrequest.md @@ -0,0 +1,9 @@ +# PinRequestRequest + + +## Fields + +| Field | 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`. | +| `pin_request` | [models.PinRequest](../models/pinrequest.md) | :heavy_check_mark: | Details about the document and query for the pin. | \ No newline at end of file diff --git a/docs/models/placementreason.md b/docs/models/placementreason.md new file mode 100644 index 00000000..f17278f2 --- /dev/null +++ b/docs/models/placementreason.md @@ -0,0 +1,22 @@ +# PlacementReason + +Placement source for ranked feed results. ORGANIC means the card was emitted by normal feed ranking. PROMO means the card was inserted by the homepage cards promo framework. PINNED means the card was moved to the head of the ranked stack (e.g. knowledge-gap pilot cards). + +## Example Usage + +```python +from glean.api_client.models import PlacementReason + +value = PlacementReason.ORGANIC + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + + +## Values + +| Name | Value | +| --------- | --------- | +| `ORGANIC` | ORGANIC | +| `PROMO` | PROMO | +| `PINNED` | PINNED | \ No newline at end of file diff --git a/docs/models/platformactionsummary.md b/docs/models/platformactionsummary.md new file mode 100644 index 00000000..4a911ee3 --- /dev/null +++ b/docs/models/platformactionsummary.md @@ -0,0 +1,14 @@ +# PlatformActionSummary + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `tool_id` | *str* | :heavy_check_mark: | Unique identifier of the action. | +| `display_name` | *str* | :heavy_check_mark: | Display name of the action. | +| `type` | *Optional[str]* | :heavy_minus_sign: | Tool type. | +| `auth_type` | *Optional[str]* | :heavy_minus_sign: | Authentication type required by the action. | +| `write_action_type` | *Optional[str]* | :heavy_minus_sign: | Write-action execution type. | +| `is_setup_finished` | *Optional[bool]* | :heavy_minus_sign: | Whether this action has been fully configured. | +| `data_source` | *Optional[str]* | :heavy_minus_sign: | Kind of knowledge the action accesses or modifies. | \ No newline at end of file diff --git a/docs/models/platformagent.md b/docs/models/platformagent.md new file mode 100644 index 00000000..dd4be223 --- /dev/null +++ b/docs/models/platformagent.md @@ -0,0 +1,12 @@ +# PlatformAgent + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | +| `agent_id` | *str* | :heavy_check_mark: | ID of the agent. | mho4lwzylcozgoc2 | +| `name` | *str* | :heavy_check_mark: | Name of the agent. | HR Policy Agent | +| `description` | *Optional[str]* | :heavy_minus_sign: | Description of the agent. | | +| `metadata` | Dict[str, *Any*] | :heavy_minus_sign: | Agent metadata. | | +| `capabilities` | [models.PlatformAgentCapabilities](../models/platformagentcapabilities.md) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/models/platformagentcapabilities.md b/docs/models/platformagentcapabilities.md new file mode 100644 index 00000000..052dd7bb --- /dev/null +++ b/docs/models/platformagentcapabilities.md @@ -0,0 +1,10 @@ +# PlatformAgentCapabilities + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------- | --------------------------------------------- | --------------------------------------------- | --------------------------------------------- | +| `ap_io_messages` | *Optional[bool]* | :heavy_minus_sign: | Whether the agent supports messages as input. | +| `ap_io_streaming` | *Optional[bool]* | :heavy_minus_sign: | Whether the agent supports streaming output. | +| `__pydantic_extra__` | Dict[str, *Any*] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/platformagentexecutionstatus.md b/docs/models/platformagentexecutionstatus.md new file mode 100644 index 00000000..c5b5164a --- /dev/null +++ b/docs/models/platformagentexecutionstatus.md @@ -0,0 +1,21 @@ +# PlatformAgentExecutionStatus + +Status of the agent run. + +## Example Usage + +```python +from glean.api_client.models import PlatformAgentExecutionStatus + +value = PlatformAgentExecutionStatus.ERROR + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + + +## Values + +| Name | Value | +| --------- | --------- | +| `ERROR` | error | +| `SUCCESS` | success | \ No newline at end of file diff --git a/docs/models/platformagentgetresponse.md b/docs/models/platformagentgetresponse.md new file mode 100644 index 00000000..be79ecee --- /dev/null +++ b/docs/models/platformagentgetresponse.md @@ -0,0 +1,9 @@ +# PlatformAgentGetResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | +| `agent` | [models.PlatformAgent](../models/platformagent.md) | :heavy_check_mark: | N/A | +| `request_id` | *str* | :heavy_check_mark: | Platform-generated request ID for support correlation. | \ No newline at end of file diff --git a/docs/models/platformagentrun.md b/docs/models/platformagentrun.md new file mode 100644 index 00000000..d6dffe14 --- /dev/null +++ b/docs/models/platformagentrun.md @@ -0,0 +1,12 @@ +# PlatformAgentRun + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| `agent_id` | *str* | :heavy_check_mark: | ID of the agent being run. | +| `input` | Dict[str, *Any*] | :heavy_minus_sign: | Input fields for an input-form triggered agent. | +| `messages` | List[[models.PlatformMessage](../models/platformmessage.md)] | :heavy_minus_sign: | Messages passed to the agent. | +| `metadata` | Dict[str, *Any*] | :heavy_minus_sign: | Metadata passed to the agent. | +| `status` | [models.PlatformAgentExecutionStatus](../models/platformagentexecutionstatus.md) | :heavy_check_mark: | Status of the agent run. | \ No newline at end of file diff --git a/docs/models/platformagentruncreaterequest.md b/docs/models/platformagentruncreaterequest.md new file mode 100644 index 00000000..072a5ce9 --- /dev/null +++ b/docs/models/platformagentruncreaterequest.md @@ -0,0 +1,14 @@ +# PlatformAgentRunCreateRequest + +Request to run an agent. A request MUST supply either `messages` (a non-empty conversation) or `input` (for input-form triggered agents). + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `input` | Dict[str, *Any*] | :heavy_minus_sign: | Input fields for an input-form triggered agent. | +| `messages` | List[[models.PlatformMessage](../models/platformmessage.md)] | :heavy_minus_sign: | Messages to pass to the agent. When provided, the array MUST contain at least one message and each message MUST specify a valid `role` and non-empty `content`.
| +| `metadata` | Dict[str, *Any*] | :heavy_minus_sign: | Metadata to pass to the agent. | +| `stream` | *Optional[bool]* | :heavy_minus_sign: | Whether to stream the run response as server-sent events. | \ No newline at end of file diff --git a/docs/models/platformagentrunwaitresponse.md b/docs/models/platformagentrunwaitresponse.md new file mode 100644 index 00000000..f41e4044 --- /dev/null +++ b/docs/models/platformagentrunwaitresponse.md @@ -0,0 +1,10 @@ +# PlatformAgentRunWaitResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `run` | [Optional[models.PlatformAgentRun]](../models/platformagentrun.md) | :heavy_minus_sign: | N/A | +| `messages` | List[[models.PlatformMessage](../models/platformmessage.md)] | :heavy_minus_sign: | Messages returned by the completed run. | +| `request_id` | *str* | :heavy_check_mark: | Platform-generated request ID for support correlation. | \ No newline at end of file diff --git a/docs/models/platformagentschemasresponse.md b/docs/models/platformagentschemasresponse.md new file mode 100644 index 00000000..6ba12306 --- /dev/null +++ b/docs/models/platformagentschemasresponse.md @@ -0,0 +1,13 @@ +# PlatformAgentSchemasResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | +| `agent_id` | *str* | :heavy_check_mark: | ID of the agent. | +| `name` | *Optional[str]* | :heavy_minus_sign: | Name of the agent. | +| `input_schema` | Dict[str, *Any*] | :heavy_check_mark: | Agent input schema in JSON Schema format. | +| `output_schema` | Dict[str, *Any*] | :heavy_check_mark: | Agent output schema in JSON Schema format. | +| `tools` | List[[models.PlatformActionSummary](../models/platformactionsummary.md)] | :heavy_minus_sign: | Tools that the agent can invoke, when requested. | +| `request_id` | *str* | :heavy_check_mark: | Platform-generated request ID for support correlation. | \ No newline at end of file diff --git a/docs/models/platformagentscreaterunrequest.md b/docs/models/platformagentscreaterunrequest.md new file mode 100644 index 00000000..df931458 --- /dev/null +++ b/docs/models/platformagentscreaterunrequest.md @@ -0,0 +1,9 @@ +# PlatformAgentsCreateRunRequest + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| `agent_id` | *str* | :heavy_check_mark: | ID of the agent to run. | +| `platform_agent_run_create_request` | [models.PlatformAgentRunCreateRequest](../models/platformagentruncreaterequest.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/platformagentscreaterunresponse.md b/docs/models/platformagentscreaterunresponse.md new file mode 100644 index 00000000..8282996d --- /dev/null +++ b/docs/models/platformagentscreaterunresponse.md @@ -0,0 +1,17 @@ +# PlatformAgentsCreateRunResponse + + +## Supported Types + +### `models.PlatformAgentRunWaitResponse` + +```python +value: models.PlatformAgentRunWaitResponse = /* values here */ +``` + +### `str` + +```python +value: str = /* values here */ +``` + diff --git a/docs/models/platformagentsgetrequest.md b/docs/models/platformagentsgetrequest.md new file mode 100644 index 00000000..5cdd73d2 --- /dev/null +++ b/docs/models/platformagentsgetrequest.md @@ -0,0 +1,8 @@ +# PlatformAgentsGetRequest + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------- | ---------------------------- | ---------------------------- | ---------------------------- | +| `agent_id` | *str* | :heavy_check_mark: | ID of the agent to retrieve. | \ No newline at end of file diff --git a/docs/models/platformagentsgetschemasrequest.md b/docs/models/platformagentsgetschemasrequest.md new file mode 100644 index 00000000..dfb7f4df --- /dev/null +++ b/docs/models/platformagentsgetschemasrequest.md @@ -0,0 +1,9 @@ +# PlatformAgentsGetSchemasRequest + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `agent_id` | *str* | :heavy_check_mark: | ID of the agent whose schemas should be retrieved. | +| `include_tools` | *Optional[bool]* | :heavy_minus_sign: | Whether to include tool metadata in the response. | \ No newline at end of file diff --git a/docs/models/platformagentssearchrequest.md b/docs/models/platformagentssearchrequest.md new file mode 100644 index 00000000..381dc6be --- /dev/null +++ b/docs/models/platformagentssearchrequest.md @@ -0,0 +1,8 @@ +# PlatformAgentsSearchRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `name` | *Optional[str]* | :heavy_minus_sign: | Case-insensitive substring to match against agent names. If omitted or empty, no name filter is applied. | HR Policy Agent | \ No newline at end of file diff --git a/docs/models/platformagentssearchresponse.md b/docs/models/platformagentssearchresponse.md new file mode 100644 index 00000000..1c961815 --- /dev/null +++ b/docs/models/platformagentssearchresponse.md @@ -0,0 +1,9 @@ +# PlatformAgentsSearchResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | +| `agents` | List[[models.PlatformAgent](../models/platformagent.md)] | :heavy_check_mark: | Agents matching the search request. | +| `request_id` | *str* | :heavy_check_mark: | Platform-generated request ID for support correlation. | \ No newline at end of file diff --git a/docs/models/platformauthenticationsuggestion.md b/docs/models/platformauthenticationsuggestion.md new file mode 100644 index 00000000..02de0e92 --- /dev/null +++ b/docs/models/platformauthenticationsuggestion.md @@ -0,0 +1,11 @@ +# PlatformAuthenticationSuggestion + +One tool the caller must authorize before the agent can run. + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `tool_name` | *Optional[str]* | :heavy_minus_sign: | Human-readable tool name. | +| `server_id` | *str* | :heavy_check_mark: | Identifier to POST to `/tool-servers/{serverId}/auth` (Client API) with `returnUrl` in the request body to obtain an `authorizationUrl` to redirect the end user to. | \ No newline at end of file diff --git a/docs/models/platformchatcitationannotation.md b/docs/models/platformchatcitationannotation.md new file mode 100644 index 00000000..e15e66b2 --- /dev/null +++ b/docs/models/platformchatcitationannotation.md @@ -0,0 +1,12 @@ +# PlatformChatCitationAnnotation + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `type` | [models.PlatformChatCitationAnnotationType](../models/platformchatcitationannotationtype.md) | :heavy_check_mark: | N/A | +| `sources` | List[[models.PlatformChatCitationSource](../models/platformchatcitationsource.md)] | :heavy_check_mark: | N/A | +| `start_index` | *OptionalNullable[int]* | :heavy_minus_sign: | N/A | +| `end_index` | *OptionalNullable[int]* | :heavy_minus_sign: | N/A | +| `snippets` | List[[models.PlatformChatCitationSnippet](../models/platformchatcitationsnippet.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/platformchatcitationannotationtype.md b/docs/models/platformchatcitationannotationtype.md new file mode 100644 index 00000000..8b83f20e --- /dev/null +++ b/docs/models/platformchatcitationannotationtype.md @@ -0,0 +1,16 @@ +# PlatformChatCitationAnnotationType + +## Example Usage + +```python +from glean.api_client.models import PlatformChatCitationAnnotationType + +value = PlatformChatCitationAnnotationType.CITATION +``` + + +## Values + +| Name | Value | +| ---------- | ---------- | +| `CITATION` | CITATION | \ No newline at end of file diff --git a/docs/models/platformchatcitationsnippet.md b/docs/models/platformchatcitationsnippet.md new file mode 100644 index 00000000..f4dcb28c --- /dev/null +++ b/docs/models/platformchatcitationsnippet.md @@ -0,0 +1,9 @@ +# PlatformChatCitationSnippet + + +## Fields + +| Field | Type | Required | Description | +| ----------------------- | ----------------------- | ----------------------- | ----------------------- | +| `text` | *str* | :heavy_check_mark: | N/A | +| `page_number` | *OptionalNullable[int]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/platformchatcitationsource.md b/docs/models/platformchatcitationsource.md new file mode 100644 index 00000000..bb688733 --- /dev/null +++ b/docs/models/platformchatcitationsource.md @@ -0,0 +1,31 @@ +# PlatformChatCitationSource + +Four-variant citation source union. + + +## Supported Types + +### `models.PlatformChatDocumentSource` + +```python +value: models.PlatformChatDocumentSource = /* values here */ +``` + +### `models.PlatformChatPersonSource` + +```python +value: models.PlatformChatPersonSource = /* values here */ +``` + +### `models.PlatformChatFileSource` + +```python +value: models.PlatformChatFileSource = /* values here */ +``` + +### `models.PlatformChatCustomEntitySource` + +```python +value: models.PlatformChatCustomEntitySource = /* values here */ +``` + diff --git a/docs/models/platformchatcompletedresponse.md b/docs/models/platformchatcompletedresponse.md new file mode 100644 index 00000000..34af8ff1 --- /dev/null +++ b/docs/models/platformchatcompletedresponse.md @@ -0,0 +1,15 @@ +# PlatformChatCompletedResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *str* | :heavy_check_mark: | Platform-owned, non-persisted response envelope identifier in `resp_` form. The same identifier is used for every event in one streamed response.
| +| `object` | [models.Object](../models/object.md) | :heavy_check_mark: | N/A | +| `created_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | RFC 3339 UTC timestamp when the response was created. | +| `status` | [models.PlatformChatCompletedResponseStatus](../models/platformchatcompletedresponsestatus.md) | :heavy_check_mark: | N/A | +| `output` | List[[models.PlatformChatOutputMessage](../models/platformchatoutputmessage.md)] | :heavy_check_mark: | N/A | +| `store` | *bool* | :heavy_check_mark: | N/A | +| `conversation_id` | *OptionalNullable[str]* | :heavy_minus_sign: | Present when the interaction was persisted. | +| `request_id` | *str* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/platformchatcompletedresponsestatus.md b/docs/models/platformchatcompletedresponsestatus.md new file mode 100644 index 00000000..8bed3e06 --- /dev/null +++ b/docs/models/platformchatcompletedresponsestatus.md @@ -0,0 +1,16 @@ +# PlatformChatCompletedResponseStatus + +## Example Usage + +```python +from glean.api_client.models import PlatformChatCompletedResponseStatus + +value = PlatformChatCompletedResponseStatus.COMPLETED +``` + + +## Values + +| Name | Value | +| ----------- | ----------- | +| `COMPLETED` | COMPLETED | \ No newline at end of file diff --git a/docs/models/platformchatcreaterequest.md b/docs/models/platformchatcreaterequest.md new file mode 100644 index 00000000..f37f1031 --- /dev/null +++ b/docs/models/platformchatcreaterequest.md @@ -0,0 +1,11 @@ +# PlatformChatCreateRequest + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | +| `input` | [models.Input](../models/input.md) | :heavy_check_mark: | Either a plain string (single user turn) or a chronological array of `USER`/`ASSISTANT` messages. The final array message must be `USER`.
| +| `stream` | *Optional[bool]* | :heavy_minus_sign: | When true, respond with `text/event-stream`. When false or omitted, respond with `application/json`.
| +| `store` | *Optional[bool]* | :heavy_minus_sign: | When true (default), persist the interaction and return a `conversation_id`. When false, run ephemerally with no persistence.
| +| `conversation_id` | *Optional[str]* | :heavy_minus_sign: | Continue an existing stored conversation. Incompatible with message-array `input` and with `store: false`.
| \ No newline at end of file diff --git a/docs/models/platformchatcreateresponse.md b/docs/models/platformchatcreateresponse.md new file mode 100644 index 00000000..8cf9edc1 --- /dev/null +++ b/docs/models/platformchatcreateresponse.md @@ -0,0 +1,17 @@ +# PlatformChatCreateResponse + + +## Supported Types + +### `models.PlatformChatCompletedResponse` + +```python +value: models.PlatformChatCompletedResponse = /* values here */ +``` + +### `str` + +```python +value: str = /* values here */ +``` + diff --git a/docs/models/platformchatcustomentitysource.md b/docs/models/platformchatcustomentitysource.md new file mode 100644 index 00000000..86313700 --- /dev/null +++ b/docs/models/platformchatcustomentitysource.md @@ -0,0 +1,13 @@ +# PlatformChatCustomEntitySource + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `type` | [models.PlatformChatCustomEntitySourceType](../models/platformchatcustomentitysourcetype.md) | :heavy_check_mark: | N/A | +| `entity_id` | *str* | :heavy_check_mark: | N/A | +| `name` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `url` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `datasource` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/platformchatcustomentitysourcetype.md b/docs/models/platformchatcustomentitysourcetype.md new file mode 100644 index 00000000..5f5b4fc6 --- /dev/null +++ b/docs/models/platformchatcustomentitysourcetype.md @@ -0,0 +1,16 @@ +# PlatformChatCustomEntitySourceType + +## Example Usage + +```python +from glean.api_client.models import PlatformChatCustomEntitySourceType + +value = PlatformChatCustomEntitySourceType.CUSTOM_ENTITY +``` + + +## Values + +| Name | Value | +| --------------- | --------------- | +| `CUSTOM_ENTITY` | CUSTOM_ENTITY | \ No newline at end of file diff --git a/docs/models/platformchatdocumentsource.md b/docs/models/platformchatdocumentsource.md new file mode 100644 index 00000000..a8bd094e --- /dev/null +++ b/docs/models/platformchatdocumentsource.md @@ -0,0 +1,17 @@ +# PlatformChatDocumentSource + + +## Supported Types + +### `models.PlatformChatDocumentSourceDocument1` + +```python +value: models.PlatformChatDocumentSourceDocument1 = /* values here */ +``` + +### `models.PlatformChatDocumentSourceDocument2` + +```python +value: models.PlatformChatDocumentSourceDocument2 = /* values here */ +``` + diff --git a/docs/models/platformchatdocumentsourcedocument1.md b/docs/models/platformchatdocumentsourcedocument1.md new file mode 100644 index 00000000..2b388ba9 --- /dev/null +++ b/docs/models/platformchatdocumentsourcedocument1.md @@ -0,0 +1,12 @@ +# PlatformChatDocumentSourceDocument1 + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `type` | [models.PlatformChatDocumentSourceType1](../models/platformchatdocumentsourcetype1.md) | :heavy_check_mark: | N/A | +| `document_id` | *str* | :heavy_check_mark: | N/A | +| `url` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `datasource` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/platformchatdocumentsourcedocument2.md b/docs/models/platformchatdocumentsourcedocument2.md new file mode 100644 index 00000000..1b8f64e4 --- /dev/null +++ b/docs/models/platformchatdocumentsourcedocument2.md @@ -0,0 +1,12 @@ +# PlatformChatDocumentSourceDocument2 + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `type` | [models.PlatformChatDocumentSourceType2](../models/platformchatdocumentsourcetype2.md) | :heavy_check_mark: | N/A | +| `document_id` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `url` | *str* | :heavy_check_mark: | N/A | +| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `datasource` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/platformchatdocumentsourcetype1.md b/docs/models/platformchatdocumentsourcetype1.md new file mode 100644 index 00000000..81404bd8 --- /dev/null +++ b/docs/models/platformchatdocumentsourcetype1.md @@ -0,0 +1,16 @@ +# PlatformChatDocumentSourceType1 + +## Example Usage + +```python +from glean.api_client.models import PlatformChatDocumentSourceType1 + +value = PlatformChatDocumentSourceType1.DOCUMENT +``` + + +## Values + +| Name | Value | +| ---------- | ---------- | +| `DOCUMENT` | DOCUMENT | \ No newline at end of file diff --git a/docs/models/platformchatdocumentsourcetype2.md b/docs/models/platformchatdocumentsourcetype2.md new file mode 100644 index 00000000..30967f45 --- /dev/null +++ b/docs/models/platformchatdocumentsourcetype2.md @@ -0,0 +1,16 @@ +# PlatformChatDocumentSourceType2 + +## Example Usage + +```python +from glean.api_client.models import PlatformChatDocumentSourceType2 + +value = PlatformChatDocumentSourceType2.DOCUMENT +``` + + +## Values + +| Name | Value | +| ---------- | ---------- | +| `DOCUMENT` | DOCUMENT | \ No newline at end of file diff --git a/docs/models/platformchatfilesource.md b/docs/models/platformchatfilesource.md new file mode 100644 index 00000000..f18a6c67 --- /dev/null +++ b/docs/models/platformchatfilesource.md @@ -0,0 +1,12 @@ +# PlatformChatFileSource + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | +| `type` | [models.PlatformChatFileSourceType](../models/platformchatfilesourcetype.md) | :heavy_check_mark: | N/A | +| `file_id` | *str* | :heavy_check_mark: | N/A | +| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `url` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `datasource` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/platformchatfilesourcetype.md b/docs/models/platformchatfilesourcetype.md new file mode 100644 index 00000000..eccc6d3a --- /dev/null +++ b/docs/models/platformchatfilesourcetype.md @@ -0,0 +1,16 @@ +# PlatformChatFileSourceType + +## Example Usage + +```python +from glean.api_client.models import PlatformChatFileSourceType + +value = PlatformChatFileSourceType.FILE +``` + + +## Values + +| Name | Value | +| ------ | ------ | +| `FILE` | FILE | \ No newline at end of file diff --git a/docs/models/platformchatinputmessage.md b/docs/models/platformchatinputmessage.md new file mode 100644 index 00000000..d69e40b0 --- /dev/null +++ b/docs/models/platformchatinputmessage.md @@ -0,0 +1,9 @@ +# PlatformChatInputMessage + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| `role` | [models.PlatformChatInputMessageRole](../models/platformchatinputmessagerole.md) | :heavy_check_mark: | N/A | +| `content` | *str* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/platformchatinputmessagerole.md b/docs/models/platformchatinputmessagerole.md new file mode 100644 index 00000000..cdf92876 --- /dev/null +++ b/docs/models/platformchatinputmessagerole.md @@ -0,0 +1,17 @@ +# PlatformChatInputMessageRole + +## Example Usage + +```python +from glean.api_client.models import PlatformChatInputMessageRole + +value = PlatformChatInputMessageRole.USER +``` + + +## Values + +| Name | Value | +| ----------- | ----------- | +| `USER` | USER | +| `ASSISTANT` | ASSISTANT | \ No newline at end of file diff --git a/docs/models/platformchatoutputmessage.md b/docs/models/platformchatoutputmessage.md new file mode 100644 index 00000000..a931e573 --- /dev/null +++ b/docs/models/platformchatoutputmessage.md @@ -0,0 +1,10 @@ +# PlatformChatOutputMessage + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | +| `type` | [models.PlatformChatOutputMessageType](../models/platformchatoutputmessagetype.md) | :heavy_check_mark: | N/A | +| `role` | [models.PlatformChatOutputMessageRole](../models/platformchatoutputmessagerole.md) | :heavy_check_mark: | N/A | +| `content` | List[[models.PlatformChatOutputTextContent](../models/platformchatoutputtextcontent.md)] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/platformchatoutputmessagerole.md b/docs/models/platformchatoutputmessagerole.md new file mode 100644 index 00000000..07e97be1 --- /dev/null +++ b/docs/models/platformchatoutputmessagerole.md @@ -0,0 +1,16 @@ +# PlatformChatOutputMessageRole + +## Example Usage + +```python +from glean.api_client.models import PlatformChatOutputMessageRole + +value = PlatformChatOutputMessageRole.ASSISTANT +``` + + +## Values + +| Name | Value | +| ----------- | ----------- | +| `ASSISTANT` | ASSISTANT | \ No newline at end of file diff --git a/docs/models/platformchatoutputmessagetype.md b/docs/models/platformchatoutputmessagetype.md new file mode 100644 index 00000000..c1406850 --- /dev/null +++ b/docs/models/platformchatoutputmessagetype.md @@ -0,0 +1,16 @@ +# PlatformChatOutputMessageType + +## Example Usage + +```python +from glean.api_client.models import PlatformChatOutputMessageType + +value = PlatformChatOutputMessageType.MESSAGE +``` + + +## Values + +| Name | Value | +| --------- | --------- | +| `MESSAGE` | MESSAGE | \ No newline at end of file diff --git a/docs/models/platformchatoutputtextcontent.md b/docs/models/platformchatoutputtextcontent.md new file mode 100644 index 00000000..1ea074b5 --- /dev/null +++ b/docs/models/platformchatoutputtextcontent.md @@ -0,0 +1,10 @@ +# PlatformChatOutputTextContent + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | +| `type` | [models.PlatformChatOutputTextContentType](../models/platformchatoutputtextcontenttype.md) | :heavy_check_mark: | N/A | +| `text` | *str* | :heavy_check_mark: | N/A | +| `annotations` | List[[models.PlatformChatCitationAnnotation](../models/platformchatcitationannotation.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/platformchatoutputtextcontenttype.md b/docs/models/platformchatoutputtextcontenttype.md new file mode 100644 index 00000000..2f8f45b2 --- /dev/null +++ b/docs/models/platformchatoutputtextcontenttype.md @@ -0,0 +1,16 @@ +# PlatformChatOutputTextContentType + +## Example Usage + +```python +from glean.api_client.models import PlatformChatOutputTextContentType + +value = PlatformChatOutputTextContentType.OUTPUT_TEXT +``` + + +## Values + +| Name | Value | +| ------------- | ------------- | +| `OUTPUT_TEXT` | OUTPUT_TEXT | \ No newline at end of file diff --git a/docs/models/platformchatpersonsource.md b/docs/models/platformchatpersonsource.md new file mode 100644 index 00000000..c42d99e3 --- /dev/null +++ b/docs/models/platformchatpersonsource.md @@ -0,0 +1,11 @@ +# PlatformChatPersonSource + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| `type` | [models.PlatformChatPersonSourceType](../models/platformchatpersonsourcetype.md) | :heavy_check_mark: | N/A | +| `person_id` | *str* | :heavy_check_mark: | N/A | +| `name` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `url` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/platformchatpersonsourcetype.md b/docs/models/platformchatpersonsourcetype.md new file mode 100644 index 00000000..4648aec0 --- /dev/null +++ b/docs/models/platformchatpersonsourcetype.md @@ -0,0 +1,16 @@ +# PlatformChatPersonSourceType + +## Example Usage + +```python +from glean.api_client.models import PlatformChatPersonSourceType + +value = PlatformChatPersonSourceType.PERSON +``` + + +## Values + +| Name | Value | +| -------- | -------- | +| `PERSON` | PERSON | \ No newline at end of file diff --git a/docs/models/platformcontentschedulewebhookevent.md b/docs/models/platformcontentschedulewebhookevent.md new file mode 100644 index 00000000..403b2492 --- /dev/null +++ b/docs/models/platformcontentschedulewebhookevent.md @@ -0,0 +1,18 @@ +# PlatformContentScheduleWebhookEvent + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `version` | *str* | :heavy_check_mark: | Webhook payload schema version. | | +| `trigger_id` | *str* | :heavy_check_mark: | ID of the Platform trigger that produced the event. | trigger_test_123 | +| `event_type` | *str* | :heavy_check_mark: | N/A | | +| `datasource` | *str* | :heavy_check_mark: | Datasource the event originated from. | GITHUB | +| `reason` | *str* | :heavy_check_mark: | Why the event fired. | REVIEW_REQUESTED | +| `doc_type` | *str* | :heavy_check_mark: | Datasource-specific object type. | pull | +| `doc_id` | *str* | :heavy_check_mark: | Identifier of the document the event is about. | GITHUB_pull_123 | +| `view_url` | *str* | :heavy_check_mark: | Link to the document in its source system. | https://github.com/acme/payments-api/pull/123 | +| `title` | *str* | :heavy_check_mark: | Title of the document, or the subject for email. | Bug: login fails on Safari | +| `event_time` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | Relevant event time. Document changes use the source-observed time when available and otherwise the document ingestion time; content schedules use the scheduled time. Omitted when no timestamp is available. | | +| `time_offset_seconds` | *int* | :heavy_check_mark: | Offset in seconds from the scheduled time at which the trigger fired. | | \ No newline at end of file diff --git a/docs/models/platformcontenttype.md b/docs/models/platformcontenttype.md new file mode 100644 index 00000000..1b46526d --- /dev/null +++ b/docs/models/platformcontenttype.md @@ -0,0 +1,16 @@ +# PlatformContentType + +## Example Usage + +```python +from glean.api_client.models import PlatformContentType + +value = PlatformContentType.TEXT +``` + + +## Values + +| Name | Value | +| ------ | ------ | +| `TEXT` | text | \ No newline at end of file diff --git a/docs/models/platformdatasourcefilterinfo.md b/docs/models/platformdatasourcefilterinfo.md new file mode 100644 index 00000000..8119fc5d --- /dev/null +++ b/docs/models/platformdatasourcefilterinfo.md @@ -0,0 +1,9 @@ +# PlatformDatasourceFilterInfo + + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `datasource` | *str* | :heavy_check_mark: | Datasource identifier usable in `POST /api/search` `datasources`.
| jira | +| `filters` | List[[models.PlatformFilterFieldInfo](../models/platformfilterfieldinfo.md)] | :heavy_check_mark: | 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.
| | \ No newline at end of file diff --git a/docs/models/platformdocumentchangewebhookevent.md b/docs/models/platformdocumentchangewebhookevent.md new file mode 100644 index 00000000..926494c1 --- /dev/null +++ b/docs/models/platformdocumentchangewebhookevent.md @@ -0,0 +1,19 @@ +# PlatformDocumentChangeWebhookEvent + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `version` | *str* | :heavy_check_mark: | Webhook payload schema version. | | +| `trigger_id` | *str* | :heavy_check_mark: | ID of the Platform trigger that produced the event. | trigger_test_123 | +| `event_type` | *str* | :heavy_check_mark: | N/A | | +| `datasource` | *str* | :heavy_check_mark: | Datasource the event originated from. | GITHUB | +| `reason` | *str* | :heavy_check_mark: | Why the event fired. | REVIEW_REQUESTED | +| `doc_type` | *str* | :heavy_check_mark: | Datasource-specific object type. | pull | +| `doc_id` | *str* | :heavy_check_mark: | Identifier of the document the event is about. | GITHUB_pull_123 | +| `view_url` | *str* | :heavy_check_mark: | Link to the document in its source system. | https://github.com/acme/payments-api/pull/123 | +| `title` | *str* | :heavy_check_mark: | Title of the document, or the subject for email. | Bug: login fails on Safari | +| `event_time` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | Relevant event time. Document changes use the source-observed time when available and otherwise the document ingestion time; content schedules use the scheduled time. Omitted when no timestamp is available. | | +| `content` | *Optional[str]* | :heavy_minus_sign: | Email body content when the event is for an email document. | | +| `content_truncated` | *Optional[bool]* | :heavy_minus_sign: | Present and true when source content exceeded the delivery size limit. | | \ No newline at end of file diff --git a/docs/models/platformfilter.md b/docs/models/platformfilter.md new file mode 100644 index 00000000..b1312736 --- /dev/null +++ b/docs/models/platformfilter.md @@ -0,0 +1,13 @@ +# PlatformFilter + +A single filter criterion. For `EQUALS`, multiple values within a filter are OR'd; for `NOT_EQUALS`, listed values are excluded. Separate filters are AND'd with each other and with inline operators in `query`. Repeated same-field `EQUALS` filters are rejected. + + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `field` | *str* | :heavy_check_mark: | Filter field name. Built-in names (case-sensitive, lowercase only): `type`, `owner`, `from`, `author`, `channel`, `status`, `assignee`, `reporter`, `component`, `mentions`, and `collection`. Built-ins accept only `EQUALS` and `NOT_EQUALS`. Any other nonblank name is accepted as a custom filter without spelling, existence, or type checks; behavior depends on your connected sources.
| type | +| `values` | List[*str*] | :heavy_check_mark: | One or more values to match. Prefer values returned by filter discovery unchanged. For people (`USER`) fields, values may be email addresses or display names.
| [
"spreadsheet",
"presentation"
] | +| `operator` | [Optional[models.PlatformFilterOperator]](../models/platformfilteroperator.md) | :heavy_minus_sign: | Comparison operator. Defaults to `EQUALS`. Built-in fields support only `EQUALS` and `NOT_EQUALS`. Range operators (`GT`, `GTE`, `LT`, `LTE`) require exactly one value; express ranges with multiple filters on the same field. Custom fields may support different operators depending on the data source.
| | \ No newline at end of file diff --git a/docs/models/platformfilterfieldinfo.md b/docs/models/platformfilterfieldinfo.md new file mode 100644 index 00000000..89081118 --- /dev/null +++ b/docs/models/platformfilterfieldinfo.md @@ -0,0 +1,11 @@ +# PlatformFilterFieldInfo + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `field` | *str* | :heavy_check_mark: | Field name usable in the `filters` array for `POST /api/search`. | status | +| `type` | *str* | :heavy_check_mark: | 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.
| STRING | +| `operators` | List[[models.PlatformFilterOperator](../models/platformfilteroperator.md)] | :heavy_check_mark: | Comparison operators supported for this field. Built-in fields expose `EQUALS` and `NOT_EQUALS`.
| | +| `values` | List[*str*] | :heavy_minus_sign: | 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.
| | \ No newline at end of file diff --git a/docs/models/platformfilteroperator.md b/docs/models/platformfilteroperator.md new file mode 100644 index 00000000..d97b6753 --- /dev/null +++ b/docs/models/platformfilteroperator.md @@ -0,0 +1,25 @@ +# PlatformFilterOperator + +Supported filter operator. + +## Example Usage + +```python +from glean.api_client.models import PlatformFilterOperator + +value = PlatformFilterOperator.EQUALS + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + + +## Values + +| Name | Value | +| ------------ | ------------ | +| `EQUALS` | EQUALS | +| `NOT_EQUALS` | NOT_EQUALS | +| `GT` | GT | +| `GTE` | GTE | +| `LT` | LT | +| `LTE` | LTE | \ No newline at end of file diff --git a/docs/models/platformmessage.md b/docs/models/platformmessage.md new file mode 100644 index 00000000..626f1c36 --- /dev/null +++ b/docs/models/platformmessage.md @@ -0,0 +1,9 @@ +# PlatformMessage + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | +| `role` | [models.PlatformMessageRole](../models/platformmessagerole.md) | :heavy_check_mark: | Role of the message author. | USER | +| `content` | List[[models.PlatformMessageTextBlock](../models/platformmessagetextblock.md)] | :heavy_check_mark: | Content blocks in the message. | | \ No newline at end of file diff --git a/docs/models/platformmessagerole.md b/docs/models/platformmessagerole.md new file mode 100644 index 00000000..3646a0b7 --- /dev/null +++ b/docs/models/platformmessagerole.md @@ -0,0 +1,21 @@ +# PlatformMessageRole + +Role of the message author. + +## Example Usage + +```python +from glean.api_client.models import PlatformMessageRole + +value = PlatformMessageRole.USER + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + + +## Values + +| Name | Value | +| ---------- | ---------- | +| `USER` | USER | +| `GLEAN_AI` | GLEAN_AI | \ No newline at end of file diff --git a/docs/models/platformmessagetextblock.md b/docs/models/platformmessagetextblock.md new file mode 100644 index 00000000..68ac4250 --- /dev/null +++ b/docs/models/platformmessagetextblock.md @@ -0,0 +1,9 @@ +# PlatformMessageTextBlock + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `text` | *str* | :heavy_check_mark: | Text content. | +| `type` | [models.PlatformContentType](../models/platformcontenttype.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/platformpersonreference.md b/docs/models/platformpersonreference.md new file mode 100644 index 00000000..9602adac --- /dev/null +++ b/docs/models/platformpersonreference.md @@ -0,0 +1,11 @@ +# PlatformPersonReference + +A lightweight reference to a person, used where a payload merely points at someone. + + +## Fields + +| Field | Type | Required | Description | +| ----------------------- | ----------------------- | ----------------------- | ----------------------- | +| `id` | *Optional[str]* | :heavy_minus_sign: | Opaque Glean person ID. | +| `name` | *str* | :heavy_check_mark: | Display name. | \ No newline at end of file diff --git a/docs/models/platformproblemdetailcode.md b/docs/models/platformproblemdetailcode.md new file mode 100644 index 00000000..4495e942 --- /dev/null +++ b/docs/models/platformproblemdetailcode.md @@ -0,0 +1,42 @@ +# PlatformProblemDetailCode + +Stable machine-readable error code. + +## Example Usage + +```python +from glean.api_client.models import PlatformProblemDetailCode + +value = PlatformProblemDetailCode.INVALID_REQUEST + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + + +## Values + +| Name | Value | +| -------------------------- | -------------------------- | +| `INVALID_REQUEST` | invalid_request | +| `MISSING_REQUIRED_FIELD` | missing_required_field | +| `INVALID_PARAMETER` | invalid_parameter | +| `INVALID_CURSOR` | invalid_cursor | +| `EXPIRED_CURSOR` | expired_cursor | +| `INVALID_FILTER` | invalid_filter | +| `INVALID_DATASOURCE` | invalid_datasource | +| `AUTHENTICATION_REQUIRED` | authentication_required | +| `TOKEN_EXPIRED` | token_expired | +| `INSUFFICIENT_PERMISSIONS` | insufficient_permissions | +| `SPEND_LIMIT_EXCEEDED` | spend_limit_exceeded | +| `RESOURCE_NOT_FOUND` | resource_not_found | +| `METHOD_NOT_ALLOWED` | method_not_allowed | +| `REQUEST_TIMEOUT` | request_timeout | +| `REQUEST_TOO_LARGE` | request_too_large | +| `TOKEN_LIMIT_EXCEEDED` | token_limit_exceeded | +| `CONFLICT` | conflict | +| `GONE` | gone | +| `UNPROCESSABLE_QUERY` | unprocessable_query | +| `TOOLS_UNAUTHORIZED` | tools_unauthorized | +| `RATE_LIMIT_EXCEEDED` | rate_limit_exceeded | +| `INTERNAL_ERROR` | internal_error | +| `SERVICE_UNAVAILABLE` | service_unavailable | \ No newline at end of file diff --git a/docs/models/platformproblemdetailerror.md b/docs/models/platformproblemdetailerror.md new file mode 100644 index 00000000..169944d5 --- /dev/null +++ b/docs/models/platformproblemdetailerror.md @@ -0,0 +1,12 @@ +# PlatformProblemDetailError + +Field-level validation problem for a single offending field. + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | +| `pointer` | *str* | :heavy_check_mark: | RFC 6901 JSON Pointer to the offending field. | /messages/0/role | +| `detail` | *str* | :heavy_check_mark: | Human-readable explanation for this field. | Must be one of: USER, GLEAN_AI. | +| `code` | [Optional[models.PlatformProblemDetailCode]](../models/platformproblemdetailcode.md) | :heavy_minus_sign: | Stable machine-readable error code. | invalid_cursor | \ No newline at end of file diff --git a/docs/models/platformresult.md b/docs/models/platformresult.md new file mode 100644 index 00000000..33003987 --- /dev/null +++ b/docs/models/platformresult.md @@ -0,0 +1,16 @@ +# PlatformResult + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | +| `url` | *str* | :heavy_check_mark: | Canonical URL of the result. | https://company.atlassian.net/wiki/spaces/ENG/pages/12345 | +| `title` | *str* | :heavy_check_mark: | Result title. | Q2 2026 Platform Roadmap | +| `snippets` | List[*str*] | :heavy_minus_sign: | Query-relevant plain-text excerpts from the result body. | [
"The platform team will focus on API stability and..."
] | +| `datasource` | *str* | :heavy_check_mark: | The datasource this result originates from. | confluence | +| `document_type` | *OptionalNullable[str]* | :heavy_minus_sign: | The document type within the datasource. | page | +| `creator` | [Optional[models.PlatformPersonReference]](../models/platformpersonreference.md) | :heavy_minus_sign: | A lightweight reference to a person, used where a payload merely points at someone. | | +| `owner` | [Optional[models.PlatformPersonReference]](../models/platformpersonreference.md) | :heavy_minus_sign: | A lightweight reference to a person, used where a payload merely points at someone. | | +| `updated_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | When the result was last modified. | | +| `created_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | When the result was created. | | \ No newline at end of file diff --git a/docs/models/platformsearchfiltersrequest.md b/docs/models/platformsearchfiltersrequest.md new file mode 100644 index 00000000..001723a5 --- /dev/null +++ b/docs/models/platformsearchfiltersrequest.md @@ -0,0 +1,9 @@ +# PlatformSearchFiltersRequest + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `datasources` | List[*str*] | :heavy_minus_sign: | Restrict metadata to one or more datasource identifiers as returned by this endpoint (for example, `jira`). With a nonblank `query`, exactly one datasource is required. Unknown or inaccessible identifiers return `invalid_datasource`.
| +| `query` | *Optional[str]* | :heavy_minus_sign: | Optional search query that requests suggested filter values for the selected datasource. Must be nonblank when present. Triggers a search for facet values only; does not return documents.
| \ No newline at end of file diff --git a/docs/models/platformsearchfiltersresponse.md b/docs/models/platformsearchfiltersresponse.md new file mode 100644 index 00000000..ee35d033 --- /dev/null +++ b/docs/models/platformsearchfiltersresponse.md @@ -0,0 +1,9 @@ +# PlatformSearchFiltersResponse + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `datasources` | List[[models.PlatformDatasourceFilterInfo](../models/platformdatasourcefilterinfo.md)] | :heavy_check_mark: | 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.
| +| `request_id` | *str* | :heavy_check_mark: | Platform-generated request ID for support correlation. | \ No newline at end of file diff --git a/docs/models/platformsearchfiltersresponseresponse.md b/docs/models/platformsearchfiltersresponseresponse.md new file mode 100644 index 00000000..dc35339f --- /dev/null +++ b/docs/models/platformsearchfiltersresponseresponse.md @@ -0,0 +1,9 @@ +# PlatformSearchFiltersResponseResponse + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | +| `result` | [models.PlatformSearchFiltersResponse](../models/platformsearchfiltersresponse.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/platformsearchrequest.md b/docs/models/platformsearchrequest.md new file mode 100644 index 00000000..59d2dc19 --- /dev/null +++ b/docs/models/platformsearchrequest.md @@ -0,0 +1,13 @@ +# PlatformSearchRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `query` | *str* | :heavy_check_mark: | The search query string. Supports inline operators such as `from:jane type:document app:confluence`. Inline operators are AND'd with structured `filters`.
| | +| `page_size` | *Optional[int]* | :heavy_minus_sign: | Number of results to return per page. | | +| `cursor` | *OptionalNullable[str]* | :heavy_minus_sign: | Opaque pagination token from a previous response's `next_cursor` field. Omit on the first request.
| | +| `datasources` | List[*str*] | :heavy_minus_sign: | Restrict results to specific datasource identifiers returned by `GET /api/search/filters`. Scopes by datasource type and may include results from multiple instances of that type.
| | +| `filters` | List[[models.PlatformFilter](../models/platformfilter.md)] | :heavy_minus_sign: | Structured filters applied to search results. Multiple values within a filter with `EQUALS` are OR'd; separate filters are AND'd. Conflicting constraints on the same field (for example, `type:document` in `query` and `type:spreadsheet` in a filter) return an empty result set. See `Filter.field` for built-in field names and operators. Other nonblank field names are accepted as custom filters without validation; behavior depends on your connected sources.
| | +| `time_range` | [Optional[models.PlatformTimeRange]](../models/platformtimerange.md) | :heavy_minus_sign: | Filter results to those last updated within this range. | | \ No newline at end of file diff --git a/docs/models/platformsearchresponse.md b/docs/models/platformsearchresponse.md new file mode 100644 index 00000000..74045b8a --- /dev/null +++ b/docs/models/platformsearchresponse.md @@ -0,0 +1,12 @@ +# PlatformSearchResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `results` | List[[models.PlatformResult](../models/platformresult.md)] | :heavy_check_mark: | Ordered list of ranked document results. People cards, Q&A blocks, and other UI-only result types are not included.
| +| `has_more` | *bool* | :heavy_check_mark: | Indicates whether additional pages of results are available. | +| `next_cursor` | *Nullable[str]* | :heavy_check_mark: | Opaque token to pass as `cursor` in the next request. | +| `request_id` | *str* | :heavy_check_mark: | Platform-generated request ID for support correlation. | +| `warnings` | List[[models.PlatformWarning](../models/platformwarning.md)] | :heavy_check_mark: | 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.
| \ No newline at end of file diff --git a/docs/models/platformskill.md b/docs/models/platformskill.md new file mode 100644 index 00000000..f803434a --- /dev/null +++ b/docs/models/platformskill.md @@ -0,0 +1,18 @@ +# PlatformSkill + + +## 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 diff --git a/docs/models/platformskillcreaterequest.md b/docs/models/platformskillcreaterequest.md new file mode 100644 index 00000000..20f1e107 --- /dev/null +++ b/docs/models/platformskillcreaterequest.md @@ -0,0 +1,8 @@ +# PlatformSkillCreateRequest + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | +| `file` | [models.PlatformSkillCreateRequestFile](../models/platformskillcreaterequestfile.md) | :heavy_check_mark: | SKILL.md, .zip, or .skill bundle to create. | \ No newline at end of file diff --git a/docs/models/platformskillcreaterequestfile.md b/docs/models/platformskillcreaterequestfile.md new file mode 100644 index 00000000..7da595ab --- /dev/null +++ b/docs/models/platformskillcreaterequestfile.md @@ -0,0 +1,10 @@ +# PlatformSkillCreateRequestFile + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------ | ------------------------------------ | ------------------------------------ | ------------------------------------ | +| `file_name` | *str* | :heavy_check_mark: | N/A | +| `content` | *Union[bytes, IO[bytes], io.IOBase]* | :heavy_check_mark: | N/A | +| `content_type` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/platformskillcreateresponse.md b/docs/models/platformskillcreateresponse.md new file mode 100644 index 00000000..6d49dd9d --- /dev/null +++ b/docs/models/platformskillcreateresponse.md @@ -0,0 +1,9 @@ +# PlatformSkillCreateResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | +| `skill` | [models.PlatformSkill](../models/platformskill.md) | :heavy_check_mark: | N/A | +| `request_id` | *str* | :heavy_check_mark: | Platform-generated request ID for support correlation. | \ No newline at end of file diff --git a/docs/models/platformskillgetresponse.md b/docs/models/platformskillgetresponse.md new file mode 100644 index 00000000..305445c7 --- /dev/null +++ b/docs/models/platformskillgetresponse.md @@ -0,0 +1,9 @@ +# PlatformSkillGetResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | +| `skill` | [models.PlatformSkill](../models/platformskill.md) | :heavy_check_mark: | N/A | +| `request_id` | *str* | :heavy_check_mark: | Platform-generated request ID for support correlation. | \ No newline at end of file diff --git a/docs/models/platformskillimportrequest.md b/docs/models/platformskillimportrequest.md new file mode 100644 index 00000000..e6c95bd6 --- /dev/null +++ b/docs/models/platformskillimportrequest.md @@ -0,0 +1,8 @@ +# PlatformSkillImportRequest + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | +| `source_urls` | List[*str*] | :heavy_check_mark: | Resolved GitHub skill URLs selected from a source preview. | \ No newline at end of file diff --git a/docs/models/platformskillimportresponse.md b/docs/models/platformskillimportresponse.md new file mode 100644 index 00000000..9a383f20 --- /dev/null +++ b/docs/models/platformskillimportresponse.md @@ -0,0 +1,9 @@ +# PlatformSkillImportResponse + + +## 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 diff --git a/docs/models/platformskillorigin.md b/docs/models/platformskillorigin.md new file mode 100644 index 00000000..ca7bf36f --- /dev/null +++ b/docs/models/platformskillorigin.md @@ -0,0 +1,18 @@ +# PlatformSkillOrigin + +Source category for the skill. + +## Example Usage + +```python +from glean.api_client.models import PlatformSkillOrigin + +value = PlatformSkillOrigin.CUSTOM +``` + + +## Values + +| Name | Value | +| -------- | -------- | +| `CUSTOM` | CUSTOM | \ No newline at end of file diff --git a/docs/models/platformskillscreateversionrequest.md b/docs/models/platformskillscreateversionrequest.md new file mode 100644 index 00000000..00bd2fb2 --- /dev/null +++ b/docs/models/platformskillscreateversionrequest.md @@ -0,0 +1,9 @@ +# PlatformSkillsCreateVersionRequest + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | +| `skill_id` | *str* | :heavy_check_mark: | Glean skill ID. | +| `platform_skill_version_create_request` | [models.PlatformSkillVersionCreateRequest](../models/platformskillversioncreaterequest.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/platformskillsdeleterequest.md b/docs/models/platformskillsdeleterequest.md new file mode 100644 index 00000000..f05b2a77 --- /dev/null +++ b/docs/models/platformskillsdeleterequest.md @@ -0,0 +1,8 @@ +# PlatformSkillsDeleteRequest + + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `skill_id` | *str* | :heavy_check_mark: | Glean skill ID. | \ No newline at end of file diff --git a/docs/models/platformskillsgetcontentrequest.md b/docs/models/platformskillsgetcontentrequest.md new file mode 100644 index 00000000..0a2180e1 --- /dev/null +++ b/docs/models/platformskillsgetcontentrequest.md @@ -0,0 +1,8 @@ +# PlatformSkillsGetContentRequest + + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `skill_id` | *str* | :heavy_check_mark: | Glean skill ID. | \ No newline at end of file diff --git a/docs/models/platformskillsgetcontentresponse.md b/docs/models/platformskillsgetcontentresponse.md new file mode 100644 index 00000000..f1099c31 --- /dev/null +++ b/docs/models/platformskillsgetcontentresponse.md @@ -0,0 +1,9 @@ +# PlatformSkillsGetContentResponse + + +## Fields + +| Field | Type | Required | Description | +| ---------------------- | ---------------------- | ---------------------- | ---------------------- | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | +| `result` | *httpx.Response* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/platformskillsgetrequest.md b/docs/models/platformskillsgetrequest.md new file mode 100644 index 00000000..19aeb1fe --- /dev/null +++ b/docs/models/platformskillsgetrequest.md @@ -0,0 +1,8 @@ +# PlatformSkillsGetRequest + + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `skill_id` | *str* | :heavy_check_mark: | Glean skill ID. | \ No newline at end of file diff --git a/docs/models/platformskillsgetversioncontentrequest.md b/docs/models/platformskillsgetversioncontentrequest.md new file mode 100644 index 00000000..ed179d36 --- /dev/null +++ b/docs/models/platformskillsgetversioncontentrequest.md @@ -0,0 +1,9 @@ +# PlatformSkillsGetVersionContentRequest + + +## Fields + +| Field | Type | Required | Description | +| --------------------- | --------------------- | --------------------- | --------------------- | +| `skill_id` | *str* | :heavy_check_mark: | Glean skill ID. | +| `version` | *int* | :heavy_check_mark: | Major version number. | \ No newline at end of file diff --git a/docs/models/platformskillsgetversioncontentresponse.md b/docs/models/platformskillsgetversioncontentresponse.md new file mode 100644 index 00000000..ca9d7b02 --- /dev/null +++ b/docs/models/platformskillsgetversioncontentresponse.md @@ -0,0 +1,9 @@ +# PlatformSkillsGetVersionContentResponse + + +## Fields + +| Field | Type | Required | Description | +| ---------------------- | ---------------------- | ---------------------- | ---------------------- | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | +| `result` | *httpx.Response* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/platformskillsgetversionrequest.md b/docs/models/platformskillsgetversionrequest.md new file mode 100644 index 00000000..9256349d --- /dev/null +++ b/docs/models/platformskillsgetversionrequest.md @@ -0,0 +1,9 @@ +# PlatformSkillsGetVersionRequest + + +## Fields + +| Field | Type | Required | Description | +| --------------------- | --------------------- | --------------------- | --------------------- | +| `skill_id` | *str* | :heavy_check_mark: | Glean skill ID. | +| `version` | *int* | :heavy_check_mark: | Major version number. | \ No newline at end of file diff --git a/docs/models/platformskillslistrequest.md b/docs/models/platformskillslistrequest.md new file mode 100644 index 00000000..ebf0ada9 --- /dev/null +++ b/docs/models/platformskillslistrequest.md @@ -0,0 +1,9 @@ +# PlatformSkillsListRequest + + +## 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 diff --git a/docs/models/platformskillslistresponse.md b/docs/models/platformskillslistresponse.md new file mode 100644 index 00000000..1adcf3fe --- /dev/null +++ b/docs/models/platformskillslistresponse.md @@ -0,0 +1,11 @@ +# PlatformSkillsListResponse + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | +| `skills` | 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 new file mode 100644 index 00000000..d97b7012 --- /dev/null +++ b/docs/models/platformskillslistversionsrequest.md @@ -0,0 +1,10 @@ +# PlatformSkillsListVersionsRequest + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `skill_id` | *str* | :heavy_check_mark: | Glean 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 diff --git a/docs/models/platformskillsourcepreview.md b/docs/models/platformskillsourcepreview.md new file mode 100644 index 00000000..d41ccf21 --- /dev/null +++ b/docs/models/platformskillsourcepreview.md @@ -0,0 +1,14 @@ +# PlatformSkillSourcePreview + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | +| `display_name` | *str* | :heavy_check_mark: | Skill name parsed from SKILL.md frontmatter. | +| `description` | *str* | :heavy_check_mark: | Skill description parsed from SKILL.md frontmatter. | +| `source_url` | *str* | :heavy_check_mark: | Resolved URL for this skill within the source. | +| `commit_sha` | *str* | :heavy_check_mark: | Commit SHA used to produce the preview. | +| `main_content` | *str* | :heavy_check_mark: | SKILL.md content fetched as part of the preview. | +| `files` | List[[models.PlatformSkillSourcePreviewFile](../models/platformskillsourcepreviewfile.md)] | :heavy_check_mark: | Supporting files fetched with the skill. | +| `file_tree` | List[*str*] | :heavy_check_mark: | Relative paths discovered for the skill. | \ No newline at end of file diff --git a/docs/models/platformskillsourcepreviewfailure.md b/docs/models/platformskillsourcepreviewfailure.md new file mode 100644 index 00000000..c21fc25d --- /dev/null +++ b/docs/models/platformskillsourcepreviewfailure.md @@ -0,0 +1,10 @@ +# PlatformSkillSourcePreviewFailure + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| `source_url` | *str* | :heavy_check_mark: | Resolved URL for the entry that could not be previewed. | +| `code` | [models.PlatformSkillSourcePreviewFailureCode](../models/platformskillsourcepreviewfailurecode.md) | :heavy_check_mark: | Stable machine-readable reason a discovered entry was excluded. | +| `detail` | *str* | :heavy_check_mark: | Safe explanation of why the entry was excluded. | \ No newline at end of file diff --git a/docs/models/platformskillsourcepreviewfailurecode.md b/docs/models/platformskillsourcepreviewfailurecode.md new file mode 100644 index 00000000..d0449869 --- /dev/null +++ b/docs/models/platformskillsourcepreviewfailurecode.md @@ -0,0 +1,21 @@ +# PlatformSkillSourcePreviewFailureCode + +Stable machine-readable reason a discovered entry was excluded. + +## Example Usage + +```python +from glean.api_client.models import PlatformSkillSourcePreviewFailureCode + +value = PlatformSkillSourcePreviewFailureCode.INVALID_SKILL + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + + +## Values + +| Name | Value | +| -------------------- | -------------------- | +| `INVALID_SKILL` | INVALID_SKILL | +| `SKILL_FETCH_FAILED` | SKILL_FETCH_FAILED | \ No newline at end of file diff --git a/docs/models/platformskillsourcepreviewfile.md b/docs/models/platformskillsourcepreviewfile.md new file mode 100644 index 00000000..6f4626cb --- /dev/null +++ b/docs/models/platformskillsourcepreviewfile.md @@ -0,0 +1,9 @@ +# PlatformSkillSourcePreviewFile + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------- | -------------------------------------- | -------------------------------------- | -------------------------------------- | +| `path` | *str* | :heavy_check_mark: | Relative path within the skill bundle. | +| `content` | *str* | :heavy_check_mark: | UTF-8 file content. | \ No newline at end of file diff --git a/docs/models/platformskillsourcepreviewrequest.md b/docs/models/platformskillsourcepreviewrequest.md new file mode 100644 index 00000000..8d0b03a4 --- /dev/null +++ b/docs/models/platformskillsourcepreviewrequest.md @@ -0,0 +1,9 @@ +# PlatformSkillSourcePreviewRequest + + +## 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[bool]* | :heavy_minus_sign: | Whether to stream repository scan progress using server-sent events. | \ No newline at end of file diff --git a/docs/models/platformskillsourcepreviewresponse.md b/docs/models/platformskillsourcepreviewresponse.md new file mode 100644 index 00000000..0c2df151 --- /dev/null +++ b/docs/models/platformskillsourcepreviewresponse.md @@ -0,0 +1,10 @@ +# PlatformSkillSourcePreviewResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | +| `skills` | List[[models.PlatformSkillSourcePreview](../models/platformskillsourcepreview.md)] | :heavy_check_mark: | Valid skills discovered at the source URL. | +| `failures` | List[[models.PlatformSkillSourcePreviewFailure](../models/platformskillsourcepreviewfailure.md)] | :heavy_check_mark: | Discovered entries that could not be included in the preview. | +| `request_id` | *str* | :heavy_check_mark: | Platform-generated request ID for support correlation. | \ No newline at end of file diff --git a/docs/models/platformskillsourceprovenance.md b/docs/models/platformskillsourceprovenance.md new file mode 100644 index 00000000..e7728f1b --- /dev/null +++ b/docs/models/platformskillsourceprovenance.md @@ -0,0 +1,13 @@ +# PlatformSkillSourceProvenance + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | +| `source_url` | *Optional[str]* | :heavy_minus_sign: | URL of the external source the skill was imported from. | +| `commit_sha` | *Optional[str]* | :heavy_minus_sign: | Source commit SHA for the imported skill. | +| `imported_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | Time the skill was imported. | +| `last_synced_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | Time the skill was last synced from its source. | +| `sync_status` | [Optional[models.PlatformSkillSyncStatus]](../models/platformskillsyncstatus.md) | :heavy_minus_sign: | Current external-source sync status. | +| `sync_error` | *Optional[str]* | :heavy_minus_sign: | Human-readable sync failure reason, present only when sync_status is SYNC_FAILED. | \ No newline at end of file diff --git a/docs/models/platformskillspreviewsourceresponse.md b/docs/models/platformskillspreviewsourceresponse.md new file mode 100644 index 00000000..2eabd1c4 --- /dev/null +++ b/docs/models/platformskillspreviewsourceresponse.md @@ -0,0 +1,17 @@ +# PlatformSkillsPreviewSourceResponse + + +## Supported Types + +### `models.PlatformSkillSourcePreviewResponse` + +```python +value: models.PlatformSkillSourcePreviewResponse = /* values here */ +``` + +### `str` + +```python +value: str = /* values here */ +``` + diff --git a/docs/models/platformskillssyncrequest.md b/docs/models/platformskillssyncrequest.md new file mode 100644 index 00000000..2d54f2d5 --- /dev/null +++ b/docs/models/platformskillssyncrequest.md @@ -0,0 +1,8 @@ +# PlatformSkillsSyncRequest + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | +| `skill_id` | *str* | :heavy_check_mark: | ID of the GitHub-imported skill to sync. | \ No newline at end of file diff --git a/docs/models/platformskillstatus.md b/docs/models/platformskillstatus.md new file mode 100644 index 00000000..566f1092 --- /dev/null +++ b/docs/models/platformskillstatus.md @@ -0,0 +1,22 @@ +# PlatformSkillStatus + +Current skill status. + +## Example Usage + +```python +from glean.api_client.models import PlatformSkillStatus + +value = PlatformSkillStatus.DRAFT + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + + +## Values + +| Name | Value | +| ---------- | ---------- | +| `DRAFT` | DRAFT | +| `ENABLED` | ENABLED | +| `DISABLED` | DISABLED | \ No newline at end of file diff --git a/docs/models/platformskillsupdaterequest.md b/docs/models/platformskillsupdaterequest.md new file mode 100644 index 00000000..3ea30e83 --- /dev/null +++ b/docs/models/platformskillsupdaterequest.md @@ -0,0 +1,9 @@ +# PlatformSkillsUpdateRequest + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | +| `skill_id` | *str* | :heavy_check_mark: | Glean skill ID. | +| `platform_skill_update_request` | [models.PlatformSkillUpdateRequest](../models/platformskillupdaterequest.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/platformskillsyncresponse.md b/docs/models/platformskillsyncresponse.md new file mode 100644 index 00000000..03dbf807 --- /dev/null +++ b/docs/models/platformskillsyncresponse.md @@ -0,0 +1,11 @@ +# PlatformSkillSyncResponse + + +## 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 diff --git a/docs/models/platformskillsyncresultstatus.md b/docs/models/platformskillsyncresultstatus.md new file mode 100644 index 00000000..764a5847 --- /dev/null +++ b/docs/models/platformskillsyncresultstatus.md @@ -0,0 +1,18 @@ +# 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/platformskillsyncstatus.md b/docs/models/platformskillsyncstatus.md new file mode 100644 index 00000000..36b3ddd9 --- /dev/null +++ b/docs/models/platformskillsyncstatus.md @@ -0,0 +1,22 @@ +# PlatformSkillSyncStatus + +Current external-source sync status. + +## Example Usage + +```python +from glean.api_client.models import PlatformSkillSyncStatus + +value = PlatformSkillSyncStatus.UP_TO_DATE + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + + +## Values + +| Name | Value | +| ------------------ | ------------------ | +| `UP_TO_DATE` | UP_TO_DATE | +| `UPDATE_AVAILABLE` | UPDATE_AVAILABLE | +| `SYNC_FAILED` | SYNC_FAILED | \ No newline at end of file diff --git a/docs/models/platformskillupdaterequest.md b/docs/models/platformskillupdaterequest.md new file mode 100644 index 00000000..1d94bb0a --- /dev/null +++ b/docs/models/platformskillupdaterequest.md @@ -0,0 +1,8 @@ +# PlatformSkillUpdateRequest + + +## 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 diff --git a/docs/models/platformskillupdateresponse.md b/docs/models/platformskillupdateresponse.md new file mode 100644 index 00000000..ae42e1d6 --- /dev/null +++ b/docs/models/platformskillupdateresponse.md @@ -0,0 +1,9 @@ +# PlatformSkillUpdateResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | +| `skill` | [models.PlatformSkill](../models/platformskill.md) | :heavy_check_mark: | N/A | +| `request_id` | *str* | :heavy_check_mark: | Platform-generated request ID for support correlation. | \ No newline at end of file diff --git a/docs/models/platformskillupdatestatus.md b/docs/models/platformskillupdatestatus.md new file mode 100644 index 00000000..898c434f --- /dev/null +++ b/docs/models/platformskillupdatestatus.md @@ -0,0 +1,19 @@ +# PlatformSkillUpdateStatus + +New status for the skill. + +## Example Usage + +```python +from glean.api_client.models import PlatformSkillUpdateStatus + +value = PlatformSkillUpdateStatus.ENABLED +``` + + +## Values + +| Name | Value | +| ---------- | ---------- | +| `ENABLED` | ENABLED | +| `DISABLED` | DISABLED | \ No newline at end of file diff --git a/docs/models/platformskillvalidationfile.md b/docs/models/platformskillvalidationfile.md new file mode 100644 index 00000000..446e41d4 --- /dev/null +++ b/docs/models/platformskillvalidationfile.md @@ -0,0 +1,10 @@ +# PlatformSkillValidationFile + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------- | --------------------------------------------- | --------------------------------------------- | --------------------------------------------- | +| `path` | *str* | :heavy_check_mark: | Normalized relative path in the skill bundle. | +| `size_bytes` | *int* | :heavy_check_mark: | File size in bytes. | +| `is_manifest` | *bool* | :heavy_check_mark: | Whether this file is the skill manifest. | \ No newline at end of file diff --git a/docs/models/platformskillvalidationmetadata.md b/docs/models/platformskillvalidationmetadata.md new file mode 100644 index 00000000..57900264 --- /dev/null +++ b/docs/models/platformskillvalidationmetadata.md @@ -0,0 +1,9 @@ +# PlatformSkillValidationMetadata + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | +| `display_name` | *str* | :heavy_check_mark: | Skill name parsed from SKILL.md frontmatter. | +| `description` | *str* | :heavy_check_mark: | Skill description parsed from SKILL.md frontmatter. | \ No newline at end of file diff --git a/docs/models/platformskillvalidationrequest.md b/docs/models/platformskillvalidationrequest.md new file mode 100644 index 00000000..f4ffbc51 --- /dev/null +++ b/docs/models/platformskillvalidationrequest.md @@ -0,0 +1,8 @@ +# PlatformSkillValidationRequest + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `file` | [models.PlatformSkillValidationRequestFile](../models/platformskillvalidationrequestfile.md) | :heavy_check_mark: | SKILL.md, .zip, or .skill bundle to validate. | \ No newline at end of file diff --git a/docs/models/platformskillvalidationrequestfile.md b/docs/models/platformskillvalidationrequestfile.md new file mode 100644 index 00000000..6802ab63 --- /dev/null +++ b/docs/models/platformskillvalidationrequestfile.md @@ -0,0 +1,10 @@ +# PlatformSkillValidationRequestFile + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------ | ------------------------------------ | ------------------------------------ | ------------------------------------ | +| `file_name` | *str* | :heavy_check_mark: | N/A | +| `content` | *Union[bytes, IO[bytes], io.IOBase]* | :heavy_check_mark: | N/A | +| `content_type` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/platformskillvalidationresponse.md b/docs/models/platformskillvalidationresponse.md new file mode 100644 index 00000000..9f8ab67f --- /dev/null +++ b/docs/models/platformskillvalidationresponse.md @@ -0,0 +1,11 @@ +# PlatformSkillValidationResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `metadata` | [models.PlatformSkillValidationMetadata](../models/platformskillvalidationmetadata.md) | :heavy_check_mark: | N/A | +| `files` | List[[models.PlatformSkillValidationFile](../models/platformskillvalidationfile.md)] | :heavy_check_mark: | Normalized files in the bundle after stripping an optional single root folder. | +| `warnings` | List[[models.PlatformWarning](../models/platformwarning.md)] | :heavy_check_mark: | Non-blocking validation warnings. | +| `request_id` | *str* | :heavy_check_mark: | Platform-generated request ID for support correlation. | \ No newline at end of file diff --git a/docs/models/platformskillversion.md b/docs/models/platformskillversion.md new file mode 100644 index 00000000..b0d05e4c --- /dev/null +++ b/docs/models/platformskillversion.md @@ -0,0 +1,15 @@ +# PlatformSkillVersion + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `skill_id` | *str* | :heavy_check_mark: | Glean skill ID. | +| `version` | *int* | :heavy_check_mark: | Major version number. | +| `minor_version` | *int* | :heavy_check_mark: | Minor version number. | +| `is_latest` | *bool* | :heavy_check_mark: | Whether this is the latest version of the skill. | +| `created_by` | [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 this version was created. | +| `updated_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | Time this version was last updated. | +| `source_provenance` | [Optional[models.PlatformSkillSourceProvenance]](../models/platformskillsourceprovenance.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/platformskillversioncreaterequest.md b/docs/models/platformskillversioncreaterequest.md new file mode 100644 index 00000000..8ef07fed --- /dev/null +++ b/docs/models/platformskillversioncreaterequest.md @@ -0,0 +1,8 @@ +# PlatformSkillVersionCreateRequest + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| `file` | [models.PlatformSkillVersionCreateRequestFile](../models/platformskillversioncreaterequestfile.md) | :heavy_check_mark: | SKILL.md, .zip, or .skill bundle to store as a new version. | \ No newline at end of file diff --git a/docs/models/platformskillversioncreaterequestfile.md b/docs/models/platformskillversioncreaterequestfile.md new file mode 100644 index 00000000..dcac880f --- /dev/null +++ b/docs/models/platformskillversioncreaterequestfile.md @@ -0,0 +1,10 @@ +# PlatformSkillVersionCreateRequestFile + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------ | ------------------------------------ | ------------------------------------ | ------------------------------------ | +| `file_name` | *str* | :heavy_check_mark: | N/A | +| `content` | *Union[bytes, IO[bytes], io.IOBase]* | :heavy_check_mark: | N/A | +| `content_type` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/platformskillversioncreateresponse.md b/docs/models/platformskillversioncreateresponse.md new file mode 100644 index 00000000..e355ae5e --- /dev/null +++ b/docs/models/platformskillversioncreateresponse.md @@ -0,0 +1,9 @@ +# PlatformSkillVersionCreateResponse + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | +| `version` | [models.PlatformSkillVersion](../models/platformskillversion.md) | :heavy_check_mark: | N/A | +| `request_id` | *str* | :heavy_check_mark: | Platform-generated request ID for support correlation. | \ No newline at end of file diff --git a/docs/models/platformskillversiongetresponse.md b/docs/models/platformskillversiongetresponse.md new file mode 100644 index 00000000..a89c7a90 --- /dev/null +++ b/docs/models/platformskillversiongetresponse.md @@ -0,0 +1,9 @@ +# PlatformSkillVersionGetResponse + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | +| `version` | [models.PlatformSkillVersion](../models/platformskillversion.md) | :heavy_check_mark: | N/A | +| `request_id` | *str* | :heavy_check_mark: | Platform-generated request ID for support correlation. | \ No newline at end of file diff --git a/docs/models/platformskillversionslistresponse.md b/docs/models/platformskillversionslistresponse.md new file mode 100644 index 00000000..edd94537 --- /dev/null +++ b/docs/models/platformskillversionslistresponse.md @@ -0,0 +1,11 @@ +# PlatformSkillVersionsListResponse + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | +| `versions` | 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/models/platformtimerange.md b/docs/models/platformtimerange.md new file mode 100644 index 00000000..ff19123b --- /dev/null +++ b/docs/models/platformtimerange.md @@ -0,0 +1,11 @@ +# PlatformTimeRange + +Filter results to those last updated within this range. + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | +| `start` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | Inclusive lower bound in ISO 8601 format. | +| `end` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | Exclusive upper bound in ISO 8601 format. | \ No newline at end of file diff --git a/docs/models/platformtrigger.md b/docs/models/platformtrigger.md new file mode 100644 index 00000000..d4597f36 --- /dev/null +++ b/docs/models/platformtrigger.md @@ -0,0 +1,15 @@ +# PlatformTrigger + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| `trigger_id` | *str* | :heavy_check_mark: | ID of the trigger. | trigger_test_123 | +| `preset_id` | *str* | :heavy_check_mark: | ID of the preset this trigger was created from. | GITHUB_1 | +| `description` | *Optional[str]* | :heavy_minus_sign: | Optional caller-supplied note describing this trigger. | Reviews I am tagged on, sent to my team's review channel | +| `status` | [models.PlatformTriggerStatus](../models/platformtriggerstatus.md) | :heavy_check_mark: | Current trigger lifecycle state. | ENABLED | +| `inputs` | Dict[str, *Any*] | :heavy_minus_sign: | Values supplied for the preset's inputs. | {
"repository": "acme/payments-api"
} | +| `delivery` | [models.PlatformTriggerDeliveryOutput](../models/platformtriggerdeliveryoutput.md) | :heavy_check_mark: | N/A | | +| `created_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | Time the trigger was created. | | +| `updated_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | Time the trigger was last updated. | | \ No newline at end of file diff --git a/docs/models/platformtriggerauth.md b/docs/models/platformtriggerauth.md new file mode 100644 index 00000000..bbe340e2 --- /dev/null +++ b/docs/models/platformtriggerauth.md @@ -0,0 +1,11 @@ +# PlatformTriggerAuth + +Optional caller credential sent as an HTTP auth header on each delivery, in addition to the HMAC signature. Lets the receiving endpoint authenticate the request. On update, omit `auth` to preserve the existing credential; there is no in-place removal — recreate the trigger to remove auth. + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | +| `type` | [models.PlatformTriggerAuthType](../models/platformtriggerauthtype.md) | :heavy_check_mark: | Credential scheme. | | +| `secret` | *str* | :heavy_check_mark: | Secret credential value. Write-only; never returned on reads. | secret_test_123 | \ No newline at end of file diff --git a/docs/models/platformtriggerauthoutput.md b/docs/models/platformtriggerauthoutput.md new file mode 100644 index 00000000..a83975e6 --- /dev/null +++ b/docs/models/platformtriggerauthoutput.md @@ -0,0 +1,10 @@ +# PlatformTriggerAuthOutput + +Optional caller credential sent as an HTTP auth header on each delivery, in addition to the HMAC signature. Lets the receiving endpoint authenticate the request. On update, omit `auth` to preserve the existing credential; there is no in-place removal — recreate the trigger to remove auth. + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | +| `type` | [models.PlatformTriggerAuthType](../models/platformtriggerauthtype.md) | :heavy_check_mark: | Credential scheme. | \ No newline at end of file diff --git a/docs/models/platformtriggerauthtype.md b/docs/models/platformtriggerauthtype.md new file mode 100644 index 00000000..18bca2b7 --- /dev/null +++ b/docs/models/platformtriggerauthtype.md @@ -0,0 +1,18 @@ +# PlatformTriggerAuthType + +Credential scheme. + +## Example Usage + +```python +from glean.api_client.models import PlatformTriggerAuthType + +value = PlatformTriggerAuthType.BEARER +``` + + +## Values + +| Name | Value | +| -------- | -------- | +| `BEARER` | BEARER | \ No newline at end of file diff --git a/docs/models/platformtriggercreaterequest.md b/docs/models/platformtriggercreaterequest.md new file mode 100644 index 00000000..cad7c614 --- /dev/null +++ b/docs/models/platformtriggercreaterequest.md @@ -0,0 +1,11 @@ +# PlatformTriggerCreateRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | +| `preset_id` | *str* | :heavy_check_mark: | ID of the preset to instantiate. | GITHUB_1 | +| `description` | *Optional[str]* | :heavy_minus_sign: | Optional note describing this trigger. | Reviews I am tagged on, sent to my team's review channel | +| `inputs` | Dict[str, *Any*] | :heavy_minus_sign: | Values for the preset's inputs. | {
"repository": "acme/payments-api"
} | +| `delivery` | [models.PlatformTriggerDelivery](../models/platformtriggerdelivery.md) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/models/platformtriggercreateresponse.md b/docs/models/platformtriggercreateresponse.md new file mode 100644 index 00000000..3a9417a8 --- /dev/null +++ b/docs/models/platformtriggercreateresponse.md @@ -0,0 +1,9 @@ +# PlatformTriggerCreateResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | +| `trigger` | [models.PlatformTriggerWithSecret](../models/platformtriggerwithsecret.md) | :heavy_check_mark: | N/A | +| `request_id` | *str* | :heavy_check_mark: | Platform-generated request ID for support correlation. | \ No newline at end of file diff --git a/docs/models/platformtriggerdelivery.md b/docs/models/platformtriggerdelivery.md new file mode 100644 index 00000000..cb603d90 --- /dev/null +++ b/docs/models/platformtriggerdelivery.md @@ -0,0 +1,9 @@ +# PlatformTriggerDelivery + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `webhook_url` | *str* | :heavy_check_mark: | HTTPS URL that signed events are delivered to. | https://customer.app/webhook | +| `auth` | [Optional[models.PlatformTriggerAuth]](../models/platformtriggerauth.md) | :heavy_minus_sign: | Optional caller credential sent as an HTTP auth header on each delivery, in addition to the HMAC signature. Lets the receiving endpoint authenticate the request. On update, omit `auth` to preserve the existing credential; there is no in-place removal — recreate the trigger to remove auth. | | \ No newline at end of file diff --git a/docs/models/platformtriggerdeliveryoutput.md b/docs/models/platformtriggerdeliveryoutput.md new file mode 100644 index 00000000..d99b2ca0 --- /dev/null +++ b/docs/models/platformtriggerdeliveryoutput.md @@ -0,0 +1,9 @@ +# PlatformTriggerDeliveryOutput + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `webhook_url` | *str* | :heavy_check_mark: | HTTPS URL that signed events are delivered to. | https://customer.app/webhook | +| `auth` | [Optional[models.PlatformTriggerAuthOutput]](../models/platformtriggerauthoutput.md) | :heavy_minus_sign: | Optional caller credential sent as an HTTP auth header on each delivery, in addition to the HMAC signature. Lets the receiving endpoint authenticate the request. On update, omit `auth` to preserve the existing credential; there is no in-place removal — recreate the trigger to remove auth. | | \ No newline at end of file diff --git a/docs/models/platformtriggerevent.md b/docs/models/platformtriggerevent.md new file mode 100644 index 00000000..b576bda6 --- /dev/null +++ b/docs/models/platformtriggerevent.md @@ -0,0 +1,17 @@ +# PlatformTriggerEvent + +A content event a trigger can fire on. + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `event_type` | [models.PlatformTriggerEventType](../models/platformtriggereventtype.md) | :heavy_check_mark: | The kind of event. | DOCUMENT_CHANGE | +| `datasource` | *str* | :heavy_check_mark: | Datasource the event originated from. | GITHUB | +| `reason` | [models.PlatformTriggerEventReason](../models/platformtriggereventreason.md) | :heavy_check_mark: | Why the event fired. | REVIEW_REQUESTED | +| `doc_type` | *str* | :heavy_check_mark: | Datasource-specific object type. | pull | +| `doc_id` | *str* | :heavy_check_mark: | Identifier of the document the event is about. | | +| `view_url` | *str* | :heavy_check_mark: | Link to the document in its source system. | | +| `title` | *str* | :heavy_check_mark: | Title of the document, or the subject for email. | | +| `event_time` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | When the event happened at the source: the document's own change timestamp for a document change, and the scheduled time for a content schedule. Omitted when the source did not supply one. | | \ No newline at end of file diff --git a/docs/models/platformtriggereventreason.md b/docs/models/platformtriggereventreason.md new file mode 100644 index 00000000..e3c221b8 --- /dev/null +++ b/docs/models/platformtriggereventreason.md @@ -0,0 +1,32 @@ +# PlatformTriggerEventReason + +Why the event fired. + +## Example Usage + +```python +from glean.api_client.models import PlatformTriggerEventReason + +value = PlatformTriggerEventReason.CREATED + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + + +## Values + +| Name | Value | +| ------------------------ | ------------------------ | +| `CREATED` | CREATED | +| `UPDATED` | UPDATED | +| `DELETED` | DELETED | +| `MEETS_CONDITION` | MEETS_CONDITION | +| `ASSIGNED` | ASSIGNED | +| `UNASSIGNED` | UNASSIGNED | +| `LABELED` | LABELED | +| `UNLABELED` | UNLABELED | +| `REVIEW_REQUESTED` | REVIEW_REQUESTED | +| `REVIEW_REQUEST_REMOVED` | REVIEW_REQUEST_REMOVED | +| `READY_FOR_REVIEW` | READY_FOR_REVIEW | +| `CONVERTED_TO_DRAFT` | CONVERTED_TO_DRAFT | +| `WEBHOOK_UPDATED` | WEBHOOK_UPDATED | \ No newline at end of file diff --git a/docs/models/platformtriggereventsearchrequest.md b/docs/models/platformtriggereventsearchrequest.md new file mode 100644 index 00000000..c81ec61c --- /dev/null +++ b/docs/models/platformtriggereventsearchrequest.md @@ -0,0 +1,8 @@ +# PlatformTriggerEventSearchRequest + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | +| `page_size` | *Optional[int]* | :heavy_minus_sign: | Maximum number of events to return. | \ No newline at end of file diff --git a/docs/models/platformtriggereventsearchresponse.md b/docs/models/platformtriggereventsearchresponse.md new file mode 100644 index 00000000..7aff8cbe --- /dev/null +++ b/docs/models/platformtriggereventsearchresponse.md @@ -0,0 +1,10 @@ +# PlatformTriggerEventSearchResponse + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | +| `results` | List[[models.PlatformTriggerEvent](../models/platformtriggerevent.md)] | :heavy_check_mark: | Matching events, most recent first. | +| `has_more` | *bool* | :heavy_check_mark: | Whether more events matched than were returned. Raise `page_size` to see more; cursor-based paging is not offered yet.
| +| `request_id` | *str* | :heavy_check_mark: | Unique identifier for this request, for support and debugging. | \ No newline at end of file diff --git a/docs/models/platformtriggereventtype.md b/docs/models/platformtriggereventtype.md new file mode 100644 index 00000000..09a8a1e8 --- /dev/null +++ b/docs/models/platformtriggereventtype.md @@ -0,0 +1,18 @@ +# PlatformTriggerEventType + +The kind of event. + +## Example Usage + +```python +from glean.api_client.models import PlatformTriggerEventType + +value = PlatformTriggerEventType.DOCUMENT_CHANGE +``` + + +## Values + +| Name | Value | +| ----------------- | ----------------- | +| `DOCUMENT_CHANGE` | DOCUMENT_CHANGE | \ No newline at end of file diff --git a/docs/models/platformtriggergetresponse.md b/docs/models/platformtriggergetresponse.md new file mode 100644 index 00000000..2f3a0c49 --- /dev/null +++ b/docs/models/platformtriggergetresponse.md @@ -0,0 +1,9 @@ +# PlatformTriggerGetResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | +| `trigger` | [models.PlatformTrigger](../models/platformtrigger.md) | :heavy_check_mark: | N/A | +| `request_id` | *str* | :heavy_check_mark: | Platform-generated request ID for support correlation. | \ No newline at end of file diff --git a/docs/models/platformtriggerlistresponse.md b/docs/models/platformtriggerlistresponse.md new file mode 100644 index 00000000..e4980bf5 --- /dev/null +++ b/docs/models/platformtriggerlistresponse.md @@ -0,0 +1,11 @@ +# PlatformTriggerListResponse + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | +| `results` | List[[models.PlatformTrigger](../models/platformtrigger.md)] | :heavy_check_mark: | Triggers owned by the caller. | +| `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/platformtriggerpreset.md b/docs/models/platformtriggerpreset.md new file mode 100644 index 00000000..2dc6db1f --- /dev/null +++ b/docs/models/platformtriggerpreset.md @@ -0,0 +1,12 @@ +# PlatformTriggerPreset + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| `preset_id` | *str* | :heavy_check_mark: | ID of the preset. Pass this when creating a trigger. | GITHUB_1 | +| `datasource` | *str* | :heavy_check_mark: | Datasource the preset fires on. | github | +| `display_name` | *str* | :heavy_check_mark: | Human-readable preset name. | Review requested from me | +| `description` | *Optional[str]* | :heavy_minus_sign: | Human-readable description of when the preset fires. | A review is requested from the trigger creator on a pull request | +| `inputs` | List[[models.PlatformTriggerPresetInput](../models/platformtriggerpresetinput.md)] | :heavy_check_mark: | Inputs the caller may supply when creating a trigger from this preset. | | \ No newline at end of file diff --git a/docs/models/platformtriggerpreseteventsearchrequest.md b/docs/models/platformtriggerpreseteventsearchrequest.md new file mode 100644 index 00000000..81d8fb83 --- /dev/null +++ b/docs/models/platformtriggerpreseteventsearchrequest.md @@ -0,0 +1,9 @@ +# PlatformTriggerPresetEventSearchRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | +| `inputs` | Dict[str, *str*] | :heavy_minus_sign: | Values for the preset's input fields, keyed by field name.
| {
"repository": "acme/payments-api"
} | +| `page_size` | *Optional[int]* | :heavy_minus_sign: | Maximum number of events to return. | | \ No newline at end of file diff --git a/docs/models/platformtriggerpresetgetresponse.md b/docs/models/platformtriggerpresetgetresponse.md new file mode 100644 index 00000000..cca8734b --- /dev/null +++ b/docs/models/platformtriggerpresetgetresponse.md @@ -0,0 +1,9 @@ +# PlatformTriggerPresetGetResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `trigger_preset` | [models.PlatformTriggerPreset](../models/platformtriggerpreset.md) | :heavy_check_mark: | N/A | +| `request_id` | *str* | :heavy_check_mark: | Platform-generated request ID for support correlation. | \ No newline at end of file diff --git a/docs/models/platformtriggerpresetinput.md b/docs/models/platformtriggerpresetinput.md new file mode 100644 index 00000000..9e232561 --- /dev/null +++ b/docs/models/platformtriggerpresetinput.md @@ -0,0 +1,13 @@ +# PlatformTriggerPresetInput + + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `field` | *str* | :heavy_check_mark: | Identifier of the input, supplied as a key in the trigger's `inputs`. | repository | +| `type` | [models.PlatformTriggerPresetInputType](../models/platformtriggerpresetinputtype.md) | :heavy_check_mark: | Type of a preset input. | PICKLIST | +| `display_name` | *str* | :heavy_check_mark: | Human-readable name for the input. | Repository | +| `is_required` | *bool* | :heavy_check_mark: | Whether the caller must supply a value for this input. | | +| `values` | List[[models.PlatformTriggerPresetInputValue](../models/platformtriggerpresetinputvalue.md)] | :heavy_minus_sign: | Bounded initial set of selectable values for a picklist input. Omitted entirely for free-text inputs.
| | +| `is_truncated` | *Optional[bool]* | :heavy_minus_sign: | Whether additional selectable values were omitted from `values`. When true, use GET /trigger-presets/{preset_id}/input-values with a query to narrow the result set.
| | \ No newline at end of file diff --git a/docs/models/platformtriggerpresetinputtype.md b/docs/models/platformtriggerpresetinputtype.md new file mode 100644 index 00000000..4b454180 --- /dev/null +++ b/docs/models/platformtriggerpresetinputtype.md @@ -0,0 +1,22 @@ +# PlatformTriggerPresetInputType + +Type of a preset input. + +## Example Usage + +```python +from glean.api_client.models import PlatformTriggerPresetInputType + +value = PlatformTriggerPresetInputType.PICKLIST + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + + +## Values + +| Name | Value | +| ---------- | ---------- | +| `PICKLIST` | PICKLIST | +| `TEXT` | TEXT | +| `USER` | USER | \ No newline at end of file diff --git a/docs/models/platformtriggerpresetinputvalue.md b/docs/models/platformtriggerpresetinputvalue.md new file mode 100644 index 00000000..7fb2c9f9 --- /dev/null +++ b/docs/models/platformtriggerpresetinputvalue.md @@ -0,0 +1,9 @@ +# PlatformTriggerPresetInputValue + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | +| `value` | *str* | :heavy_check_mark: | The exact value to send in the trigger's `inputs` for this choice (e.g. a channel name, a user's email, etc).
| acme/payments-api | +| `display_name` | *str* | :heavy_check_mark: | Human-readable name for this value. | acme/payments-api | \ No newline at end of file diff --git a/docs/models/platformtriggerpresetinputvaluelistresponse.md b/docs/models/platformtriggerpresetinputvaluelistresponse.md new file mode 100644 index 00000000..f76e44bd --- /dev/null +++ b/docs/models/platformtriggerpresetinputvaluelistresponse.md @@ -0,0 +1,10 @@ +# PlatformTriggerPresetInputValueListResponse + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | +| `results` | List[[models.PlatformTriggerPresetInputValue](../models/platformtriggerpresetinputvalue.md)] | :heavy_check_mark: | The bounded set of selectable values matching the query. | +| `is_truncated` | *bool* | :heavy_check_mark: | Whether additional matches were omitted. When true, refine `query` to narrow the result set.
| +| `request_id` | *str* | :heavy_check_mark: | Platform-generated request ID for support correlation. | \ No newline at end of file diff --git a/docs/models/platformtriggerpresetlistresponse.md b/docs/models/platformtriggerpresetlistresponse.md new file mode 100644 index 00000000..7d87f183 --- /dev/null +++ b/docs/models/platformtriggerpresetlistresponse.md @@ -0,0 +1,11 @@ +# PlatformTriggerPresetListResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `results` | List[[models.PlatformTriggerPresetSummary](../models/platformtriggerpresetsummary.md)] | :heavy_check_mark: | Trigger presets available to the caller. | +| `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/platformtriggerpresetseventssearchrequest.md b/docs/models/platformtriggerpresetseventssearchrequest.md new file mode 100644 index 00000000..5b9b8544 --- /dev/null +++ b/docs/models/platformtriggerpresetseventssearchrequest.md @@ -0,0 +1,9 @@ +# PlatformTriggerPresetsEventsSearchRequest + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `preset_id` | *str* | :heavy_check_mark: | ID of the preset to preview. | +| `platform_trigger_preset_event_search_request` | [Optional[models.PlatformTriggerPresetEventSearchRequest]](../models/platformtriggerpreseteventsearchrequest.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/platformtriggerpresetsgetrequest.md b/docs/models/platformtriggerpresetsgetrequest.md new file mode 100644 index 00000000..3649388d --- /dev/null +++ b/docs/models/platformtriggerpresetsgetrequest.md @@ -0,0 +1,8 @@ +# PlatformTriggerPresetsGetRequest + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------- | ----------------------------- | ----------------------------- | ----------------------------- | +| `preset_id` | *str* | :heavy_check_mark: | ID of the preset to retrieve. | \ No newline at end of file diff --git a/docs/models/platformtriggerpresetsinputvalueslistrequest.md b/docs/models/platformtriggerpresetsinputvalueslistrequest.md new file mode 100644 index 00000000..cb4a01b8 --- /dev/null +++ b/docs/models/platformtriggerpresetsinputvalueslistrequest.md @@ -0,0 +1,10 @@ +# PlatformTriggerPresetsInputValuesListRequest + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `preset_id` | *str* | :heavy_check_mark: | ID of the preset the input belongs to. | +| `field` | *str* | :heavy_check_mark: | Field identifier of the input whose values to list. | +| `query` | *Optional[str]* | :heavy_minus_sign: | Prefix filter over the input's option values, for typeahead. Matching is on the option value, not its display name.
| \ No newline at end of file diff --git a/docs/models/platformtriggerpresetslistrequest.md b/docs/models/platformtriggerpresetslistrequest.md new file mode 100644 index 00000000..5a300603 --- /dev/null +++ b/docs/models/platformtriggerpresetslistrequest.md @@ -0,0 +1,10 @@ +# PlatformTriggerPresetsListRequest + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `datasource` | *Optional[str]* | :heavy_minus_sign: | Restrict results to presets for a single datasource (e.g. github). | +| `page_size` | *Optional[int]* | :heavy_minus_sign: | Maximum number of presets to return. | +| `cursor` | *Optional[str]* | :heavy_minus_sign: | Opaque pagination cursor from a previous response. | \ No newline at end of file diff --git a/docs/models/platformtriggerpresetsummary.md b/docs/models/platformtriggerpresetsummary.md new file mode 100644 index 00000000..18f731ce --- /dev/null +++ b/docs/models/platformtriggerpresetsummary.md @@ -0,0 +1,11 @@ +# PlatformTriggerPresetSummary + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | +| `preset_id` | *str* | :heavy_check_mark: | ID of the preset. Pass this when creating a trigger. | GITHUB_1 | +| `datasource` | *str* | :heavy_check_mark: | Datasource the preset fires on. | github | +| `display_name` | *str* | :heavy_check_mark: | Human-readable preset name. | Review requested from me | +| `description` | *Optional[str]* | :heavy_minus_sign: | Human-readable description of when the preset fires. | A review is requested from the trigger creator on a pull request | \ No newline at end of file diff --git a/docs/models/platformtriggerscreatetriggerwebhookeventrequest.md b/docs/models/platformtriggerscreatetriggerwebhookeventrequest.md new file mode 100644 index 00000000..9a28c2e8 --- /dev/null +++ b/docs/models/platformtriggerscreatetriggerwebhookeventrequest.md @@ -0,0 +1,11 @@ +# PlatformTriggersCreateTriggerWebhookEventRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `webhook_id` | *str* | :heavy_check_mark: | Opaque delivery ID. It remains stable across retries of the same event and can be used as an idempotency key. | msg_test_123 | +| `webhook_timestamp` | *int* | :heavy_check_mark: | Unix time in seconds when this delivery attempt was signed. | 1700000000 | +| `webhook_signature` | *str* | :heavy_check_mark: | `v1,` followed by the standard Base64-encoded HMAC-SHA256 digest. To verify it, remove the
`whsec_` prefix from `signing_secret`, standard-Base64-decode the remainder, and use those
bytes as the HMAC key. Sign the UTF-8 bytes of `webhook-id + "." + webhook-timestamp + "."
+ raw request body`. Verify the signature against the unmodified request body before
parsing JSON, and use a constant-time comparison.

Fixed test vector (the raw body is one line with no trailing newline):

- decoded signing key bytes (UTF-8; test only): `test_webhook_signing_secret_1234`
- `webhook-id`: `81e6dc877ac553ef96ecbc939c1e46431159491991ba55cd131fbd0e3746c6bc`
- `webhook-timestamp`: `1700000000`
- `raw request body`: `{"version":"1","trigger_id":"trigger_test_123","datasource":"GITHUB","reason":"REVIEW_REQUESTED","doc_type":"pull","event_type":"DOCUMENT_CHANGE","doc_id":"GITHUB_pull_123","view_url":"https://github.com/acme/payments-api/pull/123","title":"Add retry backoff to the crawler","event_time":"2025-04-23T11:00:00Z"}`
- `webhook-signature`: `v1,JqvHW0dwAOSLndiwQdXLUS/P+2RvOO8x4sOWgA/w0Gs=`
| v1,xxx | +| `platform_trigger_webhook_event` | [models.PlatformTriggerWebhookEvent](../models/platformtriggerwebhookevent.md) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/models/platformtriggersdeleterequest.md b/docs/models/platformtriggersdeleterequest.md new file mode 100644 index 00000000..b31a34f2 --- /dev/null +++ b/docs/models/platformtriggersdeleterequest.md @@ -0,0 +1,8 @@ +# PlatformTriggersDeleteRequest + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------- | ---------------------------- | ---------------------------- | ---------------------------- | +| `trigger_id` | *str* | :heavy_check_mark: | ID of the trigger to delete. | \ No newline at end of file diff --git a/docs/models/platformtriggerseventssearchrequest.md b/docs/models/platformtriggerseventssearchrequest.md new file mode 100644 index 00000000..940d83b9 --- /dev/null +++ b/docs/models/platformtriggerseventssearchrequest.md @@ -0,0 +1,9 @@ +# PlatformTriggersEventsSearchRequest + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `trigger_id` | *str* | :heavy_check_mark: | ID of the trigger whose events to search. | +| `platform_trigger_event_search_request` | [Optional[models.PlatformTriggerEventSearchRequest]](../models/platformtriggereventsearchrequest.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/platformtriggersgetrequest.md b/docs/models/platformtriggersgetrequest.md new file mode 100644 index 00000000..e0823c58 --- /dev/null +++ b/docs/models/platformtriggersgetrequest.md @@ -0,0 +1,8 @@ +# PlatformTriggersGetRequest + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------ | ------------------------------ | ------------------------------ | ------------------------------ | +| `trigger_id` | *str* | :heavy_check_mark: | ID of the trigger to retrieve. | \ No newline at end of file diff --git a/docs/models/platformtriggerslistrequest.md b/docs/models/platformtriggerslistrequest.md new file mode 100644 index 00000000..8ca8fde1 --- /dev/null +++ b/docs/models/platformtriggerslistrequest.md @@ -0,0 +1,9 @@ +# PlatformTriggersListRequest + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `page_size` | *Optional[int]* | :heavy_minus_sign: | Maximum number of triggers to return. | +| `cursor` | *Optional[str]* | :heavy_minus_sign: | Opaque pagination cursor from a previous response. | \ No newline at end of file diff --git a/docs/models/platformtriggerstatus.md b/docs/models/platformtriggerstatus.md new file mode 100644 index 00000000..652a2371 --- /dev/null +++ b/docs/models/platformtriggerstatus.md @@ -0,0 +1,21 @@ +# PlatformTriggerStatus + +Current trigger lifecycle state. + +## Example Usage + +```python +from glean.api_client.models import PlatformTriggerStatus + +value = PlatformTriggerStatus.ENABLED + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + + +## Values + +| Name | Value | +| ---------- | ---------- | +| `ENABLED` | ENABLED | +| `DISABLED` | DISABLED | \ No newline at end of file diff --git a/docs/models/platformtriggersupdaterequest.md b/docs/models/platformtriggersupdaterequest.md new file mode 100644 index 00000000..8e9c286d --- /dev/null +++ b/docs/models/platformtriggersupdaterequest.md @@ -0,0 +1,9 @@ +# PlatformTriggersUpdateRequest + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| `trigger_id` | *str* | :heavy_check_mark: | ID of the trigger to update. | +| `platform_trigger_update_request` | [models.PlatformTriggerUpdateRequest](../models/platformtriggerupdaterequest.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/platformtriggerupdaterequest.md b/docs/models/platformtriggerupdaterequest.md new file mode 100644 index 00000000..9965fdb6 --- /dev/null +++ b/docs/models/platformtriggerupdaterequest.md @@ -0,0 +1,13 @@ +# PlatformTriggerUpdateRequest + +Partial update. Only the supplied fields are changed. + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| `status` | [Optional[models.PlatformTriggerStatus]](../models/platformtriggerstatus.md) | :heavy_minus_sign: | Current trigger lifecycle state. | ENABLED | +| `description` | *Optional[str]* | :heavy_minus_sign: | Optional note describing this trigger. | Reviews I am tagged on, sent to my team's review channel | +| `inputs` | Dict[str, *Any*] | :heavy_minus_sign: | Values for the preset's inputs. | {
"repository": "acme/payments-api"
} | +| `delivery` | [Optional[models.PlatformTriggerDelivery]](../models/platformtriggerdelivery.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/platformtriggerwebhookevent.md b/docs/models/platformtriggerwebhookevent.md new file mode 100644 index 00000000..a7a76198 --- /dev/null +++ b/docs/models/platformtriggerwebhookevent.md @@ -0,0 +1,19 @@ +# PlatformTriggerWebhookEvent + +Every delivered webhook is one of these two variants. A trigger with a cron schedule carries no document and so cannot be delivered over a webhook. + + +## Supported Types + +### `models.PlatformDocumentChangeWebhookEvent` + +```python +value: models.PlatformDocumentChangeWebhookEvent = /* values here */ +``` + +### `models.PlatformContentScheduleWebhookEvent` + +```python +value: models.PlatformContentScheduleWebhookEvent = /* values here */ +``` + diff --git a/docs/models/platformtriggerwithsecret.md b/docs/models/platformtriggerwithsecret.md new file mode 100644 index 00000000..c79b1eab --- /dev/null +++ b/docs/models/platformtriggerwithsecret.md @@ -0,0 +1,16 @@ +# PlatformTriggerWithSecret + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `trigger_id` | *str* | :heavy_check_mark: | ID of the trigger. | trigger_test_123 | +| `preset_id` | *str* | :heavy_check_mark: | ID of the preset this trigger was created from. | GITHUB_1 | +| `description` | *Optional[str]* | :heavy_minus_sign: | Optional caller-supplied note describing this trigger. | Reviews I am tagged on, sent to my team's review channel | +| `status` | [models.PlatformTriggerStatus](../models/platformtriggerstatus.md) | :heavy_check_mark: | Current trigger lifecycle state. | ENABLED | +| `inputs` | Dict[str, *Any*] | :heavy_minus_sign: | Values supplied for the preset's inputs. | {
"repository": "acme/payments-api"
} | +| `delivery` | [models.PlatformTriggerDeliveryOutput](../models/platformtriggerdeliveryoutput.md) | :heavy_check_mark: | N/A | | +| `created_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | Time the trigger was created. | | +| `updated_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | Time the trigger was last updated. | | +| `signing_secret` | *str* | :heavy_check_mark: | Secret for verifying webhook signatures, serialized as `whsec_` following Standard Webhooks. Returned only when the trigger is created and cannot be retrieved later. Store it securely. | whsec_xxx | \ No newline at end of file diff --git a/docs/models/platformwarning.md b/docs/models/platformwarning.md new file mode 100644 index 00000000..f0a2b5fa --- /dev/null +++ b/docs/models/platformwarning.md @@ -0,0 +1,11 @@ +# PlatformWarning + +Non-blocking warning attached to a successful Platform response. + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | +| `code` | *str* | :heavy_check_mark: | Open snake_case warning code. Clients must tolerate unknown values; the set of codes is not a closed enum.
| results_incomplete | +| `message` | *str* | :heavy_check_mark: | Human-readable warning message. | | \ No newline at end of file diff --git a/docs/models/postapiindexv1debugdatasourcedocumenteventsrequest.md b/docs/models/postapiindexv1debugdatasourcedocumenteventsrequest.md new file mode 100644 index 00000000..9f2b3c97 --- /dev/null +++ b/docs/models/postapiindexv1debugdatasourcedocumenteventsrequest.md @@ -0,0 +1,9 @@ +# PostAPIIndexV1DebugDatasourceDocumentEventsRequest + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| `datasource` | *str* | :heavy_check_mark: | The datasource to which the document belongs | +| `debug_document_lifecycle_request` | [models.DebugDocumentLifecycleRequest](../models/debugdocumentlifecyclerequest.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/postrestapiindexsubmissionsdatasourceinstancetyperequest.md b/docs/models/postrestapiindexsubmissionsdatasourceinstancetyperequest.md new file mode 100644 index 00000000..de52e08d --- /dev/null +++ b/docs/models/postrestapiindexsubmissionsdatasourceinstancetyperequest.md @@ -0,0 +1,10 @@ +# PostRestAPIIndexSubmissionsDatasourceInstanceTypeRequest + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | +| `datasource_instance` | *str* | :heavy_check_mark: | Datasource instance that should process the submission | +| `type` | *str* | :heavy_check_mark: | Submission type registered for the datasource | +| `request_body` | Dict[str, *Any*] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/postrestapiindexsubmissionsdatasourceinstancetyperesponse.md b/docs/models/postrestapiindexsubmissionsdatasourceinstancetyperesponse.md new file mode 100644 index 00000000..21e0e27e --- /dev/null +++ b/docs/models/postrestapiindexsubmissionsdatasourceinstancetyperesponse.md @@ -0,0 +1,10 @@ +# PostRestAPIIndexSubmissionsDatasourceInstanceTypeResponse + +Accepted + + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `request_id` | *str* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/processingstate.md b/docs/models/processingstate.md index 1054736b..63439d03 100644 --- a/docs/models/processingstate.md +++ b/docs/models/processingstate.md @@ -2,6 +2,16 @@ The current state of the upload, an enum of UNAVAILABLE, UPLOAD STARTED, UPLOAD IN PROGRESS, UPLOAD COMPLETED, DELETION PAUSED, INDEXING COMPLETED +## Example Usage + +```python +from glean.api_client.models import ProcessingState + +value = ProcessingState.UNAVAILABLE + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/prominence.md b/docs/models/prominence.md index f268bbdc..e2084849 100644 --- a/docs/models/prominence.md +++ b/docs/models/prominence.md @@ -2,6 +2,16 @@ The level of visual distinction that should be given to a result. +## Example Usage + +```python +from glean.api_client.models import Prominence + +value = Prominence.HERO + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/propertydefinition.md b/docs/models/propertydefinition.md index 9872d4c1..e34ed621 100644 --- a/docs/models/propertydefinition.md +++ b/docs/models/propertydefinition.md @@ -8,7 +8,7 @@ | `name` | *Optional[str]* | :heavy_minus_sign: | The name of the property in the `DocumentMetadata` (e.g. 'createTime', 'updateTime', 'author', 'container'). In the future, this will support custom properties too. | | `display_label` | *Optional[str]* | :heavy_minus_sign: | The user friendly label for the property. | | `display_label_plural` | *Optional[str]* | :heavy_minus_sign: | The user friendly label for the property that will be used if a plural context. | -| `property_type` | [Optional[models.PropertyType]](../models/propertytype.md) | :heavy_minus_sign: | The type of custom property - this governs the search and faceting behavior. Note that MULTIPICKLIST is not yet supported. | +| `property_type` | [Optional[models.PropertyDefinitionPropertyType]](../models/propertydefinitionpropertytype.md) | :heavy_minus_sign: | The type of custom property - this governs the search and faceting behavior. Note that MULTIPICKLIST is not yet supported. | | `ui_options` | [Optional[models.UIOptions]](../models/uioptions.md) | :heavy_minus_sign: | N/A | | `hide_ui_facet` | *Optional[bool]* | :heavy_minus_sign: | If true then the property will not show up as a facet in the UI. | | `ui_facet_order` | *Optional[int]* | :heavy_minus_sign: | Will be used to set the order of facets in the UI, if present. If set for one facet, must be set for all non-hidden UI facets. Must take on an integer value from 1 (shown at the top) to N (shown last), where N is the number of non-hidden UI facets. These facets will be ordered below the built-in "Type" and "Tag" operators. | diff --git a/docs/models/propertytype.md b/docs/models/propertydefinitionpropertytype.md similarity index 66% rename from docs/models/propertytype.md rename to docs/models/propertydefinitionpropertytype.md index 6ec9b3d3..732480e5 100644 --- a/docs/models/propertytype.md +++ b/docs/models/propertydefinitionpropertytype.md @@ -1,7 +1,17 @@ -# PropertyType +# PropertyDefinitionPropertyType The type of custom property - this governs the search and faceting behavior. Note that MULTIPICKLIST is not yet supported. +## Example Usage + +```python +from glean.api_client.models import PropertyDefinitionPropertyType + +value = PropertyDefinitionPropertyType.TEXT + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/provider.md b/docs/models/provider.md index d83acab1..4e51686e 100644 --- a/docs/models/provider.md +++ b/docs/models/provider.md @@ -1,5 +1,15 @@ # Provider +## Example Usage + +```python +from glean.api_client.models import Provider + +value = Provider.ZOOM + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/putrestapiindexcustommetadataschemagroupnamerequest.md b/docs/models/putrestapiindexcustommetadataschemagroupnamerequest.md new file mode 100644 index 00000000..342fa724 --- /dev/null +++ b/docs/models/putrestapiindexcustommetadataschemagroupnamerequest.md @@ -0,0 +1,9 @@ +# PutRestAPIIndexCustomMetadataSchemaGroupNameRequest + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | +| `group_name` | *str* | :heavy_check_mark: | Name of the metadata group schema | +| `custom_metadata_schema` | [models.CustomMetadataSchema](../models/custommetadataschema.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/putrestapiindexdocumentdocidcustommetadatagroupnamerequest.md b/docs/models/putrestapiindexdocumentdocidcustommetadatagroupnamerequest.md new file mode 100644 index 00000000..5af8c617 --- /dev/null +++ b/docs/models/putrestapiindexdocumentdocidcustommetadatagroupnamerequest.md @@ -0,0 +1,10 @@ +# PutRestAPIIndexDocumentDocIDCustomMetadataGroupNameRequest + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | +| `doc_id` | *str* | :heavy_check_mark: | Unique Glean identifier of the document | +| `group_name` | *str* | :heavy_check_mark: | Name of the metadata group as specified while adding schema | +| `custom_metadata_put_request` | [models.CustomMetadataPutRequest](../models/custommetadataputrequest.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/queryinsight.md b/docs/models/queryinsight.md deleted file mode 100644 index 6e9a3cc0..00000000 --- a/docs/models/queryinsight.md +++ /dev/null @@ -1,13 +0,0 @@ -# QueryInsight - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | -| `query` | *str* | :heavy_check_mark: | The query string the information is about. | -| `search_count` | [Optional[models.CountInfo]](../models/countinfo.md) | :heavy_minus_sign: | N/A | -| `searchor_count` | [Optional[models.CountInfo]](../models/countinfo.md) | :heavy_minus_sign: | N/A | -| `search_with_click_count` | [Optional[models.CountInfo]](../models/countinfo.md) | :heavy_minus_sign: | N/A | -| `click_count` | [Optional[models.CountInfo]](../models/countinfo.md) | :heavy_minus_sign: | N/A | -| `similar_queries` | List[[models.QueryInsight](../models/queryinsight.md)] | :heavy_minus_sign: | list of similar queries to current one. | \ No newline at end of file diff --git a/docs/models/queryinsightsresponse.md b/docs/models/queryinsightsresponse.md deleted file mode 100644 index 2780966e..00000000 --- a/docs/models/queryinsightsresponse.md +++ /dev/null @@ -1,12 +0,0 @@ -# QueryInsightsResponse - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | -| `last_log_timestamp` | *Optional[int]* | :heavy_minus_sign: | Unix timestamp of the last activity processed to make the response (in seconds since epoch UTC). | -| `query_insights` | List[[models.QueryInsight](../models/queryinsight.md)] | :heavy_minus_sign: | Insights for queries. | -| `low_performing_query_insights` | List[[models.QueryInsight](../models/queryinsight.md)] | :heavy_minus_sign: | Insights for low performing queries without good results. | -| `departments` | List[*str*] | :heavy_minus_sign: | list of departments applicable for queries tab. | -| `min_visitor_threshold` | *Optional[int]* | :heavy_minus_sign: | Min threshold in number of visitors while populating results, otherwise 0. | \ No newline at end of file diff --git a/docs/models/querysuggestion.md b/docs/models/querysuggestion.md index ebd5621b..b1ef6c68 100644 --- a/docs/models/querysuggestion.md +++ b/docs/models/querysuggestion.md @@ -3,14 +3,14 @@ ## Fields -| Field | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `missing_term` | *Optional[str]* | :heavy_minus_sign: | A query term missing from the original query on which this suggestion is based. | | -| `query` | *str* | :heavy_check_mark: | The query being suggested (e.g. enforcing the missing term from the original query). | | -| `search_provider_info` | [Optional[models.SearchProviderInfo]](../models/searchproviderinfo.md) | :heavy_minus_sign: | N/A | {
"name": "Google",
"logo": "https://app.glean.com/images/feather/globe.svg",
"searchLinkUrlTemplate": "https://www.google.com/search?q={query}\u0026hl=en"
} | -| `label` | *Optional[str]* | :heavy_minus_sign: | A user-facing description to display for the suggestion. | | -| `datasource` | *Optional[str]* | :heavy_minus_sign: | The datasource associated with the suggestion. | | -| `result_tab` | [Optional[models.ResultTab]](../models/resulttab.md) | :heavy_minus_sign: | N/A | | -| `request_options` | [Optional[models.SearchRequestOptions]](../models/searchrequestoptions.md) | :heavy_minus_sign: | N/A | {
"datasourceFilter": "JIRA",
"datasourcesFilter": [
"JIRA"
],
"queryOverridesFacetFilters": true,
"facetFilters": [
{
"fieldName": "fieldName",
"values": [
"fieldValues",
"fieldValues"
]
},
{
"fieldName": "fieldName",
"values": [
"fieldValues",
"fieldValues"
]
}
]
} | -| `ranges` | List[[models.TextRange](../models/textrange.md)] | :heavy_minus_sign: | The bolded ranges within the query of the QuerySuggestion. | | -| `input_details` | [Optional[models.SearchRequestInputDetails]](../models/searchrequestinputdetails.md) | :heavy_minus_sign: | N/A | {
"hasCopyPaste": true
} | \ No newline at end of file +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `missing_term` | *Optional[str]* | :heavy_minus_sign: | A query term missing from the original query on which this suggestion is based. | | +| `query` | *str* | :heavy_check_mark: | The query being suggested (e.g. enforcing the missing term from the original query). | | +| `search_provider_info` | [Optional[models.SearchProviderInfo]](../models/searchproviderinfo.md) | :heavy_minus_sign: | N/A | {
"name": "Google",
"logo": "https://app.glean.com/images/feather/globe.svg",
"searchLinkUrlTemplate": "https://www.google.com/search?q={query}\u0026hl=en"
} | +| `label` | *Optional[str]* | :heavy_minus_sign: | A user-facing description to display for the suggestion. | | +| `datasource` | *Optional[str]* | :heavy_minus_sign: | The datasource associated with the suggestion. | | +| `result_tab` | [Optional[models.ResultTab]](../models/resulttab.md) | :heavy_minus_sign: | N/A | | +| `request_options` | [Optional[models.SearchRequestOptions]](../models/searchrequestoptions.md) | :heavy_minus_sign: | N/A | {
"datasourceFilter": "JIRA",
"datasourcesFilter": [
"JIRA"
],
"queryOverridesFacetFilters": true,
"facetFilters": [
{
"fieldName": "fieldName",
"values": [
{
"value": "fieldValues",
"relationType": "EQUALS"
},
{
"value": "fieldValues",
"relationType": "EQUALS"
}
]
},
{
"fieldName": "fieldName",
"values": [
{
"value": "fieldValues",
"relationType": "EQUALS"
},
{
"value": "fieldValues",
"relationType": "EQUALS"
}
]
}
]
} | +| `ranges` | List[[models.TextRange](../models/textrange.md)] | :heavy_minus_sign: | The bolded ranges within the query of the QuerySuggestion. | | +| `input_details` | [Optional[models.SearchRequestInputDetails]](../models/searchrequestinputdetails.md) | :heavy_minus_sign: | N/A | {
"hasCopyPaste": true
} | \ No newline at end of file diff --git a/docs/models/recommendationsrequestrequest.md b/docs/models/recommendationsrequestrequest.md new file mode 100644 index 00000000..763a6dba --- /dev/null +++ b/docs/models/recommendationsrequestrequest.md @@ -0,0 +1,9 @@ +# RecommendationsRequestRequest + + +## Fields + +| Field | 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`. | +| `recommendations_request` | [models.RecommendationsRequest](../models/recommendationsrequest.md) | :heavy_check_mark: | Recommendations request | \ No newline at end of file diff --git a/docs/models/relateddocuments.md b/docs/models/relateddocuments.md index 62296266..0002a5a9 100644 --- a/docs/models/relateddocuments.md +++ b/docs/models/relateddocuments.md @@ -3,10 +3,10 @@ ## Fields -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `relation` | [Optional[models.Relation]](../models/relation.md) | :heavy_minus_sign: | How this document relates to the including entity. | | -| `associated_entity_id` | *Optional[str]* | :heavy_minus_sign: | Which entity in the response that this entity relates to. Relevant when there are multiple entities associated with the response (such as merged customers) | | -| `query_suggestion` | [Optional[models.QuerySuggestion]](../models/querysuggestion.md) | :heavy_minus_sign: | N/A | {
"query": "app:github type:pull author:mortimer",
"label": "Mortimer's PRs",
"datasource": "github"
} | -| ~~`documents`~~ | List[[models.Document](../models/document.md)] | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

A truncated list of documents with this relation. TO BE DEPRECATED. | | -| `results` | List[[models.SearchResult](../models/searchresult.md)] | :heavy_minus_sign: | A truncated list of documents associated with this relation. To be used in favor of `documents` because it contains a trackingToken. | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `relation` | [Optional[models.Relation]](../models/relation.md) | :heavy_minus_sign: | How this document relates to the including entity. | | +| `associated_entity_id` | *Optional[str]* | :heavy_minus_sign: | Which entity in the response that this entity relates to. Relevant when there are multiple entities associated with the response (such as merged customers) | | +| `query_suggestion` | [Optional[models.QuerySuggestion]](../models/querysuggestion.md) | :heavy_minus_sign: | N/A | {
"query": "app:github type:pull author:mortimer",
"label": "Mortimer's PRs",
"datasource": "github"
} | +| ~~`documents`~~ | List[[models.Document](../models/document.md)] | :heavy_minus_sign: | : warning: ** DEPRECATED **: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Field is deprecated.

A truncated list of documents with this relation. TO BE DEPRECATED. | | +| `results` | List[[models.SearchResult](../models/searchresult.md)] | :heavy_minus_sign: | A truncated list of documents associated with this relation. To be used in favor of `documents` because it contains a trackingToken. | | \ No newline at end of file diff --git a/docs/models/relation.md b/docs/models/relation.md index 1912e0f8..dd90ac50 100644 --- a/docs/models/relation.md +++ b/docs/models/relation.md @@ -2,6 +2,16 @@ How this document relates to the including entity. +## Example Usage + +```python +from glean.api_client.models import Relation + +value = Relation.ATTACHMENT + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/relationtype.md b/docs/models/relationtype.md index 647876db..2ca42951 100644 --- a/docs/models/relationtype.md +++ b/docs/models/relationtype.md @@ -1,5 +1,15 @@ # RelationType +## Example Usage + +```python +from glean.api_client.models import RelationType + +value = RelationType.EQUALS + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/reportstatusresponsestatus.md b/docs/models/reportstatusresponsestatus.md index c74ecd90..fbbf6879 100644 --- a/docs/models/reportstatusresponsestatus.md +++ b/docs/models/reportstatusresponsestatus.md @@ -1,5 +1,15 @@ # ReportStatusResponseStatus +## Example Usage + +```python +from glean.api_client.models import ReportStatusResponseStatus + +value = ReportStatusResponseStatus.PENDING + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/responsehint.md b/docs/models/responsehint.md index 82f866d3..fd0bd06d 100644 --- a/docs/models/responsehint.md +++ b/docs/models/responsehint.md @@ -2,6 +2,16 @@ Hints for the response content. +## Example Usage + +```python +from glean.api_client.models import ResponseHint + +value = ResponseHint.ALL_RESULT_COUNTS + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/responsestatus.md b/docs/models/responsestatus.md index 255ed6f1..bcd5413e 100644 --- a/docs/models/responsestatus.md +++ b/docs/models/responsestatus.md @@ -1,5 +1,15 @@ # ResponseStatus +## Example Usage + +```python +from glean.api_client.models import ResponseStatus + +value = ResponseStatus.ACCEPTED + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/role.md b/docs/models/role.md deleted file mode 100644 index 3a788dbf..00000000 --- a/docs/models/role.md +++ /dev/null @@ -1,14 +0,0 @@ -# ~~Role~~ - -DEPRECATED - use permissions instead. Viewer's role on the specific document. - -> :warning: **DEPRECATED**: This will be removed in a future release, please migrate away from it as soon as possible. - - -## Values - -| Name | Value | -| ------------------ | ------------------ | -| `ANSWER_MODERATOR` | ANSWER_MODERATOR | -| `OWNER` | OWNER | -| `VIEWER` | VIEWER | \ No newline at end of file diff --git a/docs/models/rotatedatasourcecredentialsrequest.md b/docs/models/rotatedatasourcecredentialsrequest.md new file mode 100644 index 00000000..2074cc10 --- /dev/null +++ b/docs/models/rotatedatasourcecredentialsrequest.md @@ -0,0 +1,12 @@ +# RotateDatasourceCredentialsRequest + +Request to rotate the credentials used by a datasource instance. Replaces the active credential material with the supplied values. +`credentials.values` must contain only keys recognized as credential material for the datasource type (for example `clientSecret` for OAuth, `apiToken` for API-token auth, `privateKey` for certificate auth). Unrecognized keys, or keys that correspond to non-credential configuration, cause a 400; use the configure endpoint to change non-credential config. + + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `credentials` | [models.DatasourceInstanceConfiguration](../models/datasourceinstanceconfiguration.md) | :heavy_check_mark: | Configuration for a datasource instance | \ No newline at end of file diff --git a/docs/models/rotatedatasourcecredentialsrequestrequest.md b/docs/models/rotatedatasourcecredentialsrequestrequest.md new file mode 100644 index 00000000..4a176545 --- /dev/null +++ b/docs/models/rotatedatasourcecredentialsrequestrequest.md @@ -0,0 +1,9 @@ +# RotateDatasourceCredentialsRequestRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `datasource_instance_id` | *str* | :heavy_check_mark: | The full datasource instance identifier (e.g. o365sharepoint_abc123) | o365sharepoint_abc123 | +| `rotate_datasource_credentials_request` | [models.RotateDatasourceCredentialsRequest](../models/rotatedatasourcecredentialsrequest.md) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/models/scope.md b/docs/models/scope.md index f1e50628..189ff0f7 100644 --- a/docs/models/scope.md +++ b/docs/models/scope.md @@ -1,5 +1,15 @@ # Scope +## Example Usage + +```python +from glean.api_client.models import Scope + +value = Scope.APP_CARD + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/scopetype.md b/docs/models/scopetype.md index e6c2e396..7c67e71c 100644 --- a/docs/models/scopetype.md +++ b/docs/models/scopetype.md @@ -2,6 +2,16 @@ Describes the scope for a ReadPermission, WritePermission, or GrantPermission object +## Example Usage + +```python +from glean.api_client.models import ScopeType + +value = ScopeType.GLOBAL + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/searchrequest.md b/docs/models/searchrequest.md index ae190b55..cc5de473 100644 --- a/docs/models/searchrequest.md +++ b/docs/models/searchrequest.md @@ -3,18 +3,18 @@ ## Fields -| Field | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `timestamp` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | The ISO 8601 timestamp associated with the client request. | | -| `tracking_token` | *Optional[str]* | :heavy_minus_sign: | A previously received trackingToken for a search associated with the same query. Useful for more requests and requests for other tabs. | | -| `session_info` | [Optional[models.SessionInfo]](../models/sessioninfo.md) | :heavy_minus_sign: | N/A | | -| `source_document` | [Optional[models.Document]](../models/document.md) | :heavy_minus_sign: | N/A | | -| `page_size` | *Optional[int]* | :heavy_minus_sign: | Hint to the server about how many results to send back. Server may return less or more. Structured results and clustered results don't count towards pageSize. | 100 | -| `max_snippet_size` | *Optional[int]* | :heavy_minus_sign: | Hint to the server about how many characters long a snippet may be. Server may return less or more. | 400 | -| `query` | *str* | :heavy_check_mark: | The search terms. | vacation policy | -| `cursor` | *Optional[str]* | :heavy_minus_sign: | Pagination cursor. A previously received opaque token representing the position in the overall results at which to start. | | -| `result_tab_ids` | List[*str*] | :heavy_minus_sign: | The unique IDs of the result tabs for which to fetch results. This will have precedence over datasource filters if both are specified and in conflict. | | -| `input_details` | [Optional[models.SearchRequestInputDetails]](../models/searchrequestinputdetails.md) | :heavy_minus_sign: | N/A | {
"hasCopyPaste": true
} | -| `request_options` | [Optional[models.SearchRequestOptions]](../models/searchrequestoptions.md) | :heavy_minus_sign: | N/A | {
"datasourceFilter": "JIRA",
"datasourcesFilter": [
"JIRA"
],
"queryOverridesFacetFilters": true,
"facetFilters": [
{
"fieldName": "fieldName",
"values": [
"fieldValues",
"fieldValues"
]
},
{
"fieldName": "fieldName",
"values": [
"fieldValues",
"fieldValues"
]
}
]
} | -| `timeout_millis` | *Optional[int]* | :heavy_minus_sign: | Timeout in milliseconds for the request. A `408` error will be returned if handling the request takes longer. | 5000 | -| `disable_spellcheck` | *Optional[bool]* | :heavy_minus_sign: | Whether or not to disable spellcheck. | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `timestamp` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | The ISO 8601 timestamp associated with the client request. | | +| `tracking_token` | *Optional[str]* | :heavy_minus_sign: | A previously received trackingToken for a search associated with the same query. Useful for more requests and requests for other tabs. | | +| `session_info` | [Optional[models.SessionInfo]](../models/sessioninfo.md) | :heavy_minus_sign: | N/A | | +| `source_document` | [Optional[models.Document]](../models/document.md) | :heavy_minus_sign: | N/A | | +| `page_size` | *Optional[int]* | :heavy_minus_sign: | Hint to the server about how many results to send back. Server may return less or more. Structured results and clustered results don't count towards pageSize. | 100 | +| `max_snippet_size` | *Optional[int]* | :heavy_minus_sign: | Hint to the server about how many characters long a snippet may be. Server may return less or more. | 400 | +| `query` | *str* | :heavy_check_mark: | The search terms. | vacation policy | +| `cursor` | *Optional[str]* | :heavy_minus_sign: | Pagination cursor. A previously received opaque token representing the position in the overall results at which to start. | | +| `result_tab_ids` | List[*str*] | :heavy_minus_sign: | The unique IDs of the result tabs for which to fetch results. This will have precedence over datasource filters if both are specified and in conflict. | | +| `input_details` | [Optional[models.SearchRequestInputDetails]](../models/searchrequestinputdetails.md) | :heavy_minus_sign: | N/A | {
"hasCopyPaste": true
} | +| `request_options` | [Optional[models.SearchRequestOptions]](../models/searchrequestoptions.md) | :heavy_minus_sign: | N/A | {
"datasourceFilter": "JIRA",
"datasourcesFilter": [
"JIRA"
],
"queryOverridesFacetFilters": true,
"facetFilters": [
{
"fieldName": "fieldName",
"values": [
{
"value": "fieldValues",
"relationType": "EQUALS"
},
{
"value": "fieldValues",
"relationType": "EQUALS"
}
]
},
{
"fieldName": "fieldName",
"values": [
{
"value": "fieldValues",
"relationType": "EQUALS"
},
{
"value": "fieldValues",
"relationType": "EQUALS"
}
]
}
]
} | +| `timeout_millis` | *Optional[int]* | :heavy_minus_sign: | Timeout in milliseconds for the request. A `408` error will be returned if handling the request takes longer. | 5000 | +| `disable_spellcheck` | *Optional[bool]* | :heavy_minus_sign: | Whether or not to disable spellcheck. | | \ No newline at end of file diff --git a/docs/models/searchrequestrequest.md b/docs/models/searchrequestrequest.md new file mode 100644 index 00000000..79efc8a7 --- /dev/null +++ b/docs/models/searchrequestrequest.md @@ -0,0 +1,9 @@ +# SearchRequestRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `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`. | | +| `search_request` | [models.SearchRequest](../models/searchrequest.md) | :heavy_check_mark: | Search request | {
"trackingToken": "trackingToken",
"query": "vacation policy",
"pageSize": 10,
"requestOptions": {
"facetFilters": [
{
"fieldName": "type",
"values": [
{
"value": "article",
"relationType": "EQUALS"
},
{
"value": "document",
"relationType": "EQUALS"
}
]
},
{
"fieldName": "department",
"values": [
{
"value": "engineering",
"relationType": "EQUALS"
}
]
}
]
}
} | \ No newline at end of file diff --git a/docs/models/searchresultprominenceenum.md b/docs/models/searchresultprominenceenum.md index 12605e2b..65f9fa4b 100644 --- a/docs/models/searchresultprominenceenum.md +++ b/docs/models/searchresultprominenceenum.md @@ -3,6 +3,16 @@ The level of visual distinction that should be given to a result. +## Example Usage + +```python +from glean.api_client.models import SearchResultProminenceEnum + +value = SearchResultProminenceEnum.HERO + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/searchresultsnippet.md b/docs/models/searchresultsnippet.md index 48c9b2b4..55f6c754 100644 --- a/docs/models/searchresultsnippet.md +++ b/docs/models/searchresultsnippet.md @@ -3,11 +3,11 @@ ## Fields -| Field | Type | Required | Description | -| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `mime_type` | *Optional[str]* | :heavy_minus_sign: | The mime type of the snippets, currently either text/plain or text/html. | -| `text` | *Optional[str]* | :heavy_minus_sign: | A matching snippet from the document with no highlights. | -| `snippet_text_ordering` | *Optional[int]* | :heavy_minus_sign: | Used for sorting based off the snippet's location within all_snippetable_text | -| `ranges` | List[[models.TextRange](../models/textrange.md)] | :heavy_minus_sign: | The bolded ranges within text. | -| `url` | *Optional[str]* | :heavy_minus_sign: | A URL, generated based on availability, that links to the position of the snippet text or to the nearest header above the snippet text. | -| ~~`snippet`~~ | *str* | :heavy_check_mark: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

A matching snippet from the document. Query term matches are marked by the unicode characters uE006 and uE007. Use 'text' field instead. | \ No newline at end of file +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `mime_type` | *Optional[str]* | :heavy_minus_sign: | The mime type of the snippets, currently either text/plain or text/html. | +| `text` | *Optional[str]* | :heavy_minus_sign: | A matching snippet from the document with no highlights. | +| `snippet_text_ordering` | *Optional[int]* | :heavy_minus_sign: | Used for sorting based off the snippet's location within all_snippetable_text | +| `ranges` | List[[models.TextRange](../models/textrange.md)] | :heavy_minus_sign: | The bolded ranges within text. | +| `url` | *Optional[str]* | :heavy_minus_sign: | A URL, generated based on availability, that links to the position of the snippet text or to the nearest header above the snippet text. | +| ~~`snippet`~~ | *Optional[str]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use 'text' field instead.

A matching snippet from the document. Query term matches are marked by the unicode characters uE006 and uE007. Use 'text' field instead. | \ No newline at end of file diff --git a/docs/models/sectiontype.md b/docs/models/sectiontype.md index efde2430..a9aa8331 100644 --- a/docs/models/sectiontype.md +++ b/docs/models/sectiontype.md @@ -2,6 +2,16 @@ Type of the section. This defines how the section should be interpreted and rendered in the digest. +## Example Usage + +```python +from glean.api_client.models import SectionType + +value = SectionType.CHANNEL + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/sensitivecontentoptions.md b/docs/models/sensitivecontentoptions.md index 3f2065d8..f0eae79c 100644 --- a/docs/models/sensitivecontentoptions.md +++ b/docs/models/sensitivecontentoptions.md @@ -5,9 +5,9 @@ Options for defining sensitive content within scanned documents. ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| ~~`sensitive_info_types`~~ | List[[models.SensitiveInfoType](../models/sensitiveinfotype.md)] | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

DEPRECATED - use 'customSensitiveExpressions' instead. | -| ~~`sensitive_terms`~~ | List[[models.SensitiveExpression](../models/sensitiveexpression.md)] | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

DEPRECATED - use 'customSensitiveExpressions' instead. | -| ~~`sensitive_regexes`~~ | List[[models.SensitiveExpression](../models/sensitiveexpression.md)] | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

DEPRECATED - use 'customSensitiveExpressions' instead. | -| `custom_sensitive_expressions` | List[[models.CustomSensitiveExpression](../models/customsensitiveexpression.md)] | :heavy_minus_sign: | list of custom sensitive expressions to consider as sensitive content | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| ~~`sensitive_info_types`~~ | List[[models.SensitiveInfoType](../models/sensitiveinfotype.md)] | :heavy_minus_sign: | : warning: ** DEPRECATED **: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use customSensitiveExpressions instead.

DEPRECATED - use 'customSensitiveExpressions' instead. | +| ~~`sensitive_terms`~~ | List[[models.SensitiveExpression](../models/sensitiveexpression.md)] | :heavy_minus_sign: | : warning: ** DEPRECATED **: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use customSensitiveExpressions instead.

DEPRECATED - use 'customSensitiveExpressions' instead. | +| ~~`sensitive_regexes`~~ | List[[models.SensitiveExpression](../models/sensitiveexpression.md)] | :heavy_minus_sign: | : warning: ** DEPRECATED **: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use customSensitiveExpressions instead.

DEPRECATED - use 'customSensitiveExpressions' instead. | +| `custom_sensitive_expressions` | List[[models.CustomSensitiveExpression](../models/customsensitiveexpression.md)] | :heavy_minus_sign: | list of custom sensitive expressions to consider as sensitive content | \ No newline at end of file diff --git a/docs/models/sensitiveinfotype.md b/docs/models/sensitiveinfotype.md index aa3f8f6e..cce44d49 100644 --- a/docs/models/sensitiveinfotype.md +++ b/docs/models/sensitiveinfotype.md @@ -3,7 +3,7 @@ ## Fields -| Field | Type | Required | Description | -| ----------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | -| ~~`likelihood_threshold`~~ | [Optional[models.SensitiveInfoTypeLikelihoodThreshold]](../models/sensitiveinfotypelikelihoodthreshold.md) | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible. | -| `info_type` | *Optional[str]* | :heavy_minus_sign: | Text representation of an info-type to scan for. | \ No newline at end of file +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | +| ~~`likelihood_threshold`~~ | [Optional[models.SensitiveInfoTypeLikelihoodThreshold]](../models/sensitiveinfotypelikelihoodthreshold.md) | :heavy_minus_sign: | : warning: ** DEPRECATED **: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Field is deprecated. | +| `info_type` | *Optional[str]* | :heavy_minus_sign: | Text representation of an info-type to scan for. | \ No newline at end of file diff --git a/docs/models/sensitiveinfotypelikelihoodthreshold.md b/docs/models/sensitiveinfotypelikelihoodthreshold.md index e0f05786..7f825e04 100644 --- a/docs/models/sensitiveinfotypelikelihoodthreshold.md +++ b/docs/models/sensitiveinfotypelikelihoodthreshold.md @@ -1,6 +1,16 @@ # ~~SensitiveInfoTypeLikelihoodThreshold~~ -> :warning: **DEPRECATED**: This will be removed in a future release, please migrate away from it as soon as possible. +> :warning: **DEPRECATED**: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Field is deprecated. + +## Example Usage + +```python +from glean.api_client.models import SensitiveInfoTypeLikelihoodThreshold + +value = SensitiveInfoTypeLikelihoodThreshold.LIKELY + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` ## Values diff --git a/docs/models/servertoolrequest.md b/docs/models/servertoolrequest.md new file mode 100644 index 00000000..180a4193 --- /dev/null +++ b/docs/models/servertoolrequest.md @@ -0,0 +1,13 @@ +# ServerToolRequest + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | +| `request_type` | [models.ServerToolRequestRequestType](../models/servertoolrequestrequesttype.md) | :heavy_check_mark: | The type of request made to the user. | +| `request_id` | *str* | :heavy_check_mark: | Unique identifier for this request. | +| `tool_display_name` | *Optional[str]* | :heavy_minus_sign: | Human-readable display name for the tool. | +| `server_id` | *Optional[str]* | :heavy_minus_sign: | Unique identifier of the tool server. Use with GET /tool-servers/{serverId}/auth
to resolve display information and authentication status.
| +| `tool_cta` | *Optional[str]* | :heavy_minus_sign: | Custom call-to-action (CTA) verb for the approval button (e.g., "Create", "Update", "Send"). | +| `action_preview` | [Optional[models.ActionPreview]](../models/actionpreview.md) | :heavy_minus_sign: | Preview information for an action being executed. | \ No newline at end of file diff --git a/docs/models/servertoolrequestrequesttype.md b/docs/models/servertoolrequestrequesttype.md new file mode 100644 index 00000000..7a1e6721 --- /dev/null +++ b/docs/models/servertoolrequestrequesttype.md @@ -0,0 +1,22 @@ +# ServerToolRequestRequestType + +The type of request made to the user. + +## Example Usage + +```python +from glean.api_client.models import ServerToolRequestRequestType + +value = ServerToolRequestRequestType.EXECUTION + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + + +## Values + +| Name | Value | +| --------------------------- | --------------------------- | +| `EXECUTION` | EXECUTION | +| `AUTHENTICATION_SUGGESTION` | AUTHENTICATION_SUGGESTION | +| `VOTE_SUGGESTION` | VOTE_SUGGESTION | \ No newline at end of file diff --git a/docs/models/servertoolresponse.md b/docs/models/servertoolresponse.md new file mode 100644 index 00000000..a29914c1 --- /dev/null +++ b/docs/models/servertoolresponse.md @@ -0,0 +1,27 @@ +# ServerToolResponse + +Response to a server tool request. The applicable fields depend on requestType: + +For EXECUTION requests: +- isGranted: whether tool execution is approved +- reason: optional explanation + +For AUTHENTICATION_SUGGESTION requests: +- isGranted: whether auth completed successfully (true=connected, false=skipped) +- authContext: contains serverId or actionPackId for identifying the authenticated entity +- reason: optional explanation for skip + +For VOTE_SUGGESTION requests: +- voted: whether the user voted for this tool + + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| `request_type` | [models.ServerToolResponseRequestType](../models/servertoolresponserequesttype.md) | :heavy_check_mark: | The type of request made to the user. | +| `request_id` | *str* | :heavy_check_mark: | Unique identifier for this request. | +| `is_granted` | *Optional[bool]* | :heavy_minus_sign: | Whether tool request is granted (indicates approval for execution, or completion for auth). | +| `grant_scope` | [Optional[models.GrantScope]](../models/grantscope.md) | :heavy_minus_sign: | Scope of the approval grant. Only applicable when isGranted is true and requestType is EXECUTION.
| +| `auth_context` | [Optional[models.AuthContext]](../models/authcontext.md) | :heavy_minus_sign: | Context for authentication responses, containing identifiers for the entity being authenticated.
| \ No newline at end of file diff --git a/docs/models/servertoolresponserequesttype.md b/docs/models/servertoolresponserequesttype.md new file mode 100644 index 00000000..ad53ed32 --- /dev/null +++ b/docs/models/servertoolresponserequesttype.md @@ -0,0 +1,22 @@ +# ServerToolResponseRequestType + +The type of request made to the user. + +## Example Usage + +```python +from glean.api_client.models import ServerToolResponseRequestType + +value = ServerToolResponseRequestType.EXECUTION + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + + +## Values + +| Name | Value | +| --------------------------- | --------------------------- | +| `EXECUTION` | EXECUTION | +| `AUTHENTICATION_SUGGESTION` | AUTHENTICATION_SUGGESTION | +| `VOTE_SUGGESTION` | VOTE_SUGGESTION | \ No newline at end of file diff --git a/docs/models/sharingoptions.md b/docs/models/sharingoptions.md index 6d419954..fb4801eb 100644 --- a/docs/models/sharingoptions.md +++ b/docs/models/sharingoptions.md @@ -5,13 +5,13 @@ Controls how "shared" a document must be to get picked for scans. ## Fields -| Field | Type | Required | Description | -| ----------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | -| ~~`enabled`~~ | *Optional[bool]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible. | -| `threshold` | *Optional[int]* | :heavy_minus_sign: | The minimum number of users the document is shared with. | -| `threshold_enabled` | *Optional[bool]* | :heavy_minus_sign: | Documents will be filtered based on how many people have access to it. | -| ~~`anyone_with_link_enabled`~~ | *Optional[bool]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible. | -| `anyone_internal_enabled` | *Optional[bool]* | :heavy_minus_sign: | Only users within the organization can access the document. | -| `anonymous_access_enabled` | *Optional[bool]* | :heavy_minus_sign: | Anyone on the internet can access the document. | -| `user_access_enabled` | *Optional[bool]* | :heavy_minus_sign: | Enable user access check | -| `user_ids` | List[*str*] | :heavy_minus_sign: | Any one of the specified users can access the document. | \ No newline at end of file +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | +| ~~`enabled`~~ | *Optional[bool]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Field is deprecated. | +| `threshold` | *Optional[int]* | :heavy_minus_sign: | The minimum number of users the document is shared with. | +| `threshold_enabled` | *Optional[bool]* | :heavy_minus_sign: | Documents will be filtered based on how many people have access to it. | +| ~~`anyone_with_link_enabled`~~ | *Optional[bool]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Field is deprecated. | +| `anyone_internal_enabled` | *Optional[bool]* | :heavy_minus_sign: | Only users within the organization can access the document. | +| `anonymous_access_enabled` | *Optional[bool]* | :heavy_minus_sign: | Anyone on the internet can access the document. | +| `user_access_enabled` | *Optional[bool]* | :heavy_minus_sign: | Enable user access check | +| `user_ids` | List[*str*] | :heavy_minus_sign: | Any one of the specified users can access the document. | \ No newline at end of file diff --git a/docs/models/shortcut.md b/docs/models/shortcut.md index bdbadaaf..f43f318c 100644 --- a/docs/models/shortcut.md +++ b/docs/models/shortcut.md @@ -26,4 +26,5 @@ | `edit_url` | *Optional[str]* | :heavy_minus_sign: | The URL using which the user can access the edit page of the shortcut. | | | `alias` | *Optional[str]* | :heavy_minus_sign: | canonical link text following go/ prefix where hyphen/underscore is removed. | | | `title` | *Optional[str]* | :heavy_minus_sign: | Title for the Go Link | | -| `roles` | List[[models.UserRoleSpecification](../models/userrolespecification.md)] | :heavy_minus_sign: | A list of user roles for the Go Link. | | \ No newline at end of file +| `roles` | List[[models.UserRoleSpecification](../models/userrolespecification.md)] | :heavy_minus_sign: | A list of user roles for the Go Link. | | +| `favorite_info` | [Optional[models.FavoriteInfo]](../models/favoriteinfo.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/shortcuterrorerrortype.md b/docs/models/shortcuterrorerrortype.md index a253b536..737b2781 100644 --- a/docs/models/shortcuterrorerrortype.md +++ b/docs/models/shortcuterrorerrortype.md @@ -1,5 +1,15 @@ # ShortcutErrorErrorType +## Example Usage + +```python +from glean.api_client.models import ShortcutErrorErrorType + +value = ShortcutErrorErrorType.NO_PERMISSION + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/shortcutinsight.md b/docs/models/shortcutinsight.md deleted file mode 100644 index 6ad32115..00000000 --- a/docs/models/shortcutinsight.md +++ /dev/null @@ -1,10 +0,0 @@ -# ShortcutInsight - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | -| `shortcut` | [models.Shortcut](../models/shortcut.md) | :heavy_check_mark: | N/A | -| `visit_count` | [Optional[models.CountInfo]](../models/countinfo.md) | :heavy_minus_sign: | N/A | -| `visitor_count` | [Optional[models.CountInfo]](../models/countinfo.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/shortcutinsightsresponse.md b/docs/models/shortcutinsightsresponse.md deleted file mode 100644 index 72d1b064..00000000 --- a/docs/models/shortcutinsightsresponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# ShortcutInsightsResponse - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | -| `last_log_timestamp` | *Optional[int]* | :heavy_minus_sign: | Unix timestamp of the last activity processed to make the response (in seconds since epoch UTC). | -| `shortcut_insights` | List[[models.ShortcutInsight](../models/shortcutinsight.md)] | :heavy_minus_sign: | Insights for shortcuts. | -| `departments` | List[*str*] | :heavy_minus_sign: | list of departments applicable for shortcuts tab. | -| `min_visitor_threshold` | *Optional[int]* | :heavy_minus_sign: | Min threshold in number of visitors while populating results, otherwise 0. | \ No newline at end of file diff --git a/docs/models/shortcutspaginationmetadata.md b/docs/models/shortcutspaginationmetadata.md index 34a47a29..c4b0b103 100644 --- a/docs/models/shortcutspaginationmetadata.md +++ b/docs/models/shortcutspaginationmetadata.md @@ -3,8 +3,8 @@ ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | -| `cursor` | *Optional[str]* | :heavy_minus_sign: | Cursor indicates the start of the next page of results | -| `has_next_page` | *Optional[bool]* | :heavy_minus_sign: | N/A | -| `total_item_count` | *Optional[int]* | :heavy_minus_sign: | N/A | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | +| `cursor` | *Optional[str]* | :heavy_minus_sign: | Cursor indicates the start of the next page of results | | +| `has_next_page` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `total_item_count` | *Optional[int]* | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/state.md b/docs/models/state.md index 3e6199e2..0b0039c5 100644 --- a/docs/models/state.md +++ b/docs/models/state.md @@ -2,6 +2,16 @@ The verification state for the document. +## Example Usage + +```python +from glean.api_client.models import State + +value = State.UNVERIFIED + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/structuredresultsource.md b/docs/models/structuredresultsource.md index fb03b801..75ce2720 100644 --- a/docs/models/structuredresultsource.md +++ b/docs/models/structuredresultsource.md @@ -2,6 +2,16 @@ Source context for this result. Possible values depend on the result type. +## Example Usage + +```python +from glean.api_client.models import StructuredResultSource + +value = StructuredResultSource.EXPERT_DETECTION + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/successresponse.md b/docs/models/successresponse.md new file mode 100644 index 00000000..16f7627a --- /dev/null +++ b/docs/models/successresponse.md @@ -0,0 +1,10 @@ +# SuccessResponse + +Success response for custom metadata operations + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------- | ----------------------------------------- | ----------------------------------------- | ----------------------------------------- | +| `success` | *Optional[bool]* | :heavy_minus_sign: | Indicates if the operation was successful | \ No newline at end of file diff --git a/docs/models/summarizerequestrequest.md b/docs/models/summarizerequestrequest.md new file mode 100644 index 00000000..e4f7d496 --- /dev/null +++ b/docs/models/summarizerequestrequest.md @@ -0,0 +1,9 @@ +# SummarizeRequestRequest + + +## Fields + +| Field | 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`. | +| `summarize_request` | [models.SummarizeRequest](../models/summarizerequest.md) | :heavy_check_mark: | Includes request params such as the query and specs of the documents to summarize. | \ No newline at end of file diff --git a/docs/models/teamstatus.md b/docs/models/teamstatus.md index 18176a76..4e615f21 100644 --- a/docs/models/teamstatus.md +++ b/docs/models/teamstatus.md @@ -2,6 +2,16 @@ whether this team is fully processed or there are still unprocessed operations that'll affect it +## Example Usage + +```python +from glean.api_client.models import TeamStatus + +value = TeamStatus.PROCESSED + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/textrangetype.md b/docs/models/textrangetype.md index 8d8927a7..1da1c5ec 100644 --- a/docs/models/textrangetype.md +++ b/docs/models/textrangetype.md @@ -1,5 +1,15 @@ # TextRangeType +## Example Usage + +```python +from glean.api_client.models import TextRangeType + +value = TextRangeType.BOLD + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/timepoint.md b/docs/models/timepoint.md index ce76aa4f..e187bd0d 100644 --- a/docs/models/timepoint.md +++ b/docs/models/timepoint.md @@ -3,7 +3,7 @@ ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | -| `epoch_seconds` | *Optional[int]* | :heavy_minus_sign: | Epoch seconds. Has precedence over daysFromNow. | -| `days_from_now` | *Optional[int]* | :heavy_minus_sign: | The number of days from now. Specification relative to current time. Can be negative. | \ No newline at end of file +| Field | Type | Required | Description | +| --------------------------------------------------------- | --------------------------------------------------------- | --------------------------------------------------------- | --------------------------------------------------------- | +| `epoch_seconds` | *Optional[int]* | :heavy_minus_sign: | Epoch seconds. Has precedence over daysFromNow. | +| `days_from_now` | *Optional[int]* | :heavy_minus_sign: | Number of days in the past, relative to the current date. | \ No newline at end of file diff --git a/docs/models/timerangefiltertimeperiodtype.md b/docs/models/timerangefiltertimeperiodtype.md index 30a69147..64f1bba3 100644 --- a/docs/models/timerangefiltertimeperiodtype.md +++ b/docs/models/timerangefiltertimeperiodtype.md @@ -2,6 +2,16 @@ The type of time period for which to filter findings. +## Example Usage + +```python +from glean.api_client.models import TimeRangeFilterTimePeriodType + +value = TimeRangeFilterTimePeriodType.PAST_DAY + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/tokenendpointauthmethod.md b/docs/models/tokenendpointauthmethod.md new file mode 100644 index 00000000..94b2406d --- /dev/null +++ b/docs/models/tokenendpointauthmethod.md @@ -0,0 +1,23 @@ +# TokenEndpointAuthMethod + +The OAuth 2.0 token endpoint authentication method (RFC 7591). Determines how the client authenticates when exchanging an authorization code for a token. Values use lowercase to match the OAuth 2.0 wire format (RFC 7591 Section 2). + +## Example Usage + +```python +from glean.api_client.models import TokenEndpointAuthMethod + +value = TokenEndpointAuthMethod.CLIENT_SECRET_POST + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + + +## Values + +| Name | Value | +| --------------------- | --------------------- | +| `CLIENT_SECRET_POST` | client_secret_post | +| `CLIENT_SECRET_BASIC` | client_secret_basic | +| `NONE` | none | +| `PRIVATE_KEY_JWT` | private_key_jwt | \ No newline at end of file diff --git a/docs/models/toolannotations.md b/docs/models/toolannotations.md new file mode 100644 index 00000000..32d40f76 --- /dev/null +++ b/docs/models/toolannotations.md @@ -0,0 +1,20 @@ +# ToolAnnotations + +Behavioural hints for the tool, exactly as declared by the tool server. No +defaults are filled in — see the per-field notes for what an absent value means. + +Per the MCP specification, clients MUST treat these hints as untrusted unless +the tool server is itself trusted. They are advisory metadata, not an +authorization signal, and must not be the sole basis of a security decision. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `read_only_hint` | *Optional[bool]* | :heavy_minus_sign: | True if the tool does not modify its environment. Always present. MCP
defines no distinction between an undeclared value and `false` here, so
`false` means "not declared read-only" rather than "declared mutating".
| +| `destructive_hint` | *OptionalNullable[bool]* | :heavy_minus_sign: | True if the tool may perform destructive updates. **Absent means the server
did not declare it**, for which the MCP default is `true`. Only meaningful
when `readOnlyHint` is `false`.
| +| `idempotent_hint` | *Optional[bool]* | :heavy_minus_sign: | True if repeated calls with the same arguments have no additional effect.
Always present; as with `readOnlyHint`, `false` means "not declared
idempotent". Only meaningful when `readOnlyHint` is `false`.
| +| `open_world_hint` | *OptionalNullable[bool]* | :heavy_minus_sign: | True if the tool interacts with an open world of external entities. **Absent
means the server did not declare it**, for which the MCP default is `true`.
| \ No newline at end of file diff --git a/docs/models/tooldefinition.md b/docs/models/tooldefinition.md new file mode 100644 index 00000000..1470fe61 --- /dev/null +++ b/docs/models/tooldefinition.md @@ -0,0 +1,13 @@ +# ToolDefinition + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `server_id` | *str* | :heavy_check_mark: | Tool server this tool belongs to. | +| `name` | *str* | :heavy_check_mark: | Name to invoke the tool by. | +| `display_name` | *Optional[str]* | :heavy_minus_sign: | Human-readable name of the tool. | +| `description` | *Optional[str]* | :heavy_minus_sign: | What the tool does, as surfaced to a model. | +| `input_schema` | Dict[str, *Any*] | :heavy_minus_sign: | JSON Schema for the tool's input parameters. | +| `annotations` | [Optional[models.ToolAnnotations]](../models/toolannotations.md) | :heavy_minus_sign: | Behavioural hints for the tool, exactly as declared by the tool server. No
defaults are filled in — see the per-field notes for what an absent value means.

Per the MCP specification, clients MUST treat these hints as untrusted unless
the tool server is itself trusted. They are advisory metadata, not an
authorization signal, and must not be the sole basis of a security decision.
| \ No newline at end of file diff --git a/docs/models/tooldefinitionsresponse.md b/docs/models/tooldefinitionsresponse.md new file mode 100644 index 00000000..42c552a1 --- /dev/null +++ b/docs/models/tooldefinitionsresponse.md @@ -0,0 +1,9 @@ +# ToolDefinitionsResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `tools` | List[[models.ToolDefinition](../models/tooldefinition.md)] | :heavy_check_mark: | Definitions for the requested tools that exist on this server. | +| `not_found` | List[*str*] | :heavy_minus_sign: | Requested names that do not exist on this server. | \ No newline at end of file diff --git a/docs/models/toolmetadata.md b/docs/models/toolmetadata.md index 1ef5b029..c40fa7ac 100644 --- a/docs/models/toolmetadata.md +++ b/docs/models/toolmetadata.md @@ -5,23 +5,24 @@ The manifest for a tool that can be used to augment Glean Assistant. ## Fields -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `type` | [models.ToolMetadataType](../models/toolmetadatatype.md) | :heavy_check_mark: | The type of tool. | | -| `name` | *str* | :heavy_check_mark: | Unique identifier for the tool. Name should be understandable by the LLM, and will be used to invoke a tool. | | -| `display_name` | *str* | :heavy_check_mark: | Human understandable name of the tool. Max 50 characters. | | -| `tool_id` | *Optional[str]* | :heavy_minus_sign: | An opaque id which is unique identifier for the tool. | | -| `display_description` | *str* | :heavy_check_mark: | Description of the tool meant for a human. | | -| `logo_url` | *Optional[str]* | :heavy_minus_sign: | URL used to fetch the logo. | | -| `object_name` | *Optional[str]* | :heavy_minus_sign: | Name of the generated object. This will be used to indicate to the end user what the generated object contains. | [
"HR ticket",
"Email",
"Chat message"
] | -| `knowledge_type` | [Optional[models.KnowledgeType]](../models/knowledgetype.md) | :heavy_minus_sign: | Indicates the kind of knowledge a tool would access or modify. | | -| `created_by` | [Optional[models.PersonObject]](../models/personobject.md) | :heavy_minus_sign: | N/A | | -| `last_updated_by` | [Optional[models.PersonObject]](../models/personobject.md) | :heavy_minus_sign: | N/A | | -| `created_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | The time the tool was created in ISO format (ISO 8601) | | -| `last_updated_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | The time the tool was last updated in ISO format (ISO 8601) | | -| `write_action_type` | [Optional[models.WriteActionType]](../models/writeactiontype.md) | :heavy_minus_sign: | Valid only for write actions. Represents the type of write action. REDIRECT - The client renders the URL which contains information for carrying out the action. EXECUTION - Send a request to an external server and execute the action. MCP - Send a tools/call request to an MCP server to execute the action. | | -| `auth_type` | [Optional[models.AuthType]](../models/authtype.md) | :heavy_minus_sign: | The type of authentication being used.
Use 'OAUTH_*' when Glean calls an external API (e.g., Jira) on behalf of a user to obtain an OAuth token.
'OAUTH_ADMIN' utilizes an admin token for external API calls on behalf all users.
'OAUTH_USER' uses individual user tokens for external API calls.
'DWD' refers to domain wide delegation.
| | -| `auth` | [Optional[models.AuthConfig]](../models/authconfig.md) | :heavy_minus_sign: | Config for tool's authentication method. | | -| `permissions` | [Optional[models.ObjectPermissions]](../models/objectpermissions.md) | :heavy_minus_sign: | N/A | | -| `usage_instructions` | *Optional[str]* | :heavy_minus_sign: | Usage instructions for the LLM to use this action. | | -| `is_setup_finished` | *Optional[bool]* | :heavy_minus_sign: | Whether this action has been fully configured and validated. | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `type` | [models.ToolMetadataType](../models/toolmetadatatype.md) | :heavy_check_mark: | The type of tool. | | +| `name` | *str* | :heavy_check_mark: | Unique identifier for the tool. Name should be understandable by the LLM, and will be used to invoke a tool. | | +| `display_name` | *str* | :heavy_check_mark: | Human understandable name of the tool. Max 50 characters. | | +| `tool_id` | *Optional[str]* | :heavy_minus_sign: | An opaque id which is unique identifier for the tool. | | +| `display_description` | *str* | :heavy_check_mark: | Description of the tool meant for a human. | | +| `logo_url` | *Optional[str]* | :heavy_minus_sign: | URL used to fetch the logo. | | +| `object_name` | *Optional[str]* | :heavy_minus_sign: | Name of the generated object. This will be used to indicate to the end user what the generated object contains. | HR ticket | +| `knowledge_type` | [Optional[models.KnowledgeType]](../models/knowledgetype.md) | :heavy_minus_sign: | Indicates the kind of knowledge a tool would access or modify. | | +| `created_by` | [Optional[models.PersonObject]](../models/personobject.md) | :heavy_minus_sign: | N/A | | +| `last_updated_by` | [Optional[models.PersonObject]](../models/personobject.md) | :heavy_minus_sign: | N/A | | +| `created_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | The time the tool was created in ISO format (ISO 8601) | | +| `last_updated_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | The time the tool was last updated in ISO format (ISO 8601) | | +| `write_action_type` | [Optional[models.WriteActionType]](../models/writeactiontype.md) | :heavy_minus_sign: | Valid only for write actions. Represents the type of write action. REDIRECT - The client renders the URL which contains information for carrying out the action. EXECUTION - Send a request to an external server and execute the action. MCP - Send a tools/call request to an MCP server to execute the action. | | +| `action_type_source` | [Optional[models.ActionTypeSource]](../models/actiontypesource.md) | :heavy_minus_sign: | Analytics-only signal (product snapshot) describing WHERE the action's
read/write determination came from. Complementary to the effective
read/write value (the tool's ToolType, which drives HITL): the value says
read-or-write, this says how confident that is. MCP_ANNOTATION = from the
tool's read-only/destructive hints; ADMIN_OVERRIDE = an admin set it;
NONE = no usable hint (the effective value then defaults to write);
NATIVE_TOOL_DEFINITION = from a curated native tool (snapshot-derived).
Does not affect runtime behavior.
| | +| `auth_type` | [Optional[models.AuthType]](../models/authtype.md) | :heavy_minus_sign: | The type of authentication being used.
Use 'OAUTH_*' when Glean calls an external API (e.g., Jira) on behalf of a user to obtain an OAuth token.
'OAUTH_ADMIN' utilizes an admin token for external API calls on behalf all users.
'OAUTH_USER' uses individual user tokens for external API calls.
'DWD' refers to domain wide delegation.
| | +| `auth` | [Optional[models.AuthConfig]](../models/authconfig.md) | :heavy_minus_sign: | Config for tool's authentication method. | | +| `permissions` | [Optional[models.ObjectPermissions]](../models/objectpermissions.md) | :heavy_minus_sign: | N/A | | +| `usage_instructions` | *Optional[str]* | :heavy_minus_sign: | Usage instructions for the LLM to use this action. | | +| `is_setup_finished` | *Optional[bool]* | :heavy_minus_sign: | Whether this action has been fully configured and validated. | | \ No newline at end of file diff --git a/docs/models/toolmetadatatype.md b/docs/models/toolmetadatatype.md index 8c8c0caa..5e5d327f 100644 --- a/docs/models/toolmetadatatype.md +++ b/docs/models/toolmetadatatype.md @@ -2,6 +2,16 @@ The type of tool. +## Example Usage + +```python +from glean.api_client.models import ToolMetadataType + +value = ToolMetadataType.RETRIEVAL + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/toolparametertype.md b/docs/models/toolparametertype.md index c9304b8a..c6fda07a 100644 --- a/docs/models/toolparametertype.md +++ b/docs/models/toolparametertype.md @@ -2,6 +2,16 @@ Parameter type (string, number, boolean, object, array) +## Example Usage + +```python +from glean.api_client.models import ToolParameterType + +value = ToolParameterType.STRING + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/toolserverauthstatus.md b/docs/models/toolserverauthstatus.md new file mode 100644 index 00000000..58b891ed --- /dev/null +++ b/docs/models/toolserverauthstatus.md @@ -0,0 +1,21 @@ +# ToolServerAuthStatus + +Authentication status for the calling user. + +## Example Usage + +```python +from glean.api_client.models import ToolServerAuthStatus + +value = ToolServerAuthStatus.AWAITING_AUTH + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + + +## Values + +| Name | Value | +| --------------- | --------------- | +| `AWAITING_AUTH` | AWAITING_AUTH | +| `AUTHORIZED` | AUTHORIZED | \ No newline at end of file diff --git a/docs/models/toolserverauthstatusresponse.md b/docs/models/toolserverauthstatusresponse.md new file mode 100644 index 00000000..c45e28a5 --- /dev/null +++ b/docs/models/toolserverauthstatusresponse.md @@ -0,0 +1,12 @@ +# ToolServerAuthStatusResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `display_name` | *Optional[str]* | :heavy_minus_sign: | Human-readable name of the tool server. | +| `logo_url` | *Optional[str]* | :heavy_minus_sign: | Logo URL for the tool server. | +| `description` | *Optional[str]* | :heavy_minus_sign: | Brief description of the tool server. | +| `auth_status` | [models.ToolServerAuthStatus](../models/toolserverauthstatus.md) | :heavy_check_mark: | Authentication status for the calling user. | +| `auth_type` | [models.ActionAuthType](../models/actionauthtype.md) | :heavy_check_mark: | Authentication mechanism used by an action pack.
- `AUTH_USER_OAUTH`: Requires per-user OAuth consent to the third-party tool.
- `AUTH_ADMIN`: Uses a service-account / admin-owned credential. End users do not authorize individually.
- `AUTH_NONE`: Action pack requires no authentication.
| \ No newline at end of file diff --git a/docs/models/tooltype.md b/docs/models/tooltype.md index ea9cde8d..c7f7adec 100644 --- a/docs/models/tooltype.md +++ b/docs/models/tooltype.md @@ -2,6 +2,16 @@ Type of tool (READ, WRITE) +## Example Usage + +```python +from glean.api_client.models import ToolType + +value = ToolType.READ + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/ugctype.md b/docs/models/ugctype.md index 252dc1e7..6eb0e284 100644 --- a/docs/models/ugctype.md +++ b/docs/models/ugctype.md @@ -1,13 +1,37 @@ # UgcType +## Example Usage + +```python +from glean.api_client.models import UgcType + +value = UgcType.AGENT_TYPE + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values | Name | Value | | ----------------------- | ----------------------- | +| `AGENT_TYPE` | AGENT_TYPE | | `ANNOUNCEMENTS_TYPE` | ANNOUNCEMENTS_TYPE | | `ANSWERS_TYPE` | ANSWERS_TYPE | +| `CHATS_TYPE` | CHATS_TYPE | | `COLLECTIONS_TYPE` | COLLECTIONS_TYPE | +| `EMAIL_TYPE` | EMAIL_TYPE | +| `HTML_CODE_TYPE` | HTML_CODE_TYPE | +| `IMAGE_TYPE` | IMAGE_TYPE | +| `MESSAGE_TYPE` | MESSAGE_TYPE | +| `PAPER_TYPE` | PAPER_TYPE | +| `PRISM_VIEWS_TYPE` | PRISM_VIEWS_TYPE | +| `PROMPT_TEMPLATES_TYPE` | PROMPT_TEMPLATES_TYPE | +| `PINS_TYPE` | PINS_TYPE | +| `SCRIBES_TYPE` | SCRIBES_TYPE | | `SHORTCUTS_TYPE` | SHORTCUTS_TYPE | -| `WORKFLOWS_TYPE` | WORKFLOWS_TYPE | -| `PROMPT_TEMPLATES_TYPE` | PROMPT_TEMPLATES_TYPE | \ No newline at end of file +| `SLIDE_TYPE` | SLIDE_TYPE | +| `SPREADSHEET_TYPE` | SPREADSHEET_TYPE | +| `INLINE_HTML_TYPE` | INLINE_HTML_TYPE | +| `PODCAST_TYPE` | PODCAST_TYPE | +| `WORKFLOWS_TYPE` | WORKFLOWS_TYPE | \ No newline at end of file diff --git a/docs/models/uioptions.md b/docs/models/uioptions.md index ee50fe80..658ce2f5 100644 --- a/docs/models/uioptions.md +++ b/docs/models/uioptions.md @@ -1,5 +1,15 @@ # UIOptions +## Example Usage + +```python +from glean.api_client.models import UIOptions + +value = UIOptions.NONE + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/unauthorizeddatasourceinstance.md b/docs/models/unauthorizeddatasourceinstance.md new file mode 100644 index 00000000..4996cf51 --- /dev/null +++ b/docs/models/unauthorizeddatasourceinstance.md @@ -0,0 +1,14 @@ +# UnauthorizedDatasourceInstance + +A datasource instance that could not return results for this request because the user has not completed or has expired per-user OAuth. + + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `datasource_instance` | *Optional[str]* | :heavy_minus_sign: | The instance identifier (e.g. "github", "github_enterprise_0", "slack_0"). Matches the instance names used in datasource configuration.
| slack_0 | +| `display_name` | *Optional[str]* | :heavy_minus_sign: | Human-readable name of the datasource instance for display. | Slack | +| `auth_status` | [Optional[models.AuthStatus]](../models/authstatus.md) | :heavy_minus_sign: | The per-user authorization status for a datasource. | | +| `auth_url_relative_path` | *Optional[str]* | :heavy_minus_sign: | Relative path to initiate or resume OAuth for the current user and instance, including a one-time authentication token as a query parameter. Clients should prepend their configured Glean backend base URL.
| | \ No newline at end of file diff --git a/docs/models/unpinrequest.md b/docs/models/unpinrequest.md new file mode 100644 index 00000000..41084238 --- /dev/null +++ b/docs/models/unpinrequest.md @@ -0,0 +1,9 @@ +# UnpinRequest + + +## Fields + +| Field | 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`. | +| `unpin` | [models.Unpin](../models/unpin.md) | :heavy_check_mark: | Details about the pin being unpinned. | \ No newline at end of file diff --git a/docs/models/updateannouncementrequestchannel.md b/docs/models/updateannouncementrequestchannel.md index aea73b61..efb4113f 100644 --- a/docs/models/updateannouncementrequestchannel.md +++ b/docs/models/updateannouncementrequestchannel.md @@ -2,6 +2,14 @@ This determines whether this is a Social Feed post or a regular announcement. +## Example Usage + +```python +from glean.api_client.models import UpdateAnnouncementRequestChannel + +value = UpdateAnnouncementRequestChannel.MAIN +``` + ## Values diff --git a/docs/models/updateannouncementrequestposttype.md b/docs/models/updateannouncementrequestposttype.md index b5229e36..78d1989d 100644 --- a/docs/models/updateannouncementrequestposttype.md +++ b/docs/models/updateannouncementrequestposttype.md @@ -2,6 +2,14 @@ This determines whether this is an external-link post or a regular announcement post. TEXT - Regular announcement that can contain rich text. LINK - Announcement that is linked to an external site. +## Example Usage + +```python +from glean.api_client.models import UpdateAnnouncementRequestPostType + +value = UpdateAnnouncementRequestPostType.TEXT +``` + ## Values diff --git a/docs/models/updateannouncementrequestrequest.md b/docs/models/updateannouncementrequestrequest.md new file mode 100644 index 00000000..e08d3f9c --- /dev/null +++ b/docs/models/updateannouncementrequestrequest.md @@ -0,0 +1,9 @@ +# UpdateannouncementRequestRequest + + +## Fields + +| Field | 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`. | +| `update_announcement_request` | [models.UpdateAnnouncementRequest](../models/updateannouncementrequest.md) | :heavy_check_mark: | Announcement content. Id need to be specified for the announcement. | \ No newline at end of file diff --git a/docs/models/updatedatasourceconfigurationrequest.md b/docs/models/updatedatasourceconfigurationrequest.md new file mode 100644 index 00000000..938e8f1b --- /dev/null +++ b/docs/models/updatedatasourceconfigurationrequest.md @@ -0,0 +1,11 @@ +# UpdateDatasourceConfigurationRequest + +Request to update greenlisted configuration values for a datasource instance. Only keys that are exposed via the public API greenlist may be set. + + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `configuration` | [models.DatasourceInstanceConfiguration](../models/datasourceinstanceconfiguration.md) | :heavy_check_mark: | Configuration for a datasource instance | \ No newline at end of file diff --git a/docs/models/updatedatasourceinstanceconfigurationrequest.md b/docs/models/updatedatasourceinstanceconfigurationrequest.md new file mode 100644 index 00000000..50e0f667 --- /dev/null +++ b/docs/models/updatedatasourceinstanceconfigurationrequest.md @@ -0,0 +1,10 @@ +# UpdateDatasourceInstanceConfigurationRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | +| `datasource_id` | *str* | :heavy_check_mark: | The datasource type identifier (e.g. o365sharepoint) | o365sharepoint | +| `instance_id` | *str* | :heavy_check_mark: | The datasource instance identifier | o365sharepoint_abc123 | +| `update_datasource_configuration_request` | [models.UpdateDatasourceConfigurationRequest](../models/updatedatasourceconfigurationrequest.md) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/models/updateshortcutrequestrequest.md b/docs/models/updateshortcutrequestrequest.md new file mode 100644 index 00000000..cf21e686 --- /dev/null +++ b/docs/models/updateshortcutrequestrequest.md @@ -0,0 +1,9 @@ +# UpdateshortcutRequestRequest + + +## Fields + +| Field | 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`. | +| `update_shortcut_request` | [models.UpdateShortcutRequest](../models/updateshortcutrequest.md) | :heavy_check_mark: | Shortcut content. Id need to be specified for the shortcut. | \ No newline at end of file diff --git a/docs/models/updatetype.md b/docs/models/updatetype.md index 36f63fe0..9208da7a 100644 --- a/docs/models/updatetype.md +++ b/docs/models/updatetype.md @@ -2,6 +2,16 @@ Optional type classification for the update. +## Example Usage + +```python +from glean.api_client.models import UpdateType + +value = UpdateType.ACTIONABLE + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/uploadchatfilesrequest.md b/docs/models/uploadchatfilesrequest.md index 78d47ad6..9c90fa81 100644 --- a/docs/models/uploadchatfilesrequest.md +++ b/docs/models/uploadchatfilesrequest.md @@ -3,6 +3,6 @@ ## Fields -| Field | Type | Required | Description | -| --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | -| `files` | List[[models.File](../models/file.md)] | :heavy_check_mark: | Raw files to be uploaded for chat in binary format. | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| `files` | List[[models.UploadChatFilesRequestFile](../models/uploadchatfilesrequestfile.md)] | :heavy_check_mark: | Raw files to be uploaded for chat in binary format. | \ No newline at end of file diff --git a/docs/models/uploadchatfilesrequestfile.md b/docs/models/uploadchatfilesrequestfile.md new file mode 100644 index 00000000..9559ed44 --- /dev/null +++ b/docs/models/uploadchatfilesrequestfile.md @@ -0,0 +1,10 @@ +# UploadChatFilesRequestFile + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------ | ------------------------------------ | ------------------------------------ | ------------------------------------ | +| `file_name` | *str* | :heavy_check_mark: | N/A | +| `content` | *Union[bytes, IO[bytes], io.IOBase]* | :heavy_check_mark: | N/A | +| `content_type` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/uploadchatfilesrequestrequest.md b/docs/models/uploadchatfilesrequestrequest.md index f849ef6b..47ad9ca6 100644 --- a/docs/models/uploadchatfilesrequestrequest.md +++ b/docs/models/uploadchatfilesrequestrequest.md @@ -3,7 +3,8 @@ ## 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. | -| `upload_chat_files_request` | [models.UploadChatFilesRequest](../models/uploadchatfilesrequest.md) | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | 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. | +| `upload_chat_files_request` | [models.UploadChatFilesRequest](../models/uploadchatfilesrequest.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/uploadstatusenum.md b/docs/models/uploadstatusenum.md index 56e0e460..a46e1e00 100644 --- a/docs/models/uploadstatusenum.md +++ b/docs/models/uploadstatusenum.md @@ -2,6 +2,16 @@ Upload status, enum of NOT_UPLOADED, UPLOADED, STATUS_UNKNOWN +## Example Usage + +```python +from glean.api_client.models import UploadStatusEnum + +value = UploadStatusEnum.UPLOADED + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/useractivityaction.md b/docs/models/useractivityaction.md index 495baa78..24d98acf 100644 --- a/docs/models/useractivityaction.md +++ b/docs/models/useractivityaction.md @@ -2,6 +2,16 @@ The action for the activity +## Example Usage + +```python +from glean.api_client.models import UserActivityAction + +value = UserActivityAction.ADD + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/userinsightsresponse.md b/docs/models/userinsightsresponse.md deleted file mode 100644 index 55e1feea..00000000 --- a/docs/models/userinsightsresponse.md +++ /dev/null @@ -1,13 +0,0 @@ -# UserInsightsResponse - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- | -| `last_log_timestamp` | *Optional[int]* | :heavy_minus_sign: | Unix timestamp of the last activity processed to make the response (in seconds since epoch UTC). | -| `activity_insights` | List[[models.UserActivityInsight](../models/useractivityinsight.md)] | :heavy_minus_sign: | Insights for all active users with respect to set of actions. | -| `inactive_insights` | List[[models.UserActivityInsight](../models/useractivityinsight.md)] | :heavy_minus_sign: | Insights for all in inactive users with respect to set of actions and time period. Activity count will be set to 0. | -| `total_teammates` | *Optional[int]* | :heavy_minus_sign: | Total number of teammates that have logged in to the product, that are still valid teammates. | -| `total_active_users` | *Optional[int]* | :heavy_minus_sign: | Total number of active users in the requested period. | -| `departments` | List[*str*] | :heavy_minus_sign: | list of departments applicable for users tab. | \ No newline at end of file diff --git a/docs/models/userrole.md b/docs/models/userrole.md index 211f4f26..f74d5aba 100644 --- a/docs/models/userrole.md +++ b/docs/models/userrole.md @@ -2,6 +2,16 @@ A user's role with respect to a specific document. +## Example Usage + +```python +from glean.api_client.models import UserRole + +value = UserRole.OWNER + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/verifyrequestaction.md b/docs/models/verifyrequestaction.md index 32df67b2..e711cbe9 100644 --- a/docs/models/verifyrequestaction.md +++ b/docs/models/verifyrequestaction.md @@ -2,6 +2,14 @@ The verification action requested. +## Example Usage + +```python +from glean.api_client.models import VerifyRequestAction + +value = VerifyRequestAction.VERIFY +``` + ## Values diff --git a/docs/models/verifyrequestrequest.md b/docs/models/verifyrequestrequest.md new file mode 100644 index 00000000..8f87704c --- /dev/null +++ b/docs/models/verifyrequestrequest.md @@ -0,0 +1,9 @@ +# VerifyRequestRequest + + +## Fields + +| Field | 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`. | +| `verify_request` | [models.VerifyRequest](../models/verifyrequest.md) | :heavy_check_mark: | Details about the verification request. | \ No newline at end of file diff --git a/docs/models/viewerinfo.md b/docs/models/viewerinfo.md index 17e7a6fa..e1cf0404 100644 --- a/docs/models/viewerinfo.md +++ b/docs/models/viewerinfo.md @@ -3,7 +3,7 @@ ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| ~~`role`~~ | [Optional[models.Role]](../models/role.md) | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

DEPRECATED - use permissions instead. Viewer's role on the specific document. | -| `last_viewed_time` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| ~~`role`~~ | [Optional[models.ViewerInfoRole]](../models/viewerinforole.md) | :heavy_minus_sign: | : warning: ** DEPRECATED **: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use permissions instead.

DEPRECATED - use permissions instead. Viewer's role on the specific document. | +| `last_viewed_time` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/viewerinforole.md b/docs/models/viewerinforole.md new file mode 100644 index 00000000..89ddc588 --- /dev/null +++ b/docs/models/viewerinforole.md @@ -0,0 +1,24 @@ +# ~~ViewerInfoRole~~ + +DEPRECATED - use permissions instead. Viewer's role on the specific document. + +> :warning: **DEPRECATED**: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use permissions instead. + +## Example Usage + +```python +from glean.api_client.models import ViewerInfoRole + +value = ViewerInfoRole.ANSWER_MODERATOR + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + + +## Values + +| Name | Value | +| ------------------ | ------------------ | +| `ANSWER_MODERATOR` | ANSWER_MODERATOR | +| `OWNER` | OWNER | +| `VIEWER` | VIEWER | \ No newline at end of file diff --git a/docs/models/warningtype.md b/docs/models/warningtype.md index e40d81ce..2935dbc7 100644 --- a/docs/models/warningtype.md +++ b/docs/models/warningtype.md @@ -2,6 +2,16 @@ The type of the warning. +## Example Usage + +```python +from glean.api_client.models import WarningType + +value = WarningType.LONG_QUERY + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/workflow.md b/docs/models/workflow.md index c2e0c0ba..ee0a9aa4 100644 --- a/docs/models/workflow.md +++ b/docs/models/workflow.md @@ -3,12 +3,18 @@ ## Fields -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -| `name` | *Optional[str]* | :heavy_minus_sign: | The name of the workflow. | | -| `author` | [Optional[models.Person]](../models/person.md) | :heavy_minus_sign: | N/A | {
"name": "George Clooney",
"obfuscatedId": "abc123"
} | -| `create_timestamp` | *Optional[int]* | :heavy_minus_sign: | Server Unix timestamp of the creation time. | | -| `last_update_timestamp` | *Optional[int]* | :heavy_minus_sign: | Server Unix timestamp of the last update time. | | -| `last_updated_by` | [Optional[models.Person]](../models/person.md) | :heavy_minus_sign: | N/A | {
"name": "George Clooney",
"obfuscatedId": "abc123"
} | -| `permissions` | [Optional[models.ObjectPermissions]](../models/objectpermissions.md) | :heavy_minus_sign: | N/A | | -| `id` | *Optional[str]* | :heavy_minus_sign: | The ID of the workflow. | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `name` | *Optional[str]* | :heavy_minus_sign: | The name of the workflow. | | +| `author` | [Optional[models.Person]](../models/person.md) | :heavy_minus_sign: | N/A | {
"name": "George Clooney",
"obfuscatedId": "abc123"
} | +| `create_timestamp` | *Optional[int]* | :heavy_minus_sign: | Server Unix timestamp of the creation time. | | +| `last_update_timestamp` | *Optional[int]* | :heavy_minus_sign: | Server Unix timestamp of the last update time. | | +| `last_draft_saved_at` | *Optional[int]* | :heavy_minus_sign: | Server Unix timestamp of the last time the draft was saved. | | +| `last_draft_saved_by` | [Optional[models.Person]](../models/person.md) | :heavy_minus_sign: | N/A | {
"name": "George Clooney",
"obfuscatedId": "abc123"
} | +| `last_draft_git_author_id` | *Optional[str]* | :heavy_minus_sign: | ID of the VCS user (e.g. GitHub username) who last saved the draft. Set only by the draft save path via the external Git integration API. | | +| `last_updated_by` | [Optional[models.Person]](../models/person.md) | :heavy_minus_sign: | N/A | {
"name": "George Clooney",
"obfuscatedId": "abc123"
} | +| `permissions` | [Optional[models.ObjectPermissions]](../models/objectpermissions.md) | :heavy_minus_sign: | N/A | | +| `id` | *Optional[str]* | :heavy_minus_sign: | The ID of the workflow. | | +| `verified` | *Optional[bool]* | :heavy_minus_sign: | When present, indicates this workflow is admin-verified. Set via the dedicated admin settings endpoint, not by regular edits. | | +| `show_organization_as_author` | *Optional[bool]* | :heavy_minus_sign: | When true, displays organization name instead of author name in agent card. Set via the dedicated admin settings endpoint, not by regular edits. | | +| `webhook_url` | *Optional[str]* | :heavy_minus_sign: | For a CUSTOM_WEBHOOK-triggered agent, the full inbound webhook URL (.../webhooks/custom/) minted for the agent. Empty for other trigger types.
| | \ No newline at end of file diff --git a/docs/models/workflowfeedbackinfosource.md b/docs/models/workflowfeedbackinfosource.md index de4dcede..57ce7f1c 100644 --- a/docs/models/workflowfeedbackinfosource.md +++ b/docs/models/workflowfeedbackinfosource.md @@ -2,6 +2,14 @@ Where the feedback of the workflow originated from +## Example Usage + +```python +from glean.api_client.models import WorkflowFeedbackInfoSource + +value = WorkflowFeedbackInfoSource.ZERO_STATE +``` + ## Values diff --git a/docs/models/writeactionparametertype.md b/docs/models/writeactionparametertype.md index dbc9543a..50cd2a89 100644 --- a/docs/models/writeactionparametertype.md +++ b/docs/models/writeactionparametertype.md @@ -2,6 +2,16 @@ The type of the value (e.g., integer, string, boolean, etc.) +## Example Usage + +```python +from glean.api_client.models import WriteActionParameterType + +value = WriteActionParameterType.UNKNOWN + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/writeactiontype.md b/docs/models/writeactiontype.md index b90f9f6b..35c9db68 100644 --- a/docs/models/writeactiontype.md +++ b/docs/models/writeactiontype.md @@ -2,6 +2,16 @@ Valid only for write actions. Represents the type of write action. REDIRECT - The client renders the URL which contains information for carrying out the action. EXECUTION - Send a request to an external server and execute the action. MCP - Send a tools/call request to an MCP server to execute the action. +## Example Usage + +```python +from glean.api_client.models import WriteActionType + +value = WriteActionType.REDIRECT + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/sdks/agents/README.md b/docs/sdks/agents/README.md index 4e148967..c3384d9d 100644 --- a/docs/sdks/agents/README.md +++ b/docs/sdks/agents/README.md @@ -1,63 +1,22 @@ -# Client.Agents +# Agents ## Overview ### Available Operations -* [retrieve](#retrieve) - Retrieve an agent -* [retrieve_schemas](#retrieve_schemas) - List an agent's schemas -* [list](#list) - Search agents -* [run_stream](#run_stream) - Create an agent run and stream the response -* [run](#run) - Create an agent run and wait for the response +* [search](#search) - Search agents +* [get](#get) - Get agent +* [get_schemas](#get_schemas) - Get agent schemas +* [create_run](#create_run) - Create agent run -## retrieve +## search -Returns details of an [agent](https://developers.glean.com/agents/agents-api) created in the Agent Builder. +Search agents available to the authenticated user by agent name. -### Example Usage - - -```python -from glean.api_client import Glean -import os - - -with Glean( - api_token=os.getenv("GLEAN_API_TOKEN", ""), -) as glean: - - res = glean.client.agents.retrieve(agent_id="") - - # Handle response - print(res) - -``` - -### Parameters - -| Parameter | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | -| `agent_id` | *str* | :heavy_check_mark: | The ID of the agent. | -| `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. | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | - -### Response - -**[models.Agent](../../models/agent.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ----------------- | ----------------- | ----------------- | -| errors.GleanError | 4XX, 5XX | \*/\* | - -## retrieve_schemas - -Return [agent](https://developers.glean.com/agents/agents-api)'s input and output schemas. You can use these schemas to detect changes to an agent's input or output structure. ### Example Usage - + ```python from glean.api_client import Glean import os @@ -67,7 +26,7 @@ with Glean( api_token=os.getenv("GLEAN_API_TOKEN", ""), ) as glean: - res = glean.client.agents.retrieve_schemas(agent_id="") + res = glean.agents.search(name="HR Policy Agent") # Handle response print(res) @@ -76,29 +35,31 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | -| `agent_id` | *str* | :heavy_check_mark: | The ID of the agent. | -| `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. | -| `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 | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `name` | *Optional[str]* | :heavy_minus_sign: | Case-insensitive substring to match against agent names. If omitted or empty, no name filter is applied. | HR Policy Agent | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | ### Response -**[models.AgentSchemas](../../models/agentschemas.md)** +**[models.PlatformAgentsSearchResponse](../../models/platformagentssearchresponse.md)** ### Errors -| Error Type | Status Code | Content Type | -| ----------------- | ----------------- | ----------------- | -| errors.GleanError | 4XX, 5XX | \*/\* | +| 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 | \*/\* | + +## get -## list +Retrieve details for an agent available to the authenticated user. -Search for [agents](https://developers.glean.com/agents/agents-api) by agent name. ### Example Usage - + ```python from glean.api_client import Glean import os @@ -108,7 +69,7 @@ with Glean( api_token=os.getenv("GLEAN_API_TOKEN", ""), ) as glean: - res = glean.client.agents.list(name="HR Policy Agent") + res = glean.agents.get(agent_id="") # Handle response print(res) @@ -117,28 +78,31 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | -| `name` | *Optional[str]* | :heavy_minus_sign: | Filters on the name of the agent. The keyword search is case-insensitive. If search string is ommited or empty, acts as no filter. | HR Policy Agent | -| `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 | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `agent_id` | *str* | :heavy_check_mark: | ID of the agent to retrieve. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response -**[models.SearchAgentsResponse](../../models/searchagentsresponse.md)** +**[models.PlatformAgentGetResponse](../../models/platformagentgetresponse.md)** ### Errors -| Error Type | Status Code | Content Type | -| ----------------- | ----------------- | ----------------- | -| errors.GleanError | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| --------------------------------- | --------------------------------- | --------------------------------- | +| errors.PlatformProblemDetailError | 400, 401, 403, 404, 408, 429 | application/problem+json | +| errors.PlatformProblemDetailError | 500, 503 | application/problem+json | +| errors.GleanError | 4XX, 5XX | \*/\* | + +## get_schemas -## run_stream +Retrieve an agent's input and output JSON schemas. -Executes an [agent](https://developers.glean.com/agents/agents-api) run and returns the result as a stream of server-sent events (SSE). ### Example Usage - + ```python from glean.api_client import Glean import os @@ -148,11 +112,7 @@ with Glean( api_token=os.getenv("GLEAN_API_TOKEN", ""), ) as glean: - res = glean.client.agents.run_stream(agent_id="", messages=[ - { - "role": "USER", - }, - ]) + res = glean.agents.get_schemas(agent_id="", include_tools=False) # Handle response print(res) @@ -163,31 +123,32 @@ with Glean( | Parameter | Type | Required | Description | | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `agent_id` | *str* | :heavy_check_mark: | The ID of the agent to run. | -| `input` | Dict[str, *Any*] | :heavy_minus_sign: | The input to the agent. | -| `messages` | List[[models.Message](../../models/message.md)] | :heavy_minus_sign: | The messages to pass an input to the agent. | -| `metadata` | Dict[str, *Any*] | :heavy_minus_sign: | The metadata to pass to the agent. | +| `agent_id` | *str* | :heavy_check_mark: | ID of the agent whose schemas should be retrieved. | +| `include_tools` | *Optional[bool]* | :heavy_minus_sign: | Whether to include tool metadata in the response. | | `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response -**[str](../../models/.md)** +**[models.PlatformAgentSchemasResponse](../../models/platformagentschemasresponse.md)** ### Errors -| Error Type | Status Code | Content Type | -| ----------------- | ----------------- | ----------------- | -| errors.GleanError | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| --------------------------------- | --------------------------------- | --------------------------------- | +| errors.PlatformProblemDetailError | 400, 401, 403, 404, 408, 429 | application/problem+json | +| errors.PlatformProblemDetailError | 500, 503 | application/problem+json | +| errors.GleanError | 4XX, 5XX | \*/\* | + +## create_run -## run +Execute an agent run. Set `stream` to true to receive server-sent events; otherwise the response contains the final agent messages. -Executes an [agent](https://developers.glean.com/agents/agents-api) run and returns the final response. ### Example Usage - + ```python -from glean.api_client import Glean +from glean.api_client import Glean, models import os @@ -195,11 +156,12 @@ with Glean( api_token=os.getenv("GLEAN_API_TOKEN", ""), ) as glean: - res = glean.client.agents.run(agent_id="", messages=[ + res = glean.agents.create_run(agent_id="", messages=[ { - "role": "USER", + "role": models.PlatformMessageRole.USER, + "content": [], }, - ]) + ], stream=False) # Handle response print(res) @@ -208,20 +170,24 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `agent_id` | *str* | :heavy_check_mark: | The ID of the agent to run. | -| `input` | Dict[str, *Any*] | :heavy_minus_sign: | The input to the agent. | -| `messages` | List[[models.Message](../../models/message.md)] | :heavy_minus_sign: | The messages to pass an input to the agent. | -| `metadata` | Dict[str, *Any*] | :heavy_minus_sign: | The metadata to pass to the agent. | -| `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 | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `agent_id` | *str* | :heavy_check_mark: | ID of the agent to run. | +| `input` | Dict[str, *Any*] | :heavy_minus_sign: | Input fields for an input-form triggered agent. | +| `messages` | List[[models.PlatformMessage](../../models/platformmessage.md)] | :heavy_minus_sign: | Messages to pass to the agent. When provided, the array MUST contain at least one message and each message MUST specify a valid `role` and non-empty `content`.
| +| `metadata` | Dict[str, *Any*] | :heavy_minus_sign: | Metadata to pass to the agent. | +| `stream` | *Optional[bool]* | :heavy_minus_sign: | Whether to stream the run response as 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.AgentRunWaitResponse](../../models/agentrunwaitresponse.md)** +**[models.PlatformAgentsCreateRunResponse](../../models/platformagentscreaterunresponse.md)** ### Errors -| Error Type | Status Code | Content Type | -| ----------------- | ----------------- | ----------------- | -| errors.GleanError | 4XX, 5XX | \*/\* | \ No newline at end of file +| Error Type | Status Code | Content Type | +| ------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------- | +| errors.PlatformUnauthorizedAgentToolsProblemError | 422 | application/problem+json | +| errors.PlatformProblemDetailError | 400, 401, 403, 404, 408, 409, 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/docs/sdks/announcements/README.md b/docs/sdks/announcements/README.md index de45b87e..6ce0ff13 100644 --- a/docs/sdks/announcements/README.md +++ b/docs/sdks/announcements/README.md @@ -1083,6 +1083,7 @@ with Glean( | `start_time` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | The date and time at which the announcement becomes active. | | `end_time` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | The date and time at which the announcement expires. | | `title` | *str* | :heavy_check_mark: | The headline of the announcement. | +| `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`. | | `body` | [Optional[models.StructuredText]](../../models/structuredtext.md) | :heavy_minus_sign: | N/A | | `emoji` | *Optional[str]* | :heavy_minus_sign: | An emoji used to indicate the nature of the announcement. | | `thumbnail` | [Optional[models.Thumbnail]](../../models/thumbnail.md) | :heavy_minus_sign: | N/A | @@ -1130,10 +1131,11 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `id` | *int* | :heavy_check_mark: | The opaque id of the announcement to be deleted. | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *int* | :heavy_check_mark: | The opaque id of the announcement to be deleted. | +| `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`. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Errors @@ -2217,6 +2219,7 @@ with Glean( | `end_time` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | The date and time at which the announcement expires. | | `title` | *str* | :heavy_check_mark: | The headline of the announcement. | | `id` | *int* | :heavy_check_mark: | The opaque id of the announcement. | +| `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`. | | `body` | [Optional[models.StructuredText]](../../models/structuredtext.md) | :heavy_minus_sign: | N/A | | `emoji` | *Optional[str]* | :heavy_minus_sign: | An emoji used to indicate the nature of the announcement. | | `thumbnail` | [Optional[models.Thumbnail]](../../models/thumbnail.md) | :heavy_minus_sign: | N/A | diff --git a/docs/sdks/answers/README.md b/docs/sdks/answers/README.md index 49b87159..85153af7 100644 --- a/docs/sdks/answers/README.md +++ b/docs/sdks/answers/README.md @@ -83,10 +83,11 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `data` | [models.AnswerCreationData](../../models/answercreationdata.md) | :heavy_check_mark: | N/A | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data` | [models.AnswerCreationData](../../models/answercreationdata.md) | :heavy_check_mark: | N/A | +| `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`. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response @@ -122,11 +123,12 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `id` | *int* | :heavy_check_mark: | The opaque ID of the Answer. | 3 | -| `doc_id` | *Optional[str]* | :heavy_minus_sign: | Glean Document ID of the Answer. The Glean Document ID is supported for cases where the Answer ID isn't available. If both are available, using the Answer ID is preferred. | ANSWERS_answer_3 | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *int* | :heavy_check_mark: | The opaque ID of the Answer. | 3 | +| `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`. | | +| `doc_id` | *Optional[str]* | :heavy_minus_sign: | Glean Document ID of the Answer. The Glean Document ID is supported for cases where the Answer ID isn't available. If both are available, using the Answer ID is preferred. | ANSWERS_answer_3 | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | ### Errors @@ -199,24 +201,25 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `id` | *int* | :heavy_check_mark: | The opaque ID of the Answer. | 3 | -| `doc_id` | *Optional[str]* | :heavy_minus_sign: | Glean Document ID of the Answer. The Glean Document ID is supported for cases where the Answer ID isn't available. If both are available, using the Answer ID is preferred. | ANSWERS_answer_3 | -| `question` | *Optional[str]* | :heavy_minus_sign: | N/A | Why is the sky blue? | -| `question_variations` | List[*str*] | :heavy_minus_sign: | Additional ways of phrasing this question. | | -| `body_text` | *Optional[str]* | :heavy_minus_sign: | The plain text answer to the question. | From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light. | -| `board_id` | *Optional[int]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

The parent board ID of this Answer, or 0 if it's a floating Answer. Adding Answers to Answer Boards is no longer permitted. | | -| `audience_filters` | List[[models.FacetFilter](../../models/facetfilter.md)] | :heavy_minus_sign: | Filters which restrict who should see the answer. Values are taken from the corresponding filters in people search. | | -| `added_roles` | List[[models.UserRoleSpecification](../../models/userrolespecification.md)] | :heavy_minus_sign: | A list of user roles for the answer added by the owner. | | -| `removed_roles` | List[[models.UserRoleSpecification](../../models/userrolespecification.md)] | :heavy_minus_sign: | A list of user roles for the answer removed by the owner. | | -| `roles` | List[[models.UserRoleSpecification](../../models/userrolespecification.md)] | :heavy_minus_sign: | A list of roles for this answer explicitly granted by an owner, editor, or admin. | | -| `source_document_spec` | [Optional[models.DocumentSpecUnion]](../../models/documentspecunion.md) | :heavy_minus_sign: | N/A | | -| `source_type` | [Optional[models.EditAnswerRequestSourceType]](../../models/editanswerrequestsourcetype.md) | :heavy_minus_sign: | N/A | | -| `added_collections` | List[*int*] | :heavy_minus_sign: | IDs of Collections to which a document is added. | | -| `removed_collections` | List[*int*] | :heavy_minus_sign: | IDs of Collections from which a document is removed. | | -| `combined_answer_text` | [Optional[models.StructuredTextMutableProperties]](../../models/structuredtextmutableproperties.md) | :heavy_minus_sign: | N/A | | -| `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 | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *int* | :heavy_check_mark: | The opaque ID of the Answer. | 3 | +| `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`. | | +| `doc_id` | *Optional[str]* | :heavy_minus_sign: | Glean Document ID of the Answer. The Glean Document ID is supported for cases where the Answer ID isn't available. If both are available, using the Answer ID is preferred. | ANSWERS_answer_3 | +| `question` | *Optional[str]* | :heavy_minus_sign: | N/A | Why is the sky blue? | +| `question_variations` | List[*str*] | :heavy_minus_sign: | Additional ways of phrasing this question. | | +| `body_text` | *Optional[str]* | :heavy_minus_sign: | The plain text answer to the question. | From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light. | +| `board_id` | *Optional[int]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Answer Boards no longer supported.

The parent board ID of this Answer, or 0 if it's a floating Answer. Adding Answers to Answer Boards is no longer permitted. | | +| `audience_filters` | List[[models.FacetFilter](../../models/facetfilter.md)] | :heavy_minus_sign: | Filters which restrict who should see the answer. Values are taken from the corresponding filters in people search. | | +| `added_roles` | List[[models.UserRoleSpecification](../../models/userrolespecification.md)] | :heavy_minus_sign: | A list of user roles for the answer added by the owner. | | +| `removed_roles` | List[[models.UserRoleSpecification](../../models/userrolespecification.md)] | :heavy_minus_sign: | A list of user roles for the answer removed by the owner. | | +| `roles` | List[[models.UserRoleSpecification](../../models/userrolespecification.md)] | :heavy_minus_sign: | A list of roles for this answer explicitly granted by an owner, editor, or admin. | | +| `source_document_spec` | [Optional[models.DocumentSpecUnion]](../../models/documentspecunion.md) | :heavy_minus_sign: | N/A | | +| `source_type` | [Optional[models.EditAnswerRequestSourceType]](../../models/editanswerrequestsourcetype.md) | :heavy_minus_sign: | N/A | | +| `added_collections` | List[*int*] | :heavy_minus_sign: | IDs of Collections to which a document is added. | | +| `removed_collections` | List[*int*] | :heavy_minus_sign: | IDs of Collections from which a document is removed. | | +| `combined_answer_text` | [Optional[models.StructuredTextMutableProperties]](../../models/structuredtextmutableproperties.md) | :heavy_minus_sign: | N/A | | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | ### Response @@ -253,11 +256,12 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `id` | *Optional[int]* | :heavy_minus_sign: | The opaque ID of the Answer. | 3 | -| `doc_id` | *Optional[str]* | :heavy_minus_sign: | Glean Document ID of the Answer. The Glean Document ID is supported for cases where the Answer ID isn't available. If both are available, using the Answer ID is preferred. | ANSWERS_answer_3 | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `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`. | | +| `id` | *Optional[int]* | :heavy_minus_sign: | The opaque ID of the Answer. | 3 | +| `doc_id` | *Optional[str]* | :heavy_minus_sign: | Glean Document ID of the Answer. The Glean Document ID is supported for cases where the Answer ID isn't available. If both are available, using the Answer ID is preferred. | ANSWERS_answer_3 | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | ### Response @@ -273,7 +277,7 @@ with Glean( List Answers created by the current user. -> :warning: **DEPRECATED**: This will be removed in a future release, please migrate away from it as soon as possible. +> :warning: **DEPRECATED**: Deprecated on 2026-01-21, removal scheduled for 2026-10-15: Answer boards have been removed and this endpoint no longer serves a purpose. ### Example Usage @@ -296,10 +300,11 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `board_id` | *Optional[int]* | :heavy_minus_sign: | The Answer Board Id to list answers on. | -| `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`. | +| `board_id` | *Optional[int]* | :heavy_minus_sign: | The Answer Board Id to list answers on. | +| `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/chatsdk/README.md b/docs/sdks/chatsdk/README.md new file mode 100644 index 00000000..fbb19c8f --- /dev/null +++ b/docs/sdks/chatsdk/README.md @@ -0,0 +1,53 @@ +# Chat + +## Overview + +### Available Operations + +* [create](#create) - Create a chat response + +## create + +Run an assistant turn. Set `stream` to true to receive server-sent events; otherwise the response is a typed JSON response object. + + +### Example Usage + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.chat.create(input="", stream=False, store=True) + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | +| `input` | [models.Input](../../models/input.md) | :heavy_check_mark: | Either a plain string (single user turn) or a chronological array of `USER`/`ASSISTANT` messages. The final array message must be `USER`.
| +| `stream` | *Optional[bool]* | :heavy_minus_sign: | When true, respond with `text/event-stream`. When false or omitted, respond with `application/json`.
| +| `store` | *Optional[bool]* | :heavy_minus_sign: | When true (default), persist the interaction and return a `conversation_id`. When false, run ephemerally with no persistence.
| +| `conversation_id` | *Optional[str]* | :heavy_minus_sign: | Continue an existing stored conversation. Incompatible with message-array `input` and with `store: false`.
| +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[models.PlatformChatCreateResponse](../../models/platformchatcreateresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| -------------------------------------- | -------------------------------------- | -------------------------------------- | +| errors.PlatformProblemDetailError | 400, 401, 403, 404, 408, 413, 422, 429 | application/problem+json | +| errors.PlatformProblemDetailError | 500, 503 | application/problem+json | +| errors.GleanError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/clientactivity/README.md b/docs/sdks/clientactivity/README.md index 13af6c74..456e90e3 100644 --- a/docs/sdks/clientactivity/README.md +++ b/docs/sdks/clientactivity/README.md @@ -86,7 +86,7 @@ with Glean( "tracking_tokens": [ "trackingTokens", ], - "event": models.Event.VIEW, + "event": models.FeedbackEvent.VIEW, }) # Use the SDK ... diff --git a/docs/sdks/clientagents/README.md b/docs/sdks/clientagents/README.md new file mode 100644 index 00000000..e54900d9 --- /dev/null +++ b/docs/sdks/clientagents/README.md @@ -0,0 +1,374 @@ +# Client.Agents + +## Overview + +### Available Operations + +* [create](#create) - Create an agent +* [retrieve](#retrieve) - Retrieve an agent +* [update](#update) - Edit an agent +* [retrieve_schemas](#retrieve_schemas) - List an agent's schemas +* [import_](#import_) - Import an agent +* [list](#list) - Search agents +* [run_stream](#run_stream) - Create an agent run and stream the response +* [run](#run) - Create an agent run and wait for the response + +## create + +Create an agent. + +### Example Usage + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.client.agents.create() + + # Handle response + print(res) + +``` + +### 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. | +| `name` | *Optional[str]* | :heavy_minus_sign: | The name of the workflow. | +| `transient` | *Optional[bool]* | :heavy_minus_sign: | Used to create a transient workflow. | +| `parent_workflow_id` | *Optional[str]* | :heavy_minus_sign: | id of the parent workflow for transient workflows | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[models.WorkflowResult](../../models/workflowresult.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ----------------- | ----------------- | ----------------- | +| errors.GleanError | 4XX, 5XX | \*/\* | + +## retrieve + +Returns details of an [agent](https://developers.glean.com/agents/agents-api) created in the Agent Builder. + +### Example Usage + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.client.agents.retrieve(agent_id="") + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `agent_id` | *str* | :heavy_check_mark: | The ID of the agent. | +| `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. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[models.Agent](../../models/agent.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| -------------------- | -------------------- | -------------------- | +| errors.ErrorResponse | 404 | application/json | +| errors.GleanError | 4XX, 5XX | \*/\* | + +## update + +Creates a draft or publishes an [agent](https://developers.glean.com/agents/agents-api). Use `isDraft=true` to save a draft, or `isDraft=false` (or omit) to publish immediately. Only draft and publish modes are supported. + +### Example Usage + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + glean.client.agents.update(agent_id="") + + # Use the SDK ... + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `agent_id` | *str* | :heavy_check_mark: | The ID of the agent. | +| `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. | +| `name` | *Optional[str]* | :heavy_minus_sign: | The name of the workflow. | +| `id` | *Optional[str]* | :heavy_minus_sign: | The workflow ID we want to update. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Errors + +| Error Type | Status Code | Content Type | +| -------------------- | -------------------- | -------------------- | +| errors.ErrorResponse | 404 | application/json | +| errors.GleanError | 4XX, 5XX | \*/\* | + +## retrieve_schemas + +Return [agent](https://developers.glean.com/agents/agents-api)'s input and output schemas. You can use these schemas to detect changes to an agent's input or output structure. + +### Example Usage + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.client.agents.retrieve_schemas(agent_id="") + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `agent_id` | *str* | :heavy_check_mark: | The ID of the agent. | +| `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. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[models.AgentSchemas](../../models/agentschemas.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| -------------------- | -------------------- | -------------------- | +| errors.ErrorResponse | 404, 422 | application/json | +| errors.GleanError | 4XX, 5XX | \*/\* | + +## import_ + +Imports an [agent](https://developers.glean.com/agents/agents-api) from its on-disk folder representation (spec.yaml, instructions.md, skills/, subagents/) packaged as a zip, and creates or updates the agent. Inverse of the export flow: the folder-to-schema conversion runs server-side. The bundle must contain only regular files; symlinks are resolved by the caller at packaging time. + +### Example Usage + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.client.agents.import_(agent_id="", bundle={ + "file_name": "example.file", + "content": open("example.file", "rb"), + }) + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `agent_id` | *str* | :heavy_check_mark: | The ID of the agent to create or update. | +| `bundle` | [models.Bundle](../../models/bundle.md) | :heavy_check_mark: | Zip of the agent folder (spec.yaml, instructions.md, skills/, subagents/) with symlinks dereferenced.
| +| `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. | +| `git_commit_sha` | *Optional[str]* | :heavy_minus_sign: | Optional Git commit SHA to associate with this import. | +| `git_author_id` | *Optional[str]* | :heavy_minus_sign: | Optional VCS commit author ID to associate with this import. | +| `commit_message` | *Optional[str]* | :heavy_minus_sign: | Optional commit message for the imported version. | +| `sync_mode` | [Optional[models.ImportAgentSyncMode]](../../models/importagentsyncmode.md) | :heavy_minus_sign: | Whether the imported version is staged (saved without updating the live version) or published directly to the live version.
| +| `is_draft` | *Optional[bool]* | :heavy_minus_sign: | When true, validates and stores a draft preview without publishing (used for PR preview links). Takes precedence over `syncMode`: when `isDraft` is true, `syncMode` is ignored.
| +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[models.ImportAgentResponse](../../models/importagentresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| -------------------- | -------------------- | -------------------- | +| errors.ErrorResponse | 404 | application/json | +| errors.GleanError | 4XX, 5XX | \*/\* | + +## list + +Search for [agents](https://developers.glean.com/agents/agents-api) by agent name. + +### Example Usage + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.client.agents.list(name="HR Policy Agent") + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | +| `name` | *Optional[str]* | :heavy_minus_sign: | Filters on the name of the agent. The keyword search is case-insensitive. If search string is ommited or empty, acts as no filter. | HR Policy Agent | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[models.SearchAgentsResponse](../../models/searchagentsresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| -------------------- | -------------------- | -------------------- | +| errors.ErrorResponse | 404, 422 | application/json | +| errors.GleanError | 4XX, 5XX | \*/\* | + +## run_stream + +Executes an [agent](https://developers.glean.com/agents/agents-api) run and returns the result as a stream of server-sent events (SSE). **Note**: If the agent uses an input form trigger, all form fields (including optional fields) must be included in the `input` object. + +### Example Usage + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.client.agents.run_stream(agent_id="", messages=[ + { + "role": "USER", + }, + ]) + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | +| `agent_id` | *str* | :heavy_check_mark: | The ID of the agent to run. | +| `input` | Dict[str, *Any*] | :heavy_minus_sign: | The input to the agent. Required when the agent uses an input form trigger. | +| `messages` | List[[models.Message](../../models/message.md)] | :heavy_minus_sign: | The messages to pass an input to the agent. | +| `metadata` | Dict[str, *Any*] | :heavy_minus_sign: | The metadata to pass to the agent. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[str](../../models/.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | +| errors.ErrorResponse | 404, 409 | application/json | +| errors.UnauthorizedAgentToolsError | 422 | application/json | +| errors.GleanError | 4XX, 5XX | \*/\* | + +## run + +Executes an [agent](https://developers.glean.com/agents/agents-api) run and returns the final response. **Note**: If the agent uses an input form trigger, all form fields (including optional fields) must be included in the `input` object. + +### Example Usage + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.client.agents.run(agent_id="", messages=[ + { + "role": "USER", + }, + ]) + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | +| `agent_id` | *str* | :heavy_check_mark: | The ID of the agent to run. | +| `input` | Dict[str, *Any*] | :heavy_minus_sign: | The input to the agent. Required when the agent uses an input form trigger. | +| `messages` | List[[models.Message](../../models/message.md)] | :heavy_minus_sign: | The messages to pass an input to the agent. | +| `metadata` | Dict[str, *Any*] | :heavy_minus_sign: | The metadata to pass to the agent. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[models.AgentRunWaitResponse](../../models/agentrunwaitresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | +| errors.UnauthorizedAgentToolsError | 422 | application/json | +| errors.GleanError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/clientauthentication/README.md b/docs/sdks/clientauthentication/README.md index b9a4856d..7d4827b2 100644 --- a/docs/sdks/clientauthentication/README.md +++ b/docs/sdks/clientauthentication/README.md @@ -4,8 +4,55 @@ ### Available Operations +* [check_datasource_auth](#check_datasource_auth) - Check datasource authorization * [create_token](#create_token) - Create authentication token +## check_datasource_auth + +Returns all datasource instances that require per-user OAuth authorization +for the authenticated user, along with a transient auth token that can be +appended to auth URLs to complete OAuth flows. + +Clients construct the full OAuth URL by combining the backend base URL, +the `authUrlRelativePath` from each instance, and the transient auth token: +`/?transient_auth_token=`. + + +### Example Usage + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.client.authentication.check_datasource_auth() + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[models.CheckDatasourceAuthResponse](../../models/checkdatasourceauthresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ----------------- | ----------------- | ----------------- | +| errors.GleanError | 4XX, 5XX | \*/\* | + ## create_token Creates an authentication token for the authenticated user. These are diff --git a/docs/sdks/clientchat/README.md b/docs/sdks/clientchat/README.md index 334595b1..dae29ba8 100644 --- a/docs/sdks/clientchat/README.md +++ b/docs/sdks/clientchat/README.md @@ -10,18 +10,37 @@ * [retrieve](#retrieve) - Retrieves a Chat * [list](#list) - Retrieves all saved Chats * [retrieve_application](#retrieve_application) - Gets the metadata for a custom Chat application -* [upload_files](#upload_files) - Upload files for Chat. -* [retrieve_files](#retrieve_files) - Get files uploaded by a user for Chat. -* [delete_files](#delete_files) - Delete files uploaded by a user for chat. +* [upload_files](#upload_files) - Upload files for Chat +* [retrieve_files](#retrieve_files) - Get files uploaded by a user for Chat +* [delete_files](#delete_files) - Delete files uploaded by a user for chat +* [retrieve_file](#retrieve_file) - Download a chat file * [create_stream](#create_stream) - Chat ## create Have a conversation with Glean AI. -### Example Usage +### Example Usage: citationResponse + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.client.chat.create(messages=[], timeout_millis=30000) - + # Handle response + print(res) + +``` +### Example Usage: defaultExample + + ```python from glean.api_client import Glean, models import os @@ -44,6 +63,70 @@ with Glean( # Handle response print(res) +``` +### Example Usage: gptAgentExample + + +```python +from glean.api_client import Glean, models +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.client.chat.create(messages=[ + { + "fragments": [ + models.ChatMessageFragment( + text="Who was the first person to land on the moon?", + ), + ], + }, + ], agent_config={ + "agent": models.AgentEnum.GPT, + }, timeout_millis=30000) + + # Handle response + print(res) + +``` +### Example Usage: streamingExample + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.client.chat.create(messages=[], timeout_millis=30000) + + # Handle response + print(res) + +``` +### Example Usage: updateResponse + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.client.chat.create(messages=[], timeout_millis=30000) + + # Handle response + print(res) + ``` ### Parameters @@ -51,6 +134,7 @@ with Glean( | Parameter | Type | Required | Description | Example | | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `messages` | List[[models.ChatMessage](../../models/chatmessage.md)] | :heavy_check_mark: | A list of chat messages, from most recent to least recent. At least one message must specify a USER author. | | +| `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. | | | `session_info` | [Optional[models.SessionInfo]](../../models/sessioninfo.md) | :heavy_minus_sign: | N/A | | | `save_chat` | *Optional[bool]* | :heavy_minus_sign: | Save the current interaction as a Chat for the user to access and potentially continue later. | | @@ -98,10 +182,11 @@ with Glean( ### Parameters -| Parameter | 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. | -| `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`. | +| `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. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Errors @@ -133,11 +218,12 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | -| `ids` | List[*str*] | :heavy_check_mark: | A non-empty list of ids of the Chats to be deleted. | -| `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. | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `ids` | List[*str*] | :heavy_check_mark: | A non-empty list of ids of the Chats to be deleted. | +| `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. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Errors @@ -170,11 +256,12 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | -| `id` | *str* | :heavy_check_mark: | The id of the Chat to be retrieved. | -| `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. | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *str* | :heavy_check_mark: | The id of the Chat to be retrieved. | +| `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. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response @@ -182,9 +269,10 @@ with Glean( ### Errors -| Error Type | Status Code | Content Type | -| ----------------- | ----------------- | ----------------- | -| errors.GleanError | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| ------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------- | +| errors.AccessRequestPermissionDeniedResponseError | 403 | application/json | +| errors.GleanError | 4XX, 5XX | \*/\* | ## list @@ -211,10 +299,11 @@ with Glean( ### Parameters -| Parameter | 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. | -| `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`. | +| `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. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response @@ -251,11 +340,12 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | -| `id` | *str* | :heavy_check_mark: | The id of the Chat application to be retrieved. | -| `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. | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *str* | :heavy_check_mark: | The id of the Chat application to be retrieved. | +| `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. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response @@ -292,11 +382,12 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | -| `files` | List[[models.File](../../models/file.md)] | :heavy_check_mark: | Raw files to be uploaded for chat in binary format. | -| `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. | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `files` | List[[models.UploadChatFilesRequestFile](../../models/uploadchatfilesrequestfile.md)] | :heavy_check_mark: | Raw files to be uploaded for chat in binary format. | +| `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. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response @@ -335,11 +426,12 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | -| `file_ids` | List[*str*] | :heavy_check_mark: | IDs of files to fetch. | -| `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. | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `file_ids` | List[*str*] | :heavy_check_mark: | IDs of files to fetch. | +| `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. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response @@ -379,11 +471,54 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | -| `file_ids` | List[*str*] | :heavy_check_mark: | IDs of files to delete. | -| `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. | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `file_ids` | List[*str*] | :heavy_check_mark: | IDs of files to delete. | +| `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. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Errors + +| Error Type | Status Code | Content Type | +| ----------------- | ----------------- | ----------------- | +| errors.GleanError | 4XX, 5XX | \*/\* | + +## retrieve_file + +Download the raw content of a file generated or uploaded during a chat session (for example, an image produced by the assistant). Returns the file bytes with a Content-Type header matching the file's MIME type. + + +### Example Usage + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.client.chat.retrieve_file(file_id="") + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | +| `file_id` | *str* | :heavy_check_mark: | Identifier of the chat file to download. | +| `preview` | *Optional[bool]* | :heavy_minus_sign: | When true and the file is a PDF, the response is served inline (Content-Disposition: inline) instead of as an attachment.
| +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[httpx.Response](../../models/.md)** ### Errors @@ -395,9 +530,27 @@ with Glean( Have a conversation with Glean AI. -### Example Usage +### Example Usage: citationResponse - + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.client.chat.create_stream(messages=[], timeout_millis=30000) + + # Handle response + print(res) + +``` +### Example Usage: defaultExample + + ```python from glean.api_client import Glean, models import os @@ -420,6 +573,70 @@ with Glean( # Handle response print(res) +``` +### Example Usage: gptAgentExample + + +```python +from glean.api_client import Glean, models +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.client.chat.create_stream(messages=[ + { + "fragments": [ + models.ChatMessageFragment( + text="Who was the first person to land on the moon?", + ), + ], + }, + ], agent_config={ + "agent": models.AgentEnum.GPT, + }, timeout_millis=30000) + + # Handle response + print(res) + +``` +### Example Usage: streamingExample + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.client.chat.create_stream(messages=[], timeout_millis=30000) + + # Handle response + print(res) + +``` +### Example Usage: updateResponse + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.client.chat.create_stream(messages=[], timeout_millis=30000) + + # Handle response + print(res) + ``` ### Parameters diff --git a/docs/sdks/clientdatasources/README.md b/docs/sdks/clientdatasources/README.md new file mode 100644 index 00000000..83d845c0 --- /dev/null +++ b/docs/sdks/clientdatasources/README.md @@ -0,0 +1,191 @@ +# Client.Datasources + +## Overview + +### Available Operations + +* [retrieve_configuration](#retrieve_configuration) - Get datasource instance configuration +* [update_configuration](#update_configuration) - Update datasource instance configuration +* [retrieve_credential_status](#retrieve_credential_status) - Get datasource instance credential status +* [rotate_credentials](#rotate_credentials) - Rotate datasource instance credentials + +## retrieve_configuration + +Gets the greenlisted configuration values for a datasource instance. Returns only configuration keys that are exposed via the public API greenlist. + + +### Example Usage + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.client.datasources.retrieve_configuration(datasource_id="o365sharepoint", instance_id="o365sharepoint_abc123") + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `datasource_id` | *str* | :heavy_check_mark: | The datasource type identifier (e.g. o365sharepoint) | o365sharepoint | +| `instance_id` | *str* | :heavy_check_mark: | The datasource instance identifier | o365sharepoint_abc123 | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[models.DatasourceConfigurationResponse](../../models/datasourceconfigurationresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| -------------------- | -------------------- | -------------------- | +| errors.ErrorResponse | 400, 403, 404 | application/json | +| errors.GleanError | 4XX, 5XX | \*/\* | + +## update_configuration + +Updates the greenlisted configuration values for a datasource instance. Only configuration keys that are exposed via the public API greenlist may be set. Returns the full greenlisted configuration after the update is applied. + + +### Example Usage + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.client.datasources.update_configuration(datasource_id="o365sharepoint", instance_id="o365sharepoint_abc123", configuration={ + "values": { + + }, + }) + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | +| `datasource_id` | *str* | :heavy_check_mark: | The datasource type identifier (e.g. o365sharepoint) | o365sharepoint | +| `instance_id` | *str* | :heavy_check_mark: | The datasource instance identifier | o365sharepoint_abc123 | +| `configuration` | [models.DatasourceInstanceConfiguration](../../models/datasourceinstanceconfiguration.md) | :heavy_check_mark: | Configuration for a datasource instance | | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[models.DatasourceConfigurationResponse](../../models/datasourceconfigurationresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| -------------------- | -------------------- | -------------------- | +| errors.ErrorResponse | 400, 403, 404 | application/json | +| errors.GleanError | 4XX, 5XX | \*/\* | + +## retrieve_credential_status + +Returns the current credential status for a datasource instance. Access is limited to callers with the ADMIN scope; the handler enforces this check. + + +### Example Usage + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.client.datasources.retrieve_credential_status(datasource_instance_id="o365sharepoint_abc123") + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | +| `datasource_instance_id` | *str* | :heavy_check_mark: | The full datasource instance identifier (e.g. o365sharepoint_abc123) | o365sharepoint_abc123 | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[models.DatasourceCredentialStatusResponse](../../models/datasourcecredentialstatusresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| -------------------- | -------------------- | -------------------- | +| errors.ErrorResponse | 400, 403, 404 | application/json | +| errors.GleanError | 4XX, 5XX | \*/\* | + +## rotate_credentials + +Rotates the credentials that a datasource instance uses to connect to its upstream system. Replaces the active credential material with the supplied values and returns the credential status after rotation. Access is limited to callers with the ADMIN scope; the handler enforces this check. +Only keys recognized as credential material for the datasource type may be set in `credentials.values` (e.g. `clientSecret`, `apiToken`, `privateKey`, depending on the configured auth method). Unrecognized keys, or keys that correspond to non-credential configuration, cause a 400; other instance configuration must be updated via PATCH /configure/datasources/{datasourceId}/instances/{instanceId}. + + +### Example Usage + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.client.datasources.rotate_credentials(datasource_instance_id="o365sharepoint_abc123", credentials={ + "values": { + "key": {}, + }, + }) + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | +| `datasource_instance_id` | *str* | :heavy_check_mark: | The full datasource instance identifier (e.g. o365sharepoint_abc123) | o365sharepoint_abc123 | +| `credentials` | [models.DatasourceInstanceConfiguration](../../models/datasourceinstanceconfiguration.md) | :heavy_check_mark: | Configuration for a datasource instance | | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[models.DatasourceCredentialStatusResponse](../../models/datasourcecredentialstatusresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| -------------------- | -------------------- | -------------------- | +| errors.ErrorResponse | 400, 403, 404 | application/json | +| errors.GleanError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/clientdocuments/README.md b/docs/sdks/clientdocuments/README.md index 8ef28d90..f2fd9a07 100644 --- a/docs/sdks/clientdocuments/README.md +++ b/docs/sdks/clientdocuments/README.md @@ -34,10 +34,11 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `document_id` | *Optional[str]* | :heavy_minus_sign: | The Glean Document ID to retrieve permissions for. | -| `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`. | +| `document_id` | *Optional[str]* | :heavy_minus_sign: | The Glean Document ID to retrieve permissions for. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response @@ -74,10 +75,11 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `request` | [models.GetDocumentsRequest](../../models/getdocumentsrequest.md) | :heavy_check_mark: | The request object to use for the request. | -| `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`. | +| `get_documents_request` | [Optional[models.GetDocumentsRequest]](../../models/getdocumentsrequest.md) | :heavy_minus_sign: | Information about documents requested. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response @@ -105,7 +107,7 @@ with Glean( api_token=os.getenv("GLEAN_API_TOKEN", ""), ) as glean: - res = glean.client.documents.retrieve_by_facets(request={ + res = glean.client.documents.retrieve_by_facets(get_documents_by_facets_request={ "filter_sets": [ { "filters": [ @@ -125,6 +127,7 @@ with Glean( ], }, ], + "cursor": "", }) # Handle response @@ -134,10 +137,11 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | -| `request` | [models.GetDocumentsByFacetsRequest](../../models/getdocumentsbyfacetsrequest.md) | :heavy_check_mark: | The request object to use for the request. | -| `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`. | +| `get_documents_by_facets_request` | [Optional[models.GetDocumentsByFacetsRequest]](../../models/getdocumentsbyfacetsrequest.md) | :heavy_minus_sign: | Information about facet conditions for documents to be retrieved. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response @@ -179,14 +183,15 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | -| `document_specs` | List[[models.DocumentSpecUnion](../../models/documentspecunion.md)] | :heavy_check_mark: | Specifications of documents to summarize | -| `timestamp` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | The ISO 8601 timestamp associated with the client request. | -| `query` | *Optional[str]* | :heavy_minus_sign: | Optional query that the summary should be about | -| `preferred_summary_length` | *Optional[int]* | :heavy_minus_sign: | Optional length of summary output. If not given, defaults to 500 chars. | -| `tracking_token` | *Optional[str]* | :heavy_minus_sign: | An opaque token that represents this particular result. To be used for /feedback reporting. | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `document_specs` | List[[models.DocumentSpecUnion](../../models/documentspecunion.md)] | :heavy_check_mark: | Specifications of documents to summarize | +| `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`. | +| `timestamp` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | The ISO 8601 timestamp associated with the client request. | +| `query` | *Optional[str]* | :heavy_minus_sign: | Optional query that the summary should be about | +| `preferred_summary_length` | *Optional[int]* | :heavy_minus_sign: | Optional length of summary output. If not given, defaults to 500 chars. | +| `tracking_token` | *Optional[str]* | :heavy_minus_sign: | An opaque token that represents this particular result. To be used for /feedback reporting. | +| `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/clientsearch/README.md b/docs/sdks/clientsearch/README.md new file mode 100644 index 00000000..20293342 --- /dev/null +++ b/docs/sdks/clientsearch/README.md @@ -0,0 +1,657 @@ +# Client.Search + +## Overview + +### Available Operations + +* [query_as_admin](#query_as_admin) - Search the index (admin) +* [autocomplete](#autocomplete) - Autocomplete +* [retrieve_feed](#retrieve_feed) - Feed of documents and events +* [recommendations](#recommendations) - Recommend documents +* [query](#query) - Search + +## query_as_admin + +Retrieves results for search query without respect for permissions. This is available only to privileged users. + +### Example Usage + + +```python +from glean.api_client import Glean, models +from glean.api_client.utils import parse_datetime +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.client.search.query_as_admin(query="vacation policy", tracking_token="trackingToken", source_document=models.Document( + container_document=models.Document( + metadata=models.DocumentMetadata( + datasource="datasource", + object_type="Feature Request", + container="container", + parent_id="JIRA_EN-1337", + mime_type="mimeType", + document_id="documentId", + create_time=parse_datetime("2000-01-23T04:56:07.000Z"), + update_time=parse_datetime("2000-01-23T04:56:07.000Z"), + author=models.Person( + name="name", + obfuscated_id="", + ), + components=[ + "Backend", + "Networking", + ], + status="Done", + custom_data={ + "someCustomField": models.CustomDataValue( + string_value="someCustomValue", + ), + }, + ), + ), + parent_document=models.Document( + metadata=models.DocumentMetadata( + datasource="datasource", + object_type="Feature Request", + container="container", + parent_id="JIRA_EN-1337", + mime_type="mimeType", + document_id="documentId", + create_time=parse_datetime("2000-01-23T04:56:07.000Z"), + update_time=parse_datetime("2000-01-23T04:56:07.000Z"), + author=models.Person( + name="name", + obfuscated_id="", + ), + components=[ + "Backend", + "Networking", + ], + status="Done", + custom_data={ + "someCustomField": models.CustomDataValue( + string_value="someCustomValue", + ), + }, + ), + ), + metadata=models.DocumentMetadata( + datasource="datasource", + object_type="Feature Request", + container="container", + parent_id="JIRA_EN-1337", + mime_type="mimeType", + document_id="documentId", + create_time=parse_datetime("2000-01-23T04:56:07.000Z"), + update_time=parse_datetime("2000-01-23T04:56:07.000Z"), + author=models.Person( + name="name", + obfuscated_id="", + ), + components=[ + "Backend", + "Networking", + ], + status="Done", + custom_data={ + "someCustomField": models.CustomDataValue( + string_value="someCustomValue", + ), + }, + ), + ), page_size=10, max_snippet_size=400, cursor="", input_details={ + "has_copy_paste": True, + }, request_options=models.SearchRequestOptions( + facet_filters=[ + models.FacetFilter( + field_name="type", + values=[ + models.FacetFilterValue( + value="article", + relation_type=models.RelationType.EQUALS, + ), + models.FacetFilterValue( + value="document", + relation_type=models.RelationType.EQUALS, + ), + ], + ), + models.FacetFilter( + field_name="department", + values=[ + models.FacetFilterValue( + value="engineering", + relation_type=models.RelationType.EQUALS, + ), + ], + ), + ], + facet_bucket_size=723824, + ), timeout_millis=5000) + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `query` | *str* | :heavy_check_mark: | The search terms. | vacation policy | +| `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`. | | +| `timestamp` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | The ISO 8601 timestamp associated with the client request. | | +| `tracking_token` | *Optional[str]* | :heavy_minus_sign: | A previously received trackingToken for a search associated with the same query. Useful for more requests and requests for other tabs. | | +| `session_info` | [Optional[models.SessionInfo]](../../models/sessioninfo.md) | :heavy_minus_sign: | N/A | | +| `source_document` | [Optional[models.Document]](../../models/document.md) | :heavy_minus_sign: | N/A | | +| `page_size` | *Optional[int]* | :heavy_minus_sign: | Hint to the server about how many results to send back. Server may return less or more. Structured results and clustered results don't count towards pageSize. | 100 | +| `max_snippet_size` | *Optional[int]* | :heavy_minus_sign: | Hint to the server about how many characters long a snippet may be. Server may return less or more. | 400 | +| `cursor` | *Optional[str]* | :heavy_minus_sign: | Pagination cursor. A previously received opaque token representing the position in the overall results at which to start. | | +| `result_tab_ids` | List[*str*] | :heavy_minus_sign: | The unique IDs of the result tabs for which to fetch results. This will have precedence over datasource filters if both are specified and in conflict. | | +| `input_details` | [Optional[models.SearchRequestInputDetails]](../../models/searchrequestinputdetails.md) | :heavy_minus_sign: | N/A | {
"hasCopyPaste": true
} | +| `request_options` | [Optional[models.SearchRequestOptions]](../../models/searchrequestoptions.md) | :heavy_minus_sign: | N/A | {
"datasourceFilter": "JIRA",
"datasourcesFilter": [
"JIRA"
],
"queryOverridesFacetFilters": true,
"facetFilters": [
{
"fieldName": "fieldName",
"values": [
{
"value": "fieldValues",
"relationType": "EQUALS"
},
{
"value": "fieldValues",
"relationType": "EQUALS"
}
]
},
{
"fieldName": "fieldName",
"values": [
{
"value": "fieldValues",
"relationType": "EQUALS"
},
{
"value": "fieldValues",
"relationType": "EQUALS"
}
]
}
]
} | +| `timeout_millis` | *Optional[int]* | :heavy_minus_sign: | Timeout in milliseconds for the request. A `408` error will be returned if handling the request takes longer. | 5000 | +| `disable_spellcheck` | *Optional[bool]* | :heavy_minus_sign: | Whether or not to disable spellcheck. | | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[models.SearchResponse](../../models/searchresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------------- | --------------------- | --------------------- | +| errors.GleanDataError | 403, 422 | application/json | +| errors.GleanError | 4XX, 5XX | \*/\* | + +## autocomplete + +Retrieve query suggestions, operators and documents for the given partially typed query. + +### Example Usage + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.client.search.autocomplete(tracking_token="trackingToken", query="what is a que", datasource="GDRIVE", result_size=10, auth_tokens=[ + { + "access_token": "123abc", + "datasource": "gmail", + "scope": "email profile https://www.googleapis.com/auth/gmail.readonly", + "token_type": "Bearer", + "auth_user": "1", + }, + ]) + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `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`. | | +| `tracking_token` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `session_info` | [Optional[models.SessionInfo]](../../models/sessioninfo.md) | :heavy_minus_sign: | N/A | | +| `query` | *Optional[str]* | :heavy_minus_sign: | Partially typed query. | San Fra | +| `datasources_filter` | List[*str*] | :heavy_minus_sign: | Filter results to only those relevant to one or more datasources (e.g. jira, gdrive). Results are unfiltered if missing. | | +| `datasource` | *Optional[str]* | :heavy_minus_sign: | Filter to only return results relevant to the given datasource. | | +| `result_types` | List[[models.AutocompleteRequestResultType](../../models/autocompleterequestresulttype.md)] | :heavy_minus_sign: | Filter to only return results of the given type(s). All types may be returned if omitted. | | +| `result_size` | *Optional[int]* | :heavy_minus_sign: | Maximum number of results to be returned. If no value is provided, the backend will cap at 200.
| 10 | +| `auth_tokens` | List[[models.AuthToken](../../models/authtoken.md)] | :heavy_minus_sign: | Auth tokens which may be used for federated results. | | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[models.AutocompleteResponse](../../models/autocompleteresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ----------------- | ----------------- | ----------------- | +| errors.GleanError | 4XX, 5XX | \*/\* | + +## retrieve_feed + +The personalized feed/home includes different types of contents including suggestions, recents, calendar events and many more. + +### Example Usage + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.client.search.retrieve_feed(timeout_millis=5000) + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `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`. | | +| `categories` | List[[models.FeedRequestCategory](../../models/feedrequestcategory.md)] | :heavy_minus_sign: | Categories of content requested. An allowlist gives flexibility to request content separately or together. | | +| `request_options` | [Optional[models.FeedRequestOptions]](../../models/feedrequestoptions.md) | :heavy_minus_sign: | N/A | | +| `timeout_millis` | *Optional[int]* | :heavy_minus_sign: | Timeout in milliseconds for the request. A `408` error will be returned if handling the request takes longer. | 5000 | +| `session_info` | [Optional[models.SessionInfo]](../../models/sessioninfo.md) | :heavy_minus_sign: | N/A | | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[models.FeedResponse](../../models/feedresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ----------------- | ----------------- | ----------------- | +| errors.GleanError | 4XX, 5XX | \*/\* | + +## recommendations + +Retrieve recommended documents for the given URL or Glean Document ID. + +### Example Usage + + +```python +from glean.api_client import Glean, models +from glean.api_client.utils import parse_datetime +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.client.search.recommendations(source_document=models.Document( + container_document=models.Document( + metadata=models.DocumentMetadata( + datasource="datasource", + object_type="Feature Request", + container="container", + parent_id="JIRA_EN-1337", + mime_type="mimeType", + document_id="documentId", + create_time=parse_datetime("2000-01-23T04:56:07.000Z"), + update_time=parse_datetime("2000-01-23T04:56:07.000Z"), + author=models.Person( + name="name", + obfuscated_id="", + ), + components=[ + "Backend", + "Networking", + ], + status="Done", + custom_data={ + "someCustomField": models.CustomDataValue( + string_value="someCustomValue", + ), + }, + ), + ), + parent_document=models.Document( + metadata=models.DocumentMetadata( + datasource="datasource", + object_type="Feature Request", + container="container", + parent_id="JIRA_EN-1337", + mime_type="mimeType", + document_id="documentId", + create_time=parse_datetime("2000-01-23T04:56:07.000Z"), + update_time=parse_datetime("2000-01-23T04:56:07.000Z"), + author=models.Person( + name="name", + obfuscated_id="", + ), + components=[ + "Backend", + "Networking", + ], + status="Done", + custom_data={ + "someCustomField": models.CustomDataValue( + string_value="someCustomValue", + ), + }, + ), + ), + metadata=models.DocumentMetadata( + datasource="datasource", + object_type="Feature Request", + container="container", + parent_id="JIRA_EN-1337", + mime_type="mimeType", + document_id="documentId", + create_time=parse_datetime("2000-01-23T04:56:07.000Z"), + update_time=parse_datetime("2000-01-23T04:56:07.000Z"), + author=models.Person( + name="name", + obfuscated_id="", + ), + components=[ + "Backend", + "Networking", + ], + status="Done", + custom_data={ + "someCustomField": models.CustomDataValue( + string_value="someCustomValue", + ), + }, + ), + ), page_size=100, max_snippet_size=400, request_options=models.RecommendationsRequestOptions( + facet_filter_sets=[ + models.FacetFilterSet( + filters=[ + models.FacetFilter( + field_name="type", + values=[ + models.FacetFilterValue( + value="Spreadsheet", + relation_type=models.RelationType.EQUALS, + ), + models.FacetFilterValue( + value="Presentation", + relation_type=models.RelationType.EQUALS, + ), + ], + ), + ], + ), + ], + context=models.Document( + container_document=models.Document( + metadata=models.DocumentMetadata( + datasource="datasource", + object_type="Feature Request", + container="container", + parent_id="JIRA_EN-1337", + mime_type="mimeType", + document_id="documentId", + create_time=parse_datetime("2000-01-23T04:56:07.000Z"), + update_time=parse_datetime("2000-01-23T04:56:07.000Z"), + author=models.Person( + name="name", + obfuscated_id="", + ), + components=[ + "Backend", + "Networking", + ], + status="Done", + custom_data={ + "someCustomField": models.CustomDataValue( + string_value="someCustomValue", + ), + }, + ), + ), + parent_document=models.Document( + metadata=models.DocumentMetadata( + datasource="datasource", + object_type="Feature Request", + container="container", + parent_id="JIRA_EN-1337", + mime_type="mimeType", + document_id="documentId", + create_time=parse_datetime("2000-01-23T04:56:07.000Z"), + update_time=parse_datetime("2000-01-23T04:56:07.000Z"), + author=models.Person( + name="name", + obfuscated_id="", + ), + components=[ + "Backend", + "Networking", + ], + status="Done", + custom_data={ + "someCustomField": models.CustomDataValue( + string_value="someCustomValue", + ), + }, + ), + ), + metadata=models.DocumentMetadata( + datasource="datasource", + object_type="Feature Request", + container="container", + parent_id="JIRA_EN-1337", + mime_type="mimeType", + document_id="documentId", + create_time=parse_datetime("2000-01-23T04:56:07.000Z"), + update_time=parse_datetime("2000-01-23T04:56:07.000Z"), + author=models.Person( + name="name", + obfuscated_id="", + ), + components=[ + "Backend", + "Networking", + ], + status="Done", + custom_data={ + "someCustomField": models.CustomDataValue( + string_value="someCustomValue", + ), + }, + ), + ), + )) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `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`. | | +| `timestamp` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | The ISO 8601 timestamp associated with the client request. | | +| `tracking_token` | *Optional[str]* | :heavy_minus_sign: | A previously received trackingToken for a search associated with the same query. Useful for more requests and requests for other tabs. | | +| `session_info` | [Optional[models.SessionInfo]](../../models/sessioninfo.md) | :heavy_minus_sign: | N/A | | +| `source_document` | [Optional[models.Document]](../../models/document.md) | :heavy_minus_sign: | N/A | | +| `page_size` | *Optional[int]* | :heavy_minus_sign: | Hint to the server about how many results to send back. Server may return less or more. Structured results and clustered results don't count towards pageSize. | 100 | +| `max_snippet_size` | *Optional[int]* | :heavy_minus_sign: | Hint to the server about how many characters long a snippet may be. Server may return less or more. | 400 | +| `recommendation_document_spec` | [Optional[models.DocumentSpecUnion]](../../models/documentspecunion.md) | :heavy_minus_sign: | N/A | | +| `request_options` | [Optional[models.RecommendationsRequestOptions]](../../models/recommendationsrequestoptions.md) | :heavy_minus_sign: | N/A | | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[models.ResultsResponse](../../models/resultsresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ----------------- | ----------------- | ----------------- | +| errors.GleanError | 4XX, 5XX | \*/\* | + +## query + +Retrieve results from the index for the given query and filters. + +### Example Usage + + +```python +from glean.api_client import Glean, models +from glean.api_client.utils import parse_datetime +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.client.search.query(query="vacation policy", tracking_token="trackingToken", source_document=models.Document( + container_document=models.Document( + metadata=models.DocumentMetadata( + datasource="datasource", + object_type="Feature Request", + container="container", + parent_id="JIRA_EN-1337", + mime_type="mimeType", + document_id="documentId", + create_time=parse_datetime("2000-01-23T04:56:07.000Z"), + update_time=parse_datetime("2000-01-23T04:56:07.000Z"), + author=models.Person( + name="name", + obfuscated_id="", + ), + components=[ + "Backend", + "Networking", + ], + status="Done", + custom_data={ + "someCustomField": models.CustomDataValue( + string_value="someCustomValue", + ), + }, + ), + ), + parent_document=models.Document( + metadata=models.DocumentMetadata( + datasource="datasource", + object_type="Feature Request", + container="container", + parent_id="JIRA_EN-1337", + mime_type="mimeType", + document_id="documentId", + create_time=parse_datetime("2000-01-23T04:56:07.000Z"), + update_time=parse_datetime("2000-01-23T04:56:07.000Z"), + author=models.Person( + name="name", + obfuscated_id="", + ), + components=[ + "Backend", + "Networking", + ], + status="Done", + custom_data={ + "someCustomField": models.CustomDataValue( + string_value="someCustomValue", + ), + }, + ), + ), + metadata=models.DocumentMetadata( + datasource="datasource", + object_type="Feature Request", + container="container", + parent_id="JIRA_EN-1337", + mime_type="mimeType", + document_id="documentId", + create_time=parse_datetime("2000-01-23T04:56:07.000Z"), + update_time=parse_datetime("2000-01-23T04:56:07.000Z"), + author=models.Person( + name="name", + obfuscated_id="", + ), + components=[ + "Backend", + "Networking", + ], + status="Done", + custom_data={ + "someCustomField": models.CustomDataValue( + string_value="someCustomValue", + ), + }, + ), + ), page_size=10, max_snippet_size=400, cursor="", input_details={ + "has_copy_paste": True, + }, request_options=models.SearchRequestOptions( + facet_filters=[ + models.FacetFilter( + field_name="type", + values=[ + models.FacetFilterValue( + value="article", + relation_type=models.RelationType.EQUALS, + ), + models.FacetFilterValue( + value="document", + relation_type=models.RelationType.EQUALS, + ), + ], + ), + models.FacetFilter( + field_name="department", + values=[ + models.FacetFilterValue( + value="engineering", + relation_type=models.RelationType.EQUALS, + ), + ], + ), + ], + facet_bucket_size=939520, + ), timeout_millis=5000) + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `query` | *str* | :heavy_check_mark: | The search terms. | vacation policy | +| `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`. | | +| `timestamp` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | The ISO 8601 timestamp associated with the client request. | | +| `tracking_token` | *Optional[str]* | :heavy_minus_sign: | A previously received trackingToken for a search associated with the same query. Useful for more requests and requests for other tabs. | | +| `session_info` | [Optional[models.SessionInfo]](../../models/sessioninfo.md) | :heavy_minus_sign: | N/A | | +| `source_document` | [Optional[models.Document]](../../models/document.md) | :heavy_minus_sign: | N/A | | +| `page_size` | *Optional[int]* | :heavy_minus_sign: | Hint to the server about how many results to send back. Server may return less or more. Structured results and clustered results don't count towards pageSize. | 100 | +| `max_snippet_size` | *Optional[int]* | :heavy_minus_sign: | Hint to the server about how many characters long a snippet may be. Server may return less or more. | 400 | +| `cursor` | *Optional[str]* | :heavy_minus_sign: | Pagination cursor. A previously received opaque token representing the position in the overall results at which to start. | | +| `result_tab_ids` | List[*str*] | :heavy_minus_sign: | The unique IDs of the result tabs for which to fetch results. This will have precedence over datasource filters if both are specified and in conflict. | | +| `input_details` | [Optional[models.SearchRequestInputDetails]](../../models/searchrequestinputdetails.md) | :heavy_minus_sign: | N/A | {
"hasCopyPaste": true
} | +| `request_options` | [Optional[models.SearchRequestOptions]](../../models/searchrequestoptions.md) | :heavy_minus_sign: | N/A | {
"datasourceFilter": "JIRA",
"datasourcesFilter": [
"JIRA"
],
"queryOverridesFacetFilters": true,
"facetFilters": [
{
"fieldName": "fieldName",
"values": [
{
"value": "fieldValues",
"relationType": "EQUALS"
},
{
"value": "fieldValues",
"relationType": "EQUALS"
}
]
},
{
"fieldName": "fieldName",
"values": [
{
"value": "fieldValues",
"relationType": "EQUALS"
},
{
"value": "fieldValues",
"relationType": "EQUALS"
}
]
}
]
} | +| `timeout_millis` | *Optional[int]* | :heavy_minus_sign: | Timeout in milliseconds for the request. A `408` error will be returned if handling the request takes longer. | 5000 | +| `disable_spellcheck` | *Optional[bool]* | :heavy_minus_sign: | Whether or not to disable spellcheck. | | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[models.SearchResponse](../../models/searchresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------------- | --------------------- | --------------------- | +| errors.GleanDataError | 403, 422 | application/json | +| errors.GleanError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/clientshortcuts/README.md b/docs/sdks/clientshortcuts/README.md index 159d46c1..67222f0a 100644 --- a/docs/sdks/clientshortcuts/README.md +++ b/docs/sdks/clientshortcuts/README.md @@ -54,10 +54,11 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | -| `data` | [models.ShortcutMutableProperties](../../models/shortcutmutableproperties.md) | :heavy_check_mark: | N/A | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data` | [models.ShortcutMutableProperties](../../models/shortcutmutableproperties.md) | :heavy_check_mark: | N/A | +| `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`. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response @@ -93,10 +94,11 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `id` | *int* | :heavy_check_mark: | The opaque id of the user generated content. | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *int* | :heavy_check_mark: | The opaque id of the user generated content. | +| `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`. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Errors @@ -120,7 +122,7 @@ with Glean( api_token=os.getenv("GLEAN_API_TOKEN", ""), ) as glean: - res = glean.client.shortcuts.retrieve(request={ + res = glean.client.shortcuts.retrieve(get_shortcut_request={ "alias": "", }) @@ -131,10 +133,11 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | -| `request` | [models.GetShortcutRequestUnion](../../models/getshortcutrequestunion.md) | :heavy_check_mark: | The request object to use for the request. | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `get_shortcut_request` | [models.GetShortcutRequest](../../models/getshortcutrequest.md) | :heavy_check_mark: | GetShortcut request | +| `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`. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response @@ -162,7 +165,7 @@ with Glean( api_token=os.getenv("GLEAN_API_TOKEN", ""), ) as glean: - res = glean.client.shortcuts.list(page_size=10, filters=[ + res = glean.client.shortcuts.list(page_size=10, cursor="", filters=[ { "field_name": "type", "values": [ @@ -185,15 +188,16 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `page_size` | *int* | :heavy_check_mark: | N/A | 10 | -| `include_fields` | List[[models.ListShortcutsPaginatedRequestIncludeField](../../models/listshortcutspaginatedrequestincludefield.md)] | :heavy_minus_sign: | Array of fields/data to be included in response that are not included by default | | -| `cursor` | *Optional[str]* | :heavy_minus_sign: | A token specifying the position in the overall results to start at. Received from the endpoint and iterated back. Currently being used as page no (as we implement offset pagination) | | -| `filters` | List[[models.FacetFilter](../../models/facetfilter.md)] | :heavy_minus_sign: | A list of filters for the query. An AND is assumed between different filters. We support filters on Go Link name, author, department and type. | | -| `sort` | [Optional[models.SortOptions]](../../models/sortoptions.md) | :heavy_minus_sign: | N/A | | -| `query` | *Optional[str]* | :heavy_minus_sign: | Search query that should be a substring in atleast one of the fields (alias , inputAlias, destinationUrl, description). Empty query does not filter shortcuts. | | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `page_size` | *int* | :heavy_check_mark: | N/A | 10 | +| `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`. | | +| `include_fields` | List[[models.ListShortcutsPaginatedRequestIncludeField](../../models/listshortcutspaginatedrequestincludefield.md)] | :heavy_minus_sign: | Array of fields/data to be included in response that are not included by default | | +| `cursor` | *Optional[str]* | :heavy_minus_sign: | A token specifying the position in the overall results to start at. Received from the endpoint and iterated back. Currently being used as page no (as we implement offset pagination) | | +| `filters` | List[[models.FacetFilter](../../models/facetfilter.md)] | :heavy_minus_sign: | A list of filters for the query. An AND is assumed between different filters. We support filters on Go Link name, author, department and type. | | +| `sort` | [Optional[models.SortOptions]](../../models/sortoptions.md) | :heavy_minus_sign: | N/A | | +| `query` | *Optional[str]* | :heavy_minus_sign: | Search query that should be a substring in atleast one of the fields (alias , inputAlias, destinationUrl, description). Empty query does not filter shortcuts. | | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | ### Response @@ -246,18 +250,19 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | -| `id` | *int* | :heavy_check_mark: | The opaque id of the user generated content. | -| `input_alias` | *Optional[str]* | :heavy_minus_sign: | Link text following go/ prefix as entered by the user. | -| `destination_url` | *Optional[str]* | :heavy_minus_sign: | Destination URL for the shortcut. | -| `destination_document_id` | *Optional[str]* | :heavy_minus_sign: | Glean Document ID for the URL, if known. | -| `description` | *Optional[str]* | :heavy_minus_sign: | A short, plain text blurb to help people understand the intent of the shortcut. | -| `unlisted` | *Optional[bool]* | :heavy_minus_sign: | Whether this shortcut is unlisted or not. Unlisted shortcuts are visible to author + admins only. | -| `url_template` | *Optional[str]* | :heavy_minus_sign: | For variable shortcuts, contains the URL template; note, `destinationUrl` contains default URL. | -| `added_roles` | List[[models.UserRoleSpecification](../../models/userrolespecification.md)] | :heavy_minus_sign: | A list of user roles added for the Shortcut. | -| `removed_roles` | List[[models.UserRoleSpecification](../../models/userrolespecification.md)] | :heavy_minus_sign: | A list of user roles removed for the Shortcut. | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *int* | :heavy_check_mark: | The opaque id of the user generated content. | +| `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`. | +| `input_alias` | *Optional[str]* | :heavy_minus_sign: | Link text following go/ prefix as entered by the user. | +| `destination_url` | *Optional[str]* | :heavy_minus_sign: | Destination URL for the shortcut. | +| `destination_document_id` | *Optional[str]* | :heavy_minus_sign: | Glean Document ID for the URL, if known. | +| `description` | *Optional[str]* | :heavy_minus_sign: | A short, plain text blurb to help people understand the intent of the shortcut. | +| `unlisted` | *Optional[bool]* | :heavy_minus_sign: | Whether this shortcut is unlisted or not. Unlisted shortcuts are visible to author + admins only. | +| `url_template` | *Optional[str]* | :heavy_minus_sign: | For variable shortcuts, contains the URL template; note, `destinationUrl` contains default URL. | +| `added_roles` | List[[models.UserRoleSpecification](../../models/userrolespecification.md)] | :heavy_minus_sign: | A list of user roles added for the Shortcut. | +| `removed_roles` | List[[models.UserRoleSpecification](../../models/userrolespecification.md)] | :heavy_minus_sign: | A list of user roles removed for the Shortcut. | +| `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/clientverification/README.md b/docs/sdks/clientverification/README.md index 859adc03..63fa8d6c 100644 --- a/docs/sdks/clientverification/README.md +++ b/docs/sdks/clientverification/README.md @@ -36,6 +36,7 @@ with Glean( | Parameter | Type | Required | Description | | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `document_id` | *str* | :heavy_check_mark: | The document which the verification is for new reminders and/or update. | +| `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`. | | `assignee` | *Optional[str]* | :heavy_minus_sign: | The obfuscated id of the person this verification is assigned to. | | `remind_in_days` | *Optional[int]* | :heavy_minus_sign: | Reminder for the next verifications in terms of days. For deletion, this will be omitted. | | `reason` | *Optional[str]* | :heavy_minus_sign: | An optional free-text reason for the reminder. This is particularly useful when a reminder is used to ask for verification from another user (for example, "Duplicate", "Incomplete", "Incorrect"). | @@ -76,10 +77,11 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `count` | *Optional[int]* | :heavy_minus_sign: | Maximum number of documents to return | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `count` | *Optional[int]* | :heavy_minus_sign: | Maximum number of documents to return | +| `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`. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response @@ -116,11 +118,12 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | -| `document_id` | *str* | :heavy_check_mark: | The document which is verified. | -| `action` | [Optional[models.VerifyRequestAction]](../../models/verifyrequestaction.md) | :heavy_minus_sign: | The verification action requested. | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `document_id` | *str* | :heavy_check_mark: | The document which is verified. | +| `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`. | +| `action` | [Optional[models.VerifyRequestAction]](../../models/verifyrequestaction.md) | :heavy_minus_sign: | The verification action requested. | +| `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/collections/README.md b/docs/sdks/collections/README.md index 4b05e197..f311071e 100644 --- a/docs/sdks/collections/README.md +++ b/docs/sdks/collections/README.md @@ -38,11 +38,12 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | -| `collection_id` | *float* | :heavy_check_mark: | The ID of the Collection to add items to. | -| `added_collection_item_descriptors` | List[[models.CollectionItemDescriptor](../../models/collectionitemdescriptor.md)] | :heavy_minus_sign: | The CollectionItemDescriptors of the items being added. | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `collection_id` | *float* | :heavy_check_mark: | The ID of the Collection to add items to. | +| `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`. | +| `added_collection_item_descriptors` | List[[models.CollectionItemDescriptor](../../models/collectionitemdescriptor.md)] | :heavy_minus_sign: | The CollectionItemDescriptors of the items being added. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response @@ -109,20 +110,21 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| --------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `name` | *str* | :heavy_check_mark: | The unique name of the Collection. | -| `description` | *Optional[str]* | :heavy_minus_sign: | A brief summary of the Collection's contents. | -| `added_roles` | List[[models.UserRoleSpecification](../../models/userrolespecification.md)] | :heavy_minus_sign: | A list of added user roles for the Collection. | -| `removed_roles` | List[[models.UserRoleSpecification](../../models/userrolespecification.md)] | :heavy_minus_sign: | A list of removed user roles for the Collection. | -| `audience_filters` | List[[models.FacetFilter](../../models/facetfilter.md)] | :heavy_minus_sign: | Filters which restrict who should see this Collection. Values are taken from the corresponding filters in people search. | -| `icon` | *Optional[str]* | :heavy_minus_sign: | The emoji icon of this Collection. | -| `admin_locked` | *Optional[bool]* | :heavy_minus_sign: | Indicates whether edits are allowed for everyone or only admins. | -| `parent_id` | *Optional[int]* | :heavy_minus_sign: | The parent of this Collection, or 0 if it's a top-level Collection. | -| `thumbnail` | [Optional[models.Thumbnail]](../../models/thumbnail.md) | :heavy_minus_sign: | N/A | -| `allowed_datasource` | *Optional[str]* | :heavy_minus_sign: | The datasource type this Collection can hold. | -| `new_next_item_id` | *Optional[str]* | :heavy_minus_sign: | The (optional) ItemId of the next CollectionItem in sequence. If omitted, will be added to the end of the Collection. Only used if parentId is specified. | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `name` | *str* | :heavy_check_mark: | The unique name of the Collection. | +| `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`. | +| `description` | *Optional[str]* | :heavy_minus_sign: | A brief summary of the Collection's contents. | +| `added_roles` | List[[models.UserRoleSpecification](../../models/userrolespecification.md)] | :heavy_minus_sign: | A list of added user roles for the Collection. | +| `removed_roles` | List[[models.UserRoleSpecification](../../models/userrolespecification.md)] | :heavy_minus_sign: | A list of removed user roles for the Collection. | +| `audience_filters` | List[[models.FacetFilter](../../models/facetfilter.md)] | :heavy_minus_sign: | Filters which restrict who should see this Collection. Values are taken from the corresponding filters in people search. | +| `icon` | *Optional[str]* | :heavy_minus_sign: | The emoji icon of this Collection. | +| `admin_locked` | *Optional[bool]* | :heavy_minus_sign: | Indicates whether edits are allowed for everyone or only admins. | +| `parent_id` | *Optional[int]* | :heavy_minus_sign: | The parent of this Collection, or 0 if it's a top-level Collection. | +| `thumbnail` | [Optional[models.Thumbnail]](../../models/thumbnail.md) | :heavy_minus_sign: | N/A | +| `allowed_datasource` | *Optional[str]* | :heavy_minus_sign: | The datasource type this Collection can hold. | +| `new_next_item_id` | *Optional[str]* | :heavy_minus_sign: | The (optional) ItemId of the next CollectionItem in sequence. If omitted, will be added to the end of the Collection. Only used if parentId is specified. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response @@ -163,11 +165,12 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `ids` | List[*int*] | :heavy_check_mark: | The IDs of the Collections to delete. | -| `allowed_datasource` | *Optional[str]* | :heavy_minus_sign: | The datasource allowed in the Collection to be deleted. | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `ids` | List[*int*] | :heavy_check_mark: | The IDs of the Collections to delete. | +| `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`. | +| `allowed_datasource` | *Optional[str]* | :heavy_minus_sign: | The datasource allowed in the Collection to be deleted. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Errors @@ -201,12 +204,13 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| --------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | -| `collection_id` | *float* | :heavy_check_mark: | The ID of the Collection to remove an item in. | -| `item_id` | *str* | :heavy_check_mark: | The item ID of the CollectionItem to remove from this Collection. | -| `document_id` | *Optional[str]* | :heavy_minus_sign: | The (optional) Glean Document ID of the CollectionItem to remove from this Collection if this is an indexed document. | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `collection_id` | *float* | :heavy_check_mark: | The ID of the Collection to remove an item in. | +| `item_id` | *str* | :heavy_check_mark: | The item ID of the CollectionItem to remove from this Collection. | +| `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`. | +| `document_id` | *Optional[str]* | :heavy_minus_sign: | The (optional) Glean Document ID of the CollectionItem to remove from this Collection if this is an indexed document. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response @@ -273,20 +277,21 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | -| `name` | *str* | :heavy_check_mark: | The unique name of the Collection. | -| `id` | *int* | :heavy_check_mark: | The ID of the Collection to modify. | -| `description` | *Optional[str]* | :heavy_minus_sign: | A brief summary of the Collection's contents. | -| `added_roles` | List[[models.UserRoleSpecification](../../models/userrolespecification.md)] | :heavy_minus_sign: | A list of added user roles for the Collection. | -| `removed_roles` | List[[models.UserRoleSpecification](../../models/userrolespecification.md)] | :heavy_minus_sign: | A list of removed user roles for the Collection. | -| `audience_filters` | List[[models.FacetFilter](../../models/facetfilter.md)] | :heavy_minus_sign: | Filters which restrict who should see this Collection. Values are taken from the corresponding filters in people search. | -| `icon` | *Optional[str]* | :heavy_minus_sign: | The emoji icon of this Collection. | -| `admin_locked` | *Optional[bool]* | :heavy_minus_sign: | Indicates whether edits are allowed for everyone or only admins. | -| `parent_id` | *Optional[int]* | :heavy_minus_sign: | The parent of this Collection, or 0 if it's a top-level Collection. | -| `thumbnail` | [Optional[models.Thumbnail]](../../models/thumbnail.md) | :heavy_minus_sign: | N/A | -| `allowed_datasource` | *Optional[str]* | :heavy_minus_sign: | The datasource type this Collection can hold. | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `name` | *str* | :heavy_check_mark: | The unique name of the Collection. | +| `id` | *int* | :heavy_check_mark: | The ID of the Collection to modify. | +| `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`. | +| `description` | *Optional[str]* | :heavy_minus_sign: | A brief summary of the Collection's contents. | +| `added_roles` | List[[models.UserRoleSpecification](../../models/userrolespecification.md)] | :heavy_minus_sign: | A list of added user roles for the Collection. | +| `removed_roles` | List[[models.UserRoleSpecification](../../models/userrolespecification.md)] | :heavy_minus_sign: | A list of removed user roles for the Collection. | +| `audience_filters` | List[[models.FacetFilter](../../models/facetfilter.md)] | :heavy_minus_sign: | Filters which restrict who should see this Collection. Values are taken from the corresponding filters in people search. | +| `icon` | *Optional[str]* | :heavy_minus_sign: | The emoji icon of this Collection. | +| `admin_locked` | *Optional[bool]* | :heavy_minus_sign: | Indicates whether edits are allowed for everyone or only admins. | +| `parent_id` | *Optional[int]* | :heavy_minus_sign: | The parent of this Collection, or 0 if it's a top-level Collection. | +| `thumbnail` | [Optional[models.Thumbnail]](../../models/thumbnail.md) | :heavy_minus_sign: | N/A | +| `allowed_datasource` | *Optional[str]* | :heavy_minus_sign: | The datasource type this Collection can hold. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response @@ -324,14 +329,15 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | -| `collection_id` | *int* | :heavy_check_mark: | The ID of the Collection to edit CollectionItems in. | -| `item_id` | *str* | :heavy_check_mark: | The ID of the CollectionItem to edit. | -| `name` | *Optional[str]* | :heavy_minus_sign: | The optional name of the Collection item. | -| `description` | *Optional[str]* | :heavy_minus_sign: | A helpful description of why this CollectionItem is in the Collection that it's in. | -| `icon` | *Optional[str]* | :heavy_minus_sign: | The emoji icon for this CollectionItem. Only used for Text type items. | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `collection_id` | *int* | :heavy_check_mark: | The ID of the Collection to edit CollectionItems in. | +| `item_id` | *str* | :heavy_check_mark: | The ID of the CollectionItem to edit. | +| `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`. | +| `name` | *Optional[str]* | :heavy_minus_sign: | The optional name of the Collection item. | +| `description` | *Optional[str]* | :heavy_minus_sign: | A helpful description of why this CollectionItem is in the Collection that it's in. | +| `icon` | *Optional[str]* | :heavy_minus_sign: | The emoji icon for this CollectionItem. Only used for Text type items. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response @@ -368,13 +374,14 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| ----------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | -| `id` | *int* | :heavy_check_mark: | The ID of the Collection to be retrieved. | -| `with_items` | *Optional[bool]* | :heavy_minus_sign: | Whether or not to include the Collection Items in this Collection. Only request if absolutely required, as this is expensive. | -| `with_hierarchy` | *Optional[bool]* | :heavy_minus_sign: | Whether or not to include the top level Collection in this Collection's hierarchy. | -| `allowed_datasource` | *Optional[str]* | :heavy_minus_sign: | The datasource allowed in the Collection returned. | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *int* | :heavy_check_mark: | The ID of the Collection to be retrieved. | +| `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`. | +| `with_items` | *Optional[bool]* | :heavy_minus_sign: | Whether or not to include the Collection Items in this Collection. Only request if absolutely required, as this is expensive. | +| `with_hierarchy` | *Optional[bool]* | :heavy_minus_sign: | Whether or not to include the top level Collection in this Collection's hierarchy. | +| `allowed_datasource` | *Optional[str]* | :heavy_minus_sign: | The datasource allowed in the Collection returned. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response @@ -411,12 +418,13 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -| `include_audience` | *Optional[bool]* | :heavy_minus_sign: | Whether to include the audience filters with the listed Collections. | -| `include_roles` | *Optional[bool]* | :heavy_minus_sign: | Whether to include the editor roles with the listed Collections. | -| `allowed_datasource` | *Optional[str]* | :heavy_minus_sign: | The datasource type this Collection can hold.
ANSWERS - for Collections representing answer boards | -| `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`. | +| `include_audience` | *Optional[bool]* | :heavy_minus_sign: | Whether to include the audience filters with the listed Collections. | +| `include_roles` | *Optional[bool]* | :heavy_minus_sign: | Whether to include the editor roles with the listed Collections. | +| `allowed_datasource` | *Optional[str]* | :heavy_minus_sign: | The datasource type this Collection can hold.
ANSWERS - for Collections representing answer boards | +| `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/custommetadata/README.md b/docs/sdks/custommetadata/README.md new file mode 100644 index 00000000..adac5170 --- /dev/null +++ b/docs/sdks/custommetadata/README.md @@ -0,0 +1,230 @@ +# Indexing.CustomMetadata + +## Overview + +### Available Operations + +* [upsert](#upsert) - Add or update custom metadata +* [delete](#delete) - Remove custom metadata +* [get_schema](#get_schema) - Retrieve metadata schema +* [upsert_schema](#upsert_schema) - Create or update metadata schema +* [delete_schema](#delete_schema) - Remove metadata schema + +## upsert + +Associates custom metadata with a specific document. Custom metadata enables you to enrich documents with additional structured information that can be used for search, filtering, and faceting. + +### Example Usage + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.indexing.custom_metadata.upsert(doc_id="", group_name="", custom_metadata=[]) + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `doc_id` | *str* | :heavy_check_mark: | Unique Glean identifier of the document | +| `group_name` | *str* | :heavy_check_mark: | Name of the metadata group as specified while adding schema | +| `custom_metadata` | List[[models.CustomProperty](../../models/customproperty.md)] | :heavy_check_mark: | Array of custom metadata key-value pairs | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | +| `server_url` | *Optional[str]* | :heavy_minus_sign: | An optional server URL to use. | + +### Response + +**[models.SuccessResponse](../../models/successresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.ErrorInfoResponse | 400, 401, 404, 429 | application/json | +| errors.ErrorInfoResponse | 500 | application/json | +| errors.GleanError | 4XX, 5XX | \*/\* | + +## delete + +Removes all custom metadata for the specified metadata group from a document. + +### Example Usage + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.indexing.custom_metadata.delete(doc_id="", group_name="") + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `doc_id` | *str* | :heavy_check_mark: | Unique Glean identifier of the document | +| `group_name` | *str* | :heavy_check_mark: | Name of the metadata group as specified while adding schema | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | +| `server_url` | *Optional[str]* | :heavy_minus_sign: | An optional server URL to use. | + +### Response + +**[models.SuccessResponse](../../models/successresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.ErrorInfoResponse | 400, 401, 404, 429 | application/json | +| errors.ErrorInfoResponse | 500 | application/json | +| errors.GleanError | 4XX, 5XX | \*/\* | + +## get_schema + +Retrieves the current schema definition for a metadata group. + +### Example Usage + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.indexing.custom_metadata.get_schema(group_name="") + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `group_name` | *str* | :heavy_check_mark: | Name of the metadata group schema | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | +| `server_url` | *Optional[str]* | :heavy_minus_sign: | An optional server URL to use. | + +### Response + +**[models.CustomMetadataSchema](../../models/custommetadataschema.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.ErrorInfoResponse | 401, 404, 429 | application/json | +| errors.ErrorInfoResponse | 500 | application/json | +| errors.GleanError | 4XX, 5XX | \*/\* | + +## upsert_schema + +Defines or updates the schema for a metadata group. Schemas should be defined before indexing metadata. + +### Example Usage + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.indexing.custom_metadata.upsert_schema(group_name="", metadata_keys=[]) + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | +| `group_name` | *str* | :heavy_check_mark: | Name of the metadata group schema | +| `metadata_keys` | List[[models.CustomMetadataPropertyDefinition](../../models/custommetadatapropertydefinition.md)] | :heavy_check_mark: | Array of metadata key definitions | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | +| `server_url` | *Optional[str]* | :heavy_minus_sign: | An optional server URL to use. | + +### Response + +**[models.SuccessResponse](../../models/successresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.ErrorInfoResponse | 400, 401, 409, 429 | application/json | +| errors.ErrorInfoResponse | 500 | application/json | +| errors.GleanError | 4XX, 5XX | \*/\* | + +## delete_schema + +Deletes the schema definition for a metadata group. This does not delete existing metadata values on documents. + +### Example Usage + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.indexing.custom_metadata.delete_schema(group_name="") + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `group_name` | *str* | :heavy_check_mark: | Name of the metadata group schema | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | +| `server_url` | *Optional[str]* | :heavy_minus_sign: | An optional server URL to use. | + +### Response + +**[models.SuccessResponse](../../models/successresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.ErrorInfoResponse | 400, 401, 404, 429 | application/json | +| errors.ErrorInfoResponse | 500 | application/json | +| errors.GleanError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/entities/README.md b/docs/sdks/entities/README.md index 70e149bf..55516c7d 100644 --- a/docs/sdks/entities/README.md +++ b/docs/sdks/entities/README.md @@ -6,6 +6,7 @@ * [list](#list) - List entities * [read_people](#read_people) - Read people +* [retrieve_person_photo](#retrieve_person_photo) - Get person photo ## list @@ -37,7 +38,7 @@ with Glean( }, ], }, - ], entity_type=models.ListEntitiesRequestEntityType.PEOPLE, page_size=100, request_type=models.RequestType.STANDARD) + ], entity_type=models.ListEntitiesRequestEntityType.PEOPLE, page_size=100, cursor="", request_type=models.ListEntitiesRequestRequestType.STANDARD) # Handle response print(res) @@ -46,19 +47,20 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | -| `filter_` | List[[models.FacetFilter](../../models/facetfilter.md)] | :heavy_minus_sign: | N/A | | -| `sort` | List[[models.SortOptions](../../models/sortoptions.md)] | :heavy_minus_sign: | Use EntitiesSortOrder enum for SortOptions.sortBy | | -| `entity_type` | [Optional[models.ListEntitiesRequestEntityType]](../../models/listentitiesrequestentitytype.md) | :heavy_minus_sign: | N/A | | -| `datasource` | *Optional[str]* | :heavy_minus_sign: | The datasource associated with the entity type, most commonly used with CUSTOM_ENTITIES | | -| `query` | *Optional[str]* | :heavy_minus_sign: | A query string to search for entities that each entity in the response must conform to. An empty query does not filter any entities. | | -| `include_fields` | List[[models.ListEntitiesRequestIncludeField](../../models/listentitiesrequestincludefield.md)] | :heavy_minus_sign: | List of entity fields to return (that aren't returned by default) | | -| `page_size` | *Optional[int]* | :heavy_minus_sign: | Hint to the server about how many results to send back. Server may return less. | 100 | -| `cursor` | *Optional[str]* | :heavy_minus_sign: | Pagination cursor. A previously received opaque token representing the position in the overall results at which to start. | | -| `source` | *Optional[str]* | :heavy_minus_sign: | A string denoting the search surface from which the endpoint is called. | | -| `request_type` | [Optional[models.RequestType]](../../models/requesttype.md) | :heavy_minus_sign: | The type of request being made. | | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `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`. | | +| `filter_` | List[[models.FacetFilter](../../models/facetfilter.md)] | :heavy_minus_sign: | N/A | | +| `sort` | List[[models.SortOptions](../../models/sortoptions.md)] | :heavy_minus_sign: | Use EntitiesSortOrder enum for SortOptions.sortBy | | +| `entity_type` | [Optional[models.ListEntitiesRequestEntityType]](../../models/listentitiesrequestentitytype.md) | :heavy_minus_sign: | N/A | | +| `datasource` | *Optional[str]* | :heavy_minus_sign: | The datasource associated with the entity type, most commonly used with CUSTOM_ENTITIES | | +| `query` | *Optional[str]* | :heavy_minus_sign: | A query string to search for entities that each entity in the response must conform to. An empty query does not filter any entities. | | +| `include_fields` | List[[models.ListEntitiesRequestIncludeField](../../models/listentitiesrequestincludefield.md)] | :heavy_minus_sign: | List of entity fields to return (that aren't returned by default) | | +| `page_size` | *Optional[int]* | :heavy_minus_sign: | Hint to the server about how many results to send back. Server may return less. | 100 | +| `cursor` | *Optional[str]* | :heavy_minus_sign: | Pagination cursor. A previously received opaque token representing the position in the overall results at which to start. | | +| `source` | *Optional[str]* | :heavy_minus_sign: | A string denoting the search surface from which the endpoint is called. | | +| `request_type` | [Optional[models.ListEntitiesRequestRequestType]](../../models/listentitiesrequestrequesttype.md) | :heavy_minus_sign: | The type of request being made. | | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | ### Response @@ -98,15 +100,16 @@ with Glean( ### Parameters -| Parameter | 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. | -| `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`. | +| `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 @@ -114,6 +117,48 @@ with Glean( ### Errors +| Error Type | Status Code | Content Type | +| ----------------- | ----------------- | ----------------- | +| errors.GleanError | 4XX, 5XX | \*/\* | + +## retrieve_person_photo + +Returns the profile photo bytes for a person whose photo is stored in Glean (crawled from an identity source or user-uploaded via admin console). Photos hosted externally (e.g. Slack CDN) are not served by this endpoint; callers should follow the photoUrl from /people or /listentities directly. Responses include a Cache-Control header (max-age=3600) to reduce redundant fetches. + + +### Example Usage + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.client.entities.retrieve_person_photo(person_id="") + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `person_id` | *str* | :heavy_check_mark: | The obfuscated ID of the person whose photo to retrieve. | +| `ds` | *Optional[str]* | :heavy_minus_sign: | Optional datasource override for crawled photos (e.g. AZURE, GDRIVE, OKTA). When omitted, the datasource is derived from the person's stored photo URL or the deployment's primary person datasource.
| +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[models.GetPersonPhotoResponse](../../models/getpersonphotoresponse.md)** + +### Errors + | Error Type | Status Code | Content Type | | ----------------- | ----------------- | ----------------- | | errors.GleanError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/governance/README.md b/docs/sdks/findings/README.md similarity index 62% rename from docs/sdks/governance/README.md rename to docs/sdks/findings/README.md index 8debef42..df7c4ee4 100644 --- a/docs/sdks/governance/README.md +++ b/docs/sdks/findings/README.md @@ -1,15 +1,15 @@ -# Governance +# Client.Governance.Data.Findings ## Overview ### Available Operations -* [createfindingsexport](#createfindingsexport) - Creates findings export -* [listfindingsexports](#listfindingsexports) - Lists findings exports -* [downloadfindingsexport](#downloadfindingsexport) - Downloads findings export -* [deletefindingsexport](#deletefindingsexport) - Deletes findings export +* [create](#create) - Creates findings export +* [list](#list) - Lists findings exports +* [download](#download) - Downloads findings export +* [delete](#delete) - Deletes findings export -## createfindingsexport +## create Creates a new DLP findings export job. @@ -25,7 +25,7 @@ with Glean( api_token=os.getenv("GLEAN_API_TOKEN", ""), ) as glean: - res = glean.governance.createfindingsexport() + res = glean.client.governance.data.findings.create() # Handle response print(res) @@ -34,14 +34,15 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | -| `export_type` | [Optional[models.ExportType]](../../models/exporttype.md) | :heavy_minus_sign: | The type of export to perform | -| `filter_` | [Optional[models.DlpFindingFilter]](../../models/dlpfindingfilter.md) | :heavy_minus_sign: | N/A | -| `file_name` | *Optional[str]* | :heavy_minus_sign: | The name of the file to export the findings to | -| `field_scope` | [Optional[models.FieldScope]](../../models/fieldscope.md) | :heavy_minus_sign: | Controls which fields to include in the export | -| `fields_to_exclude` | List[*str*] | :heavy_minus_sign: | List of field names to exclude from the export | -| `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 | +| --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | +| `export_type` | [Optional[models.DlpExportFindingsRequestExportType]](../../models/dlpexportfindingsrequestexporttype.md) | :heavy_minus_sign: | The type of export to perform | +| `filter_` | [Optional[models.DlpFindingFilter]](../../models/dlpfindingfilter.md) | :heavy_minus_sign: | N/A | +| `issue_filter` | [Optional[models.DlpIssueFilter]](../../models/dlpissuefilter.md) | :heavy_minus_sign: | Filter for DLP issues. Includes document-level filters and issue-specific filters. | +| `file_name` | *Optional[str]* | :heavy_minus_sign: | The name of the file to export the findings to | +| `field_scope` | [Optional[models.FieldScope]](../../models/fieldscope.md) | :heavy_minus_sign: | Controls which fields to include in the export | +| `fields_to_exclude` | List[*str*] | :heavy_minus_sign: | List of field names to exclude from the export | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response @@ -53,7 +54,7 @@ with Glean( | ----------------- | ----------------- | ----------------- | | errors.GleanError | 4XX, 5XX | \*/\* | -## listfindingsexports +## list Lists all DLP findings exports. @@ -69,7 +70,7 @@ with Glean( api_token=os.getenv("GLEAN_API_TOKEN", ""), ) as glean: - res = glean.governance.listfindingsexports() + res = glean.client.governance.data.findings.list() # Handle response print(res) @@ -92,7 +93,7 @@ with Glean( | ----------------- | ----------------- | ----------------- | | errors.GleanError | 4XX, 5XX | \*/\* | -## downloadfindingsexport +## download Downloads a DLP findings export as a CSV file. @@ -108,7 +109,7 @@ with Glean( api_token=os.getenv("GLEAN_API_TOKEN", ""), ) as glean: - res = glean.governance.downloadfindingsexport(id="") + res = glean.client.governance.data.findings.download(id="") # Handle response print(res) @@ -132,7 +133,7 @@ with Glean( | ----------------- | ----------------- | ----------------- | | errors.GleanError | 4XX, 5XX | \*/\* | -## deletefindingsexport +## delete Deletes a DLP findings export. @@ -148,7 +149,7 @@ with Glean( api_token=os.getenv("GLEAN_API_TOKEN", ""), ) as glean: - glean.governance.deletefindingsexport(id=741945) + glean.client.governance.data.findings.delete(id=741945) # Use the SDK ... diff --git a/docs/sdks/datasources/README.md b/docs/sdks/indexingdatasources/README.md similarity index 94% rename from docs/sdks/datasources/README.md rename to docs/sdks/indexingdatasources/README.md index c9f66bdb..2cd1df56 100644 --- a/docs/sdks/datasources/README.md +++ b/docs/sdks/indexingdatasources/README.md @@ -6,6 +6,7 @@ * [add](#add) - Add or update datasource * [retrieve_config](#retrieve_config) - Get datasource config +* [submit](#submit) - Submit datasource data ## add @@ -115,4 +116,53 @@ with Glean( | Error Type | Status Code | Content Type | | ----------------- | ----------------- | ----------------- | -| errors.GleanError | 4XX, 5XX | \*/\* | \ No newline at end of file +| errors.GleanError | 4XX, 5XX | \*/\* | + +## submit + +Validates and asynchronously processes a datasource-specific submission. + +### Example Usage + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.indexing.datasources.submit(datasource_instance="", type_="", request_body={ + "key": "", + "key1": "", + "key2": "", + }) + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `datasource_instance` | *str* | :heavy_check_mark: | Datasource instance that should process the submission | +| `type` | *str* | :heavy_check_mark: | Submission type registered for the datasource | +| `request_body` | Dict[str, *Any*] | :heavy_check_mark: | N/A | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | +| `server_url` | *Optional[str]* | :heavy_minus_sign: | An optional server URL to use. | + +### Response + +**[models.PostRestAPIIndexSubmissionsDatasourceInstanceTypeResponse](../../models/postrestapiindexsubmissionsdatasourceinstancetyperesponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.ErrorInfoResponse | 400, 401, 404 | application/json | +| errors.ErrorInfoResponse | 500 | application/json | +| errors.GleanError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/indexingdocuments/README.md b/docs/sdks/indexingdocuments/README.md index 20c38b13..87baf153 100644 --- a/docs/sdks/indexingdocuments/README.md +++ b/docs/sdks/indexingdocuments/README.md @@ -16,6 +16,8 @@ * [check_access](#check_access) - Check document access * [~~status~~](#status) - Get document upload and indexing status :warning: **Deprecated** * [~~count~~](#count) - Get document count :warning: **Deprecated** +* [debug_events](#debug_events) - Beta: Get document lifecycle events + ## add_or_update @@ -359,7 +361,7 @@ Intended for debugging/validation. Fetches the current upload and indexing statu Tip: Use [/debug/{datasource}/document](https://developers.glean.com/indexing/debugging/datasource-document) for richer information. -> :warning: **DEPRECATED**: This will be removed in a future release, please migrate away from it as soon as possible. +> :warning: **DEPRECATED**: Deprecated on 2026-02-03, removal scheduled for 2026-10-15: Endpoint is deprecated. ### Example Usage @@ -406,7 +408,7 @@ Fetches document count for the specified custom datasource. Tip: Use [/debug/{datasource}/status](https://developers.glean.com/indexing/debugging/datasource-status) for richer information. -> :warning: **DEPRECATED**: This will be removed in a future release, please migrate away from it as soon as possible. +> :warning: **DEPRECATED**: Deprecated on 2026-02-03, removal scheduled for 2026-10-15: Endpoint is deprecated. ### Example Usage @@ -440,6 +442,51 @@ with Glean( ### Errors +| Error Type | Status Code | Content Type | +| ----------------- | ----------------- | ----------------- | +| errors.GleanError | 4XX, 5XX | \*/\* | + +## debug_events + +Retrieves lifecycle events for a specific document including upload time, index times and deletions. Rate limited to 1 request per minute per datasource. Currently in beta, might undergo breaking changes without prior notice. + + +### Example Usage + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.indexing.documents.debug_events(datasource="", object_type="Article", doc_id="art123", start_date="2025-05-01", max_events=50) + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| `datasource` | *str* | :heavy_check_mark: | The datasource to which the document belongs | | +| `object_type` | *str* | :heavy_check_mark: | Object type of the document to get lifecycle events for. | Article | +| `doc_id` | *str* | :heavy_check_mark: | Glean Document ID within the datasource to get lifecycle events for. | art123 | +| `start_date` | *Optional[str]* | :heavy_minus_sign: | The start date for events to be fetched. Cannot be more than 30 days (default 7 days) in the past. | 2025-05-01 | +| `max_events` | *Optional[int]* | :heavy_minus_sign: | Max number of events to be fetched. Cannot be more than 100 (default 20). | 50 | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[models.DebugDocumentLifecycleResponse](../../models/debugdocumentlifecycleresponse.md)** + +### Errors + | Error Type | Status Code | Content Type | | ----------------- | ----------------- | ----------------- | | errors.GleanError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/indexingshortcuts/README.md b/docs/sdks/indexingshortcuts/README.md index 02339bf7..6d8cda7a 100644 --- a/docs/sdks/indexingshortcuts/README.md +++ b/docs/sdks/indexingshortcuts/README.md @@ -9,7 +9,7 @@ ## bulk_index -Replaces all the currently indexed shortcuts using paginated batch API calls. Note that this endpoint is used for indexing shortcuts not hosted by Glean. If you want to upload shortcuts that would be hosted by Glean, please use the `/uploadshortcuts` endpoint. For information on what you can do with Golinks, which are Glean-hosted shortcuts, please refer to [this](https://help.glean.com/en/articles/5628838-how-go-links-work) page. +Replaces all the currently indexed shortcuts using paginated batch API calls. Note that this endpoint is used for indexing shortcuts not hosted by Glean. If you want to upload shortcuts that would be hosted by Glean, please use the `/uploadshortcuts` endpoint. For information on what you can do with Golinks, which are Glean-hosted shortcuts, please refer to [this](https://docs.glean.com/user-guide/knowledge/go-links/how-go-links-work) page. ### Example Usage diff --git a/docs/sdks/insights/README.md b/docs/sdks/insights/README.md index deff4674..9dbe2045 100644 --- a/docs/sdks/insights/README.md +++ b/docs/sdks/insights/README.md @@ -31,19 +31,16 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `overview_request` | [Optional[models.InsightsOverviewRequest]](../../models/insightsoverviewrequest.md) | :heavy_minus_sign: | N/A | -| `assistant_request` | [Optional[models.InsightsAssistantRequest]](../../models/insightsassistantrequest.md) | :heavy_minus_sign: | N/A | -| `agents_request` | [Optional[models.AgentsInsightsV2Request]](../../models/agentsinsightsv2request.md) | :heavy_minus_sign: | N/A | -| `disable_per_user_insights` | *Optional[bool]* | :heavy_minus_sign: | If true, suppresses the generation of per-user Insights in the response. Default is false. | -| `categories` | List[[models.InsightsRequestCategory](../../models/insightsrequestcategory.md)] | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

Categories of data requested. Request can include single or multiple types. | -| `departments` | List[*str*] | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

Departments that the data is requested for. If this is empty, corresponds to whole company. | -| `day_range` | [Optional[models.Period]](../../models/period.md) | :heavy_minus_sign: | N/A | -| `ai_app_request_options` | [Optional[models.InsightsAiAppRequestOptions]](../../models/insightsaiapprequestoptions.md) | :heavy_minus_sign: | N/A | -| `agents_request_options` | [Optional[models.InsightsAgentsRequestOptions]](../../models/insightsagentsrequestoptions.md) | :heavy_minus_sign: | N/A | -| `assistant_activity_types` | List[[models.AssistantActivityType](../../models/assistantactivitytype.md)] | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

Types of activity that should count in the definition of an Assistant Active User. Affects only insights for AI category. | -| `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`. | +| `overview_request` | [Optional[models.InsightsOverviewRequest]](../../models/insightsoverviewrequest.md) | :heavy_minus_sign: | N/A | +| `assistant_request` | [Optional[models.InsightsAssistantRequest]](../../models/insightsassistantrequest.md) | :heavy_minus_sign: | N/A | +| `agents_request` | [Optional[models.AgentsInsightsV2Request]](../../models/agentsinsightsv2request.md) | :heavy_minus_sign: | N/A | +| `mcp_request` | [Optional[models.McpInsightsRequest]](../../models/mcpinsightsrequest.md) | :heavy_minus_sign: | N/A | +| `mcp_breakdown_request` | [Optional[models.McpBreakdownInsightsRequest]](../../models/mcpbreakdowninsightsrequest.md) | :heavy_minus_sign: | N/A | +| `disable_per_user_insights` | *Optional[bool]* | :heavy_minus_sign: | If true, suppresses the generation of per-user Insights in the response. Default is false. | +| `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/messages/README.md b/docs/sdks/messages/README.md index 38f6cfda..0aa193b3 100644 --- a/docs/sdks/messages/README.md +++ b/docs/sdks/messages/README.md @@ -31,17 +31,18 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `id_type` | [models.IDType](../../models/idtype.md) | :heavy_check_mark: | Type of the id in the incoming request. | -| `id` | *str* | :heavy_check_mark: | ID corresponding to the requested idType. Note that channel and threads are represented by the underlying datasource's ID and conversations are represented by their document's ID. | -| `datasource` | [models.Datasource](../../models/datasource.md) | :heavy_check_mark: | The type of the data source. | -| `workspace_id` | *Optional[str]* | :heavy_minus_sign: | Id for the for the workspace in case of multiple workspaces. | -| `direction` | [Optional[models.Direction]](../../models/direction.md) | :heavy_minus_sign: | The direction of the results asked with respect to the reference timestamp. Missing field defaults to OLDER. Only applicable when using a message_id. | -| `timestamp_millis` | *Optional[int]* | :heavy_minus_sign: | Timestamp in millis of the reference message. Only applicable when using a message_id. | -| `include_root_message` | *Optional[bool]* | :heavy_minus_sign: | Whether to include root message in response. | -| `datasource_instance_display_name` | *Optional[str]* | :heavy_minus_sign: | The datasource instance display name from which the document was extracted. This is used for appinstance facet filter for datasources that support multiple instances. | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id_type` | [models.IDType](../../models/idtype.md) | :heavy_check_mark: | Type of the id in the incoming request. | +| `id` | *str* | :heavy_check_mark: | ID corresponding to the requested idType. Note that channel and threads are represented by the underlying datasource's ID and conversations are represented by their document's ID. | +| `datasource` | [models.Datasource](../../models/datasource.md) | :heavy_check_mark: | The type of the data source. | +| `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`. | +| `workspace_id` | *Optional[str]* | :heavy_minus_sign: | Id for the for the workspace in case of multiple workspaces. | +| `direction` | [Optional[models.Direction]](../../models/direction.md) | :heavy_minus_sign: | The direction of the results asked with respect to the reference timestamp. Missing field defaults to OLDER. Only applicable when using a message_id. | +| `timestamp_millis` | *Optional[int]* | :heavy_minus_sign: | Timestamp in millis of the reference message. Only applicable when using a message_id. | +| `include_root_message` | *Optional[bool]* | :heavy_minus_sign: | Whether to include root message in response. | +| `datasource_instance_display_name` | *Optional[str]* | :heavy_minus_sign: | The datasource instance display name from which the document was extracted. This is used for appinstance facet filter for datasources that support multiple instances. | +| `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/people/README.md b/docs/sdks/people/README.md index 8b35d44d..7976d51e 100644 --- a/docs/sdks/people/README.md +++ b/docs/sdks/people/README.md @@ -8,7 +8,7 @@ * [~~count~~](#count) - Get user count :warning: **Deprecated** * [index](#index) - Index employee -* [bulk_index](#bulk_index) - Bulk index employees +* [~~bulk_index~~](#bulk_index) - Bulk index employees :warning: **Deprecated** * [process_all_employees_and_teams](#process_all_employees_and_teams) - Schedules the processing of uploaded employees and teams * [delete](#delete) - Delete employee * [index_team](#index_team) - Index team @@ -66,7 +66,7 @@ Fetches user count for the specified custom datasource. Tip: Use [/debug/{datasource}/status](https://developers.glean.com/indexing/debugging/datasource-status) for richer information. -> :warning: **DEPRECATED**: This will be removed in a future release, please migrate away from it as soon as possible. +> :warning: **DEPRECATED**: Deprecated on 2026-02-03, removal scheduled for 2026-10-15: Endpoint is deprecated. ### Example Usage @@ -106,7 +106,7 @@ with Glean( ## index -Adds an employee or updates information about an employee +Adds an employee or replaces the existing information about an employee. ### Example Usage @@ -149,10 +149,12 @@ with Glean( | ----------------- | ----------------- | ----------------- | | errors.GleanError | 4XX, 5XX | \*/\* | -## bulk_index +## ~~bulk_index~~ Replaces all the currently indexed employees using paginated batch API calls. Please refer to the [bulk indexing](https://developers.glean.com/indexing/documents/bulk-upload-model) documentation for an explanation of how to use bulk endpoints. +> :warning: **DEPRECATED**: Deprecated on 2026-02-03, removal scheduled for 2026-10-15: Endpoint is deprecated. + ### Example Usage diff --git a/docs/sdks/pins/README.md b/docs/sdks/pins/README.md index 31108891..3a4952c3 100644 --- a/docs/sdks/pins/README.md +++ b/docs/sdks/pins/README.md @@ -49,12 +49,13 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | -| `queries` | List[*str*] | :heavy_minus_sign: | The query strings for which the pinned result will show. | -| `audience_filters` | List[[models.FacetFilter](../../models/facetfilter.md)] | :heavy_minus_sign: | Filters which restrict who should see the pinned document. Values are taken from the corresponding filters in people search. | -| `id` | *Optional[str]* | :heavy_minus_sign: | The opaque id of the pin to be edited. | -| `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`. | +| `queries` | List[*str*] | :heavy_minus_sign: | The query strings for which the pinned result will show. | +| `audience_filters` | List[[models.FacetFilter](../../models/facetfilter.md)] | :heavy_minus_sign: | Filters which restrict who should see the pinned document. Values are taken from the corresponding filters in people search. | +| `id` | *Optional[str]* | :heavy_minus_sign: | The opaque id of the pin to be edited. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response @@ -91,10 +92,11 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `id` | *Optional[str]* | :heavy_minus_sign: | The opaque id of the pin to be fetched. | -| `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`. | +| `id` | *Optional[str]* | :heavy_minus_sign: | The opaque id of the pin to be fetched. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response @@ -122,7 +124,7 @@ with Glean( api_token=os.getenv("GLEAN_API_TOKEN", ""), ) as glean: - res = glean.client.pins.list(request={}) + res = glean.client.pins.list(request_body={}) # Handle response print(res) @@ -131,10 +133,11 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `request` | [models.ListpinsRequest](../../models/listpinsrequest.md) | :heavy_check_mark: | The request object to use for the request. | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `request_body` | [models.ListpinsRequestBody](../../models/listpinsrequestbody.md) | :heavy_check_mark: | List pins request | +| `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`. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response @@ -185,12 +188,13 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | -| `queries` | List[*str*] | :heavy_minus_sign: | The query strings for which the pinned result will show. | -| `audience_filters` | List[[models.FacetFilter](../../models/facetfilter.md)] | :heavy_minus_sign: | Filters which restrict who should see the pinned document. Values are taken from the corresponding filters in people search. | -| `document_id` | *Optional[str]* | :heavy_minus_sign: | The document to be pinned. | -| `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`. | +| `queries` | List[*str*] | :heavy_minus_sign: | The query strings for which the pinned result will show. | +| `audience_filters` | List[[models.FacetFilter](../../models/facetfilter.md)] | :heavy_minus_sign: | Filters which restrict who should see the pinned document. Values are taken from the corresponding filters in people search. | +| `document_id` | *Optional[str]* | :heavy_minus_sign: | The document to be pinned. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response @@ -226,10 +230,11 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `id` | *Optional[str]* | :heavy_minus_sign: | The opaque id of the pin to be unpinned. | -| `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`. | +| `id` | *Optional[str]* | :heavy_minus_sign: | The opaque id of the pin to be unpinned. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Errors diff --git a/docs/sdks/search/README.md b/docs/sdks/search/README.md index 546e545a..2367ff8a 100644 --- a/docs/sdks/search/README.md +++ b/docs/sdks/search/README.md @@ -1,175 +1,21 @@ -# Client.Search +# Search ## Overview ### Available Operations -* [query_as_admin](#query_as_admin) - Search the index (admin) -* [autocomplete](#autocomplete) - Autocomplete -* [retrieve_feed](#retrieve_feed) - Feed of documents and events -* [recommendations](#recommendations) - Recommend documents * [query](#query) - Search +* [list_filters](#list_filters) - List search filters -## query_as_admin - -Retrieves results for search query without respect for permissions. This is available only to privileged users. - -### Example Usage - - -```python -from glean.api_client import Glean, models -from glean.api_client.utils import parse_datetime -import os - - -with Glean( - api_token=os.getenv("GLEAN_API_TOKEN", ""), -) as glean: - - res = glean.client.search.query_as_admin(query="vacation policy", tracking_token="trackingToken", source_document=models.Document( - container_document=models.Document( - metadata=models.DocumentMetadata( - datasource="datasource", - object_type="Feature Request", - container="container", - parent_id="JIRA_EN-1337", - mime_type="mimeType", - document_id="documentId", - create_time=parse_datetime("2000-01-23T04:56:07.000Z"), - update_time=parse_datetime("2000-01-23T04:56:07.000Z"), - author=models.Person( - name="name", - obfuscated_id="", - ), - components=[ - "Backend", - "Networking", - ], - status="[\"Done\"]", - custom_data={ - "someCustomField": models.CustomDataValue(), - }, - ), - ), - parent_document=models.Document( - metadata=models.DocumentMetadata( - datasource="datasource", - object_type="Feature Request", - container="container", - parent_id="JIRA_EN-1337", - mime_type="mimeType", - document_id="documentId", - create_time=parse_datetime("2000-01-23T04:56:07.000Z"), - update_time=parse_datetime("2000-01-23T04:56:07.000Z"), - author=models.Person( - name="name", - obfuscated_id="", - ), - components=[ - "Backend", - "Networking", - ], - status="[\"Done\"]", - custom_data={ - "someCustomField": models.CustomDataValue(), - }, - ), - ), - metadata=models.DocumentMetadata( - datasource="datasource", - object_type="Feature Request", - container="container", - parent_id="JIRA_EN-1337", - mime_type="mimeType", - document_id="documentId", - create_time=parse_datetime("2000-01-23T04:56:07.000Z"), - update_time=parse_datetime("2000-01-23T04:56:07.000Z"), - author=models.Person( - name="name", - obfuscated_id="", - ), - components=[ - "Backend", - "Networking", - ], - status="[\"Done\"]", - custom_data={ - "someCustomField": models.CustomDataValue(), - }, - ), - ), page_size=10, max_snippet_size=400, input_details={ - "has_copy_paste": True, - }, request_options=models.SearchRequestOptions( - facet_filters=[ - models.FacetFilter( - field_name="type", - values=[ - models.FacetFilterValue( - value="article", - relation_type=models.RelationType.EQUALS, - ), - models.FacetFilterValue( - value="document", - relation_type=models.RelationType.EQUALS, - ), - ], - ), - models.FacetFilter( - field_name="department", - values=[ - models.FacetFilterValue( - value="engineering", - relation_type=models.RelationType.EQUALS, - ), - ], - ), - ], - facet_bucket_size=723824, - ), timeout_millis=5000) - - # Handle response - print(res) - -``` - -### Parameters - -| Parameter | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `query` | *str* | :heavy_check_mark: | The search terms. | vacation policy | -| `timestamp` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | The ISO 8601 timestamp associated with the client request. | | -| `tracking_token` | *Optional[str]* | :heavy_minus_sign: | A previously received trackingToken for a search associated with the same query. Useful for more requests and requests for other tabs. | | -| `session_info` | [Optional[models.SessionInfo]](../../models/sessioninfo.md) | :heavy_minus_sign: | N/A | | -| `source_document` | [Optional[models.Document]](../../models/document.md) | :heavy_minus_sign: | N/A | | -| `page_size` | *Optional[int]* | :heavy_minus_sign: | Hint to the server about how many results to send back. Server may return less or more. Structured results and clustered results don't count towards pageSize. | 100 | -| `max_snippet_size` | *Optional[int]* | :heavy_minus_sign: | Hint to the server about how many characters long a snippet may be. Server may return less or more. | 400 | -| `cursor` | *Optional[str]* | :heavy_minus_sign: | Pagination cursor. A previously received opaque token representing the position in the overall results at which to start. | | -| `result_tab_ids` | List[*str*] | :heavy_minus_sign: | The unique IDs of the result tabs for which to fetch results. This will have precedence over datasource filters if both are specified and in conflict. | | -| `input_details` | [Optional[models.SearchRequestInputDetails]](../../models/searchrequestinputdetails.md) | :heavy_minus_sign: | N/A | {
"hasCopyPaste": true
} | -| `request_options` | [Optional[models.SearchRequestOptions]](../../models/searchrequestoptions.md) | :heavy_minus_sign: | N/A | {
"datasourceFilter": "JIRA",
"datasourcesFilter": [
"JIRA"
],
"queryOverridesFacetFilters": true,
"facetFilters": [
{
"fieldName": "fieldName",
"values": [
"fieldValues",
"fieldValues"
]
},
{
"fieldName": "fieldName",
"values": [
"fieldValues",
"fieldValues"
]
}
]
} | -| `timeout_millis` | *Optional[int]* | :heavy_minus_sign: | Timeout in milliseconds for the request. A `408` error will be returned if handling the request takes longer. | 5000 | -| `disable_spellcheck` | *Optional[bool]* | :heavy_minus_sign: | Whether or not to disable spellcheck. | | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | - -### Response - -**[models.SearchResponse](../../models/searchresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| --------------------- | --------------------- | --------------------- | -| errors.GleanDataError | 403, 422 | application/json | -| errors.GleanError | 4XX, 5XX | \*/\* | +## query -## autocomplete +Search your organization's connected content and return ranked document results with cursor pagination. Use `GET /api/search/filters` to discover datasource identifiers and common filter fields. Built-in filter names are validated; other field names are accepted as custom filters and behavior depends on your Glean configuration and connected sources. +Errors: HTTP 422 `unprocessable_query` returns no `results` or `next_cursor`. See `warnings` on the response for non-blocking issues such as partially available results. Not every query issue produces a warning or error. -Retrieve query suggestions, operators and documents for the given partially typed query. ### Example Usage - + ```python from glean.api_client import Glean import os @@ -179,13 +25,16 @@ with Glean( api_token=os.getenv("GLEAN_API_TOKEN", ""), ) as glean: - res = glean.client.search.autocomplete(tracking_token="trackingToken", query="what is a que", datasource="GDRIVE", result_size=10, auth_tokens=[ + res = glean.search.query(query="quarterly planning 2026", page_size=10, cursor="", datasources=[ + "confluence", + "google_drive", + ], filters=[ { - "access_token": "123abc", - "datasource": "gmail", - "scope": "email profile https://www.googleapis.com/auth/gmail.readonly", - "token_type": "Bearer", - "auth_user": "1", + "field": "type", + "values": [ + "spreadsheet", + "presentation", + ], }, ]) @@ -196,294 +45,39 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | -| `tracking_token` | *Optional[str]* | :heavy_minus_sign: | N/A | | -| `session_info` | [Optional[models.SessionInfo]](../../models/sessioninfo.md) | :heavy_minus_sign: | N/A | | -| `query` | *Optional[str]* | :heavy_minus_sign: | Partially typed query. | San Fra | -| `datasources_filter` | List[*str*] | :heavy_minus_sign: | Filter results to only those relevant to one or more datasources (e.g. jira, gdrive). Results are unfiltered if missing. | | -| `datasource` | *Optional[str]* | :heavy_minus_sign: | Filter to only return results relevant to the given datasource. | | -| `result_types` | List[[models.AutocompleteRequestResultType](../../models/autocompleterequestresulttype.md)] | :heavy_minus_sign: | Filter to only return results of the given type(s). All types may be returned if omitted. | | -| `result_size` | *Optional[int]* | :heavy_minus_sign: | Maximum number of results to be returned. If no value is provided, the backend will cap at 200.
| 10 | -| `auth_tokens` | List[[models.AuthToken](../../models/authtoken.md)] | :heavy_minus_sign: | Auth tokens which may be used for federated results. | | -| `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 | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `query` | *str* | :heavy_check_mark: | The search query string. Supports inline operators such as `from:jane type:document app:confluence`. Inline operators are AND'd with structured `filters`.
| | +| `page_size` | *Optional[int]* | :heavy_minus_sign: | Number of results to return per page. | | +| `cursor` | *OptionalNullable[str]* | :heavy_minus_sign: | Opaque pagination token from a previous response's `next_cursor` field. Omit on the first request.
| | +| `datasources` | List[*str*] | :heavy_minus_sign: | Restrict results to specific datasource identifiers returned by `GET /api/search/filters`. Scopes by datasource type and may include results from multiple instances of that type.
| | +| `filters` | List[[models.PlatformFilter](../../models/platformfilter.md)] | :heavy_minus_sign: | Structured filters applied to search results. Multiple values within a filter with `EQUALS` are OR'd; separate filters are AND'd. Conflicting constraints on the same field (for example, `type:document` in `query` and `type:spreadsheet` in a filter) return an empty result set. See `Filter.field` for built-in field names and operators. Other nonblank field names are accepted as custom filters without validation; behavior depends on your connected sources.
| | +| `time_range` | [Optional[models.PlatformTimeRange]](../../models/platformtimerange.md) | :heavy_minus_sign: | Filter results to those last updated within this range. | | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | ### Response -**[models.AutocompleteResponse](../../models/autocompleteresponse.md)** +**[models.PlatformSearchResponse](../../models/platformsearchresponse.md)** ### Errors -| Error Type | Status Code | Content Type | -| ----------------- | ----------------- | ----------------- | -| errors.GleanError | 4XX, 5XX | \*/\* | - -## retrieve_feed - -The personalized feed/home includes different types of contents including suggestions, recents, calendar events and many more. - -### Example Usage - - -```python -from glean.api_client import Glean -import os +| Error Type | Status Code | Content Type | +| -------------------------------------- | -------------------------------------- | -------------------------------------- | +| errors.PlatformProblemDetailError | 400, 401, 403, 404, 408, 413, 422, 429 | application/problem+json | +| errors.PlatformProblemDetailError | 500, 503 | application/problem+json | +| errors.GleanError | 4XX, 5XX | \*/\* | +## list_filters -with Glean( - api_token=os.getenv("GLEAN_API_TOKEN", ""), -) as glean: +List datasources and common built-in filter fields visible to the authenticated user. This is a best-effort catalog, not an exhaustive list of every filter search accepts. +Without `query`, returns field metadata only and does not run a search. With a nonblank `query`, provide exactly one `datasources` value to request suggested filter values for that query; no documents are returned and this endpoint does not include warning objects. See `FilterFieldInfo.values` for limitations on suggested values. Rate-limited requests return HTTP 429 with `Retry-After`; temporary backend unavailability returns HTTP 503. - res = glean.client.search.retrieve_feed(timeout_millis=5000) - - # Handle response - print(res) - -``` - -### Parameters - -| Parameter | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | -| `categories` | List[[models.FeedRequestCategory](../../models/feedrequestcategory.md)] | :heavy_minus_sign: | Categories of content requested. An allowlist gives flexibility to request content separately or together. | | -| `request_options` | [Optional[models.FeedRequestOptions]](../../models/feedrequestoptions.md) | :heavy_minus_sign: | N/A | | -| `timeout_millis` | *Optional[int]* | :heavy_minus_sign: | Timeout in milliseconds for the request. A `408` error will be returned if handling the request takes longer. | 5000 | -| `session_info` | [Optional[models.SessionInfo]](../../models/sessioninfo.md) | :heavy_minus_sign: | N/A | | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | - -### Response - -**[models.FeedResponse](../../models/feedresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ----------------- | ----------------- | ----------------- | -| errors.GleanError | 4XX, 5XX | \*/\* | - -## recommendations - -Retrieve recommended documents for the given URL or Glean Document ID. ### Example Usage - + ```python -from glean.api_client import Glean, models -from glean.api_client.utils import parse_datetime -import os - - -with Glean( - api_token=os.getenv("GLEAN_API_TOKEN", ""), -) as glean: - - res = glean.client.search.recommendations(source_document=models.Document( - container_document=models.Document( - metadata=models.DocumentMetadata( - datasource="datasource", - object_type="Feature Request", - container="container", - parent_id="JIRA_EN-1337", - mime_type="mimeType", - document_id="documentId", - create_time=parse_datetime("2000-01-23T04:56:07.000Z"), - update_time=parse_datetime("2000-01-23T04:56:07.000Z"), - author=models.Person( - name="name", - obfuscated_id="", - ), - components=[ - "Backend", - "Networking", - ], - status="[\"Done\"]", - custom_data={ - "someCustomField": models.CustomDataValue(), - }, - ), - ), - parent_document=models.Document( - metadata=models.DocumentMetadata( - datasource="datasource", - object_type="Feature Request", - container="container", - parent_id="JIRA_EN-1337", - mime_type="mimeType", - document_id="documentId", - create_time=parse_datetime("2000-01-23T04:56:07.000Z"), - update_time=parse_datetime("2000-01-23T04:56:07.000Z"), - author=models.Person( - name="name", - obfuscated_id="", - ), - components=[ - "Backend", - "Networking", - ], - status="[\"Done\"]", - custom_data={ - "someCustomField": models.CustomDataValue(), - }, - ), - ), - metadata=models.DocumentMetadata( - datasource="datasource", - object_type="Feature Request", - container="container", - parent_id="JIRA_EN-1337", - mime_type="mimeType", - document_id="documentId", - create_time=parse_datetime("2000-01-23T04:56:07.000Z"), - update_time=parse_datetime("2000-01-23T04:56:07.000Z"), - author=models.Person( - name="name", - obfuscated_id="", - ), - components=[ - "Backend", - "Networking", - ], - status="[\"Done\"]", - custom_data={ - "someCustomField": models.CustomDataValue(), - }, - ), - ), page_size=100, max_snippet_size=400, request_options=models.RecommendationsRequestOptions( - facet_filter_sets=[ - models.FacetFilterSet( - filters=[ - models.FacetFilter( - field_name="type", - values=[ - models.FacetFilterValue( - value="Spreadsheet", - relation_type=models.RelationType.EQUALS, - ), - models.FacetFilterValue( - value="Presentation", - relation_type=models.RelationType.EQUALS, - ), - ], - ), - ], - ), - ], - context=models.Document( - container_document=models.Document( - metadata=models.DocumentMetadata( - datasource="datasource", - object_type="Feature Request", - container="container", - parent_id="JIRA_EN-1337", - mime_type="mimeType", - document_id="documentId", - create_time=parse_datetime("2000-01-23T04:56:07.000Z"), - update_time=parse_datetime("2000-01-23T04:56:07.000Z"), - author=models.Person( - name="name", - obfuscated_id="", - ), - components=[ - "Backend", - "Networking", - ], - status="[\"Done\"]", - custom_data={ - "someCustomField": models.CustomDataValue(), - }, - ), - ), - parent_document=models.Document( - metadata=models.DocumentMetadata( - datasource="datasource", - object_type="Feature Request", - container="container", - parent_id="JIRA_EN-1337", - mime_type="mimeType", - document_id="documentId", - create_time=parse_datetime("2000-01-23T04:56:07.000Z"), - update_time=parse_datetime("2000-01-23T04:56:07.000Z"), - author=models.Person( - name="name", - obfuscated_id="", - ), - components=[ - "Backend", - "Networking", - ], - status="[\"Done\"]", - custom_data={ - "someCustomField": models.CustomDataValue(), - }, - ), - ), - metadata=models.DocumentMetadata( - datasource="datasource", - object_type="Feature Request", - container="container", - parent_id="JIRA_EN-1337", - mime_type="mimeType", - document_id="documentId", - create_time=parse_datetime("2000-01-23T04:56:07.000Z"), - update_time=parse_datetime("2000-01-23T04:56:07.000Z"), - author=models.Person( - name="name", - obfuscated_id="", - ), - components=[ - "Backend", - "Networking", - ], - status="[\"Done\"]", - custom_data={ - "someCustomField": models.CustomDataValue(), - }, - ), - ), - )) - - assert res is not None - - # Handle response - print(res) - -``` - -### Parameters - -| Parameter | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `timestamp` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | The ISO 8601 timestamp associated with the client request. | | -| `tracking_token` | *Optional[str]* | :heavy_minus_sign: | A previously received trackingToken for a search associated with the same query. Useful for more requests and requests for other tabs. | | -| `session_info` | [Optional[models.SessionInfo]](../../models/sessioninfo.md) | :heavy_minus_sign: | N/A | | -| `source_document` | [Optional[models.Document]](../../models/document.md) | :heavy_minus_sign: | N/A | | -| `page_size` | *Optional[int]* | :heavy_minus_sign: | Hint to the server about how many results to send back. Server may return less or more. Structured results and clustered results don't count towards pageSize. | 100 | -| `max_snippet_size` | *Optional[int]* | :heavy_minus_sign: | Hint to the server about how many characters long a snippet may be. Server may return less or more. | 400 | -| `recommendation_document_spec` | [Optional[models.DocumentSpecUnion]](../../models/documentspecunion.md) | :heavy_minus_sign: | N/A | | -| `request_options` | [Optional[models.RecommendationsRequestOptions]](../../models/recommendationsrequestoptions.md) | :heavy_minus_sign: | N/A | | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | - -### Response - -**[models.ResultsResponse](../../models/resultsresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ----------------- | ----------------- | ----------------- | -| errors.GleanError | 4XX, 5XX | \*/\* | - -## query - -Retrieve results from the index for the given query and filters. - -### Example Usage - - -```python -from glean.api_client import Glean, models -from glean.api_client.utils import parse_datetime +from glean.api_client import Glean import os @@ -491,106 +85,7 @@ with Glean( api_token=os.getenv("GLEAN_API_TOKEN", ""), ) as glean: - res = glean.client.search.query(query="vacation policy", tracking_token="trackingToken", source_document=models.Document( - container_document=models.Document( - metadata=models.DocumentMetadata( - datasource="datasource", - object_type="Feature Request", - container="container", - parent_id="JIRA_EN-1337", - mime_type="mimeType", - document_id="documentId", - create_time=parse_datetime("2000-01-23T04:56:07.000Z"), - update_time=parse_datetime("2000-01-23T04:56:07.000Z"), - author=models.Person( - name="name", - obfuscated_id="", - ), - components=[ - "Backend", - "Networking", - ], - status="[\"Done\"]", - custom_data={ - "someCustomField": models.CustomDataValue(), - }, - ), - ), - parent_document=models.Document( - metadata=models.DocumentMetadata( - datasource="datasource", - object_type="Feature Request", - container="container", - parent_id="JIRA_EN-1337", - mime_type="mimeType", - document_id="documentId", - create_time=parse_datetime("2000-01-23T04:56:07.000Z"), - update_time=parse_datetime("2000-01-23T04:56:07.000Z"), - author=models.Person( - name="name", - obfuscated_id="", - ), - components=[ - "Backend", - "Networking", - ], - status="[\"Done\"]", - custom_data={ - "someCustomField": models.CustomDataValue(), - }, - ), - ), - metadata=models.DocumentMetadata( - datasource="datasource", - object_type="Feature Request", - container="container", - parent_id="JIRA_EN-1337", - mime_type="mimeType", - document_id="documentId", - create_time=parse_datetime("2000-01-23T04:56:07.000Z"), - update_time=parse_datetime("2000-01-23T04:56:07.000Z"), - author=models.Person( - name="name", - obfuscated_id="", - ), - components=[ - "Backend", - "Networking", - ], - status="[\"Done\"]", - custom_data={ - "someCustomField": models.CustomDataValue(), - }, - ), - ), page_size=10, max_snippet_size=400, input_details={ - "has_copy_paste": True, - }, request_options=models.SearchRequestOptions( - facet_filters=[ - models.FacetFilter( - field_name="type", - values=[ - models.FacetFilterValue( - value="article", - relation_type=models.RelationType.EQUALS, - ), - models.FacetFilterValue( - value="document", - relation_type=models.RelationType.EQUALS, - ), - ], - ), - models.FacetFilter( - field_name="department", - values=[ - models.FacetFilterValue( - value="engineering", - relation_type=models.RelationType.EQUALS, - ), - ], - ), - ], - facet_bucket_size=939520, - ), timeout_millis=5000) + res = glean.search.list_filters() # Handle response print(res) @@ -599,30 +94,20 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `query` | *str* | :heavy_check_mark: | The search terms. | vacation policy | -| `timestamp` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | The ISO 8601 timestamp associated with the client request. | | -| `tracking_token` | *Optional[str]* | :heavy_minus_sign: | A previously received trackingToken for a search associated with the same query. Useful for more requests and requests for other tabs. | | -| `session_info` | [Optional[models.SessionInfo]](../../models/sessioninfo.md) | :heavy_minus_sign: | N/A | | -| `source_document` | [Optional[models.Document]](../../models/document.md) | :heavy_minus_sign: | N/A | | -| `page_size` | *Optional[int]* | :heavy_minus_sign: | Hint to the server about how many results to send back. Server may return less or more. Structured results and clustered results don't count towards pageSize. | 100 | -| `max_snippet_size` | *Optional[int]* | :heavy_minus_sign: | Hint to the server about how many characters long a snippet may be. Server may return less or more. | 400 | -| `cursor` | *Optional[str]* | :heavy_minus_sign: | Pagination cursor. A previously received opaque token representing the position in the overall results at which to start. | | -| `result_tab_ids` | List[*str*] | :heavy_minus_sign: | The unique IDs of the result tabs for which to fetch results. This will have precedence over datasource filters if both are specified and in conflict. | | -| `input_details` | [Optional[models.SearchRequestInputDetails]](../../models/searchrequestinputdetails.md) | :heavy_minus_sign: | N/A | {
"hasCopyPaste": true
} | -| `request_options` | [Optional[models.SearchRequestOptions]](../../models/searchrequestoptions.md) | :heavy_minus_sign: | N/A | {
"datasourceFilter": "JIRA",
"datasourcesFilter": [
"JIRA"
],
"queryOverridesFacetFilters": true,
"facetFilters": [
{
"fieldName": "fieldName",
"values": [
"fieldValues",
"fieldValues"
]
},
{
"fieldName": "fieldName",
"values": [
"fieldValues",
"fieldValues"
]
}
]
} | -| `timeout_millis` | *Optional[int]* | :heavy_minus_sign: | Timeout in milliseconds for the request. A `408` error will be returned if handling the request takes longer. | 5000 | -| `disable_spellcheck` | *Optional[bool]* | :heavy_minus_sign: | Whether or not to disable spellcheck. | | -| `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 | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `datasources` | List[*str*] | :heavy_minus_sign: | Restrict metadata to one or more datasource identifiers as returned by this endpoint (for example, `jira`). With a nonblank `query`, exactly one datasource is required. Unknown or inaccessible identifiers return `invalid_datasource`.
| +| `query` | *Optional[str]* | :heavy_minus_sign: | Optional search query that requests suggested filter values for the selected datasource. Must be nonblank when present. Triggers a search for facet values only; does not return documents.
| +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response -**[models.SearchResponse](../../models/searchresponse.md)** +**[models.PlatformSearchFiltersResponseResponse](../../models/platformsearchfiltersresponseresponse.md)** ### Errors -| Error Type | Status Code | Content Type | -| --------------------- | --------------------- | --------------------- | -| errors.GleanDataError | 403, 422 | application/json | -| errors.GleanError | 4XX, 5XX | \*/\* | \ No newline at end of file +| Error Type | Status Code | Content Type | +| --------------------------------- | --------------------------------- | --------------------------------- | +| 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 diff --git a/docs/sdks/skills/README.md b/docs/sdks/skills/README.md new file mode 100644 index 00000000..8cdfbc33 --- /dev/null +++ b/docs/sdks/skills/README.md @@ -0,0 +1,636 @@ +# Skills + +## Overview + +### Available Operations + +* [create](#create) - Create skill +* [list](#list) - List skills +* [import_](#import_) - Import skills from GitHub +* [validate](#validate) - Validate skill bundle +* [preview_source](#preview_source) - Preview a GitHub skill source +* [update](#update) - Update skill +* [delete](#delete) - Delete skill +* [retrieve](#retrieve) - Retrieve skill +* [retrieve_content](#retrieve_content) - Download skill content +* [sync](#sync) - Sync a GitHub-imported skill +* [create_version](#create_version) - Create skill version +* [list_versions](#list_versions) - List skill versions +* [retrieve_version](#retrieve_version) - Retrieve skill version +* [retrieve_version_content](#retrieve_version_content) - Download skill version content + +## 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. + + +### 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.create(file={ + "file_name": "example.file", + "content": open("example.file", "rb"), + }) + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | +| `file` | [models.PlatformSkillCreateRequestFile](../../models/platformskillcreaterequestfile.md) | :heavy_check_mark: | SKILL.md, .zip, or .skill bundle to create. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[models.PlatformSkillCreateResponse](../../models/platformskillcreateresponse.md)** + +### 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 | \*/\* | + +## list + +List skills available to the authenticated user. + + +### 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.list() + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | 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. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[models.PlatformSkillsListResponse](../../models/platformskillslistresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------------------------- | --------------------------------- | --------------------------------- | +| errors.PlatformProblemDetailError | 400, 401, 403, 404, 408, 429 | application/problem+json | +| errors.PlatformProblemDetailError | 500, 503 | application/problem+json | +| errors.GleanError | 4XX, 5XX | \*/\* | + +## import_ + +Import one or more skills selected from a GitHub source preview. Each source URL is fetched and persisted as an independent skill with source provenance. This operation does not create a durable source resource. The import is atomic: if any source cannot be fetched, validated, or persisted, no skills are created. + + +### 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.import_(source_urls=[ + "", + ]) + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `source_urls` | List[*str*] | :heavy_check_mark: | Resolved GitHub skill URLs selected from a source preview. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[models.PlatformSkillImportResponse](../../models/platformskillimportresponse.md)** + +### 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 | \*/\* | + +## validate + +Validate a skill bundle without persisting it. Accepts a SKILL.md, .zip, or .skill upload and returns parsed metadata plus the normalized file layout. + + +### 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.validate(file={ + "file_name": "example.file", + "content": open("example.file", "rb"), + }) + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | +| `file` | [models.PlatformSkillValidationRequestFile](../../models/platformskillvalidationrequestfile.md) | :heavy_check_mark: | SKILL.md, .zip, or .skill bundle to validate. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[models.PlatformSkillValidationResponse](../../models/platformskillvalidationresponse.md)** + +### 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 | \*/\* | + +## preview_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. + + +### 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(source_url="https://ugly-information.name/", stream=False) + + # Handle response + print(res) + +``` + +### Parameters + +| 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)** + +### 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 | \*/\* | + +## update + +Update mutable metadata for a skill. V1 supports enabling or disabling a skill without changing its content. + + +### Example Usage + + +```python +from glean.api_client import Glean, models +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.skills.update(skill_id="", status=models.PlatformSkillUpdateStatus.DISABLED) + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | +| `skill_id` | *str* | :heavy_check_mark: | Glean 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. | + +### Response + +**[models.PlatformSkillUpdateResponse](../../models/platformskillupdateresponse.md)** + +### 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 | \*/\* | + +## delete + +Delete a skill the authenticated caller is allowed to manage. This operation permanently removes all versions of the skill. + + +### Example Usage + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + glean.skills.delete(skill_id="") + + # Use the SDK ... + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `skill_id` | *str* | :heavy_check_mark: | Glean skill ID. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Errors + +| Error Type | Status Code | Content Type | +| --------------------------------- | --------------------------------- | --------------------------------- | +| errors.PlatformProblemDetailError | 400, 401, 403, 404, 408, 429 | application/problem+json | +| errors.PlatformProblemDetailError | 500, 503 | application/problem+json | +| errors.GleanError | 4XX, 5XX | \*/\* | + +## retrieve + +Retrieve metadata for a skill available to the authenticated user. + + +### 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.retrieve(skill_id="") + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `skill_id` | *str* | :heavy_check_mark: | Glean skill ID. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[models.PlatformSkillGetResponse](../../models/platformskillgetresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------------------------- | --------------------------------- | --------------------------------- | +| errors.PlatformProblemDetailError | 400, 401, 403, 404, 408, 429 | application/problem+json | +| errors.PlatformProblemDetailError | 500, 503 | application/problem+json | +| errors.GleanError | 4XX, 5XX | \*/\* | + +## retrieve_content + +Download the latest installable bundle for a skill available to the authenticated user. + + +### 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.retrieve_content(skill_id="") + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `skill_id` | *str* | :heavy_check_mark: | Glean skill ID. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[models.PlatformSkillsGetContentResponse](../../models/platformskillsgetcontentresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------------------------- | --------------------------------- | --------------------------------- | +| errors.PlatformProblemDetailError | 400, 401, 403, 404, 408, 429 | application/problem+json | +| errors.PlatformProblemDetailError | 500, 503 | application/problem+json | +| errors.GleanError | 4XX, 5XX | \*/\* | + +## sync + +Refresh one GitHub-imported skill from its stored source URL. If the skill content has changed, this operation creates a new skill version. If the skill is no longer present upstream, the stored skill is left unchanged and must be deleted explicitly. + + +### 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.sync(skill_id="") + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `skill_id` | *str* | :heavy_check_mark: | ID of the GitHub-imported skill to sync. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[models.PlatformSkillSyncResponse](../../models/platformskillsyncresponse.md)** + +### 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 | \*/\* | + +## create_version + +Create a new immutable version for an existing caller-managed skill from an uploaded SKILL.md, .zip, or .skill bundle. + + +### 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.create_version(skill_id="", file={ + "file_name": "example.file", + "content": open("example.file", "rb"), + }) + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | +| `skill_id` | *str* | :heavy_check_mark: | Glean skill ID. | +| `file` | [models.PlatformSkillVersionCreateRequestFile](../../models/platformskillversioncreaterequestfile.md) | :heavy_check_mark: | SKILL.md, .zip, or .skill bundle to store as a new version. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[models.PlatformSkillVersionCreateResponse](../../models/platformskillversioncreateresponse.md)** + +### 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 | \*/\* | + +## list_versions + +List versions for a skill available to the authenticated user. + + +### 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.list_versions(skill_id="") + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `skill_id` | *str* | :heavy_check_mark: | Glean 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. | + +### Response + +**[models.PlatformSkillVersionsListResponse](../../models/platformskillversionslistresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------------------------- | --------------------------------- | --------------------------------- | +| errors.PlatformProblemDetailError | 400, 401, 403, 404, 408, 429 | application/problem+json | +| errors.PlatformProblemDetailError | 500, 503 | application/problem+json | +| errors.GleanError | 4XX, 5XX | \*/\* | + +## retrieve_version + +Retrieve metadata for a skill version available to the authenticated user. + + +### 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.retrieve_version(skill_id="", version=495658) + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `skill_id` | *str* | :heavy_check_mark: | Glean skill ID. | +| `version` | *int* | :heavy_check_mark: | Major version number. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[models.PlatformSkillVersionGetResponse](../../models/platformskillversiongetresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------------------------- | --------------------------------- | --------------------------------- | +| errors.PlatformProblemDetailError | 400, 401, 403, 404, 408, 429 | application/problem+json | +| errors.PlatformProblemDetailError | 500, 503 | application/problem+json | +| errors.GleanError | 4XX, 5XX | \*/\* | + +## retrieve_version_content + +Download the installable bundle for a skill version available to the authenticated user. + + +### 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.retrieve_version_content(skill_id="", version=117760) + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `skill_id` | *str* | :heavy_check_mark: | Glean skill ID. | +| `version` | *int* | :heavy_check_mark: | Major version number. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[models.PlatformSkillsGetVersionContentResponse](../../models/platformskillsgetversioncontentresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------------------------- | --------------------------------- | --------------------------------- | +| 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 diff --git a/docs/sdks/tools/README.md b/docs/sdks/tools/README.md index 5dd8efc1..8a336814 100644 --- a/docs/sdks/tools/README.md +++ b/docs/sdks/tools/README.md @@ -6,6 +6,11 @@ * [list](#list) - List available tools * [run](#run) - Execute the specified tool +* [retrieve_action_pack_auth_status](#retrieve_action_pack_auth_status) - Get end-user authentication status for an action pack. +* [authorize_action_pack](#authorize_action_pack) - Start the OAuth authorization flow for an action pack. +* [retrieve_tool_server_auth_status](#retrieve_tool_server_auth_status) - Get end-user authentication status for a tool server. +* [authorize_tool_server](#authorize_tool_server) - Start the OAuth authorization flow for a tool server. +* [get_tool_server_tools](#get_tool_server_tools) - Get tool definitions from a tool server. ## list @@ -86,6 +91,242 @@ with Glean( ### Errors +| Error Type | Status Code | Content Type | +| ----------------- | ----------------- | ----------------- | +| errors.GleanError | 4XX, 5XX | \*/\* | + +## retrieve_action_pack_auth_status + +Reports whether the calling user is already authenticated against the third-party +tool backing the specified action pack. Intended for headless / server-driven clients +that render an "Authorize" prompt when the user has not yet consented to the tool. + + +### Example Usage + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.client.tools.retrieve_action_pack_auth_status(action_pack_id="") + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `action_pack_id` | *str* | :heavy_check_mark: | ID of the action pack to query or authorize. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[models.ActionPackAuthStatusResponse](../../models/actionpackauthstatusresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ----------------- | ----------------- | ----------------- | +| errors.GleanError | 4XX, 5XX | \*/\* | + +## authorize_action_pack + +Starts the third-party OAuth flow for the specified action pack and returns the +redirect URL that the client should navigate the end user to. After the OAuth +callback completes, the user's browser is redirected back to `returnUrl` with a +status query parameter (`?glean_action_auth=success|error&actionPackId=...`). + +`returnUrl` must match the tenant's configured return URL allowlist; otherwise the +request is rejected with 400. + + +### Example Usage + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.client.tools.authorize_action_pack(action_pack_id="", return_url="https://merry-allocation.org/") + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `action_pack_id` | *str* | :heavy_check_mark: | ID of the action pack to query or authorize. | +| `return_url` | *str* | :heavy_check_mark: | URL on the customer's domain to redirect the end user's browser back to after the third-party OAuth
callback completes. Must be present in the tenant's return URL allowlist.
| +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[models.AuthorizeActionPackResponse](../../models/authorizeactionpackresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ----------------- | ----------------- | ----------------- | +| errors.GleanError | 4XX, 5XX | \*/\* | + +## retrieve_tool_server_auth_status + +Returns display information and the calling user's current authentication status +for the specified tool server. + + +### Example Usage + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.client.tools.retrieve_tool_server_auth_status(server_id="") + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `server_id` | *str* | :heavy_check_mark: | Unique identifier of the tool server. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[models.ToolServerAuthStatusResponse](../../models/toolserverauthstatusresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ----------------- | ----------------- | ----------------- | +| errors.GleanError | 4XX, 5XX | \*/\* | + +## authorize_tool_server + +Initiates the third-party OAuth flow for the specified tool server and returns the +authorization URL that the client should navigate the end user to. After the OAuth +callback completes, the user's browser is redirected back to `returnUrl` with query +parameters indicating the result. + +`returnUrl` must match the tenant's configured return URL allowlist; otherwise the +request is rejected with 400. + + +### Example Usage + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.client.tools.authorize_tool_server(server_id="", return_url="https://lucky-disadvantage.com") + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | +| `server_id` | *str* | :heavy_check_mark: | Unique identifier of the tool server. | +| `return_url` | *str* | :heavy_check_mark: | URL to redirect the end user's browser back to after the OAuth flow completes.
Must be present in the tenant's configured return URL allowlist.
| +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[models.AuthorizeToolServerResponse](../../models/authorizetoolserverresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ----------------- | ----------------- | ----------------- | +| errors.GleanError | 4XX, 5XX | \*/\* | + +## get_tool_server_tools + +Returns the name, description and JSON input schema for the named tools on the +specified tool server. Works for Glean's built-in tools, tool packs and MCP +servers. + +`toolNames` is required. Names that do not exist on the server are returned in +`notFound` rather than failing the request, so a single bad name does not force +callers into one-at-a-time retries. Matching is case-insensitive and treats `-` +and `_` as equivalent. + +Use `serverId=native` for Glean's built-in tools. + + +### Example Usage + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.client.tools.get_tool_server_tools(server_id="", tool_names=[ + "", + "", + "", + ]) + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `server_id` | *str* | :heavy_check_mark: | Unique identifier of the tool server. | +| `tool_names` | List[*str*] | :heavy_check_mark: | Tool names to look up on this server. Maximum 100. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[models.ToolDefinitionsResponse](../../models/tooldefinitionsresponse.md)** + +### Errors + | Error Type | Status Code | Content Type | | ----------------- | ----------------- | ----------------- | | errors.GleanError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/triggers/README.md b/docs/sdks/triggers/README.md new file mode 100644 index 00000000..762c1d86 --- /dev/null +++ b/docs/sdks/triggers/README.md @@ -0,0 +1,474 @@ +# Triggers + +## Overview + +### Available Operations + +* [create](#create) - Create trigger +* [list](#list) - List triggers +* [get](#get) - Get trigger +* [update](#update) - Update trigger +* [delete](#delete) - Delete trigger +* [search_events](#search_events) - Search events for a trigger +* [list_presets](#list_presets) - List trigger presets +* [get_preset](#get_preset) - Get trigger preset +* [list_preset_input_values](#list_preset_input_values) - Search trigger preset input values +* [search_preset_events](#search_preset_events) - Search events for a trigger preset + +## create + +Create a trigger from a preset and return it with its signing secret. + + +### Example Usage + + +```python +from glean.api_client import Glean, models +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.triggers.create(preset_id="GITHUB_1", delivery={ + "webhook_url": "https://customer.app/webhook", + "auth": { + "type": models.PlatformTriggerAuthType.BEARER, + "secret": "secret_test_123", + }, + }, description="Reviews I am tagged on, sent to my team's review channel", inputs={ + "repository": "acme/payments-api", + }) + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | +| `preset_id` | *str* | :heavy_check_mark: | ID of the preset to instantiate. | GITHUB_1 | +| `delivery` | [models.PlatformTriggerDelivery](../../models/platformtriggerdelivery.md) | :heavy_check_mark: | N/A | | +| `description` | *Optional[str]* | :heavy_minus_sign: | Optional note describing this trigger. | Reviews I am tagged on, sent to my team's review channel | +| `inputs` | Dict[str, *Any*] | :heavy_minus_sign: | Values for the preset's inputs. | {
"repository": "acme/payments-api"
} | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[models.PlatformTriggerCreateResponse](../../models/platformtriggercreateresponse.md)** + +### 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 | \*/\* | + +## list + +List triggers owned by the authenticated caller. + + +### Example Usage + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.triggers.list(page_size=50) + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `page_size` | *Optional[int]* | :heavy_minus_sign: | Maximum number of triggers 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. | + +### Response + +**[models.PlatformTriggerListResponse](../../models/platformtriggerlistresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------------------------- | --------------------------------- | --------------------------------- | +| errors.PlatformProblemDetailError | 400, 401, 403, 408, 429 | application/problem+json | +| errors.PlatformProblemDetailError | 500, 503 | application/problem+json | +| errors.GleanError | 4XX, 5XX | \*/\* | + +## get + +Retrieve a trigger owned by the authenticated caller. + + +### Example Usage + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.triggers.get(trigger_id="") + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `trigger_id` | *str* | :heavy_check_mark: | ID of the trigger to retrieve. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[models.PlatformTriggerGetResponse](../../models/platformtriggergetresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------------------------- | --------------------------------- | --------------------------------- | +| errors.PlatformProblemDetailError | 400, 401, 403, 404, 408, 429 | application/problem+json | +| errors.PlatformProblemDetailError | 500, 503 | application/problem+json | +| errors.GleanError | 4XX, 5XX | \*/\* | + +## update + +Update a trigger. + + +### Example Usage + + +```python +from glean.api_client import Glean, models +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.triggers.update(trigger_id="", status=models.PlatformTriggerStatus.ENABLED, description="Reviews I am tagged on, sent to my team's review channel", inputs={ + "repository": "acme/payments-api", + }, delivery={ + "webhook_url": "https://customer.app/webhook", + "auth": { + "type": models.PlatformTriggerAuthType.BEARER, + "secret": "secret_test_123", + }, + }) + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | +| `trigger_id` | *str* | :heavy_check_mark: | ID of the trigger to update. | | +| `status` | [Optional[models.PlatformTriggerStatus]](../../models/platformtriggerstatus.md) | :heavy_minus_sign: | Current trigger lifecycle state. | ENABLED | +| `description` | *Optional[str]* | :heavy_minus_sign: | Optional note describing this trigger. | Reviews I am tagged on, sent to my team's review channel | +| `inputs` | Dict[str, *Any*] | :heavy_minus_sign: | Values for the preset's inputs. | {
"repository": "acme/payments-api"
} | +| `delivery` | [Optional[models.PlatformTriggerDelivery]](../../models/platformtriggerdelivery.md) | :heavy_minus_sign: | N/A | | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[models.PlatformTriggerGetResponse](../../models/platformtriggergetresponse.md)** + +### 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 | \*/\* | + +## delete + +Delete a trigger. + + +### Example Usage + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + glean.triggers.delete(trigger_id="") + + # Use the SDK ... + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `trigger_id` | *str* | :heavy_check_mark: | ID of the trigger to delete. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Errors + +| Error Type | Status Code | Content Type | +| --------------------------------- | --------------------------------- | --------------------------------- | +| errors.PlatformProblemDetailError | 400, 401, 403, 404, 408, 429 | application/problem+json | +| errors.PlatformProblemDetailError | 500, 503 | application/problem+json | +| errors.GleanError | 4XX, 5XX | \*/\* | + +## search_events + +Search recent content events an existing trigger matches. Read-only — no webhook delivery is made. Covers the last seven days. + + +### Example Usage + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.triggers.search_events(trigger_id="", page_size=10) + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `trigger_id` | *str* | :heavy_check_mark: | ID of the trigger whose events to search. | +| `page_size` | *Optional[int]* | :heavy_minus_sign: | Maximum number of events to return. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[models.PlatformTriggerEventSearchResponse](../../models/platformtriggereventsearchresponse.md)** + +### 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 | \*/\* | + +## list_presets + +List the trigger presets available to the caller. A preset is a curated content-trigger template (e.g. a new Jira ticket) which is passed when creating a trigger. + + +### Example Usage + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.triggers.list_presets(page_size=50) + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `datasource` | *Optional[str]* | :heavy_minus_sign: | Restrict results to presets for a single datasource (e.g. github). | +| `page_size` | *Optional[int]* | :heavy_minus_sign: | Maximum number of presets 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. | + +### Response + +**[models.PlatformTriggerPresetListResponse](../../models/platformtriggerpresetlistresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------------------------- | --------------------------------- | --------------------------------- | +| errors.PlatformProblemDetailError | 400, 401, 403, 408, 429 | application/problem+json | +| errors.PlatformProblemDetailError | 500, 503 | application/problem+json | +| errors.GleanError | 4XX, 5XX | \*/\* | + +## get_preset + +Retrieve a single trigger preset by id. + + +### Example Usage + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.triggers.get_preset(preset_id="") + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `preset_id` | *str* | :heavy_check_mark: | ID of the preset to retrieve. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[models.PlatformTriggerPresetGetResponse](../../models/platformtriggerpresetgetresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------------------------- | --------------------------------- | --------------------------------- | +| errors.PlatformProblemDetailError | 400, 401, 403, 404, 408, 429 | application/problem+json | +| errors.PlatformProblemDetailError | 500, 503 | application/problem+json | +| errors.GleanError | 4XX, 5XX | \*/\* | + +## list_preset_input_values + +Return up to 300 selectable values for a single picklist input on a preset. Results are intended for typeahead selection and are not cursor-paginated. When `is_truncated` is true, refine `query` to narrow the result set. + + +### Example Usage + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.triggers.list_preset_input_values(preset_id="", field="") + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `preset_id` | *str* | :heavy_check_mark: | ID of the preset the input belongs to. | +| `field` | *str* | :heavy_check_mark: | Field identifier of the input whose values to list. | +| `query` | *Optional[str]* | :heavy_minus_sign: | Prefix filter over the input's option values, for typeahead. Matching is on the option value, not its display name.
| +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[models.PlatformTriggerPresetInputValueListResponse](../../models/platformtriggerpresetinputvaluelistresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------------------------- | --------------------------------- | --------------------------------- | +| errors.PlatformProblemDetailError | 400, 401, 403, 404, 408, 429 | application/problem+json | +| errors.PlatformProblemDetailError | 500, 503 | application/problem+json | +| errors.GleanError | 4XX, 5XX | \*/\* | + +## search_preset_events + +Search recent content events an unsaved trigger built from this preset would match, to preview it before creating the trigger. Read-only — no trigger is created and no webhook delivery is made. Covers the last seven days. + + +### Example Usage + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.triggers.search_preset_events(preset_id="", inputs={ + "repository": "acme/payments-api", + }, page_size=10) + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `preset_id` | *str* | :heavy_check_mark: | ID of the preset to preview. | | +| `inputs` | Dict[str, *str*] | :heavy_minus_sign: | Values for the preset's input fields, keyed by field name.
| {
"repository": "acme/payments-api"
} | +| `page_size` | *Optional[int]* | :heavy_minus_sign: | Maximum number of events to return. | | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[models.PlatformTriggerEventSearchResponse](../../models/platformtriggereventsearchresponse.md)** + +### 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 | \*/\* | \ No newline at end of file diff --git a/mise.toml b/mise.toml index 14a5c081..c0b7d26c 100644 --- a/mise.toml +++ b/mise.toml @@ -2,7 +2,7 @@ poetry = "latest" # matches version in .python-version -python = "3.9" +python = "3.10" # needed by speakeasy mockserver go = "1.22" diff --git a/poetry.lock b/poetry.lock index 0b8f586a..137b6f44 100644 --- a/poetry.lock +++ b/poetry.lock @@ -57,7 +57,7 @@ description = "Backport of asyncio.Runner, a context manager that controls event optional = false python-versions = "<3.11,>=3.8" groups = ["dev"] -markers = "python_version < \"3.11\"" +markers = "python_version == \"3.10\"" files = [ {file = "backports_asyncio_runner-1.2.0-py3-none-any.whl", hash = "sha256:0da0a936a8aeb554eccb426dc55af3ba63bcdc69fa1a600b5bb305413a4477b5"}, {file = "backports_asyncio_runner-1.2.0.tar.gz", hash = "sha256:a5aa7b2b7d8f8bfcaa2b57313f70792df84e32a2a746f585213373f900b42162"}, @@ -111,7 +111,7 @@ description = "Backport of PEP 654 (exception groups)" optional = false python-versions = ">=3.7" groups = ["main", "dev"] -markers = "python_version < \"3.11\"" +markers = "python_version == \"3.10\"" files = [ {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, @@ -545,7 +545,6 @@ mccabe = ">=0.6,<0.8" platformdirs = ">=2.2.0" tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} tomlkit = ">=0.10.1" -typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\""} [package.extras] spelling = ["pyenchant (>=3.2,<4.0)"] @@ -574,21 +573,21 @@ nodejs = ["nodejs-wheel-binaries"] [[package]] name = "pytest" -version = "8.4.2" +version = "9.1.1" description = "pytest: simple powerful testing with Python" optional = false -python-versions = ">=3.9" +python-versions = ">=3.10" groups = ["dev"] files = [ - {file = "pytest-8.4.2-py3-none-any.whl", hash = "sha256:872f880de3fc3a5bdc88a11b39c9710c3497a547cfa9320bc3c5e62fbf272e79"}, - {file = "pytest-8.4.2.tar.gz", hash = "sha256:86c0d0b93306b961d58d62a4db4879f27fe25513d4b969df351abdddb3c30e01"}, + {file = "pytest-9.1.1-py3-none-any.whl", hash = "sha256:37a86b45efb9a47a61a36449063e8e18d0cab3161329fc099eb21783169c4f0c"}, + {file = "pytest-9.1.1.tar.gz", hash = "sha256:1088fbde8f2b49d95a549a195707afa7a76a3ce9bcadc26b6d71f0ffda5fe313"}, ] [package.dependencies] colorama = {version = ">=0.4", markers = "sys_platform == \"win32\""} exceptiongroup = {version = ">=1", markers = "python_version < \"3.11\""} -iniconfig = ">=1" -packaging = ">=20" +iniconfig = ">=1.0.1" +packaging = ">=22" pluggy = ">=1.5,<2" pygments = ">=2.7.2" tomli = {version = ">=1", markers = "python_version < \"3.11\""} @@ -598,19 +597,19 @@ dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "requests [[package]] name = "pytest-asyncio" -version = "1.2.0" +version = "1.3.0" description = "Pytest support for asyncio" optional = false -python-versions = ">=3.9" +python-versions = ">=3.10" groups = ["dev"] files = [ - {file = "pytest_asyncio-1.2.0-py3-none-any.whl", hash = "sha256:8e17ae5e46d8e7efe51ab6494dd2010f4ca8dae51652aa3c8d55acf50bfb2e99"}, - {file = "pytest_asyncio-1.2.0.tar.gz", hash = "sha256:c609a64a2a8768462d0c99811ddb8bd2583c33fd33cf7f21af1c142e824ffb57"}, + {file = "pytest_asyncio-1.3.0-py3-none-any.whl", hash = "sha256:611e26147c7f77640e6d0a92a38ed17c3e9848063698d5c93d5aa7aa11cebff5"}, + {file = "pytest_asyncio-1.3.0.tar.gz", hash = "sha256:d7f52f36d231b80ee124cd216ffb19369aa168fc10095013c6b014a34d3ee9e5"}, ] [package.dependencies] backports-asyncio-runner = {version = ">=1.1,<2", markers = "python_version < \"3.11\""} -pytest = ">=8.2,<9" +pytest = ">=8.2,<10" typing-extensions = {version = ">=4.12", markers = "python_version < \"3.13\""} [package.extras] @@ -657,7 +656,7 @@ description = "A lil' TOML parser" optional = false python-versions = ">=3.8" groups = ["dev"] -markers = "python_version < \"3.11\"" +markers = "python_version == \"3.10\"" files = [ {file = "tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249"}, {file = "tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6"}, @@ -734,5 +733,5 @@ typing-extensions = ">=4.12.0" [metadata] lock-version = "2.1" -python-versions = ">=3.9.2" -content-hash = "c533f768dc3ca36d4b6b5cf3de1fb97329f5b9479c269cfdf3ab3f16bd657e9b" +python-versions = ">=3.10" +content-hash = "d50d58a1b0400168082c4ae9f6171e1c0ab180a81af0a12e56dcee80f55aecce" diff --git a/pylintrc b/pylintrc index 8e34b78a..79e388be 100644 --- a/pylintrc +++ b/pylintrc @@ -89,7 +89,7 @@ persistent=yes # Minimum Python version to use for version dependent checks. Will default to # the version used to run pylint. -py-version=3.9 +py-version=3.10 # Discover python modules and packages in the file system subtree. recursive=no @@ -188,7 +188,7 @@ good-names=i, Run, _, e, - ai, + ds, id, ts @@ -460,7 +460,8 @@ disable=raw-checker-failed, consider-using-with, wildcard-import, unused-wildcard-import, - too-many-return-statements + too-many-return-statements, + redefined-builtin # Enable the message, report, category or checker with the given id(s). You can # either give multiple identifier separated by comma (,) or put this option diff --git a/pyproject.toml b/pyproject.toml index a9233390..d391b6db 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,11 +1,11 @@ [project] name = "glean-api-client" -version = "0.11.27" +version = "0.16.0" description = "Python Client SDK Generated by Speakeasy." authors = [{ name = "Glean Technologies, Inc." },] readme = "README-PYPI.md" -requires-python = ">=3.9.2" +requires-python = ">=3.10" dependencies = [ "httpcore >=1.0.9", "httpx >=0.28.1", @@ -29,8 +29,8 @@ in-project = true mypy = "==1.15.0" pylint = "==3.2.3" pyright = "==1.1.398" -pytest = "^8.4.1" -pytest-asyncio = "==1.2.0" +pytest = "^9.0.3" +pytest-asyncio = ">=1.3.0" pytest-xdist = "^3.8.0" [build-system] diff --git a/speakeasyusagegen/.speakeasy/logs/naming.log b/speakeasyusagegen/.speakeasy/logs/naming.log index bfb880d4..029cce25 100644 --- a/speakeasyusagegen/.speakeasy/logs/naming.log +++ b/speakeasyusagegen/.speakeasy/logs/naming.log @@ -22,8 +22,8 @@ DEBUG prepend_op_id: Renamed to "createcollection_ResponseBody" DEBUG add_name: Renamed to "DocumentOrError" labels: "scope:shared refName:DocumentOrError" registrationID: "scope:shared refType:Schemas refName:DocumentOrError component:true oneOfPosition:2 originalName:" -DEBUG prepend_op_id: Renamed to "listpins_request" - labels: "original_name:request operation:listpins operationTag:client.pins" +DEBUG prepend_op_id: Renamed to "listpins_RequestBody" + labels: "original_name:RequestBody operation:listpins operationTag:client.pins requestResponse:request" registrationID: "scope:operations operationTag:client.pins operation:listpins requestResponse:request originalName:RequestBody" DEBUG add_name: Renamed to "GetShortcutRequest" labels: "scope:shared refName:GetShortcutRequest" @@ -84,13 +84,10 @@ DEBUG discriminated: Renamed to "activity_enum" registrationID: "scope:shared refType:Schemas refName:UserActivityInsight originalName:activity" DEBUG ---- Renaming 4 types with name "category" --- +--- Renaming 3 types with name "category" --- DEBUG discriminated: Renamed to "Feedback_category" labels: "original_name:category scope:shared data_type:enum refName:Feedback" registrationID: "scope:shared refType:Schemas refName:Feedback originalName:category" -DEBUG discriminated: Renamed to "InsightsRequest_category" - labels: "original_name:category scope:shared data_type:enum refName:InsightsRequest" - registrationID: "scope:shared refType:Schemas refName:InsightsRequest originalName:category" DEBUG discriminated: Renamed to "FeedRequest_category" labels: "original_name:category scope:shared data_type:enum refName:FeedRequest" registrationID: "scope:shared refType:Schemas refName:FeedRequest originalName:category" @@ -406,8 +403,8 @@ DEBUG incremented: Renamed to "ResponseBody_2" DEBUG prepend_op_id: N/A rename "createcollection_ResponseBody" labels: "original_name:ResponseBody operation:createcollection operationTag:client.collections requestResponse:response data_type:union" registrationID: "scope:operations operationTag:client.collections operation:createcollection requestResponse:response responseStatusCode:200 responseMediaType:application/json originalName:ResponseBody" -DEBUG prepend_op_id: N/A rename "listpins_request" - labels: "original_name:request operation:listpins operationTag:client.pins" +DEBUG prepend_op_id: N/A rename "listpins_RequestBody" + labels: "original_name:RequestBody operation:listpins operationTag:client.pins requestResponse:request" registrationID: "scope:operations operationTag:client.pins operation:listpins requestResponse:request originalName:RequestBody" DEBUG @@ -444,176 +441,184 @@ FeedbackRequest (feedback: string, body: Feedback) WorkflowFeedbackInfoSource (enum: ZERO_STATE, LIBRARY, HOMEPAGE) FeedbackResponse (HttpMeta: HTTPMetadata) Announcements (SDK empty) -CreateAnnouncementRequest (startTime: date-time, endTime: date-time, title: string ...) - StructuredText (text: string, structuredList: array) - StructuredTextItem (link: string, document: Document, text: string ...) - Document (id: string, datasource: string, connectorType: ConnectorType ...) - ConnectorType (enum: API_CRAWL, BROWSER_CRAWL, BROWSER_HISTORY ...) - DocumentContent (fullTextList: array) - DocumentMetadata (datasource: string, datasourceInstance: string, objectType: string ...) - Person (name: string, obfuscatedId: string, relatedDocuments: array ...) - RelatedDocuments (relation: enum, associatedEntityId: string, querySuggestion: QuerySuggestion ...) - Relation (enum: ATTACHMENT, CANONICAL, CASE ...) - QuerySuggestion (missingTerm: string, query: string, searchProviderInfo: SearchProviderInfo ...) - SearchProviderInfo (name: string, logoUrl: string, searchLinkUrlTemplate: string) - ResultTab (id: string, count: integer, datasource: string ...) - SearchRequestOptions (datasourceFilter: string, datasourcesFilter: array, queryOverridesFacetFilters: boolean ...) - FacetFilter (fieldName: string, values: array, groupName: string) - FacetFilterValue (value: string, relationType: enum, isNegated: boolean) - RelationType (enum: EQUALS, ID_EQUALS, LT ...) - FacetFilterSet (filters: array) - FacetBucketFilter (facet: string, prefix: string) - AuthToken (accessToken: string, datasource: string, scope: string ...) - ResponseHint (enum: ALL_RESULT_COUNTS, FACET_RESULTS, QUERY_METADATA ...) - RestrictionFilters (containerSpecs: array) - DocumentSpecUnion (union) - DocumentSpec1 (url: string) - DocumentSpec2 (id: string) - DocumentSpec3 (ugcType: enum, contentId: integer, docType: string) - DocumentSpecUgcType1 (enum: ANNOUNCEMENTS, ANSWERS, COLLECTIONS ...) - DocumentSpec4 (ugcType: enum, ugcId: string, docType: string) - DocumentSpecUgcType2 (enum: ANNOUNCEMENTS, ANSWERS, COLLECTIONS ...) - TextRange (startIndex: integer, endIndex: integer, type: enum ...) - TextRangeType (enum: BOLD, CITATION, HIGHLIGHT ...) - DocumentSection (title: string, url: string) - SearchRequestInputDetails (hasCopyPaste: boolean) - SearchResult (structuredResults: array, trackingToken: string, document: Document ...) - StructuredResult (document: Document, person: Person, customer: Customer ...) - PersonMetadata (type: enum, firstName: string, lastName: string ...) - PersonMetadataType (enum: FULL_TIME, CONTRACTOR, NON_EMPLOYEE ...) - PersonTeam (id: string, name: string, externalLink: string ...) - PersonTeamRelationship (enum: MEMBER, MANAGER, LEAD ...) - StructuredLocation (deskLocation: string, timezone: string, address: string ...) - SocialNetwork (name: string, profileName: string, profileUrl: string) - DatasourceProfile (datasource: string, handle: string, url: string ...) - QuerySuggestionList (suggestions: array, person: Person) - PersonDistance (name: string, obfuscatedId: string, distance: float32) - InviteInfo (signUpTime: date-time, invites: array, inviter: Person ...) - ChannelInviteInfo (channel: CommunicationChannel, isAutoInvite: boolean, inviter: Person ...) - CommunicationChannel (enum: COMMUNICATION_CHANNEL_EMAIL, COMMUNICATION_CHANNEL_SLACK) - Permissions (canAdminSearch: boolean, canAdminClientApiGlobalTokens: boolean, canDlp: boolean ...) - ReadPermission (scopeType: ScopeType) - ScopeType (enum: GLOBAL, OWN) - WritePermission (scopeType: ScopeType, create: boolean, update: boolean ...) - GrantPermission (scopeType: ScopeType) - CustomFieldData (label: string, values: array, displayable: boolean) - CustomFieldValue (union) - CustomFieldValueStr (strText: string) - CustomFieldValueHyperlink (urlAnchor: string, urlLink: string) - CustomFieldValuePerson (person: Person) - AnonymousEvent (time: TimeInterval, eventType: enum) - TimeInterval (start: string, end: string) - AnonymousEventEventType (enum: DEFAULT, OUT_OF_OFFICE) - Badge (key: string, displayName: string, iconConfig: IconConfig ...) - IconConfig (generatedBackgroundColorKey: string, backgroundColor: string, color: string ...) - IconType (enum: COLLECTION, CUSTOM, DATASOURCE ...) - Customer (id: string, domains: array, company: Company ...) - Company (name: string, profileUrl: string, websiteUrls: array ...) - CustomerMetadata (datasourceId: string, customData: map) - CustomDataValue (displayLabel: string, stringValue: string, stringListValue: array ...) - Team (relatedObjects: map, permissions: ObjectPermissions, id: string ...) - RelatedObjectEdge (objects: array) - RelatedObject (id: string, metadata: class) - RelatedObjectMetadata (name: string) - ObjectPermissions (write: WritePermission) - PersonToTeamRelationship (person: Person, relationship: enum, customRelationshipStr: string ...) - PersonToTeamRelationshipRelationship (enum: MEMBER, MANAGER, LEAD ...) - TeamEmail (email: string, type: string) - TeamStatus (enum: PROCESSED, QUEUED_FOR_CREATION, QUEUED_FOR_DELETION) - CustomEntity (permissions: ObjectPermissions, id: string, title: string ...) - CustomEntityMetadata (customData: map) - UserRoleSpecification (sourceDocumentSpec: DocumentSpec_union, person: Person, group: Group ...) - Group (type: GroupType, id: string, name: string ...) - GroupType (enum: DEPARTMENT, ALL, TEAM ...) - UserRole (enum: OWNER, VIEWER, ANSWER_MODERATOR ...) - Answer (id: integer, docId: string, question: string ...) - AnswerSourceType (enum: DOCUMENT, ASSISTANT) - AnswerLikes (likedBy: array, likedByUser: boolean, numLikes: integer) - AnswerLike (user: Person, createTime: date-time) - Verification (state: enum, metadata: VerificationMetadata) - State (enum: UNVERIFIED, VERIFIED, DEPRECATED) - VerificationMetadata (lastVerifier: Person, lastVerificationTs: integer, expirationTs: integer ...) - Reminder (assignee: Person, requestor: Person, remindAt: integer ...) - CountInfo (count: integer, period: Period, org: string) - Period (minDaysFromNow: integer, maxDaysFromNow: integer, start: TimePoint ...) - TimePoint (epochSeconds: integer, daysFromNow: integer) - Collection (name: string, description: string, addedRoles: array ...) - Thumbnail (photoId: string, url: string) - CollectionItem (name: string, description: string, icon: string ...) - Shortcut (id: integer, inputAlias: string, destinationUrl: string ...) - CollectionPinnedMetadata (existingPins: array, eligiblePins: array) - CollectionPinTarget (category: CollectionPinnableCategories, value: string, target: CollectionPinnableTargets) - CollectionPinnableCategories (enum: COMPANY_RESOURCE, DEPARTMENT_RESOURCE, TEAM_RESOURCE) - CollectionPinnableTargets (enum: RESOURCE_CARD, TEAM_PROFILE_PAGE) - CollectionPinMetadata (id: integer, target: CollectionPinTarget) - CollectionItemItemType (enum: DOCUMENT, TEXT, URL ...) - GeneratedQna (question: string, answer: string, followUpPrompts: array ...) - FollowupAction (actionRunId: string, actionInstanceId: string, actionId: string ...) - GeneratedQnaStatus (enum: COMPUTING, DISABLED, FAILED ...) - ExtractedQnA (heading: string, question: string, questionResult: SearchResult) - SearchResultSnippet (mimeType: string, text: string, snippetTextOrdering: integer ...) - ClusterGroup (clusteredResults: array, clusterType: ClusterTypeEnum, visibleCountHint: integer) - ClusterTypeEnum (enum: SIMILAR, FRESHNESS, TITLE ...) - SearchResultProminenceEnum (enum: HERO, PROMOTED, STANDARD) - PinDocument (queries: array, audienceFilters: array, id: string ...) - Meeting (id: string, title: string, description: string ...) - CalendarAttendees (people: array, isLimit: boolean, total: integer ...) - CalendarAttendee (isOrganizer: boolean, isInGroup: boolean, person: Person ...) - ResponseStatus (enum: ACCEPTED, DECLINED, NO_RESPONSE ...) - AppResult (datasource: string, docType: string, mimeType: string ...) - Code (repoName: string, fileName: string, fileUrl: string ...) - CodeLine (lineNumber: integer, content: string, ranges: array) - ChatMetadata (id: string, createTime: integer, createdBy: Person ...) - RelatedQuestion (question: string, answer: string, ranges: array) - Disambiguation (name: string, id: string, type: EntityType) - EntityType (enum: PERSON, PROJECT, CUSTOMER) - Prominence (enum: HERO, PROMOTED, STANDARD) - StructuredResultSource (enum: EXPERT_DETECTION, ENTITY_NLQ, CALENDAR_EVENT ...) - DocumentVisibility (enum: PRIVATE, SPECIFIC_PEOPLE_AND_GROUPS, DOMAIN_LINK ...) - DocumentInteractions (numComments: integer, numReactions: integer, reactions: array ...) - Reaction (type: string, count: integer, reactors: array ...) - Share (numDaysAgo: integer, sharer: Person, sharingDocument: Document) - ViewerInfo (role: enum, lastViewedTime: date-time) - Role (enum: ANSWER_MODERATOR, OWNER, VIEWER) - IndexStatus (lastCrawledTime: date-time, lastIndexedTime: date-time) - CreateAnnouncementRequestChannel (enum: MAIN, SOCIAL_FEED) - CreateAnnouncementRequestPostType (enum: TEXT, LINK) +CreateannouncementRequest (locale: string, body: CreateAnnouncementRequest) + CreateAnnouncementRequest (startTime: date-time, endTime: date-time, title: string ...) + StructuredText (text: string, structuredList: array) + StructuredTextItem (link: string, document: Document, text: string ...) + Document (id: string, datasource: string, connectorType: ConnectorType ...) + ConnectorType (enum: API_CRAWL, BROWSER_CRAWL, BROWSER_HISTORY ...) + DocumentContent (fullTextList: array) + DocumentMetadata (datasource: string, datasourceInstance: string, objectType: string ...) + Person (name: string, obfuscatedId: string, relatedDocuments: array ...) + RelatedDocuments (relation: enum, associatedEntityId: string, querySuggestion: QuerySuggestion ...) + Relation (enum: ATTACHMENT, CANONICAL, CASE ...) + QuerySuggestion (missingTerm: string, query: string, searchProviderInfo: SearchProviderInfo ...) + SearchProviderInfo (name: string, logoUrl: string, searchLinkUrlTemplate: string) + ResultTab (id: string, count: integer, datasource: string ...) + SearchRequestOptions (datasourceFilter: string, datasourcesFilter: array, queryOverridesFacetFilters: boolean ...) + FacetFilter (fieldName: string, values: array, groupName: string) + FacetFilterValue (value: string, relationType: enum, isNegated: boolean) + RelationType (enum: EQUALS, ID_EQUALS, LT ...) + FacetFilterSet (filters: array) + FacetBucketFilter (facet: string, prefix: string) + AuthToken (accessToken: string, datasource: string, scope: string ...) + ResponseHint (enum: ALL_RESULT_COUNTS, FACET_RESULTS, QUERY_METADATA ...) + RestrictionFilters (containerSpecs: array) + DocumentSpecUnion (union) + DocumentSpec1 (url: string) + DocumentSpec2 (id: string) + DocumentSpec3 (ugcType: enum, contentId: integer, docType: string) + DocumentSpecUgcType1 (enum: ANNOUNCEMENTS, ANSWERS, COLLECTIONS ...) + DocumentSpec4 (ugcType: enum, ugcId: string, docType: string) + DocumentSpecUgcType2 (enum: ANNOUNCEMENTS, ANSWERS, COLLECTIONS ...) + TextRange (startIndex: integer, endIndex: integer, type: enum ...) + TextRangeType (enum: BOLD, CITATION, HIGHLIGHT ...) + DocumentSection (title: string, url: string) + SearchRequestInputDetails (hasCopyPaste: boolean) + SearchResult (structuredResults: array, trackingToken: string, document: Document ...) + StructuredResult (document: Document, person: Person, customer: Customer ...) + PersonMetadata (type: enum, firstName: string, lastName: string ...) + PersonMetadataType (enum: FULL_TIME, CONTRACTOR, NON_EMPLOYEE ...) + PersonTeam (id: string, name: string, externalLink: string ...) + PersonTeamRelationship (enum: MEMBER, MANAGER, LEAD ...) + StructuredLocation (deskLocation: string, timezone: string, address: string ...) + SocialNetwork (name: string, profileName: string, profileUrl: string) + DatasourceProfile (datasource: string, handle: string, url: string ...) + QuerySuggestionList (suggestions: array, person: Person) + PersonDistance (name: string, obfuscatedId: string, distance: float32) + InviteInfo (signUpTime: date-time, invites: array, inviter: Person ...) + ChannelInviteInfo (channel: CommunicationChannel, isAutoInvite: boolean, inviter: Person ...) + CommunicationChannel (enum: COMMUNICATION_CHANNEL_EMAIL, COMMUNICATION_CHANNEL_SLACK) + Permissions (canAdminSearch: boolean, canAdminClientApiGlobalTokens: boolean, canDlp: boolean ...) + ReadPermission (scopeType: ScopeType) + ScopeType (enum: GLOBAL, OWN) + WritePermission (scopeType: ScopeType, create: boolean, update: boolean ...) + GrantPermission (scopeType: ScopeType) + CustomFieldData (label: string, values: array, displayable: boolean) + CustomFieldValue (union) + CustomFieldValueStr (strText: string) + CustomFieldValueHyperlink (urlAnchor: string, urlLink: string) + CustomFieldValuePerson (person: Person) + AnonymousEvent (time: TimeInterval, eventType: enum) + TimeInterval (start: string, end: string) + AnonymousEventEventType (enum: DEFAULT, OUT_OF_OFFICE) + Badge (key: string, displayName: string, iconConfig: IconConfig ...) + IconConfig (generatedBackgroundColorKey: string, backgroundColor: string, color: string ...) + IconType (enum: COLLECTION, CUSTOM, DATASOURCE ...) + Customer (id: string, domains: array, company: Company ...) + Company (name: string, profileUrl: string, websiteUrls: array ...) + CustomerMetadata (datasourceId: string, customData: map) + CustomDataValue (displayLabel: string, stringValue: string, stringListValue: array ...) + Team (relatedObjects: map, permissions: ObjectPermissions, id: string ...) + RelatedObjectEdge (objects: array) + RelatedObject (id: string, metadata: class) + RelatedObjectMetadata (name: string) + ObjectPermissions (write: WritePermission) + PersonToTeamRelationship (person: Person, relationship: enum, customRelationshipStr: string ...) + PersonToTeamRelationshipRelationship (enum: MEMBER, MANAGER, LEAD ...) + TeamEmail (email: string, type: string) + TeamStatus (enum: PROCESSED, QUEUED_FOR_CREATION, QUEUED_FOR_DELETION) + CustomEntity (permissions: ObjectPermissions, id: string, title: string ...) + CustomEntityMetadata (customData: map) + UserRoleSpecification (sourceDocumentSpec: DocumentSpec_union, person: Person, group: Group ...) + Group (type: GroupType, id: string, name: string ...) + GroupType (enum: DEPARTMENT, ALL, TEAM ...) + UserRole (enum: OWNER, VIEWER, ANSWER_MODERATOR ...) + Answer (id: integer, docId: string, question: string ...) + AnswerSourceType (enum: DOCUMENT, ASSISTANT) + AnswerLikes (likedBy: array, likedByUser: boolean, numLikes: integer) + AnswerLike (user: Person, createTime: date-time) + Verification (state: enum, metadata: VerificationMetadata) + State (enum: UNVERIFIED, VERIFIED, DEPRECATED) + VerificationMetadata (lastVerifier: Person, lastVerificationTs: integer, expirationTs: integer ...) + Reminder (assignee: Person, requestor: Person, remindAt: integer ...) + CountInfo (count: integer, period: Period, org: string) + Period (minDaysFromNow: integer, maxDaysFromNow: integer, start: TimePoint ...) + TimePoint (epochSeconds: integer, daysFromNow: integer) + Collection (name: string, description: string, addedRoles: array ...) + Thumbnail (photoId: string, url: string) + CollectionItem (name: string, description: string, icon: string ...) + Shortcut (id: integer, inputAlias: string, destinationUrl: string ...) + CollectionPinnedMetadata (existingPins: array, eligiblePins: array) + CollectionPinTarget (category: CollectionPinnableCategories, value: string, target: CollectionPinnableTargets) + CollectionPinnableCategories (enum: COMPANY_RESOURCE, DEPARTMENT_RESOURCE, TEAM_RESOURCE) + CollectionPinnableTargets (enum: RESOURCE_CARD, TEAM_PROFILE_PAGE) + CollectionPinMetadata (id: integer, target: CollectionPinTarget) + CollectionItemItemType (enum: DOCUMENT, TEXT, URL ...) + GeneratedQna (question: string, answer: string, followUpPrompts: array ...) + FollowupAction (actionRunId: string, actionInstanceId: string, actionId: string ...) + GeneratedQnaStatus (enum: COMPUTING, DISABLED, FAILED ...) + ExtractedQnA (heading: string, question: string, questionResult: SearchResult) + SearchResultSnippet (mimeType: string, text: string, snippetTextOrdering: integer ...) + ClusterGroup (clusteredResults: array, clusterType: ClusterTypeEnum, visibleCountHint: integer) + ClusterTypeEnum (enum: SIMILAR, FRESHNESS, TITLE ...) + SearchResultProminenceEnum (enum: HERO, PROMOTED, STANDARD) + PinDocument (queries: array, audienceFilters: array, id: string ...) + Meeting (id: string, title: string, description: string ...) + CalendarAttendees (people: array, isLimit: boolean, total: integer ...) + CalendarAttendee (isOrganizer: boolean, isInGroup: boolean, person: Person ...) + ResponseStatus (enum: ACCEPTED, DECLINED, NO_RESPONSE ...) + AppResult (datasource: string, docType: string, mimeType: string ...) + Code (repoName: string, fileName: string, fileUrl: string ...) + CodeLine (lineNumber: integer, content: string, ranges: array) + ChatMetadata (id: string, createTime: integer, createdBy: Person ...) + RelatedQuestion (question: string, answer: string, ranges: array) + Disambiguation (name: string, id: string, type: EntityType) + EntityType (enum: PERSON, PROJECT, CUSTOMER) + Prominence (enum: HERO, PROMOTED, STANDARD) + StructuredResultSource (enum: EXPERT_DETECTION, ENTITY_NLQ, CALENDAR_EVENT ...) + DocumentVisibility (enum: PRIVATE, SPECIFIC_PEOPLE_AND_GROUPS, DOMAIN_LINK ...) + DocumentInteractions (numComments: integer, numReactions: integer, reactions: array ...) + Reaction (type: string, count: integer, reactors: array ...) + Share (numDaysAgo: integer, sharer: Person, sharingDocument: Document) + ViewerInfo (role: enum, lastViewedTime: date-time) + Role (enum: ANSWER_MODERATOR, OWNER, VIEWER) + IndexStatus (lastCrawledTime: date-time, lastIndexedTime: date-time) + CreateAnnouncementRequestChannel (enum: MAIN, SOCIAL_FEED) + CreateAnnouncementRequestPostType (enum: TEXT, LINK) CreateannouncementResponse (HttpMeta: HTTPMetadata, Announcement: Announcement) Announcement (startTime: date-time, endTime: date-time, title: string ...) AnnouncementChannel (enum: MAIN, SOCIAL_FEED) AnnouncementPostType (enum: TEXT, LINK) AnnouncementViewerInfo (isDismissed: boolean, isRead: boolean) -DeleteAnnouncementRequest (id: integer) +DeleteannouncementRequest (locale: string, body: DeleteAnnouncementRequest) + DeleteAnnouncementRequest (id: integer) DeleteannouncementResponse (HttpMeta: HTTPMetadata) -UpdateAnnouncementRequest (startTime: date-time, endTime: date-time, title: string ...) - UpdateAnnouncementRequestChannel (enum: MAIN, SOCIAL_FEED) - UpdateAnnouncementRequestPostType (enum: TEXT, LINK) +UpdateannouncementRequest (locale: string, body: UpdateAnnouncementRequest) + UpdateAnnouncementRequest (startTime: date-time, endTime: date-time, title: string ...) + UpdateAnnouncementRequestChannel (enum: MAIN, SOCIAL_FEED) + UpdateAnnouncementRequestPostType (enum: TEXT, LINK) UpdateannouncementResponse (HttpMeta: HTTPMetadata, Announcement: Announcement) Answers (SDK empty) -CreateAnswerRequest (data: AnswerCreationData) - AnswerCreationData (question: string, questionVariations: array, bodyText: string ...) - AnswerCreationDataSourceType (enum: DOCUMENT, ASSISTANT) - StructuredTextMutableProperties (text: string) +CreateanswerRequest (locale: string, body: CreateAnswerRequest) + CreateAnswerRequest (data: AnswerCreationData) + AnswerCreationData (question: string, questionVariations: array, bodyText: string ...) + AnswerCreationDataSourceType (enum: DOCUMENT, ASSISTANT) + StructuredTextMutableProperties (text: string) CreateanswerResponse (HttpMeta: HTTPMetadata, Answer: Answer) -DeleteAnswerRequest (id: integer, docId: string) +DeleteanswerRequest (locale: string, body: DeleteAnswerRequest) + DeleteAnswerRequest (id: integer, docId: string) DeleteanswerResponse (HttpMeta: HTTPMetadata) -EditAnswerRequest (id: integer, docId: string, question: string ...) - EditAnswerRequestSourceType (enum: DOCUMENT, ASSISTANT) +EditanswerRequest (locale: string, body: EditAnswerRequest) + EditAnswerRequest (id: integer, docId: string, question: string ...) + EditAnswerRequestSourceType (enum: DOCUMENT, ASSISTANT) EditanswerResponse (HttpMeta: HTTPMetadata, Answer: Answer) -GetAnswerRequest (id: integer, docId: string) +GetanswerRequest (locale: string, body: GetAnswerRequest) + GetAnswerRequest (id: integer, docId: string) GetanswerResponse (HttpMeta: HTTPMetadata, GetAnswerResponse: GetAnswerResponse) GetAnswerResponse (answerResult: AnswerResult, error: GetAnswerError) AnswerResult (answer: Answer, trackingToken: string) GetAnswerError (errorType: enum, answerAuthor: Person) GetAnswerErrorErrorType (enum: NO_PERMISSION, INVALID_ID) -ListAnswersRequest (boardId: integer) +ListanswersRequest (locale: string, body: ListAnswersRequest) + ListAnswersRequest (boardId: integer) ListanswersResponse (HttpMeta: HTTPMetadata, ListAnswersResponse: ListAnswersResponse) ListAnswersResponse (answerResults: array) ClientAuthentication (SDK empty) CreateauthtokenResponse (HttpMeta: HTTPMetadata, CreateAuthTokenResponse: CreateAuthTokenResponse) CreateAuthTokenResponse (token: string, expirationTime: integer) Chat (SDK empty) -ChatRequest (timezoneOffset: integer, body: ChatRequest) +ChatRequest (locale: string, timezoneOffset: integer, body: ChatRequest) ChatRequest (messages: array, sessionInfo: SessionInfo, saveChat: boolean ...) ChatMessage (agentConfig: AgentConfig, author: enum, citations: array ...) AgentConfig (agent: enum, toolSets: ToolSets, mode: enum ...) @@ -646,50 +651,51 @@ ChatRequest (timezoneOffset: integer, body: ChatRequest) ChatRestrictionFilters (containerSpecs: array, documentSpecs: array, datasourceInstances: array) ChatResponse (HttpMeta: HTTPMetadata, ChatResponse: ChatResponse) ChatResponse (messages: array, chatId: string, followUpPrompts: array ...) -DeleteallchatsRequest (timezoneOffset: integer) +DeleteallchatsRequest (locale: string, timezoneOffset: integer) DeleteallchatsResponse (HttpMeta: HTTPMetadata) -DeletechatsRequest (timezoneOffset: integer, body: DeleteChatsRequest) +DeletechatsRequest (locale: string, timezoneOffset: integer, body: DeleteChatsRequest) DeleteChatsRequest (ids: array) DeletechatsResponse (HttpMeta: HTTPMetadata) -GetchatRequest (timezoneOffset: integer, body: GetChatRequest) +GetchatRequest (locale: string, timezoneOffset: integer, body: GetChatRequest) GetChatRequest (id: string) GetchatResponse (HttpMeta: HTTPMetadata, GetChatResponse: GetChatResponse) GetChatResponse (chatResult: ChatResult) ChatResult (chat: Chat, trackingToken: string) Chat (id: string, createTime: integer, createdBy: Person ...) -ListchatsRequest (timezoneOffset: integer) +ListchatsRequest (locale: string, timezoneOffset: integer) ListchatsResponse (HttpMeta: HTTPMetadata, ListChatsResponse: ListChatsResponse) ListChatsResponse (chatResults: array) ChatMetadataResult (chat: ChatMetadata, trackingToken: string) -GetchatapplicationRequest (timezoneOffset: integer, body: GetChatApplicationRequest) +GetchatapplicationRequest (locale: string, timezoneOffset: integer, body: GetChatApplicationRequest) GetChatApplicationRequest (id: string) GetchatapplicationResponse (HttpMeta: HTTPMetadata, GetChatApplicationResponse: GetChatApplicationResponse) GetChatApplicationResponse (application: any) -UploadchatfilesRequest (timezoneOffset: integer, body: UploadChatFilesRequest) +UploadchatfilesRequest (locale: string, timezoneOffset: integer, body: UploadChatFilesRequest) UploadChatFilesRequest (files: array) File (fileName: string, content: request-stream) UploadchatfilesResponse (HttpMeta: HTTPMetadata, UploadChatFilesResponse: UploadChatFilesResponse) UploadChatFilesResponse (files: array) -GetchatfilesRequest (timezoneOffset: integer, body: GetChatFilesRequest) +GetchatfilesRequest (locale: string, timezoneOffset: integer, body: GetChatFilesRequest) GetChatFilesRequest (fileIds: array) GetchatfilesResponse (HttpMeta: HTTPMetadata, GetChatFilesResponse: GetChatFilesResponse) GetChatFilesResponse (files: map) -DeletechatfilesRequest (timezoneOffset: integer, body: DeleteChatFilesRequest) +DeletechatfilesRequest (locale: string, timezoneOffset: integer, body: DeleteChatFilesRequest) DeleteChatFilesRequest (fileIds: array) DeletechatfilesResponse (HttpMeta: HTTPMetadata) ChatStreamRequest (timezoneOffset: integer, body: ChatRequest) ChatStreamResponse (HttpMeta: HTTPMetadata, ChatRequestStream: string) Agents (SDK empty) -GetAgentRequest (timezoneOffset: integer, agent_id: string) +GetAgentRequest (locale: string, timezoneOffset: integer, agent_id: string) GetAgentResponse (HttpMeta: HTTPMetadata, Agent: Agent) Agent (agent_id: string, name: string, description: string ...) AgentMetadata (empty) AgentCapabilities (ap.io.messages: boolean, ap.io.streaming: boolean, AdditionalProperties: map) -GetAgentSchemasRequest (timezoneOffset: integer, agent_id: string) +GetAgentSchemasRequest (locale: string, timezoneOffset: integer, agent_id: string) GetAgentSchemasResponse (HttpMeta: HTTPMetadata, AgentSchemas: AgentSchemas) - AgentSchemas (agent_id: string, input_schema: class, output_schema: class) + AgentSchemas (agent_id: string, input_schema: class, output_schema: class ...) InputSchema (empty) OutputSchema (empty) + ActionSummary (tool_id: string, display_name: string) SearchAgentsRequest (name: string) SearchAgentsResponse (HttpMeta: HTTPMetadata, SearchAgentsResponse: SearchAgentsResponse) SearchAgentsResponse (agents: array) @@ -703,14 +709,16 @@ CreateAndWaitRunResponse (HttpMeta: HTTPMetadata, AgentRunWaitResponse: AgentRun AgentRun (agent_id: string, input: map, messages: array ...) AgentExecutionStatus (enum: error, success) Collections (SDK empty) -AddCollectionItemsRequest (collectionId: number, addedCollectionItemDescriptors: array) - CollectionItemDescriptor (name: string, description: string, icon: string ...) - CollectionItemDescriptorItemType (enum: DOCUMENT, TEXT, URL) +AddcollectionitemsRequest (locale: string, body: AddCollectionItemsRequest) + AddCollectionItemsRequest (collectionId: number, addedCollectionItemDescriptors: array) + CollectionItemDescriptor (name: string, description: string, icon: string ...) + CollectionItemDescriptorItemType (enum: DOCUMENT, TEXT, URL) AddcollectionitemsResponse (HttpMeta: HTTPMetadata, AddCollectionItemsResponse: AddCollectionItemsResponse) AddCollectionItemsResponse (collection: Collection, error: AddCollectionItemsError) AddCollectionItemsError (errorType: enum) AddCollectionItemsErrorErrorType (enum: EXISTING_ITEM) -CreateCollectionRequest (name: string, description: string, addedRoles: array ...) +CreatecollectionRequest (locale: string, body: CreateCollectionRequest) + CreateCollectionRequest (name: string, description: string, addedRoles: array ...) CreatecollectionResponse (HttpMeta: HTTPMetadata, oneOf: union) CreatecollectionResponseBody (union) ResponseBody1 (collection: Collection, error: CollectionError) @@ -718,71 +726,68 @@ CreatecollectionResponse (HttpMeta: HTTPMetadata, oneOf: union) CollectionErrorErrorCode (enum: NAME_EXISTS, NOT_FOUND, COLLECTION_PINNED ...) ResponseBody2 (collection: Collection, error: CollectionError) CollectionError (error) -DeleteCollectionRequest (ids: array, allowedDatasource: string) +DeletecollectionRequest (locale: string, body: DeleteCollectionRequest) + DeleteCollectionRequest (ids: array, allowedDatasource: string) DeletecollectionResponse (HttpMeta: HTTPMetadata) -DeleteCollectionItemRequest (collectionId: number, itemId: string, documentId: string) +DeletecollectionitemRequest (locale: string, body: DeleteCollectionItemRequest) + DeleteCollectionItemRequest (collectionId: number, itemId: string, documentId: string) DeletecollectionitemResponse (HttpMeta: HTTPMetadata, DeleteCollectionItemResponse: DeleteCollectionItemResponse) DeleteCollectionItemResponse (collection: Collection) -EditCollectionRequest (name: string, description: string, addedRoles: array ...) +EditcollectionRequest (locale: string, body: EditCollectionRequest) + EditCollectionRequest (name: string, description: string, addedRoles: array ...) EditcollectionResponse (HttpMeta: HTTPMetadata, EditCollectionResponse: EditCollectionResponse) EditCollectionResponse (name: string, description: string, addedRoles: array ...) EditCollectionResponseErrorCode (enum: NAME_EXISTS, NOT_FOUND, COLLECTION_PINNED ...) -EditCollectionItemRequest (name: string, description: string, icon: string ...) +EditcollectionitemRequest (locale: string, body: EditCollectionItemRequest) + EditCollectionItemRequest (name: string, description: string, icon: string ...) EditcollectionitemResponse (HttpMeta: HTTPMetadata, EditCollectionItemResponse: EditCollectionItemResponse) EditCollectionItemResponse (collection: Collection) -GetCollectionRequest (id: integer, withItems: boolean, withHierarchy: boolean ...) +GetcollectionRequest (locale: string, body: GetCollectionRequest) + GetCollectionRequest (id: integer, withItems: boolean, withHierarchy: boolean ...) GetcollectionResponse (HttpMeta: HTTPMetadata, GetCollectionResponse: GetCollectionResponse) GetCollectionResponse (collection: Collection, rootCollection: Collection, trackingToken: string ...) -ListCollectionsRequest (includeAudience: boolean, includeRoles: boolean, allowedDatasource: string) +ListcollectionsRequest (locale: string, body: ListCollectionsRequest) + ListCollectionsRequest (includeAudience: boolean, includeRoles: boolean, allowedDatasource: string) ListcollectionsResponse (HttpMeta: HTTPMetadata, ListCollectionsResponse: ListCollectionsResponse) ListCollectionsResponse (collections: array) ClientDocuments (SDK empty) -GetDocPermissionsRequest (documentId: string) +GetdocpermissionsRequest (locale: string, body: GetDocPermissionsRequest) + GetDocPermissionsRequest (documentId: string) GetdocpermissionsResponse (HttpMeta: HTTPMetadata, GetDocPermissionsResponse: GetDocPermissionsResponse) GetDocPermissionsResponse (allowedUserEmails: array) -GetDocumentsRequest (documentSpecs: array, includeFields: array) - GetDocumentsRequestIncludeField (enum: LAST_VIEWED_AT, VISITORS_COUNT, RECENT_SHARES ...) +GetdocumentsRequest (locale: string, body: GetDocumentsRequest) + GetDocumentsRequest (documentSpecs: array, includeFields: array) + GetDocumentsRequestIncludeField (enum: LAST_VIEWED_AT, VISITORS_COUNT, RECENT_SHARES ...) GetdocumentsResponse (HttpMeta: HTTPMetadata, GetDocumentsResponse: GetDocumentsResponse) GetDocumentsResponse (documents: map) DocumentOrErrorUnion (union) DocumentOrError (error: string) -GetDocumentsByFacetsRequest (datasourcesFilter: array, filterSets: array, cursor: string) +GetdocumentsbyfacetsRequest (locale: string, body: GetDocumentsByFacetsRequest) + GetDocumentsByFacetsRequest (datasourcesFilter: array, filterSets: array, cursor: string) GetdocumentsbyfacetsResponse (HttpMeta: HTTPMetadata, GetDocumentsByFacetsResponse: GetDocumentsByFacetsResponse) GetDocumentsByFacetsResponse (documents: array, hasMoreResults: boolean, cursor: string) -SummarizeRequest (timestamp: date-time, query: string, preferredSummaryLength: integer ...) +SummarizeRequest (locale: string, body: SummarizeRequest) + SummarizeRequest (timestamp: date-time, query: string, preferredSummaryLength: integer ...) SummarizeResponse (HttpMeta: HTTPMetadata, SummarizeResponse: SummarizeResponse) SummarizeResponse (error: class, summary: Summary, trackingToken: string) Error (message: string) Summary (text: string, followUpPrompts: array) Insights (SDK empty) -InsightsRequest (overviewRequest: InsightsOverviewRequest, assistantRequest: InsightsAssistantRequest, agentsRequest: AgentsInsightsV2Request ...) - InsightsOverviewRequest (departments: array, dayRange: Period) - InsightsAssistantRequest (departments: array, dayRange: Period) - AgentsInsightsV2Request (agentIds: array, departments: array, dayRange: Period) - InsightsRequestCategory (enum: AGENTS, AGENT_USERS, TOP_AGENTS ...) - InsightsAiAppRequestOptions (aiAppIds: array) - InsightsAgentsRequestOptions (agentIds: array) - AssistantActivityType (enum: GLEAN_CHAT, AI_SUMMARY, AI_ANSWER ...) +InsightsRequest (locale: string, body: InsightsRequest) + InsightsRequest (overviewRequest: InsightsOverviewRequest, assistantRequest: InsightsAssistantRequest, agentsRequest: AgentsInsightsV2Request ...) + InsightsOverviewRequest (departments: array, dayRange: Period) + InsightsAssistantRequest (departments: array, dayRange: Period) + AgentsInsightsV2Request (agentIds: array, departments: array, dayRange: Period) InsightsResponse (HttpMeta: HTTPMetadata, InsightsResponse: InsightsResponse) - InsightsResponse (timeseries: array, users: UserInsightsResponse, content: ContentInsightsResponse ...) - LabeledCountInfo (label: string, countInfo: array) - UserInsightsResponse (lastLogTimestamp: integer, activityInsights: array, inactiveInsights: array ...) + InsightsResponse (gleanAssist: GleanAssistInsightsResponse, overviewResponse: InsightsOverviewResponse, assistantResponse: AssistantInsightsResponse ...) + GleanAssistInsightsResponse (lastLogTimestamp: integer, activityInsights: array, totalActiveUsers: integer ...) UserActivityInsight (user: Person, activity: enum, lastActivityTimestamp: integer ...) ActivityEnum (enum: ALL, SEARCH) - ContentInsightsResponse (lastLogTimestamp: integer, documentInsights: array, departments: array ...) - DocumentInsight (document: Document, viewCount: CountInfo, visitorCount: CountInfo) - QueryInsightsResponse (lastLogTimestamp: integer, queryInsights: array, lowPerformingQueryInsights: array ...) - QueryInsight (query: string, searchCount: CountInfo, searchorCount: CountInfo ...) - ShortcutInsightsResponse (lastLogTimestamp: integer, shortcutInsights: array, departments: array ...) - ShortcutInsight (shortcut: Shortcut, visitCount: CountInfo, visitorCount: CountInfo) - AiInsightsResponse (lastLogTimestamp: integer, assistantInsights: array, totalActiveAssistantUsers: integer ...) - AiAppsInsightsResponse (lastLogTimestamp: integer, aiAppInsights: array, totalActiveUsers: integer ...) - AiAppActionCounts (totalSlackbotResponses: integer, totalSlackbotResponsesShared: integer, totalSlackbotResponsesNotHelpful: integer ...) - GleanAssistInsightsResponse (lastLogTimestamp: integer, activityInsights: array, totalActiveUsers: integer ...) InsightsOverviewResponse (monthlyActiveUsers: integer, weeklyActiveUsers: integer, departments: array ...) InsightsSearchSummary (monthlyActiveUsers: integer, weeklyActiveUsers: integer, numSearches: integer ...) InsightsChatSummary (monthlyActiveUsers: integer, weeklyActiveUsers: integer, numChats: integer ...) CurrentActiveUsers (monthlyActiveUsers: integer, weeklyActiveUsers: integer) + LabeledCountInfo (label: string, countInfo: array) PerUserInsight (person: Person, numSearches: integer, numChats: integer ...) AssistantInsightsResponse (monthlyActiveUsers: integer, weeklyActiveUsers: integer, lastUpdatedTs: integer ...) PerUserAssistantInsight (person: Person, numChatMessages: integer, numSummarizations: integer ...) @@ -791,10 +796,11 @@ InsightsResponse (HttpMeta: HTTPMetadata, InsightsResponse: InsightsResponse) AgentsUsageByDepartmentInsight (department: string, agentAdoptionRate: float32, userCount: integer ...) AgentUsersInsight (person: Person, departmentName: string, agentsUsedCount: integer ...) Messages (SDK empty) -MessagesRequest (idType: enum, id: string, workspaceId: string ...) - IdType (enum: CHANNEL_NAME, THREAD_ID, CONVERSATION_ID) - Direction (enum: OLDER, NEWER) - Datasource (enum: SLACK, SLACKENTGRID, MICROSOFTTEAMS ...) +MessagesRequest (locale: string, body: MessagesRequest) + MessagesRequest (idType: enum, id: string, workspaceId: string ...) + IdType (enum: CHANNEL_NAME, THREAD_ID, CONVERSATION_ID) + Direction (enum: OLDER, NEWER) + Datasource (enum: SLACK, SLACKENTGRID, MICROSOFTTEAMS ...) MessagesResponse (HttpMeta: HTTPMetadata, MessagesResponse: MessagesResponse) MessagesResponse (hasMore: boolean, searchResponse: SearchResponse, rootMessage: SearchResult) SearchResponse (trackingToken: string, sessionInfo: SessionInfo, results: array ...) @@ -809,24 +815,31 @@ MessagesResponse (HttpMeta: HTTPMetadata, MessagesResponse: MessagesResponse) FacetValue (stringValue: string, integerValue: integer, displayLabel: string ...) ResultsDescription (text: string, iconConfig: IconConfig) Pins (SDK empty) -EditPinRequest (queries: array, audienceFilters: array, id: string) +EditpinRequest (locale: string, body: EditPinRequest) + EditPinRequest (queries: array, audienceFilters: array, id: string) EditpinResponse (HttpMeta: HTTPMetadata, PinDocument: PinDocument) -GetPinRequest (id: string) +GetpinRequest (locale: string, body: GetPinRequest) + GetPinRequest (id: string) GetpinResponse (HttpMeta: HTTPMetadata, GetPinResponse: GetPinResponse) GetPinResponse (pin: PinDocument) -ListpinsRequest (empty) +ListpinsRequest (locale: string, body: class) + ListpinsRequestBody (empty) ListpinsResponse (HttpMeta: HTTPMetadata, ListPinsResponse: ListPinsResponse) ListPinsResponse (pins: array) -PinRequest (queries: array, audienceFilters: array, documentId: string) +PinRequest (locale: string, body: PinRequest) + PinRequest (queries: array, audienceFilters: array, documentId: string) PinResponse (HttpMeta: HTTPMetadata, PinDocument: PinDocument) -Unpin (id: string) +UnpinRequest (locale: string, body: Unpin) + Unpin (id: string) UnpinResponse (HttpMeta: HTTPMetadata) Search (SDK empty) -SearchRequest (timestamp: date-time, trackingToken: string, sessionInfo: SessionInfo ...) +AdminsearchRequest (locale: string, body: SearchRequest) + SearchRequest (timestamp: date-time, trackingToken: string, sessionInfo: SessionInfo ...) AdminsearchResponse (HttpMeta: HTTPMetadata, SearchResponse: SearchResponse) GleanDataError (error) -AutocompleteRequest (trackingToken: string, sessionInfo: SessionInfo, query: string ...) - AutocompleteRequestResultType (enum: ADDITIONAL_DOCUMENT, APP, BROWSER_HISTORY ...) +AutocompleteRequest (locale: string, body: AutocompleteRequest) + AutocompleteRequest (trackingToken: string, sessionInfo: SessionInfo, query: string ...) + AutocompleteRequestResultType (enum: ADDITIONAL_DOCUMENT, APP, BROWSER_HISTORY ...) AutocompleteResponse (HttpMeta: HTTPMetadata, AutocompleteResponse: AutocompleteResponse) AutocompleteResponse (experimentIds: array, trackingToken: string, sessionInfo: SessionInfo ...) AutocompleteResult (result: string, keywords: array, resultType: enum ...) @@ -837,11 +850,12 @@ AutocompleteResponse (HttpMeta: HTTPMetadata, AutocompleteResponse: Autocomplete Quicklink (name: string, shortName: string, url: string ...) Scope (enum: APP_CARD, AUTOCOMPLETE_EXACT_MATCH, AUTOCOMPLETE_FUZZY_MATCH ...) AutocompleteResultGroup (startIndex: integer, endIndex: integer, title: string) -FeedRequest (categories: array, requestOptions: FeedRequestOptions, timeoutMillis: integer ...) - FeedRequestCategory (enum: DOCUMENT_SUGGESTION, DOCUMENT_SUGGESTION_SCENARIO, TRENDING_DOCUMENT ...) - FeedRequestOptions (resultSize: integer, timezoneOffset: integer, categoryToResultSize: map ...) - CategoryToResultSize (resultSize: integer) - ChatZeroStateSuggestionOptions (applicationId: string) +FeedRequest (locale: string, body: FeedRequest) + FeedRequest (categories: array, requestOptions: FeedRequestOptions, timeoutMillis: integer ...) + FeedRequestCategory (enum: DOCUMENT_SUGGESTION, DOCUMENT_SUGGESTION_SCENARIO, TRENDING_DOCUMENT ...) + FeedRequestOptions (resultSize: integer, timezoneOffset: integer, categoryToResultSize: map ...) + CategoryToResultSize (resultSize: integer) + ChatZeroStateSuggestionOptions (applicationId: string) FeedResponse (HttpMeta: HTTPMetadata, FeedResponse: FeedResponse) FeedResponse (experimentIds: array, trackingToken: string, serverTimestamp: integer ...) FeedResult (category: enum, primaryEntry: FeedEntry, secondaryEntries: array ...) @@ -876,56 +890,67 @@ FeedResponse (HttpMeta: HTTPMetadata, FeedResponse: FeedResponse) Workflow (name: string, author: Person, createTimestamp: integer ...) UserActivity (actor: Person, timestamp: integer, action: enum ...) UserActivityAction (enum: ADD, ADD_REMINDER, CLICK ...) -RecommendationsRequest (timestamp: date-time, trackingToken: string, sessionInfo: SessionInfo ...) - RecommendationsRequestOptions (datasourceFilter: string, datasourcesFilter: array, facetFilterSets: array ...) +RecommendationsRequest (locale: string, body: RecommendationsRequest) + RecommendationsRequest (timestamp: date-time, trackingToken: string, sessionInfo: SessionInfo ...) + RecommendationsRequestOptions (datasourceFilter: string, datasourcesFilter: array, facetFilterSets: array ...) RecommendationsResponse (HttpMeta: HTTPMetadata, ResultsResponse: ResultsResponse) ResultsResponse (trackingToken: string, sessionInfo: SessionInfo, results: array ...) +SearchRequest (locale: string, body: SearchRequest) SearchResponse (HttpMeta: HTTPMetadata, SearchResponse: SearchResponse) Entities (SDK empty) -ListEntitiesRequest (filter: array, sort: array, entityType: enum ...) - SortOptions (orderBy: enum, sortBy: string) - OrderBy (enum: ASC, DESC) - ListEntitiesRequestEntityType (enum: PEOPLE, TEAMS, CUSTOM_ENTITIES) - ListEntitiesRequestIncludeField (enum: PEOPLE, TEAMS, PEOPLE_DISTANCE ...) - RequestType (enum: STANDARD, FULL_DIRECTORY) +ListentitiesRequest (locale: string, body: ListEntitiesRequest) + ListEntitiesRequest (filter: array, sort: array, entityType: enum ...) + SortOptions (orderBy: enum, sortBy: string) + OrderBy (enum: ASC, DESC) + ListEntitiesRequestEntityType (enum: PEOPLE, TEAMS, CUSTOM_ENTITIES) + ListEntitiesRequestIncludeField (enum: PEOPLE, TEAMS, PEOPLE_DISTANCE ...) + RequestType (enum: STANDARD, FULL_DIRECTORY) ListentitiesResponse (HttpMeta: HTTPMetadata, ListEntitiesResponse: ListEntitiesResponse) ListEntitiesResponse (results: array, teamResults: array, customEntityResults: array ...) EntitiesSortOrder (enum: ENTITY_NAME, FIRST_NAME, LAST_NAME ...) -PeopleRequest (timezoneOffset: integer, obfuscatedIds: array, emailIds: array ...) - PeopleRequestIncludeField (enum: BADGES, BUSY_EVENTS, DOCUMENT_ACTIVITY ...) - IncludeType (enum: PEOPLE_WITHOUT_MANAGER, INVALID_ENTITIES) +PeopleRequest (locale: string, body: PeopleRequest) + PeopleRequest (timezoneOffset: integer, obfuscatedIds: array, emailIds: array ...) + PeopleRequestIncludeField (enum: BADGES, BUSY_EVENTS, DOCUMENT_ACTIVITY ...) + IncludeType (enum: PEOPLE_WITHOUT_MANAGER, INVALID_ENTITIES) PeopleResponse (HttpMeta: HTTPMetadata, PeopleResponse: PeopleResponse) PeopleResponse (results: array, relatedDocuments: array, errors: array) ClientShortcuts (SDK empty) -CreateShortcutRequest (data: ShortcutMutableProperties) - ShortcutMutableProperties (inputAlias: string, destinationUrl: string, destinationDocumentId: string ...) +CreateshortcutRequest (locale: string, body: CreateShortcutRequest) + CreateShortcutRequest (data: ShortcutMutableProperties) + ShortcutMutableProperties (inputAlias: string, destinationUrl: string, destinationDocumentId: string ...) CreateshortcutResponse (HttpMeta: HTTPMetadata, CreateShortcutResponse: CreateShortcutResponse) CreateShortcutResponse (shortcut: Shortcut, error: ShortcutError) ShortcutError (errorType: enum) ShortcutErrorErrorType (enum: NO_PERMISSION, INVALID_ID, EXISTING_SHORTCUT ...) -DeleteShortcutRequest (id: integer) +DeleteshortcutRequest (locale: string, body: DeleteShortcutRequest) + DeleteShortcutRequest (id: integer) DeleteshortcutResponse (HttpMeta: HTTPMetadata) -GetShortcutRequestUnion (union) - UserGeneratedContentId (id: integer) - GetShortcutRequest (alias: string) +GetshortcutRequest (locale: string, body: GetShortcutRequest_union) + GetShortcutRequestUnion (union) + UserGeneratedContentId (id: integer) + GetShortcutRequest (alias: string) GetshortcutResponse (HttpMeta: HTTPMetadata, GetShortcutResponse: GetShortcutResponse) GetShortcutResponse (shortcut: Shortcut, error: ShortcutError) -ListShortcutsPaginatedRequest (includeFields: array, pageSize: integer, cursor: string ...) - ListShortcutsPaginatedRequestIncludeField (enum: FACETS, PEOPLE_DETAILS) +ListshortcutsRequest (locale: string, body: ListShortcutsPaginatedRequest) + ListShortcutsPaginatedRequest (includeFields: array, pageSize: integer, cursor: string ...) + ListShortcutsPaginatedRequestIncludeField (enum: FACETS, PEOPLE_DETAILS) ListshortcutsResponse (HttpMeta: HTTPMetadata, ListShortcutsPaginatedResponse: ListShortcutsPaginatedResponse) ListShortcutsPaginatedResponse (shortcuts: array, facetResults: array, meta: ShortcutsPaginationMetadata) ShortcutsPaginationMetadata (cursor: string, hasNextPage: boolean, totalItemCount: integer) -UpdateShortcutRequest (id: integer, inputAlias: string, destinationUrl: string ...) +UpdateshortcutRequest (locale: string, body: UpdateShortcutRequest) + UpdateShortcutRequest (id: integer, inputAlias: string, destinationUrl: string ...) UpdateshortcutResponse (HttpMeta: HTTPMetadata, UpdateShortcutResponse: UpdateShortcutResponse) UpdateShortcutResponse (shortcut: Shortcut, error: ShortcutError) Verification (SDK empty) -ReminderRequest (documentId: string, assignee: string, remindInDays: integer ...) +AddverificationreminderRequest (locale: string, body: ReminderRequest) + ReminderRequest (documentId: string, assignee: string, remindInDays: integer ...) AddverificationreminderResponse (HttpMeta: HTTPMetadata, Verification: Verification) -ListverificationsRequest (count: integer) +ListverificationsRequest (count: integer, locale: string) ListverificationsResponse (HttpMeta: HTTPMetadata, VerificationFeed: VerificationFeed) VerificationFeed (documents: array) -VerifyRequest (documentId: string, action: enum) - VerifyRequestAction (enum: VERIFY, DEPRECATE, UNVERIFY) +VerifyRequest (locale: string, body: VerifyRequest) + VerifyRequest (documentId: string, action: enum) + VerifyRequestAction (enum: VERIFY, DEPRECATE, UNVERIFY) VerifyResponse (HttpMeta: HTTPMetadata, Verification: Verification) Tools (SDK empty) Get/rest/api/v1/tools/listRequest (toolNames: array) diff --git a/src/glean/api_client/_hooks/registration.py b/src/glean/api_client/_hooks/registration.py index a064445e..8d8610f1 100644 --- a/src/glean/api_client/_hooks/registration.py +++ b/src/glean/api_client/_hooks/registration.py @@ -1,4 +1,5 @@ from .types import Hooks +from .server_url_normalizer import ServerURLNormalizerHook from .multipart_fix_hook import MultipartFileFieldFixHook from .agent_file_upload_error_hook import AgentFileUploadErrorHook from .x_glean import XGlean @@ -15,6 +16,9 @@ def init_hooks(hooks: Hooks): with an instance of a hook that implements that specific Hook interface Hooks are registered per SDK instance, and are valid for the lifetime of the SDK instance""" + # Register hook to normalize server URLs (prepend https:// if no scheme provided) + hooks.register_sdk_init_hook(ServerURLNormalizerHook()) + # Register hook to fix multipart file field names that incorrectly have '[]' suffix hooks.register_sdk_init_hook(MultipartFileFieldFixHook()) diff --git a/src/glean/api_client/_hooks/server_url_normalizer.py b/src/glean/api_client/_hooks/server_url_normalizer.py new file mode 100644 index 00000000..42561988 --- /dev/null +++ b/src/glean/api_client/_hooks/server_url_normalizer.py @@ -0,0 +1,21 @@ +"""Hook to normalize server URLs, prepending https:// if no scheme is provided.""" + +import re +from typing import Tuple +from .types import SDKInitHook +from glean.api_client.httpclient import HttpClient + + +def normalize_server_url(url: str) -> str: + normalized = url + if not re.match(r'^https?://', normalized, re.IGNORECASE): + normalized = f'https://{normalized}' + normalized = normalized.rstrip('/') + return normalized + + +class ServerURLNormalizerHook(SDKInitHook): + """Normalizes server URLs by prepending https:// if no scheme is provided.""" + + def sdk_init(self, base_url: str, client: HttpClient) -> Tuple[str, HttpClient]: + return normalize_server_url(base_url), client diff --git a/src/glean/api_client/_hooks/types.py b/src/glean/api_client/_hooks/types.py index 58c4d70a..55f23c1f 100644 --- a/src/glean/api_client/_hooks/types.py +++ b/src/glean/api_client/_hooks/types.py @@ -4,7 +4,7 @@ from glean.api_client.httpclient import HttpClient from glean.api_client.sdkconfiguration import SDKConfiguration import httpx -from typing import Any, Callable, List, Optional, Tuple, Union +from typing import Any, Callable, Dict, List, Optional, Tuple, Union class HookContext: @@ -13,6 +13,8 @@ class HookContext: operation_id: str oauth2_scopes: Optional[List[str]] = None security_source: Optional[Union[Any, Callable[[], Any]]] = None + tags: Optional[List[str]] = None + extensions: Optional[Dict[str, Any]] = None def __init__( self, @@ -21,12 +23,16 @@ def __init__( operation_id: str, oauth2_scopes: Optional[List[str]], security_source: Optional[Union[Any, Callable[[], Any]]], + tags: Optional[List[str]], + extensions: Optional[Dict[str, Any]], ): self.config = config self.base_url = base_url self.operation_id = operation_id self.oauth2_scopes = oauth2_scopes self.security_source = security_source + self.tags = tags + self.extensions = extensions class BeforeRequestContext(HookContext): @@ -37,6 +43,8 @@ def __init__(self, hook_ctx: HookContext): hook_ctx.operation_id, hook_ctx.oauth2_scopes, hook_ctx.security_source, + hook_ctx.tags, + hook_ctx.extensions, ) @@ -48,6 +56,8 @@ def __init__(self, hook_ctx: HookContext): hook_ctx.operation_id, hook_ctx.oauth2_scopes, hook_ctx.security_source, + hook_ctx.tags, + hook_ctx.extensions, ) @@ -59,6 +69,8 @@ def __init__(self, hook_ctx: HookContext): hook_ctx.operation_id, hook_ctx.oauth2_scopes, hook_ctx.security_source, + hook_ctx.tags, + hook_ctx.extensions, ) diff --git a/src/glean/api_client/_hooks/x_glean.py b/src/glean/api_client/_hooks/x_glean.py index 74adba54..8976e7fc 100644 --- a/src/glean/api_client/_hooks/x_glean.py +++ b/src/glean/api_client/_hooks/x_glean.py @@ -5,6 +5,14 @@ import httpx from glean.api_client._hooks.types import BeforeRequestContext, BeforeRequestHook +# Header names +EXCLUDE_DEPRECATED_AFTER_HEADER = "X-Glean-Exclude-Deprecated-After" +INCLUDE_EXPERIMENTAL_HEADER = "X-Glean-Include-Experimental" + +# Environment variable names +EXCLUDE_DEPRECATED_AFTER_ENV_VAR = "X_GLEAN_EXCLUDE_DEPRECATED_AFTER" +INCLUDE_EXPERIMENTAL_ENV_VAR = "X_GLEAN_INCLUDE_EXPERIMENTAL" + def _get_first_value( env_value: Optional[str], @@ -27,7 +35,7 @@ class XGlean(BeforeRequestHook): This hook adds the following headers when configured: - X-Glean-Exclude-Deprecated-After: Excludes API endpoints deprecated after this date - - X-Glean-Experimental: Enables experimental API features + - X-Glean-Include-Experimental: Enables experimental API features Configuration can be done via environment variables or SDK constructor options. Environment variables take precedence over SDK constructor options. @@ -48,33 +56,23 @@ def before_request( """ # Get deprecated value - env var takes precedence deprecated_value = _get_first_value( - os.environ.get("X_GLEAN_EXCLUDE_DEPRECATED_AFTER"), - hook_ctx.config.exclude_deprecated_after, + os.environ.get(EXCLUDE_DEPRECATED_AFTER_ENV_VAR), + getattr(hook_ctx.config, "exclude_deprecated_after", None), ) # Get experimental value - env var takes precedence config_experimental = ( - "true" if hook_ctx.config.include_experimental is True else None + "true" if getattr(hook_ctx.config, "include_experimental", None) is True else None ) experimental_value = _get_first_value( - os.environ.get("X_GLEAN_INCLUDE_EXPERIMENTAL"), + os.environ.get(INCLUDE_EXPERIMENTAL_ENV_VAR), config_experimental, ) - # Create new headers dict with existing headers - new_headers = dict(request.headers) - if deprecated_value: - new_headers["X-Glean-Exclude-Deprecated-After"] = deprecated_value + request.headers[EXCLUDE_DEPRECATED_AFTER_HEADER] = deprecated_value if experimental_value: - new_headers["X-Glean-Experimental"] = experimental_value - - # Return new request with updated headers - return httpx.Request( - method=request.method, - url=request.url, - headers=new_headers, - content=request.content, - extensions=request.extensions, - ) + request.headers[INCLUDE_EXPERIMENTAL_HEADER] = experimental_value + + return request diff --git a/src/glean/api_client/_version.py b/src/glean/api_client/_version.py index 64da52a5..6a612365 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.11.27" +__version__: str = "0.16.0" __openapi_doc_version__: str = "0.9.0" -__gen_version__: str = "2.796.1" -__user_agent__: str = "speakeasy-sdk/python 0.11.27 2.796.1 0.9.0 glean-api-client" +__gen_version__: str = "2.932.9" +__user_agent__: str = "speakeasy-sdk/python 0.16.0 2.932.9 0.9.0 glean-api-client" try: if __package__ is not None: diff --git a/src/glean/api_client/agents.py b/src/glean/api_client/agents.py index da34d3ab..2b4bb4f6 100644 --- a/src/glean/api_client/agents.py +++ b/src/glean/api_client/agents.py @@ -1,31 +1,36 @@ """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.unmarshal_json_response import unmarshal_json_response -from typing import Any, Dict, List, Mapping, Optional, Union +from typing import Any, Dict, Iterable, List, Mapping, Optional, Union + + +class CreateRunAcceptEnum(str, Enum): + APPLICATION_JSON = "application/json" + TEXT_EVENT_STREAM = "text/event-stream" class Agents(BaseSDK): - def retrieve( + def search( self, *, - agent_id: str, - timezone_offset: Optional[int] = None, + name: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> models.Agent: - r"""Retrieve an agent + ) -> models.PlatformAgentsSearchResponse: + r"""Search agents + + Search agents available to the authenticated user by agent name. - Returns details of an [agent](https://developers.glean.com/agents/agents-api) created in the Agent Builder. - :param agent_id: The ID of the agent. - :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 name: Case-insensitive substring to match against agent names. If omitted or empty, no name filter is applied. :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 @@ -41,24 +46,26 @@ def retrieve( else: base_url = self._get_url(base_url, url_variables) - request = models.GetAgentRequest( - timezone_offset=timezone_offset, - agent_id=agent_id, + request = models.PlatformAgentsSearchRequest( + name=name, ) req = self._build_request( - method="GET", - path="/rest/api/v1/agents/{agent_id}", + method="POST", + path="/api/agents/search", base_url=base_url, url_variables=url_variables, request=request, - request_body_required=False, - request_has_path_params=True, + request_body_required=True, + request_has_path_params=False, request_has_query_params=True, user_agent_header="user-agent", 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.PlatformAgentsSearchRequest + ), allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -75,44 +82,65 @@ def retrieve( hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="getAgent", + operation_id="platform-agents-search", oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Agents"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "403", "404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) + response_data: Any = None if utils.match_response(http_res, "200", "application/json"): - return unmarshal_json_response(models.Agent, http_res) - if utils.match_response(http_res, ["400", "403", "404", "4XX"], "*"): + return unmarshal_json_response( + models.PlatformAgentsSearchResponse, http_res + ) + if utils.match_response( + http_res, + ["400", "401", "403", "404", "408", "413", "429"], + "application/problem+json", + ): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + if utils.match_response(http_res, ["500", "503"], "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + 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, ["500", "5XX"], "*"): + 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) raise errors.GleanError("Unexpected response received", http_res) - async def retrieve_async( + async def search_async( self, *, - agent_id: str, - timezone_offset: Optional[int] = None, + name: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> models.Agent: - r"""Retrieve an agent + ) -> models.PlatformAgentsSearchResponse: + r"""Search agents - Returns details of an [agent](https://developers.glean.com/agents/agents-api) created in the Agent Builder. + Search agents available to the authenticated user by agent name. - :param agent_id: The ID of the agent. - :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 name: Case-insensitive substring to match against agent names. If omitted or empty, no name filter is applied. :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 @@ -128,24 +156,26 @@ async def retrieve_async( else: base_url = self._get_url(base_url, url_variables) - request = models.GetAgentRequest( - timezone_offset=timezone_offset, - agent_id=agent_id, + request = models.PlatformAgentsSearchRequest( + name=name, ) req = self._build_request_async( - method="GET", - path="/rest/api/v1/agents/{agent_id}", + method="POST", + path="/api/agents/search", base_url=base_url, url_variables=url_variables, request=request, - request_body_required=False, - request_has_path_params=True, + request_body_required=True, + request_has_path_params=False, request_has_query_params=True, user_agent_header="user-agent", 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.PlatformAgentsSearchRequest + ), allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -162,44 +192,65 @@ async def retrieve_async( hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="getAgent", + operation_id="platform-agents-search", oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Agents"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "403", "404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) + response_data: Any = None if utils.match_response(http_res, "200", "application/json"): - return unmarshal_json_response(models.Agent, http_res) - if utils.match_response(http_res, ["400", "403", "404", "4XX"], "*"): + return unmarshal_json_response( + models.PlatformAgentsSearchResponse, http_res + ) + if utils.match_response( + http_res, + ["400", "401", "403", "404", "408", "413", "429"], + "application/problem+json", + ): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + if utils.match_response(http_res, ["500", "503"], "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + 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, ["500", "5XX"], "*"): + 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) raise errors.GleanError("Unexpected response received", http_res) - def retrieve_schemas( + def get( self, *, agent_id: str, - timezone_offset: Optional[int] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> models.AgentSchemas: - r"""List an agent's schemas + ) -> models.PlatformAgentGetResponse: + r"""Get agent - Return [agent](https://developers.glean.com/agents/agents-api)'s input and output schemas. You can use these schemas to detect changes to an agent's input or output structure. + Retrieve details for an agent available to the authenticated user. - :param agent_id: The ID of the agent. - :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 agent_id: ID of the agent to retrieve. :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 @@ -215,14 +266,13 @@ def retrieve_schemas( else: base_url = self._get_url(base_url, url_variables) - request = models.GetAgentSchemasRequest( - timezone_offset=timezone_offset, + request = models.PlatformAgentsGetRequest( agent_id=agent_id, ) req = self._build_request( method="GET", - path="/rest/api/v1/agents/{agent_id}/schemas", + path="/api/agents/{agent_id}", base_url=base_url, url_variables=url_variables, request=request, @@ -249,44 +299,60 @@ def retrieve_schemas( hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="getAgentSchemas", + operation_id="platform-agents-get", oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Agents"], + extensions={"x-visibility": "Public"}, ), request=req, - error_status_codes=["400", "403", "404", "422", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) + response_data: Any = None if utils.match_response(http_res, "200", "application/json"): - return unmarshal_json_response(models.AgentSchemas, http_res) - if utils.match_response(http_res, ["400", "403", "404", "422", "4XX"], "*"): + return unmarshal_json_response(models.PlatformAgentGetResponse, http_res) + if utils.match_response( + http_res, + ["400", "401", "403", "404", "408", "429"], + "application/problem+json", + ): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + if utils.match_response(http_res, ["500", "503"], "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + 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, ["500", "5XX"], "*"): + 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) raise errors.GleanError("Unexpected response received", http_res) - async def retrieve_schemas_async( + async def get_async( self, *, agent_id: str, - timezone_offset: Optional[int] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> models.AgentSchemas: - r"""List an agent's schemas + ) -> models.PlatformAgentGetResponse: + r"""Get agent + + Retrieve details for an agent available to the authenticated user. - Return [agent](https://developers.glean.com/agents/agents-api)'s input and output schemas. You can use these schemas to detect changes to an agent's input or output structure. - :param agent_id: The ID of the agent. - :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 agent_id: ID of the agent to retrieve. :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 @@ -302,14 +368,13 @@ async def retrieve_schemas_async( else: base_url = self._get_url(base_url, url_variables) - request = models.GetAgentSchemasRequest( - timezone_offset=timezone_offset, + request = models.PlatformAgentsGetRequest( agent_id=agent_id, ) req = self._build_request_async( method="GET", - path="/rest/api/v1/agents/{agent_id}/schemas", + path="/api/agents/{agent_id}", base_url=base_url, url_variables=url_variables, request=request, @@ -336,42 +401,62 @@ async def retrieve_schemas_async( hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="getAgentSchemas", + operation_id="platform-agents-get", oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Agents"], + extensions={"x-visibility": "Public"}, ), request=req, - error_status_codes=["400", "403", "404", "422", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) + response_data: Any = None if utils.match_response(http_res, "200", "application/json"): - return unmarshal_json_response(models.AgentSchemas, http_res) - if utils.match_response(http_res, ["400", "403", "404", "422", "4XX"], "*"): + return unmarshal_json_response(models.PlatformAgentGetResponse, http_res) + if utils.match_response( + http_res, + ["400", "401", "403", "404", "408", "429"], + "application/problem+json", + ): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + if utils.match_response(http_res, ["500", "503"], "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + 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, ["500", "5XX"], "*"): + 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) raise errors.GleanError("Unexpected response received", http_res) - def list( + def get_schemas( self, *, - name: Optional[str] = None, + agent_id: str, + include_tools: Optional[bool] = False, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> models.SearchAgentsResponse: - r"""Search agents + ) -> models.PlatformAgentSchemasResponse: + r"""Get agent schemas + + Retrieve an agent's input and output JSON schemas. - Search for [agents](https://developers.glean.com/agents/agents-api) by agent name. - :param name: Filters on the name of the agent. The keyword search is case-insensitive. If search string is ommited or empty, acts as no filter. + :param agent_id: ID of the agent whose schemas should be retrieved. + :param include_tools: Whether to include tool metadata in the response. :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 @@ -387,26 +472,24 @@ def list( else: base_url = self._get_url(base_url, url_variables) - request = models.SearchAgentsRequest( - name=name, + request = models.PlatformAgentsGetSchemasRequest( + agent_id=agent_id, + include_tools=include_tools, ) req = self._build_request( - method="POST", - path="/rest/api/v1/agents/search", + method="GET", + path="/api/agents/{agent_id}/schemas", base_url=base_url, url_variables=url_variables, request=request, - request_body_required=True, - request_has_path_params=False, + request_body_required=False, + request_has_path_params=True, request_has_query_params=True, user_agent_header="user-agent", 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.SearchAgentsRequest - ), allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -423,42 +506,64 @@ def list( hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="searchAgents", + operation_id="platform-agents-get-schemas", oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Agents"], + extensions={"x-visibility": "Public"}, ), request=req, - error_status_codes=["400", "403", "404", "422", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) + response_data: Any = None if utils.match_response(http_res, "200", "application/json"): - return unmarshal_json_response(models.SearchAgentsResponse, http_res) - if utils.match_response(http_res, ["400", "403", "404", "422", "4XX"], "*"): + return unmarshal_json_response( + models.PlatformAgentSchemasResponse, http_res + ) + if utils.match_response( + http_res, + ["400", "401", "403", "404", "408", "429"], + "application/problem+json", + ): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + if utils.match_response(http_res, ["500", "503"], "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + 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, ["500", "5XX"], "*"): + 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) raise errors.GleanError("Unexpected response received", http_res) - async def list_async( + async def get_schemas_async( self, *, - name: Optional[str] = None, + agent_id: str, + include_tools: Optional[bool] = False, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> models.SearchAgentsResponse: - r"""Search agents + ) -> models.PlatformAgentSchemasResponse: + r"""Get agent schemas - Search for [agents](https://developers.glean.com/agents/agents-api) by agent name. + Retrieve an agent's input and output JSON schemas. - :param name: Filters on the name of the agent. The keyword search is case-insensitive. If search string is ommited or empty, acts as no filter. + + :param agent_id: ID of the agent whose schemas should be retrieved. + :param include_tools: Whether to include tool metadata in the response. :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 @@ -474,26 +579,24 @@ async def list_async( else: base_url = self._get_url(base_url, url_variables) - request = models.SearchAgentsRequest( - name=name, + request = models.PlatformAgentsGetSchemasRequest( + agent_id=agent_id, + include_tools=include_tools, ) req = self._build_request_async( - method="POST", - path="/rest/api/v1/agents/search", + method="GET", + path="/api/agents/{agent_id}/schemas", base_url=base_url, url_variables=url_variables, request=request, - request_body_required=True, - request_has_path_params=False, + request_body_required=False, + request_has_path_params=True, request_has_query_params=True, user_agent_header="user-agent", 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.SearchAgentsRequest - ), allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -510,53 +613,81 @@ async def list_async( hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="searchAgents", + operation_id="platform-agents-get-schemas", oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Agents"], + extensions={"x-visibility": "Public"}, ), request=req, - error_status_codes=["400", "403", "404", "422", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) + response_data: Any = None if utils.match_response(http_res, "200", "application/json"): - return unmarshal_json_response(models.SearchAgentsResponse, http_res) - if utils.match_response(http_res, ["400", "403", "404", "422", "4XX"], "*"): + return unmarshal_json_response( + models.PlatformAgentSchemasResponse, http_res + ) + if utils.match_response( + http_res, + ["400", "401", "403", "404", "408", "429"], + "application/problem+json", + ): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + if utils.match_response(http_res, ["500", "503"], "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + 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, ["500", "5XX"], "*"): + 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) raise errors.GleanError("Unexpected response received", http_res) - def run_stream( + def create_run( self, *, agent_id: str, - input: Optional[Dict[str, Any]] = None, + input: Optional[Mapping[str, Any]] = None, messages: Optional[ - Union[List[models.Message], List[models.MessageTypedDict]] + Union[ + Iterable[models.PlatformMessage], + Iterable[models.PlatformMessageTypedDict], + ] ] = None, - metadata: Optional[Dict[str, Any]] = None, + metadata: Optional[Mapping[str, Any]] = None, + stream: Optional[bool] = False, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, + accept_header_override: Optional[CreateRunAcceptEnum] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> str: - r"""Create an agent run and stream the response + ) -> models.PlatformAgentsCreateRunResponse: + r"""Create agent run + + Execute an agent run. Set `stream` to true to receive server-sent events; otherwise the response contains the final agent messages. + - Executes an [agent](https://developers.glean.com/agents/agents-api) run and returns the result as a stream of server-sent events (SSE). + :param agent_id: ID of the agent to run. + :param input: Input fields for an input-form triggered agent. + :param messages: Messages to pass to the agent. When provided, the array MUST contain at least one message and each message MUST specify a valid `role` and non-empty `content`. - :param agent_id: The ID of the agent to run. - :param input: The input to the agent. - :param messages: The messages to pass an input to the agent. - :param metadata: The metadata to pass to the agent. + :param metadata: Metadata to pass to the agent. + :param stream: Whether to stream the run response as 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 @@ -569,28 +700,39 @@ def run_stream( else: base_url = self._get_url(base_url, url_variables) - request = models.AgentRunCreate( + request = models.PlatformAgentsCreateRunRequest( agent_id=agent_id, - input=input, - messages=utils.get_pydantic_model(messages, Optional[List[models.Message]]), - metadata=metadata, + platform_agent_run_create_request=models.PlatformAgentRunCreateRequest( + input=utils.unmarshal(input, Optional[Dict[str, Any]]), + messages=utils.get_pydantic_model( + messages, Optional[List[models.PlatformMessage]] + ), + metadata=utils.unmarshal(metadata, Optional[Dict[str, Any]]), + stream=stream, + ), ) req = self._build_request( method="POST", - path="/rest/api/v1/agents/runs/stream", + path="/api/agents/{agent_id}/runs", base_url=base_url, url_variables=url_variables, request=request, request_body_required=True, - request_has_path_params=False, + request_has_path_params=True, request_has_query_params=True, user_agent_header="user-agent", - accept_header_value="text/event-stream", + accept_header_value=accept_header_override.value + if accept_header_override is not None + else "application/json;q=1, text/event-stream;q=0", http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.AgentRunCreate + request.platform_agent_run_create_request, + False, + False, + "json", + models.PlatformAgentRunCreateRequest, ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -608,155 +750,93 @@ def run_stream( hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="createAndStreamRun", + operation_id="platform-agents-create-run", oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Agents"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "403", "404", "409", "422", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response( + models.PlatformAgentRunWaitResponse, 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", "403", "404", "409", "422", "4XX"], "*" + http_res, + ["400", "401", "403", "404", "408", "409", "413", "429"], + "application/problem+json", ): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + if utils.match_response(http_res, ["500", "503"], "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + 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, ["500", "5XX"], "*"): + 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) raise errors.GleanError("Unexpected response received", http_res) - async def run_stream_async( + async def create_run_async( self, *, agent_id: str, - input: Optional[Dict[str, Any]] = None, + input: Optional[Mapping[str, Any]] = None, messages: Optional[ - Union[List[models.Message], List[models.MessageTypedDict]] + Union[ + Iterable[models.PlatformMessage], + Iterable[models.PlatformMessageTypedDict], + ] ] = None, - metadata: Optional[Dict[str, Any]] = None, + metadata: Optional[Mapping[str, Any]] = None, + stream: Optional[bool] = False, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, + accept_header_override: Optional[CreateRunAcceptEnum] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> str: - r"""Create an agent run and stream the response - - Executes an [agent](https://developers.glean.com/agents/agents-api) run and returns the result as a stream of server-sent events (SSE). - - :param agent_id: The ID of the agent to run. - :param input: The input to the agent. - :param messages: The messages to pass an input to the agent. - :param metadata: The metadata to pass to the agent. - :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.AgentRunCreate( - agent_id=agent_id, - input=input, - messages=utils.get_pydantic_model(messages, Optional[List[models.Message]]), - metadata=metadata, - ) - - req = self._build_request_async( - method="POST", - path="/rest/api/v1/agents/runs/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.AgentRunCreate - ), - 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"]) + ) -> models.PlatformAgentsCreateRunResponse: + r"""Create agent run - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="createAndStreamRun", - oauth2_scopes=None, - security_source=get_security_from_env( - self.sdk_configuration.security, models.Security - ), - ), - request=req, - error_status_codes=["400", "403", "404", "409", "422", "4XX", "500", "5XX"], - retry_config=retry_config, - ) + Execute an agent run. Set `stream` to true to receive server-sent events; otherwise the response contains the final agent messages. - if utils.match_response(http_res, "200", "text/event-stream"): - return http_res.text - if utils.match_response( - http_res, ["400", "403", "404", "409", "422", "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, ["500", "5XX"], "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.GleanError("API error occurred", http_res, http_res_text) - raise errors.GleanError("Unexpected response received", http_res) + :param agent_id: ID of the agent to run. + :param input: Input fields for an input-form triggered agent. + :param messages: Messages to pass to the agent. When provided, the array MUST contain at least one message and each message MUST specify a valid `role` and non-empty `content`. - def run( - self, - *, - agent_id: str, - input: Optional[Dict[str, Any]] = None, - messages: Optional[ - Union[List[models.Message], List[models.MessageTypedDict]] - ] = None, - metadata: Optional[Dict[str, Any]] = None, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> models.AgentRunWaitResponse: - r"""Create an agent run and wait for the response - - Executes an [agent](https://developers.glean.com/agents/agents-api) run and returns the final response. - - :param agent_id: The ID of the agent to run. - :param input: The input to the agent. - :param messages: The messages to pass an input to the agent. - :param metadata: The metadata to pass to the agent. + :param metadata: Metadata to pass to the agent. + :param stream: Whether to stream the run response as 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 @@ -769,128 +849,39 @@ def run( else: base_url = self._get_url(base_url, url_variables) - request = models.AgentRunCreate( + request = models.PlatformAgentsCreateRunRequest( agent_id=agent_id, - input=input, - messages=utils.get_pydantic_model(messages, Optional[List[models.Message]]), - metadata=metadata, - ) - - req = self._build_request( - method="POST", - path="/rest/api/v1/agents/runs/wait", - 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="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.AgentRunCreate - ), - 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="createAndWaitRun", - oauth2_scopes=None, - security_source=get_security_from_env( - self.sdk_configuration.security, models.Security + platform_agent_run_create_request=models.PlatformAgentRunCreateRequest( + input=utils.unmarshal(input, Optional[Dict[str, Any]]), + messages=utils.get_pydantic_model( + messages, Optional[List[models.PlatformMessage]] ), + metadata=utils.unmarshal(metadata, Optional[Dict[str, Any]]), + stream=stream, ), - request=req, - error_status_codes=["400", "403", "404", "409", "422", "4XX", "500", "5XX"], - retry_config=retry_config, - ) - - if utils.match_response(http_res, "200", "application/json"): - return unmarshal_json_response(models.AgentRunWaitResponse, http_res) - if utils.match_response( - http_res, ["400", "403", "404", "409", "422", "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, ["500", "5XX"], "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.GleanError("API error occurred", http_res, http_res_text) - - raise errors.GleanError("Unexpected response received", http_res) - - async def run_async( - self, - *, - agent_id: str, - input: Optional[Dict[str, Any]] = None, - messages: Optional[ - Union[List[models.Message], List[models.MessageTypedDict]] - ] = None, - metadata: Optional[Dict[str, Any]] = None, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> models.AgentRunWaitResponse: - r"""Create an agent run and wait for the response - - Executes an [agent](https://developers.glean.com/agents/agents-api) run and returns the final response. - - :param agent_id: The ID of the agent to run. - :param input: The input to the agent. - :param messages: The messages to pass an input to the agent. - :param metadata: The metadata to pass to the agent. - :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.AgentRunCreate( - agent_id=agent_id, - input=input, - messages=utils.get_pydantic_model(messages, Optional[List[models.Message]]), - metadata=metadata, ) req = self._build_request_async( method="POST", - path="/rest/api/v1/agents/runs/wait", + path="/api/agents/{agent_id}/runs", base_url=base_url, url_variables=url_variables, request=request, request_body_required=True, - request_has_path_params=False, + request_has_path_params=True, request_has_query_params=True, user_agent_header="user-agent", - accept_header_value="application/json", + accept_header_value=accept_header_override.value + if accept_header_override is not None + else "application/json;q=1, text/event-stream;q=0", http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.AgentRunCreate + request.platform_agent_run_create_request, + False, + False, + "json", + models.PlatformAgentRunCreateRequest, ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -908,25 +899,54 @@ async def run_async( hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="createAndWaitRun", + operation_id="platform-agents-create-run", oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Agents"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "403", "404", "409", "422", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) + response_data: Any = None if utils.match_response(http_res, "200", "application/json"): - return unmarshal_json_response(models.AgentRunWaitResponse, http_res) + return unmarshal_json_response( + models.PlatformAgentRunWaitResponse, 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", "403", "404", "409", "422", "4XX"], "*" + http_res, + ["400", "401", "403", "404", "408", "409", "413", "429"], + "application/problem+json", ): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + if utils.match_response(http_res, ["500", "503"], "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + 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, ["500", "5XX"], "*"): + 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) diff --git a/src/glean/api_client/announcements.py b/src/glean/api_client/announcements.py index 6f26e4a2..a17983af 100644 --- a/src/glean/api_client/announcements.py +++ b/src/glean/api_client/announcements.py @@ -7,7 +7,7 @@ from glean.api_client.types import OptionalNullable, UNSET from glean.api_client.utils import get_security_from_env from glean.api_client.utils.unmarshal_json_response import unmarshal_json_response -from typing import List, Mapping, Optional, Union +from typing import Iterable, List, Mapping, Optional, Union class Announcements(BaseSDK): @@ -17,6 +17,7 @@ def create( start_time: datetime, end_time: datetime, title: str, + locale: Optional[str] = None, body: Optional[ Union[models.StructuredText, models.StructuredTextTypedDict] ] = None, @@ -24,7 +25,7 @@ def create( thumbnail: Optional[Union[models.Thumbnail, models.ThumbnailTypedDict]] = None, banner: Optional[Union[models.Thumbnail, models.ThumbnailTypedDict]] = None, audience_filters: Optional[ - Union[List[models.FacetFilter], List[models.FacetFilterTypedDict]] + Union[Iterable[models.FacetFilter], Iterable[models.FacetFilterTypedDict]] ] = None, source_document_id: Optional[str] = None, hide_attribution: Optional[bool] = None, @@ -44,6 +45,7 @@ def create( :param start_time: The date and time at which the announcement becomes active. :param end_time: The date and time at which the announcement expires. :param title: The headline of the announcement. + :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 body: :param emoji: An emoji used to indicate the nature of the announcement. :param thumbnail: @@ -70,23 +72,28 @@ def create( else: base_url = self._get_url(base_url, url_variables) - request = models.CreateAnnouncementRequest( - start_time=start_time, - end_time=end_time, - title=title, - body=utils.get_pydantic_model(body, Optional[models.StructuredText]), - emoji=emoji, - thumbnail=utils.get_pydantic_model(thumbnail, Optional[models.Thumbnail]), - banner=utils.get_pydantic_model(banner, Optional[models.Thumbnail]), - audience_filters=utils.get_pydantic_model( - audience_filters, Optional[List[models.FacetFilter]] + request = models.CreateannouncementRequestRequest( + locale=locale, + create_announcement_request=models.CreateAnnouncementRequest( + start_time=start_time, + end_time=end_time, + title=title, + body=utils.get_pydantic_model(body, Optional[models.StructuredText]), + emoji=emoji, + thumbnail=utils.get_pydantic_model( + thumbnail, Optional[models.Thumbnail] + ), + banner=utils.get_pydantic_model(banner, Optional[models.Thumbnail]), + audience_filters=utils.get_pydantic_model( + audience_filters, Optional[List[models.FacetFilter]] + ), + source_document_id=source_document_id, + hide_attribution=hide_attribution, + channel=channel, + post_type=post_type, + is_prioritized=is_prioritized, + view_url=view_url, ), - source_document_id=source_document_id, - hide_attribution=hide_attribution, - channel=channel, - post_type=post_type, - is_prioritized=is_prioritized, - view_url=view_url, ) req = self._build_request( @@ -103,7 +110,11 @@ def create( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.CreateAnnouncementRequest + request.create_announcement_request, + False, + False, + "json", + models.CreateAnnouncementRequest, ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -126,9 +137,14 @@ def create( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Announcements"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -149,6 +165,7 @@ async def create_async( start_time: datetime, end_time: datetime, title: str, + locale: Optional[str] = None, body: Optional[ Union[models.StructuredText, models.StructuredTextTypedDict] ] = None, @@ -156,7 +173,7 @@ async def create_async( thumbnail: Optional[Union[models.Thumbnail, models.ThumbnailTypedDict]] = None, banner: Optional[Union[models.Thumbnail, models.ThumbnailTypedDict]] = None, audience_filters: Optional[ - Union[List[models.FacetFilter], List[models.FacetFilterTypedDict]] + Union[Iterable[models.FacetFilter], Iterable[models.FacetFilterTypedDict]] ] = None, source_document_id: Optional[str] = None, hide_attribution: Optional[bool] = None, @@ -176,6 +193,7 @@ async def create_async( :param start_time: The date and time at which the announcement becomes active. :param end_time: The date and time at which the announcement expires. :param title: The headline of the announcement. + :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 body: :param emoji: An emoji used to indicate the nature of the announcement. :param thumbnail: @@ -202,23 +220,28 @@ async def create_async( else: base_url = self._get_url(base_url, url_variables) - request = models.CreateAnnouncementRequest( - start_time=start_time, - end_time=end_time, - title=title, - body=utils.get_pydantic_model(body, Optional[models.StructuredText]), - emoji=emoji, - thumbnail=utils.get_pydantic_model(thumbnail, Optional[models.Thumbnail]), - banner=utils.get_pydantic_model(banner, Optional[models.Thumbnail]), - audience_filters=utils.get_pydantic_model( - audience_filters, Optional[List[models.FacetFilter]] + request = models.CreateannouncementRequestRequest( + locale=locale, + create_announcement_request=models.CreateAnnouncementRequest( + start_time=start_time, + end_time=end_time, + title=title, + body=utils.get_pydantic_model(body, Optional[models.StructuredText]), + emoji=emoji, + thumbnail=utils.get_pydantic_model( + thumbnail, Optional[models.Thumbnail] + ), + banner=utils.get_pydantic_model(banner, Optional[models.Thumbnail]), + audience_filters=utils.get_pydantic_model( + audience_filters, Optional[List[models.FacetFilter]] + ), + source_document_id=source_document_id, + hide_attribution=hide_attribution, + channel=channel, + post_type=post_type, + is_prioritized=is_prioritized, + view_url=view_url, ), - source_document_id=source_document_id, - hide_attribution=hide_attribution, - channel=channel, - post_type=post_type, - is_prioritized=is_prioritized, - view_url=view_url, ) req = self._build_request_async( @@ -235,7 +258,11 @@ async def create_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.CreateAnnouncementRequest + request.create_announcement_request, + False, + False, + "json", + models.CreateAnnouncementRequest, ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -258,9 +285,14 @@ async def create_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Announcements"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -279,6 +311,7 @@ def delete( self, *, id: int, + locale: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -289,6 +322,7 @@ def delete( Delete an existing user-generated announcement. :param id: The opaque id of the announcement to be deleted. + :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 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 @@ -304,8 +338,11 @@ def delete( else: base_url = self._get_url(base_url, url_variables) - request = models.DeleteAnnouncementRequest( - id=id, + request = models.DeleteannouncementRequestRequest( + locale=locale, + delete_announcement_request=models.DeleteAnnouncementRequest( + id=id, + ), ) req = self._build_request( @@ -322,7 +359,11 @@ def delete( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.DeleteAnnouncementRequest + request.delete_announcement_request, + False, + False, + "json", + models.DeleteAnnouncementRequest, ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -345,9 +386,14 @@ def delete( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Announcements"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -366,6 +412,7 @@ async def delete_async( self, *, id: int, + locale: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -376,6 +423,7 @@ async def delete_async( Delete an existing user-generated announcement. :param id: The opaque id of the announcement to be deleted. + :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 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 @@ -391,8 +439,11 @@ async def delete_async( else: base_url = self._get_url(base_url, url_variables) - request = models.DeleteAnnouncementRequest( - id=id, + request = models.DeleteannouncementRequestRequest( + locale=locale, + delete_announcement_request=models.DeleteAnnouncementRequest( + id=id, + ), ) req = self._build_request_async( @@ -409,7 +460,11 @@ async def delete_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.DeleteAnnouncementRequest + request.delete_announcement_request, + False, + False, + "json", + models.DeleteAnnouncementRequest, ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -432,9 +487,14 @@ async def delete_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Announcements"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -456,6 +516,7 @@ def update( end_time: datetime, title: str, id: int, + locale: Optional[str] = None, body: Optional[ Union[models.StructuredText, models.StructuredTextTypedDict] ] = None, @@ -463,7 +524,7 @@ def update( thumbnail: Optional[Union[models.Thumbnail, models.ThumbnailTypedDict]] = None, banner: Optional[Union[models.Thumbnail, models.ThumbnailTypedDict]] = None, audience_filters: Optional[ - Union[List[models.FacetFilter], List[models.FacetFilterTypedDict]] + Union[Iterable[models.FacetFilter], Iterable[models.FacetFilterTypedDict]] ] = None, source_document_id: Optional[str] = None, hide_attribution: Optional[bool] = None, @@ -484,6 +545,7 @@ def update( :param end_time: The date and time at which the announcement expires. :param title: The headline of the announcement. :param id: The opaque id of the announcement. + :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 body: :param emoji: An emoji used to indicate the nature of the announcement. :param thumbnail: @@ -510,24 +572,29 @@ def update( else: base_url = self._get_url(base_url, url_variables) - request = models.UpdateAnnouncementRequest( - start_time=start_time, - end_time=end_time, - title=title, - body=utils.get_pydantic_model(body, Optional[models.StructuredText]), - emoji=emoji, - thumbnail=utils.get_pydantic_model(thumbnail, Optional[models.Thumbnail]), - banner=utils.get_pydantic_model(banner, Optional[models.Thumbnail]), - audience_filters=utils.get_pydantic_model( - audience_filters, Optional[List[models.FacetFilter]] + request = models.UpdateannouncementRequestRequest( + locale=locale, + update_announcement_request=models.UpdateAnnouncementRequest( + start_time=start_time, + end_time=end_time, + title=title, + body=utils.get_pydantic_model(body, Optional[models.StructuredText]), + emoji=emoji, + thumbnail=utils.get_pydantic_model( + thumbnail, Optional[models.Thumbnail] + ), + banner=utils.get_pydantic_model(banner, Optional[models.Thumbnail]), + audience_filters=utils.get_pydantic_model( + audience_filters, Optional[List[models.FacetFilter]] + ), + source_document_id=source_document_id, + hide_attribution=hide_attribution, + channel=channel, + post_type=post_type, + is_prioritized=is_prioritized, + view_url=view_url, + id=id, ), - source_document_id=source_document_id, - hide_attribution=hide_attribution, - channel=channel, - post_type=post_type, - is_prioritized=is_prioritized, - view_url=view_url, - id=id, ) req = self._build_request( @@ -544,7 +611,11 @@ def update( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.UpdateAnnouncementRequest + request.update_announcement_request, + False, + False, + "json", + models.UpdateAnnouncementRequest, ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -567,9 +638,14 @@ def update( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Announcements"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -591,6 +667,7 @@ async def update_async( end_time: datetime, title: str, id: int, + locale: Optional[str] = None, body: Optional[ Union[models.StructuredText, models.StructuredTextTypedDict] ] = None, @@ -598,7 +675,7 @@ async def update_async( thumbnail: Optional[Union[models.Thumbnail, models.ThumbnailTypedDict]] = None, banner: Optional[Union[models.Thumbnail, models.ThumbnailTypedDict]] = None, audience_filters: Optional[ - Union[List[models.FacetFilter], List[models.FacetFilterTypedDict]] + Union[Iterable[models.FacetFilter], Iterable[models.FacetFilterTypedDict]] ] = None, source_document_id: Optional[str] = None, hide_attribution: Optional[bool] = None, @@ -619,6 +696,7 @@ async def update_async( :param end_time: The date and time at which the announcement expires. :param title: The headline of the announcement. :param id: The opaque id of the announcement. + :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 body: :param emoji: An emoji used to indicate the nature of the announcement. :param thumbnail: @@ -645,24 +723,29 @@ async def update_async( else: base_url = self._get_url(base_url, url_variables) - request = models.UpdateAnnouncementRequest( - start_time=start_time, - end_time=end_time, - title=title, - body=utils.get_pydantic_model(body, Optional[models.StructuredText]), - emoji=emoji, - thumbnail=utils.get_pydantic_model(thumbnail, Optional[models.Thumbnail]), - banner=utils.get_pydantic_model(banner, Optional[models.Thumbnail]), - audience_filters=utils.get_pydantic_model( - audience_filters, Optional[List[models.FacetFilter]] + request = models.UpdateannouncementRequestRequest( + locale=locale, + update_announcement_request=models.UpdateAnnouncementRequest( + start_time=start_time, + end_time=end_time, + title=title, + body=utils.get_pydantic_model(body, Optional[models.StructuredText]), + emoji=emoji, + thumbnail=utils.get_pydantic_model( + thumbnail, Optional[models.Thumbnail] + ), + banner=utils.get_pydantic_model(banner, Optional[models.Thumbnail]), + audience_filters=utils.get_pydantic_model( + audience_filters, Optional[List[models.FacetFilter]] + ), + source_document_id=source_document_id, + hide_attribution=hide_attribution, + channel=channel, + post_type=post_type, + is_prioritized=is_prioritized, + view_url=view_url, + id=id, ), - source_document_id=source_document_id, - hide_attribution=hide_attribution, - channel=channel, - post_type=post_type, - is_prioritized=is_prioritized, - view_url=view_url, - id=id, ) req = self._build_request_async( @@ -679,7 +762,11 @@ async def update_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.UpdateAnnouncementRequest + request.update_announcement_request, + False, + False, + "json", + models.UpdateAnnouncementRequest, ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -702,9 +789,14 @@ async def update_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Announcements"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/glean/api_client/answers.py b/src/glean/api_client/answers.py index 25342f6a..5824d6a3 100644 --- a/src/glean/api_client/answers.py +++ b/src/glean/api_client/answers.py @@ -6,7 +6,7 @@ from glean.api_client.types import OptionalNullable, UNSET from glean.api_client.utils import get_security_from_env from glean.api_client.utils.unmarshal_json_response import unmarshal_json_response -from typing import List, Mapping, Optional, Union +from typing import Iterable, List, Mapping, Optional, Union from typing_extensions import deprecated @@ -15,6 +15,7 @@ def create( self, *, data: Union[models.AnswerCreationData, models.AnswerCreationDataTypedDict], + locale: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -25,6 +26,7 @@ def create( Create a user-generated Answer that contains a question and answer. :param data: + :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 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 @@ -40,8 +42,11 @@ def create( else: base_url = self._get_url(base_url, url_variables) - request = models.CreateAnswerRequest( - data=utils.get_pydantic_model(data, models.AnswerCreationData), + request = models.CreateanswerRequestRequest( + locale=locale, + create_answer_request=models.CreateAnswerRequest( + data=utils.get_pydantic_model(data, models.AnswerCreationData), + ), ) req = self._build_request( @@ -58,7 +63,11 @@ def create( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.CreateAnswerRequest + request.create_answer_request, + False, + False, + "json", + models.CreateAnswerRequest, ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -81,9 +90,14 @@ def create( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Answers"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -102,6 +116,7 @@ async def create_async( self, *, data: Union[models.AnswerCreationData, models.AnswerCreationDataTypedDict], + locale: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -112,6 +127,7 @@ async def create_async( Create a user-generated Answer that contains a question and answer. :param data: + :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 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 @@ -127,8 +143,11 @@ async def create_async( else: base_url = self._get_url(base_url, url_variables) - request = models.CreateAnswerRequest( - data=utils.get_pydantic_model(data, models.AnswerCreationData), + request = models.CreateanswerRequestRequest( + locale=locale, + create_answer_request=models.CreateAnswerRequest( + data=utils.get_pydantic_model(data, models.AnswerCreationData), + ), ) req = self._build_request_async( @@ -145,7 +164,11 @@ async def create_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.CreateAnswerRequest + request.create_answer_request, + False, + False, + "json", + models.CreateAnswerRequest, ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -168,9 +191,14 @@ async def create_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Answers"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -189,6 +217,7 @@ def delete( self, *, id: int, + locale: Optional[str] = None, doc_id: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -200,6 +229,7 @@ def delete( Delete an existing user-generated Answer. :param id: The opaque ID of the Answer. + :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 doc_id: Glean Document ID of the Answer. The Glean Document ID is supported for cases where the Answer ID isn't available. If both are available, using the Answer ID is preferred. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -216,9 +246,12 @@ def delete( else: base_url = self._get_url(base_url, url_variables) - request = models.DeleteAnswerRequest( - id=id, - doc_id=doc_id, + request = models.DeleteanswerRequestRequest( + locale=locale, + delete_answer_request=models.DeleteAnswerRequest( + id=id, + doc_id=doc_id, + ), ) req = self._build_request( @@ -235,7 +268,11 @@ def delete( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.DeleteAnswerRequest + request.delete_answer_request, + False, + False, + "json", + models.DeleteAnswerRequest, ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -258,9 +295,14 @@ def delete( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Answers"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -279,6 +321,7 @@ async def delete_async( self, *, id: int, + locale: Optional[str] = None, doc_id: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -290,6 +333,7 @@ async def delete_async( Delete an existing user-generated Answer. :param id: The opaque ID of the Answer. + :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 doc_id: Glean Document ID of the Answer. The Glean Document ID is supported for cases where the Answer ID isn't available. If both are available, using the Answer ID is preferred. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -306,9 +350,12 @@ async def delete_async( else: base_url = self._get_url(base_url, url_variables) - request = models.DeleteAnswerRequest( - id=id, - doc_id=doc_id, + request = models.DeleteanswerRequestRequest( + locale=locale, + delete_answer_request=models.DeleteAnswerRequest( + id=id, + doc_id=doc_id, + ), ) req = self._build_request_async( @@ -325,7 +372,11 @@ async def delete_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.DeleteAnswerRequest + request.delete_answer_request, + False, + False, + "json", + models.DeleteAnswerRequest, ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -348,9 +399,14 @@ async def delete_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Answers"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -369,38 +425,39 @@ def update( self, *, id: int, + locale: Optional[str] = None, doc_id: Optional[str] = None, question: Optional[str] = None, - question_variations: Optional[List[str]] = None, + question_variations: Optional[Iterable[str]] = None, body_text: Optional[str] = None, board_id: Optional[int] = None, audience_filters: Optional[ - Union[List[models.FacetFilter], List[models.FacetFilterTypedDict]] + Union[Iterable[models.FacetFilter], Iterable[models.FacetFilterTypedDict]] ] = None, added_roles: Optional[ Union[ - List[models.UserRoleSpecification], - List[models.UserRoleSpecificationTypedDict], + Iterable[models.UserRoleSpecification], + Iterable[models.UserRoleSpecificationTypedDict], ] ] = None, removed_roles: Optional[ Union[ - List[models.UserRoleSpecification], - List[models.UserRoleSpecificationTypedDict], + Iterable[models.UserRoleSpecification], + Iterable[models.UserRoleSpecificationTypedDict], ] ] = None, roles: Optional[ Union[ - List[models.UserRoleSpecification], - List[models.UserRoleSpecificationTypedDict], + Iterable[models.UserRoleSpecification], + Iterable[models.UserRoleSpecificationTypedDict], ] ] = None, source_document_spec: Optional[ Union[models.DocumentSpecUnion, models.DocumentSpecUnionTypedDict] ] = None, source_type: Optional[models.EditAnswerRequestSourceType] = None, - added_collections: Optional[List[int]] = None, - removed_collections: Optional[List[int]] = None, + added_collections: Optional[Iterable[int]] = None, + removed_collections: Optional[Iterable[int]] = None, combined_answer_text: Optional[ Union[ models.StructuredTextMutableProperties, @@ -417,6 +474,7 @@ def update( Update an existing user-generated Answer. :param id: The opaque ID of the Answer. + :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 doc_id: Glean Document ID of the Answer. The Glean Document ID is supported for cases where the Answer ID isn't available. If both are available, using the Answer ID is preferred. :param question: :param question_variations: Additional ways of phrasing this question. @@ -446,33 +504,43 @@ def update( else: base_url = self._get_url(base_url, url_variables) - request = models.EditAnswerRequest( - id=id, - doc_id=doc_id, - question=question, - question_variations=question_variations, - body_text=body_text, - board_id=board_id, - audience_filters=utils.get_pydantic_model( - audience_filters, Optional[List[models.FacetFilter]] - ), - added_roles=utils.get_pydantic_model( - added_roles, Optional[List[models.UserRoleSpecification]] - ), - removed_roles=utils.get_pydantic_model( - removed_roles, Optional[List[models.UserRoleSpecification]] - ), - roles=utils.get_pydantic_model( - roles, Optional[List[models.UserRoleSpecification]] - ), - source_document_spec=utils.get_pydantic_model( - source_document_spec, Optional[models.DocumentSpecUnion] - ), - source_type=source_type, - added_collections=added_collections, - removed_collections=removed_collections, - combined_answer_text=utils.get_pydantic_model( - combined_answer_text, Optional[models.StructuredTextMutableProperties] + request = models.EditanswerRequestRequest( + locale=locale, + edit_answer_request=models.EditAnswerRequest( + id=id, + doc_id=doc_id, + question=question, + question_variations=utils.unmarshal( + question_variations, Optional[List[str]] + ), + body_text=body_text, + board_id=board_id, + audience_filters=utils.get_pydantic_model( + audience_filters, Optional[List[models.FacetFilter]] + ), + added_roles=utils.get_pydantic_model( + added_roles, Optional[List[models.UserRoleSpecification]] + ), + removed_roles=utils.get_pydantic_model( + removed_roles, Optional[List[models.UserRoleSpecification]] + ), + roles=utils.get_pydantic_model( + roles, Optional[List[models.UserRoleSpecification]] + ), + source_document_spec=utils.get_pydantic_model( + source_document_spec, Optional[models.DocumentSpecUnion] + ), + source_type=source_type, + added_collections=utils.unmarshal( + added_collections, Optional[List[int]] + ), + removed_collections=utils.unmarshal( + removed_collections, Optional[List[int]] + ), + combined_answer_text=utils.get_pydantic_model( + combined_answer_text, + Optional[models.StructuredTextMutableProperties], + ), ), ) @@ -490,7 +558,11 @@ def update( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.EditAnswerRequest + request.edit_answer_request, + False, + False, + "json", + models.EditAnswerRequest, ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -513,9 +585,14 @@ def update( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Answers"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -534,38 +611,39 @@ async def update_async( self, *, id: int, + locale: Optional[str] = None, doc_id: Optional[str] = None, question: Optional[str] = None, - question_variations: Optional[List[str]] = None, + question_variations: Optional[Iterable[str]] = None, body_text: Optional[str] = None, board_id: Optional[int] = None, audience_filters: Optional[ - Union[List[models.FacetFilter], List[models.FacetFilterTypedDict]] + Union[Iterable[models.FacetFilter], Iterable[models.FacetFilterTypedDict]] ] = None, added_roles: Optional[ Union[ - List[models.UserRoleSpecification], - List[models.UserRoleSpecificationTypedDict], + Iterable[models.UserRoleSpecification], + Iterable[models.UserRoleSpecificationTypedDict], ] ] = None, removed_roles: Optional[ Union[ - List[models.UserRoleSpecification], - List[models.UserRoleSpecificationTypedDict], + Iterable[models.UserRoleSpecification], + Iterable[models.UserRoleSpecificationTypedDict], ] ] = None, roles: Optional[ Union[ - List[models.UserRoleSpecification], - List[models.UserRoleSpecificationTypedDict], + Iterable[models.UserRoleSpecification], + Iterable[models.UserRoleSpecificationTypedDict], ] ] = None, source_document_spec: Optional[ Union[models.DocumentSpecUnion, models.DocumentSpecUnionTypedDict] ] = None, source_type: Optional[models.EditAnswerRequestSourceType] = None, - added_collections: Optional[List[int]] = None, - removed_collections: Optional[List[int]] = None, + added_collections: Optional[Iterable[int]] = None, + removed_collections: Optional[Iterable[int]] = None, combined_answer_text: Optional[ Union[ models.StructuredTextMutableProperties, @@ -582,6 +660,7 @@ async def update_async( Update an existing user-generated Answer. :param id: The opaque ID of the Answer. + :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 doc_id: Glean Document ID of the Answer. The Glean Document ID is supported for cases where the Answer ID isn't available. If both are available, using the Answer ID is preferred. :param question: :param question_variations: Additional ways of phrasing this question. @@ -611,33 +690,43 @@ async def update_async( else: base_url = self._get_url(base_url, url_variables) - request = models.EditAnswerRequest( - id=id, - doc_id=doc_id, - question=question, - question_variations=question_variations, - body_text=body_text, - board_id=board_id, - audience_filters=utils.get_pydantic_model( - audience_filters, Optional[List[models.FacetFilter]] - ), - added_roles=utils.get_pydantic_model( - added_roles, Optional[List[models.UserRoleSpecification]] - ), - removed_roles=utils.get_pydantic_model( - removed_roles, Optional[List[models.UserRoleSpecification]] - ), - roles=utils.get_pydantic_model( - roles, Optional[List[models.UserRoleSpecification]] - ), - source_document_spec=utils.get_pydantic_model( - source_document_spec, Optional[models.DocumentSpecUnion] - ), - source_type=source_type, - added_collections=added_collections, - removed_collections=removed_collections, - combined_answer_text=utils.get_pydantic_model( - combined_answer_text, Optional[models.StructuredTextMutableProperties] + request = models.EditanswerRequestRequest( + locale=locale, + edit_answer_request=models.EditAnswerRequest( + id=id, + doc_id=doc_id, + question=question, + question_variations=utils.unmarshal( + question_variations, Optional[List[str]] + ), + body_text=body_text, + board_id=board_id, + audience_filters=utils.get_pydantic_model( + audience_filters, Optional[List[models.FacetFilter]] + ), + added_roles=utils.get_pydantic_model( + added_roles, Optional[List[models.UserRoleSpecification]] + ), + removed_roles=utils.get_pydantic_model( + removed_roles, Optional[List[models.UserRoleSpecification]] + ), + roles=utils.get_pydantic_model( + roles, Optional[List[models.UserRoleSpecification]] + ), + source_document_spec=utils.get_pydantic_model( + source_document_spec, Optional[models.DocumentSpecUnion] + ), + source_type=source_type, + added_collections=utils.unmarshal( + added_collections, Optional[List[int]] + ), + removed_collections=utils.unmarshal( + removed_collections, Optional[List[int]] + ), + combined_answer_text=utils.get_pydantic_model( + combined_answer_text, + Optional[models.StructuredTextMutableProperties], + ), ), ) @@ -655,7 +744,11 @@ async def update_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.EditAnswerRequest + request.edit_answer_request, + False, + False, + "json", + models.EditAnswerRequest, ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -678,9 +771,14 @@ async def update_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Answers"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -698,6 +796,7 @@ async def update_async( def retrieve( self, *, + locale: Optional[str] = None, id: Optional[int] = None, doc_id: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, @@ -709,6 +808,7 @@ def retrieve( Read the details of a particular Answer given its ID. + :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 id: The opaque ID of the Answer. :param doc_id: Glean Document ID of the Answer. The Glean Document ID is supported for cases where the Answer ID isn't available. If both are available, using the Answer ID is preferred. :param retries: Override the default retry configuration for this method @@ -726,9 +826,12 @@ def retrieve( else: base_url = self._get_url(base_url, url_variables) - request = models.GetAnswerRequest( - id=id, - doc_id=doc_id, + request = models.GetanswerRequestRequest( + locale=locale, + get_answer_request=models.GetAnswerRequest( + id=id, + doc_id=doc_id, + ), ) req = self._build_request( @@ -745,7 +848,11 @@ def retrieve( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.GetAnswerRequest + request.get_answer_request, + False, + False, + "json", + models.GetAnswerRequest, ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -768,9 +875,14 @@ def retrieve( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Answers"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -788,6 +900,7 @@ def retrieve( async def retrieve_async( self, *, + locale: Optional[str] = None, id: Optional[int] = None, doc_id: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, @@ -799,6 +912,7 @@ async def retrieve_async( Read the details of a particular Answer given its ID. + :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 id: The opaque ID of the Answer. :param doc_id: Glean Document ID of the Answer. The Glean Document ID is supported for cases where the Answer ID isn't available. If both are available, using the Answer ID is preferred. :param retries: Override the default retry configuration for this method @@ -816,9 +930,12 @@ async def retrieve_async( else: base_url = self._get_url(base_url, url_variables) - request = models.GetAnswerRequest( - id=id, - doc_id=doc_id, + request = models.GetanswerRequestRequest( + locale=locale, + get_answer_request=models.GetAnswerRequest( + id=id, + doc_id=doc_id, + ), ) req = self._build_request_async( @@ -835,7 +952,11 @@ async def retrieve_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.GetAnswerRequest + request.get_answer_request, + False, + False, + "json", + models.GetAnswerRequest, ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -858,9 +979,14 @@ async def retrieve_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Answers"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -876,11 +1002,12 @@ async def retrieve_async( raise errors.GleanError("Unexpected response received", http_res) @deprecated( - "warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible." + "warning: ** DEPRECATED ** - Deprecated on 2026-01-21, removal scheduled for 2026-10-15: Answer boards have been removed and this endpoint no longer serves a purpose." ) def list( self, *, + locale: Optional[str] = None, board_id: Optional[int] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -891,6 +1018,7 @@ def list( List Answers created by the current user. + :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 board_id: The Answer Board Id to list answers on. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -907,8 +1035,11 @@ def list( else: base_url = self._get_url(base_url, url_variables) - request = models.ListAnswersRequest( - board_id=board_id, + request = models.ListanswersRequestRequest( + locale=locale, + list_answers_request=models.ListAnswersRequest( + board_id=board_id, + ), ) req = self._build_request( @@ -925,7 +1056,11 @@ def list( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.ListAnswersRequest + request.list_answers_request, + False, + False, + "json", + models.ListAnswersRequest, ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -948,9 +1083,20 @@ def list( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Answers"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-glean-deprecated": { + "id": "4c0923bd-64c7-45b9-99a5-b36f2705e618", + "introduced": "2026-01-21", + "message": "Answer boards have been removed and this endpoint no longer serves a purpose", + "removal": "2026-10-15", + }, + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -966,11 +1112,12 @@ def list( raise errors.GleanError("Unexpected response received", http_res) @deprecated( - "warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible." + "warning: ** DEPRECATED ** - Deprecated on 2026-01-21, removal scheduled for 2026-10-15: Answer boards have been removed and this endpoint no longer serves a purpose." ) async def list_async( self, *, + locale: Optional[str] = None, board_id: Optional[int] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -981,6 +1128,7 @@ async def list_async( List Answers created by the current user. + :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 board_id: The Answer Board Id to list answers on. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -997,8 +1145,11 @@ async def list_async( else: base_url = self._get_url(base_url, url_variables) - request = models.ListAnswersRequest( - board_id=board_id, + request = models.ListanswersRequestRequest( + locale=locale, + list_answers_request=models.ListAnswersRequest( + board_id=board_id, + ), ) req = self._build_request_async( @@ -1015,7 +1166,11 @@ async def list_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.ListAnswersRequest + request.list_answers_request, + False, + False, + "json", + models.ListAnswersRequest, ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -1038,9 +1193,20 @@ async def list_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Answers"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-glean-deprecated": { + "id": "4c0923bd-64c7-45b9-99a5-b36f2705e618", + "introduced": "2026-01-21", + "message": "Answer boards have been removed and this endpoint no longer serves a purpose", + "removal": "2026-10-15", + }, + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/glean/api_client/basesdk.py b/src/glean/api_client/basesdk.py index 81bace39..bf7b1b3b 100644 --- a/src/glean/api_client/basesdk.py +++ b/src/glean/api_client/basesdk.py @@ -6,6 +6,7 @@ AfterErrorContext, AfterSuccessContext, BeforeRequestContext, + HookContext, ) from glean.api_client.utils import ( RetryConfig, @@ -66,6 +67,7 @@ def _build_request_async( url_override: Optional[str] = None, http_headers: Optional[Mapping[str, str]] = None, allow_empty_value: Optional[List[str]] = None, + allowed_fields: Optional[List[str]] = None, ) -> httpx.Request: client = self.sdk_configuration.async_client return self._build_request_with_client( @@ -87,6 +89,7 @@ def _build_request_async( url_override, http_headers, allow_empty_value, + allowed_fields, ) def _build_request( @@ -110,6 +113,7 @@ def _build_request( url_override: Optional[str] = None, http_headers: Optional[Mapping[str, str]] = None, allow_empty_value: Optional[List[str]] = None, + allowed_fields: Optional[List[str]] = None, ) -> httpx.Request: client = self.sdk_configuration.client return self._build_request_with_client( @@ -131,6 +135,7 @@ def _build_request( url_override, http_headers, allow_empty_value, + allowed_fields, ) def _build_request_with_client( @@ -155,6 +160,7 @@ def _build_request_with_client( url_override: Optional[str] = None, http_headers: Optional[Mapping[str, str]] = None, allow_empty_value: Optional[List[str]] = None, + allowed_fields: Optional[List[str]] = None, ) -> httpx.Request: query_params = {} @@ -188,7 +194,9 @@ def _build_request_with_client( security = security() security = utils.get_security_from_env(security, models.Security) if security is not None: - security_headers, security_query_params = utils.get_security(security) + security_headers, security_query_params = utils.get_security( + security, allowed_fields + ) headers = {**headers, **security_headers} query_params = {**query_params, **security_query_params} @@ -225,15 +233,15 @@ def _build_request_with_client( data=serialized_request_body.data, files=serialized_request_body.files, headers=headers, - timeout=timeout, + timeout=timeout if timeout is not None else httpx.USE_CLIENT_DEFAULT, ) def do_request( self, - hook_ctx, - request, - error_status_codes, - stream=False, + hook_ctx: HookContext, + request: httpx.Request, + is_error_status_code: Callable[[int], bool], + stream: bool = False, retry_config: Optional[Tuple[RetryConfig, List[str]]] = None, ) -> httpx.Response: client = self.sdk_configuration.client @@ -245,6 +253,8 @@ def do(): http_res = None try: req = hooks.before_request(BeforeRequestContext(hook_ctx), request) + if "timeout" in request.extensions and "timeout" not in req.extensions: + req.extensions["timeout"] = request.extensions["timeout"] logger.debug( "Request:\nMethod: %s\nURL: %s\nHeaders: %s\nBody: %s", req.method, @@ -275,19 +285,6 @@ def do(): "" if stream else http_res.text, ) - if utils.match_status_codes(error_status_codes, http_res.status_code): - result, err = hooks.after_error( - AfterErrorContext(hook_ctx), http_res, None - ) - if err is not None: - logger.debug("Request Exception", exc_info=True) - raise err - if result is not None: - http_res = result - else: - logger.debug("Raising unexpected SDK error") - raise errors.GleanError("Unexpected error occurred", http_res) - return http_res if retry_config is not None: @@ -295,17 +292,27 @@ def do(): else: http_res = do() - if not utils.match_status_codes(error_status_codes, http_res.status_code): + if is_error_status_code(http_res.status_code): + result, err = hooks.after_error(AfterErrorContext(hook_ctx), http_res, None) + if err is not None: + logger.debug("Request Exception", exc_info=True) + raise err + if result is not None: + http_res = result + else: + logger.debug("Raising unexpected SDK error") + raise errors.GleanError("Unexpected error occurred", http_res) + else: http_res = hooks.after_success(AfterSuccessContext(hook_ctx), http_res) return http_res async def do_request_async( self, - hook_ctx, - request, - error_status_codes, - stream=False, + hook_ctx: HookContext, + request: httpx.Request, + is_error_status_code: Callable[[int], bool], + stream: bool = False, retry_config: Optional[Tuple[RetryConfig, List[str]]] = None, ) -> httpx.Response: client = self.sdk_configuration.async_client @@ -320,6 +327,8 @@ async def do(): hooks.before_request, BeforeRequestContext(hook_ctx), request ) + if "timeout" in request.extensions and "timeout" not in req.extensions: + req.extensions["timeout"] = request.extensions["timeout"] logger.debug( "Request:\nMethod: %s\nURL: %s\nHeaders: %s\nBody: %s", req.method, @@ -353,20 +362,6 @@ async def do(): "" if stream else http_res.text, ) - if utils.match_status_codes(error_status_codes, http_res.status_code): - result, err = await run_sync_in_thread( - hooks.after_error, AfterErrorContext(hook_ctx), http_res, None - ) - - if err is not None: - logger.debug("Request Exception", exc_info=True) - raise err - if result is not None: - http_res = result - else: - logger.debug("Raising unexpected SDK error") - raise errors.GleanError("Unexpected error occurred", http_res) - return http_res if retry_config is not None: @@ -376,7 +371,20 @@ async def do(): else: http_res = await do() - if not utils.match_status_codes(error_status_codes, http_res.status_code): + if is_error_status_code(http_res.status_code): + result, err = await run_sync_in_thread( + hooks.after_error, AfterErrorContext(hook_ctx), http_res, None + ) + + if err is not None: + logger.debug("Request Exception", exc_info=True) + raise err + if result is not None: + http_res = result + else: + logger.debug("Raising unexpected SDK error") + raise errors.GleanError("Unexpected error occurred", http_res) + else: http_res = await run_sync_in_thread( hooks.after_success, AfterSuccessContext(hook_ctx), http_res ) diff --git a/src/glean/api_client/chat_sdk.py b/src/glean/api_client/chat_sdk.py new file mode 100644 index 00000000..8d63acc6 --- /dev/null +++ b/src/glean/api_client/chat_sdk.py @@ -0,0 +1,283 @@ +"""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.unmarshal_json_response import unmarshal_json_response +from typing import Any, Mapping, Optional, Union + + +class CreateAcceptEnum(str, Enum): + APPLICATION_JSON = "application/json" + TEXT_EVENT_STREAM = "text/event-stream" + + +class ChatSDK(BaseSDK): + def create( + self, + *, + input: Union[models.Input, models.InputTypedDict], + stream: Optional[bool] = False, + store: Optional[bool] = True, + conversation_id: Optional[str] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + accept_header_override: Optional[CreateAcceptEnum] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.PlatformChatCreateResponse: + r"""Create a chat response + + Run an assistant turn. Set `stream` to true to receive server-sent events; otherwise the response is a typed JSON response object. + + + :param input: Either a plain string (single user turn) or a chronological array of `USER`/`ASSISTANT` messages. The final array message must be `USER`. + + :param stream: When true, respond with `text/event-stream`. When false or omitted, respond with `application/json`. + + :param store: When true (default), persist the interaction and return a `conversation_id`. When false, run ephemerally with no persistence. + + :param conversation_id: Continue an existing stored conversation. Incompatible with message-array `input` and with `store: false`. + + :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 + 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.PlatformChatCreateRequest( + input=utils.get_pydantic_model(input, models.Input), + stream=stream, + store=store, + conversation_id=conversation_id, + ) + + req = self._build_request( + method="POST", + path="/api/chat", + 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=accept_header_override.value + if accept_header_override is not None + else "application/json;q=1, text/event-stream;q=0", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request, False, False, "json", models.PlatformChatCreateRequest + ), + 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-chat-create", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Chat"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-glean-experimental": { + "id": "e65a0a77-97a2-4c91-be60-eae7f6238015", + "introduced": "2026-07-14", + }, + "x-visibility": "Public", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response( + models.PlatformChatCompletedResponse, http_res + ) + if utils.match_response(http_res, "200", "text/event-stream"): + return http_res.text + if utils.match_response( + http_res, + ["400", "401", "403", "404", "408", "413", "422", "429"], + "application/problem+json", + ): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + if utils.match_response(http_res, ["500", "503"], "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + 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) + + raise errors.GleanError("Unexpected response received", http_res) + + async def create_async( + self, + *, + input: Union[models.Input, models.InputTypedDict], + stream: Optional[bool] = False, + store: Optional[bool] = True, + conversation_id: Optional[str] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + accept_header_override: Optional[CreateAcceptEnum] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.PlatformChatCreateResponse: + r"""Create a chat response + + Run an assistant turn. Set `stream` to true to receive server-sent events; otherwise the response is a typed JSON response object. + + + :param input: Either a plain string (single user turn) or a chronological array of `USER`/`ASSISTANT` messages. The final array message must be `USER`. + + :param stream: When true, respond with `text/event-stream`. When false or omitted, respond with `application/json`. + + :param store: When true (default), persist the interaction and return a `conversation_id`. When false, run ephemerally with no persistence. + + :param conversation_id: Continue an existing stored conversation. Incompatible with message-array `input` and with `store: false`. + + :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 + 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.PlatformChatCreateRequest( + input=utils.get_pydantic_model(input, models.Input), + stream=stream, + store=store, + conversation_id=conversation_id, + ) + + req = self._build_request_async( + method="POST", + path="/api/chat", + 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=accept_header_override.value + if accept_header_override is not None + else "application/json;q=1, text/event-stream;q=0", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request, False, False, "json", models.PlatformChatCreateRequest + ), + 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-chat-create", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Chat"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-glean-experimental": { + "id": "e65a0a77-97a2-4c91-be60-eae7f6238015", + "introduced": "2026-07-14", + }, + "x-visibility": "Public", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response( + models.PlatformChatCompletedResponse, http_res + ) + if utils.match_response(http_res, "200", "text/event-stream"): + return http_res.text + if utils.match_response( + http_res, + ["400", "401", "403", "404", "408", "413", "422", "429"], + "application/problem+json", + ): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + if utils.match_response(http_res, ["500", "503"], "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + 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) + + raise errors.GleanError("Unexpected response received", http_res) diff --git a/src/glean/api_client/client.py b/src/glean/api_client/client.py index 4b013bd3..e64a90a5 100644 --- a/src/glean/api_client/client.py +++ b/src/glean/api_client/client.py @@ -2,22 +2,23 @@ from .basesdk import BaseSDK from .sdkconfiguration import SDKConfiguration -from glean.api_client.agents import Agents from glean.api_client.announcements import Announcements from glean.api_client.answers import Answers from glean.api_client.client_activity import ClientActivity +from glean.api_client.client_agents import ClientAgents from glean.api_client.client_authentication import ClientAuthentication from glean.api_client.client_chat import ClientChat +from glean.api_client.client_datasources import ClientDatasources from glean.api_client.client_documents import ClientDocuments -from glean.api_client.client_governance import ClientGovernance +from glean.api_client.client_search import ClientSearch from glean.api_client.client_shortcuts import ClientShortcuts from glean.api_client.client_verification import ClientVerification from glean.api_client.collections import Collections from glean.api_client.entities import Entities +from glean.api_client.governance import Governance from glean.api_client.insights import Insights from glean.api_client.messages import Messages from glean.api_client.pins import Pins -from glean.api_client.search import Search from glean.api_client.tools import Tools from typing import Optional @@ -28,18 +29,19 @@ class Client(BaseSDK): answers: Answers authentication: ClientAuthentication chat: ClientChat - agents: Agents + agents: ClientAgents collections: Collections documents: ClientDocuments insights: Insights messages: Messages pins: Pins - search: Search + search: ClientSearch entities: Entities shortcuts: ClientShortcuts verification: ClientVerification tools: Tools - governance: ClientGovernance + governance: Governance + datasources: ClientDatasources def __init__( self, sdk_config: SDKConfiguration, parent_ref: Optional[object] = None @@ -60,7 +62,7 @@ def _init_sdks(self): self.sdk_configuration, parent_ref=self.parent_ref ) self.chat = ClientChat(self.sdk_configuration, parent_ref=self.parent_ref) - self.agents = Agents(self.sdk_configuration, parent_ref=self.parent_ref) + self.agents = ClientAgents(self.sdk_configuration, parent_ref=self.parent_ref) self.collections = Collections( self.sdk_configuration, parent_ref=self.parent_ref ) @@ -70,7 +72,7 @@ def _init_sdks(self): self.insights = Insights(self.sdk_configuration, parent_ref=self.parent_ref) self.messages = Messages(self.sdk_configuration, parent_ref=self.parent_ref) self.pins = Pins(self.sdk_configuration, parent_ref=self.parent_ref) - self.search = Search(self.sdk_configuration, parent_ref=self.parent_ref) + self.search = ClientSearch(self.sdk_configuration, parent_ref=self.parent_ref) self.entities = Entities(self.sdk_configuration, parent_ref=self.parent_ref) self.shortcuts = ClientShortcuts( self.sdk_configuration, parent_ref=self.parent_ref @@ -79,6 +81,7 @@ def _init_sdks(self): self.sdk_configuration, parent_ref=self.parent_ref ) self.tools = Tools(self.sdk_configuration, parent_ref=self.parent_ref) - self.governance = ClientGovernance( + self.governance = Governance(self.sdk_configuration, parent_ref=self.parent_ref) + self.datasources = ClientDatasources( self.sdk_configuration, parent_ref=self.parent_ref ) diff --git a/src/glean/api_client/client_activity.py b/src/glean/api_client/client_activity.py index 51e6d222..42aa2ffc 100644 --- a/src/glean/api_client/client_activity.py +++ b/src/glean/api_client/client_activity.py @@ -5,14 +5,16 @@ 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 typing import List, Mapping, Optional, Union +from typing import Iterable, List, Mapping, Optional, Union class ClientActivity(BaseSDK): def report( self, *, - events: Union[List[models.ActivityEvent], List[models.ActivityEventTypedDict]], + events: Union[ + Iterable[models.ActivityEvent], Iterable[models.ActivityEventTypedDict] + ], retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -79,9 +81,14 @@ def report( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Activity"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -99,7 +106,9 @@ def report( async def report_async( self, *, - events: Union[List[models.ActivityEvent], List[models.ActivityEventTypedDict]], + events: Union[ + Iterable[models.ActivityEvent], Iterable[models.ActivityEventTypedDict] + ], retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -166,9 +175,14 @@ async def report_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Activity"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -233,7 +247,11 @@ def feedback( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request.feedback1, False, True, "json", Optional[models.Feedback] + request.feedback1 if request is not None else None, + False, + True, + "json", + Optional[models.Feedback], ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -256,9 +274,14 @@ def feedback( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Activity"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -323,7 +346,11 @@ async def feedback_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request.feedback1, False, True, "json", Optional[models.Feedback] + request.feedback1 if request is not None else None, + False, + True, + "json", + Optional[models.Feedback], ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -346,9 +373,14 @@ async def feedback_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Activity"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/glean/api_client/client_agents.py b/src/glean/api_client/client_agents.py new file mode 100644 index 00000000..81424056 --- /dev/null +++ b/src/glean/api_client/client_agents.py @@ -0,0 +1,1699 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from .basesdk import BaseSDK +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.unmarshal_json_response import unmarshal_json_response +from typing import Any, Dict, Iterable, List, Mapping, Optional, Union + + +class ClientAgents(BaseSDK): + def create( + self, + *, + locale: Optional[str] = None, + timezone_offset: Optional[int] = None, + name: Optional[str] = None, + transient: Optional[bool] = None, + parent_workflow_id: Optional[str] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.WorkflowResult: + r"""Create an agent + + Create an agent. + + :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 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 name: The name of the workflow. + :param transient: Used to create a transient workflow. + :param parent_workflow_id: id of the parent workflow for transient workflows + :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.CreateAgentRequest( + locale=locale, + timezone_offset=timezone_offset, + create_workflow_request=models.CreateWorkflowRequest( + name=name, + transient=transient, + parent_workflow_id=parent_workflow_id, + ), + ) + + req = self._build_request( + method="POST", + path="/rest/api/v1/agents", + 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="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request.create_workflow_request, + False, + False, + "json", + models.CreateWorkflowRequest, + ), + 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="createAgent", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Agents"], + extensions={"x-visibility": "Preview"}, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.WorkflowResult, http_res) + if utils.match_response(http_res, ["400", "401", "403", "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, ["500", "5XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.GleanError("API error occurred", http_res, http_res_text) + + raise errors.GleanError("Unexpected response received", http_res) + + async def create_async( + self, + *, + locale: Optional[str] = None, + timezone_offset: Optional[int] = None, + name: Optional[str] = None, + transient: Optional[bool] = None, + parent_workflow_id: Optional[str] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.WorkflowResult: + r"""Create an agent + + Create an agent. + + :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 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 name: The name of the workflow. + :param transient: Used to create a transient workflow. + :param parent_workflow_id: id of the parent workflow for transient workflows + :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.CreateAgentRequest( + locale=locale, + timezone_offset=timezone_offset, + create_workflow_request=models.CreateWorkflowRequest( + name=name, + transient=transient, + parent_workflow_id=parent_workflow_id, + ), + ) + + req = self._build_request_async( + method="POST", + path="/rest/api/v1/agents", + 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="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request.create_workflow_request, + False, + False, + "json", + models.CreateWorkflowRequest, + ), + 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="createAgent", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Agents"], + extensions={"x-visibility": "Preview"}, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.WorkflowResult, http_res) + if utils.match_response(http_res, ["400", "401", "403", "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, ["500", "5XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.GleanError("API error occurred", http_res, http_res_text) + + raise errors.GleanError("Unexpected response received", http_res) + + def retrieve( + self, + *, + agent_id: str, + locale: Optional[str] = None, + timezone_offset: Optional[int] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.Agent: + r"""Retrieve an agent + + Returns details of an [agent](https://developers.glean.com/agents/agents-api) created in the Agent Builder. + + :param agent_id: The ID of the agent. + :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 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 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.GetAgentRequest( + locale=locale, + timezone_offset=timezone_offset, + agent_id=agent_id, + ) + + req = self._build_request( + method="GET", + path="/rest/api/v1/agents/{agent_id}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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="getAgent", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Agents"], + extensions={"x-visibility": "Preview"}, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.Agent, http_res) + if utils.match_response(http_res, "404", "application/json"): + response_data = unmarshal_json_response(errors.ErrorResponseData, http_res) + raise errors.ErrorResponse(response_data, http_res) + if utils.match_response(http_res, ["400", "403", "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, ["500", "5XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.GleanError("API error occurred", http_res, http_res_text) + + raise errors.GleanError("Unexpected response received", http_res) + + async def retrieve_async( + self, + *, + agent_id: str, + locale: Optional[str] = None, + timezone_offset: Optional[int] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.Agent: + r"""Retrieve an agent + + Returns details of an [agent](https://developers.glean.com/agents/agents-api) created in the Agent Builder. + + :param agent_id: The ID of the agent. + :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 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 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.GetAgentRequest( + locale=locale, + timezone_offset=timezone_offset, + agent_id=agent_id, + ) + + req = self._build_request_async( + method="GET", + path="/rest/api/v1/agents/{agent_id}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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="getAgent", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Agents"], + extensions={"x-visibility": "Preview"}, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.Agent, http_res) + if utils.match_response(http_res, "404", "application/json"): + response_data = unmarshal_json_response(errors.ErrorResponseData, http_res) + raise errors.ErrorResponse(response_data, http_res) + if utils.match_response(http_res, ["400", "403", "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, ["500", "5XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.GleanError("API error occurred", http_res, http_res_text) + + raise errors.GleanError("Unexpected response received", http_res) + + def update( + self, + *, + agent_id: str, + locale: Optional[str] = None, + timezone_offset: Optional[int] = None, + name: Optional[str] = None, + id: Optional[str] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ): + r"""Edit an agent + + Creates a draft or publishes an [agent](https://developers.glean.com/agents/agents-api). Use `isDraft=true` to save a draft, or `isDraft=false` (or omit) to publish immediately. Only draft and publish modes are supported. + + :param agent_id: The ID of the agent. + :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 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 name: The name of the workflow. + :param id: The workflow ID we want to update. + :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.EditAgentRequest( + locale=locale, + timezone_offset=timezone_offset, + agent_id=agent_id, + edit_workflow_request=models.EditWorkflowRequest( + name=name, + id=id, + ), + ) + + req = self._build_request( + method="POST", + path="/rest/api/v1/agents/{agent_id}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=True, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request.edit_workflow_request, + False, + False, + "json", + models.EditWorkflowRequest, + ), + 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="editAgent", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Agents"], + extensions={"x-visibility": "Preview"}, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "*"): + return + if utils.match_response(http_res, "404", "application/json"): + response_data = unmarshal_json_response(errors.ErrorResponseData, http_res) + raise errors.ErrorResponse(response_data, http_res) + if utils.match_response(http_res, ["400", "401", "403", "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, ["500", "5XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.GleanError("API error occurred", http_res, http_res_text) + + raise errors.GleanError("Unexpected response received", http_res) + + async def update_async( + self, + *, + agent_id: str, + locale: Optional[str] = None, + timezone_offset: Optional[int] = None, + name: Optional[str] = None, + id: Optional[str] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ): + r"""Edit an agent + + Creates a draft or publishes an [agent](https://developers.glean.com/agents/agents-api). Use `isDraft=true` to save a draft, or `isDraft=false` (or omit) to publish immediately. Only draft and publish modes are supported. + + :param agent_id: The ID of the agent. + :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 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 name: The name of the workflow. + :param id: The workflow ID we want to update. + :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.EditAgentRequest( + locale=locale, + timezone_offset=timezone_offset, + agent_id=agent_id, + edit_workflow_request=models.EditWorkflowRequest( + name=name, + id=id, + ), + ) + + req = self._build_request_async( + method="POST", + path="/rest/api/v1/agents/{agent_id}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=True, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request.edit_workflow_request, + False, + False, + "json", + models.EditWorkflowRequest, + ), + 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="editAgent", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Agents"], + extensions={"x-visibility": "Preview"}, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "*"): + return + if utils.match_response(http_res, "404", "application/json"): + response_data = unmarshal_json_response(errors.ErrorResponseData, http_res) + raise errors.ErrorResponse(response_data, http_res) + if utils.match_response(http_res, ["400", "401", "403", "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, ["500", "5XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.GleanError("API error occurred", http_res, http_res_text) + + raise errors.GleanError("Unexpected response received", http_res) + + def retrieve_schemas( + self, + *, + agent_id: str, + locale: Optional[str] = None, + timezone_offset: Optional[int] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.AgentSchemas: + r"""List an agent's schemas + + Return [agent](https://developers.glean.com/agents/agents-api)'s input and output schemas. You can use these schemas to detect changes to an agent's input or output structure. + + :param agent_id: The ID of the agent. + :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 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 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.GetAgentSchemasRequest( + locale=locale, + timezone_offset=timezone_offset, + agent_id=agent_id, + ) + + req = self._build_request( + method="GET", + path="/rest/api/v1/agents/{agent_id}/schemas", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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="getAgentSchemas", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Agents"], + extensions={"x-visibility": "Preview"}, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.AgentSchemas, http_res) + if utils.match_response(http_res, ["404", "422"], "application/json"): + response_data = unmarshal_json_response(errors.ErrorResponseData, http_res) + raise errors.ErrorResponse(response_data, http_res) + if utils.match_response(http_res, ["400", "403", "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, ["500", "5XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.GleanError("API error occurred", http_res, http_res_text) + + raise errors.GleanError("Unexpected response received", http_res) + + async def retrieve_schemas_async( + self, + *, + agent_id: str, + locale: Optional[str] = None, + timezone_offset: Optional[int] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.AgentSchemas: + r"""List an agent's schemas + + Return [agent](https://developers.glean.com/agents/agents-api)'s input and output schemas. You can use these schemas to detect changes to an agent's input or output structure. + + :param agent_id: The ID of the agent. + :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 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 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.GetAgentSchemasRequest( + locale=locale, + timezone_offset=timezone_offset, + agent_id=agent_id, + ) + + req = self._build_request_async( + method="GET", + path="/rest/api/v1/agents/{agent_id}/schemas", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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="getAgentSchemas", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Agents"], + extensions={"x-visibility": "Preview"}, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.AgentSchemas, http_res) + if utils.match_response(http_res, ["404", "422"], "application/json"): + response_data = unmarshal_json_response(errors.ErrorResponseData, http_res) + raise errors.ErrorResponse(response_data, http_res) + if utils.match_response(http_res, ["400", "403", "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, ["500", "5XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.GleanError("API error occurred", http_res, http_res_text) + + raise errors.GleanError("Unexpected response received", http_res) + + def import_( + self, + *, + agent_id: str, + bundle: Union[models.Bundle, models.BundleTypedDict], + locale: Optional[str] = None, + timezone_offset: Optional[int] = None, + git_commit_sha: Optional[str] = None, + git_author_id: Optional[str] = None, + commit_message: Optional[str] = None, + sync_mode: Optional[models.ImportAgentSyncMode] = None, + is_draft: Optional[bool] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.ImportAgentResponse: + r"""Import an agent + + Imports an [agent](https://developers.glean.com/agents/agents-api) from its on-disk folder representation (spec.yaml, instructions.md, skills/, subagents/) packaged as a zip, and creates or updates the agent. Inverse of the export flow: the folder-to-schema conversion runs server-side. The bundle must contain only regular files; symlinks are resolved by the caller at packaging time. + + :param agent_id: The ID of the agent to create or update. + :param bundle: Zip of the agent folder (spec.yaml, instructions.md, skills/, subagents/) with symlinks dereferenced. + + :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 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 git_commit_sha: Optional Git commit SHA to associate with this import. + :param git_author_id: Optional VCS commit author ID to associate with this import. + :param commit_message: Optional commit message for the imported version. + :param sync_mode: Whether the imported version is staged (saved without updating the live version) or published directly to the live version. + + :param is_draft: When true, validates and stores a draft preview without publishing (used for PR preview links). Takes precedence over `syncMode`: when `isDraft` is true, `syncMode` is ignored. + + :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.ImportAgentRequestRequest( + locale=locale, + timezone_offset=timezone_offset, + agent_id=agent_id, + import_agent_request=models.ImportAgentRequest( + bundle=utils.get_pydantic_model(bundle, models.Bundle), + git_commit_sha=git_commit_sha, + git_author_id=git_author_id, + commit_message=commit_message, + sync_mode=sync_mode, + is_draft=is_draft, + ), + ) + + req = self._build_request( + method="POST", + path="/rest/api/v1/agents/{agent_id}/import", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=True, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request.import_agent_request, + False, + False, + "multipart", + models.ImportAgentRequest, + ), + 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="importAgent", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Agents"], + extensions={"x-visibility": "Preview"}, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.ImportAgentResponse, http_res) + if utils.match_response(http_res, "404", "application/json"): + response_data = unmarshal_json_response(errors.ErrorResponseData, http_res) + raise errors.ErrorResponse(response_data, http_res) + if utils.match_response(http_res, ["400", "401", "403", "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, ["500", "5XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.GleanError("API error occurred", http_res, http_res_text) + + raise errors.GleanError("Unexpected response received", http_res) + + async def import__async( + self, + *, + agent_id: str, + bundle: Union[models.Bundle, models.BundleTypedDict], + locale: Optional[str] = None, + timezone_offset: Optional[int] = None, + git_commit_sha: Optional[str] = None, + git_author_id: Optional[str] = None, + commit_message: Optional[str] = None, + sync_mode: Optional[models.ImportAgentSyncMode] = None, + is_draft: Optional[bool] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.ImportAgentResponse: + r"""Import an agent + + Imports an [agent](https://developers.glean.com/agents/agents-api) from its on-disk folder representation (spec.yaml, instructions.md, skills/, subagents/) packaged as a zip, and creates or updates the agent. Inverse of the export flow: the folder-to-schema conversion runs server-side. The bundle must contain only regular files; symlinks are resolved by the caller at packaging time. + + :param agent_id: The ID of the agent to create or update. + :param bundle: Zip of the agent folder (spec.yaml, instructions.md, skills/, subagents/) with symlinks dereferenced. + + :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 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 git_commit_sha: Optional Git commit SHA to associate with this import. + :param git_author_id: Optional VCS commit author ID to associate with this import. + :param commit_message: Optional commit message for the imported version. + :param sync_mode: Whether the imported version is staged (saved without updating the live version) or published directly to the live version. + + :param is_draft: When true, validates and stores a draft preview without publishing (used for PR preview links). Takes precedence over `syncMode`: when `isDraft` is true, `syncMode` is ignored. + + :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.ImportAgentRequestRequest( + locale=locale, + timezone_offset=timezone_offset, + agent_id=agent_id, + import_agent_request=models.ImportAgentRequest( + bundle=utils.get_pydantic_model(bundle, models.Bundle), + git_commit_sha=git_commit_sha, + git_author_id=git_author_id, + commit_message=commit_message, + sync_mode=sync_mode, + is_draft=is_draft, + ), + ) + + req = self._build_request_async( + method="POST", + path="/rest/api/v1/agents/{agent_id}/import", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=True, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request.import_agent_request, + False, + False, + "multipart", + models.ImportAgentRequest, + ), + 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="importAgent", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Agents"], + extensions={"x-visibility": "Preview"}, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.ImportAgentResponse, http_res) + if utils.match_response(http_res, "404", "application/json"): + response_data = unmarshal_json_response(errors.ErrorResponseData, http_res) + raise errors.ErrorResponse(response_data, http_res) + if utils.match_response(http_res, ["400", "401", "403", "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, ["500", "5XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.GleanError("API error occurred", http_res, http_res_text) + + raise errors.GleanError("Unexpected response received", http_res) + + def list( + self, + *, + name: Optional[str] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.SearchAgentsResponse: + r"""Search agents + + Search for [agents](https://developers.glean.com/agents/agents-api) by agent name. + + :param name: Filters on the name of the agent. The keyword search is case-insensitive. If search string is ommited or empty, acts as no filter. + :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.SearchAgentsRequest( + name=name, + ) + + req = self._build_request( + method="POST", + path="/rest/api/v1/agents/search", + 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="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request, False, False, "json", models.SearchAgentsRequest + ), + 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="searchAgents", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Agents"], + extensions={"x-visibility": "Preview"}, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.SearchAgentsResponse, http_res) + if utils.match_response(http_res, ["404", "422"], "application/json"): + response_data = unmarshal_json_response(errors.ErrorResponseData, http_res) + raise errors.ErrorResponse(response_data, http_res) + if utils.match_response(http_res, ["400", "403", "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, ["500", "5XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.GleanError("API error occurred", http_res, http_res_text) + + raise errors.GleanError("Unexpected response received", http_res) + + async def list_async( + self, + *, + name: Optional[str] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.SearchAgentsResponse: + r"""Search agents + + Search for [agents](https://developers.glean.com/agents/agents-api) by agent name. + + :param name: Filters on the name of the agent. The keyword search is case-insensitive. If search string is ommited or empty, acts as no filter. + :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.SearchAgentsRequest( + name=name, + ) + + req = self._build_request_async( + method="POST", + path="/rest/api/v1/agents/search", + 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="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request, False, False, "json", models.SearchAgentsRequest + ), + 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="searchAgents", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Agents"], + extensions={"x-visibility": "Preview"}, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.SearchAgentsResponse, http_res) + if utils.match_response(http_res, ["404", "422"], "application/json"): + response_data = unmarshal_json_response(errors.ErrorResponseData, http_res) + raise errors.ErrorResponse(response_data, http_res) + if utils.match_response(http_res, ["400", "403", "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, ["500", "5XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.GleanError("API error occurred", http_res, http_res_text) + + raise errors.GleanError("Unexpected response received", http_res) + + def run_stream( + self, + *, + agent_id: str, + input: Optional[Mapping[str, Any]] = None, + messages: Optional[ + Union[Iterable[models.Message], Iterable[models.MessageTypedDict]] + ] = None, + metadata: Optional[Mapping[str, Any]] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> str: + r"""Create an agent run and stream the response + + Executes an [agent](https://developers.glean.com/agents/agents-api) run and returns the result as a stream of server-sent events (SSE). **Note**: If the agent uses an input form trigger, all form fields (including optional fields) must be included in the `input` object. + + :param agent_id: The ID of the agent to run. + :param input: The input to the agent. Required when the agent uses an input form trigger. + :param messages: The messages to pass an input to the agent. + :param metadata: The metadata to pass to the agent. + :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.AgentRunCreate( + agent_id=agent_id, + input=utils.unmarshal(input, Optional[Dict[str, Any]]), + messages=utils.get_pydantic_model(messages, Optional[List[models.Message]]), + metadata=utils.unmarshal(metadata, Optional[Dict[str, Any]]), + ) + + req = self._build_request( + method="POST", + path="/rest/api/v1/agents/runs/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.AgentRunCreate + ), + 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="createAndStreamRun", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Agents"], + extensions={"x-visibility": "Preview"}, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "text/event-stream"): + return http_res.text + if utils.match_response(http_res, ["404", "409"], "application/json"): + response_data = unmarshal_json_response(errors.ErrorResponseData, http_res) + raise errors.ErrorResponse(response_data, http_res) + if utils.match_response(http_res, "422", "application/json"): + response_data = unmarshal_json_response( + errors.UnauthorizedAgentToolsErrorData, http_res + ) + raise errors.UnauthorizedAgentToolsError(response_data, http_res) + if utils.match_response(http_res, ["400", "403", "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, ["500", "5XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.GleanError("API error occurred", http_res, http_res_text) + + raise errors.GleanError("Unexpected response received", http_res) + + async def run_stream_async( + self, + *, + agent_id: str, + input: Optional[Mapping[str, Any]] = None, + messages: Optional[ + Union[Iterable[models.Message], Iterable[models.MessageTypedDict]] + ] = None, + metadata: Optional[Mapping[str, Any]] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> str: + r"""Create an agent run and stream the response + + Executes an [agent](https://developers.glean.com/agents/agents-api) run and returns the result as a stream of server-sent events (SSE). **Note**: If the agent uses an input form trigger, all form fields (including optional fields) must be included in the `input` object. + + :param agent_id: The ID of the agent to run. + :param input: The input to the agent. Required when the agent uses an input form trigger. + :param messages: The messages to pass an input to the agent. + :param metadata: The metadata to pass to the agent. + :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.AgentRunCreate( + agent_id=agent_id, + input=utils.unmarshal(input, Optional[Dict[str, Any]]), + messages=utils.get_pydantic_model(messages, Optional[List[models.Message]]), + metadata=utils.unmarshal(metadata, Optional[Dict[str, Any]]), + ) + + req = self._build_request_async( + method="POST", + path="/rest/api/v1/agents/runs/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.AgentRunCreate + ), + 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="createAndStreamRun", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Agents"], + extensions={"x-visibility": "Preview"}, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "text/event-stream"): + return http_res.text + if utils.match_response(http_res, ["404", "409"], "application/json"): + response_data = unmarshal_json_response(errors.ErrorResponseData, http_res) + raise errors.ErrorResponse(response_data, http_res) + if utils.match_response(http_res, "422", "application/json"): + response_data = unmarshal_json_response( + errors.UnauthorizedAgentToolsErrorData, http_res + ) + raise errors.UnauthorizedAgentToolsError(response_data, http_res) + if utils.match_response(http_res, ["400", "403", "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, ["500", "5XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.GleanError("API error occurred", http_res, http_res_text) + + raise errors.GleanError("Unexpected response received", http_res) + + def run( + self, + *, + agent_id: str, + input: Optional[Mapping[str, Any]] = None, + messages: Optional[ + Union[Iterable[models.Message], Iterable[models.MessageTypedDict]] + ] = None, + metadata: Optional[Mapping[str, Any]] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.AgentRunWaitResponse: + r"""Create an agent run and wait for the response + + Executes an [agent](https://developers.glean.com/agents/agents-api) run and returns the final response. **Note**: If the agent uses an input form trigger, all form fields (including optional fields) must be included in the `input` object. + + :param agent_id: The ID of the agent to run. + :param input: The input to the agent. Required when the agent uses an input form trigger. + :param messages: The messages to pass an input to the agent. + :param metadata: The metadata to pass to the agent. + :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.AgentRunCreate( + agent_id=agent_id, + input=utils.unmarshal(input, Optional[Dict[str, Any]]), + messages=utils.get_pydantic_model(messages, Optional[List[models.Message]]), + metadata=utils.unmarshal(metadata, Optional[Dict[str, Any]]), + ) + + req = self._build_request( + method="POST", + path="/rest/api/v1/agents/runs/wait", + 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="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request, False, False, "json", models.AgentRunCreate + ), + 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="createAndWaitRun", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Agents"], + extensions={"x-visibility": "Preview"}, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.AgentRunWaitResponse, http_res) + if utils.match_response(http_res, "422", "application/json"): + response_data = unmarshal_json_response( + errors.UnauthorizedAgentToolsErrorData, http_res + ) + raise errors.UnauthorizedAgentToolsError(response_data, http_res) + if utils.match_response(http_res, ["400", "403", "404", "409", "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, ["500", "5XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.GleanError("API error occurred", http_res, http_res_text) + + raise errors.GleanError("Unexpected response received", http_res) + + async def run_async( + self, + *, + agent_id: str, + input: Optional[Mapping[str, Any]] = None, + messages: Optional[ + Union[Iterable[models.Message], Iterable[models.MessageTypedDict]] + ] = None, + metadata: Optional[Mapping[str, Any]] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.AgentRunWaitResponse: + r"""Create an agent run and wait for the response + + Executes an [agent](https://developers.glean.com/agents/agents-api) run and returns the final response. **Note**: If the agent uses an input form trigger, all form fields (including optional fields) must be included in the `input` object. + + :param agent_id: The ID of the agent to run. + :param input: The input to the agent. Required when the agent uses an input form trigger. + :param messages: The messages to pass an input to the agent. + :param metadata: The metadata to pass to the agent. + :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.AgentRunCreate( + agent_id=agent_id, + input=utils.unmarshal(input, Optional[Dict[str, Any]]), + messages=utils.get_pydantic_model(messages, Optional[List[models.Message]]), + metadata=utils.unmarshal(metadata, Optional[Dict[str, Any]]), + ) + + req = self._build_request_async( + method="POST", + path="/rest/api/v1/agents/runs/wait", + 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="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request, False, False, "json", models.AgentRunCreate + ), + 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="createAndWaitRun", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Agents"], + extensions={"x-visibility": "Preview"}, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.AgentRunWaitResponse, http_res) + if utils.match_response(http_res, "422", "application/json"): + response_data = unmarshal_json_response( + errors.UnauthorizedAgentToolsErrorData, http_res + ) + raise errors.UnauthorizedAgentToolsError(response_data, http_res) + if utils.match_response(http_res, ["400", "403", "404", "409", "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, ["500", "5XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.GleanError("API error occurred", http_res, http_res_text) + + raise errors.GleanError("Unexpected response received", http_res) diff --git a/src/glean/api_client/client_authentication.py b/src/glean/api_client/client_authentication.py index 74cc8006..9cd4f878 100644 --- a/src/glean/api_client/client_authentication.py +++ b/src/glean/api_client/client_authentication.py @@ -10,6 +10,178 @@ class ClientAuthentication(BaseSDK): + def check_datasource_auth( + self, + *, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.CheckDatasourceAuthResponse: + r"""Check datasource authorization + + Returns all datasource instances that require per-user OAuth authorization + for the authenticated user, along with a transient auth token that can be + appended to auth URLs to complete OAuth flows. + + Clients construct the full OAuth URL by combining the backend base URL, + the `authUrlRelativePath` from each instance, and the transient auth token: + `/?transient_auth_token=`. + + + :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) + req = self._build_request( + method="POST", + path="/rest/api/v1/checkdatasourceauth", + base_url=base_url, + url_variables=url_variables, + request=None, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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="checkdatasourceauth", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Authentication"], + extensions={"x-visibility": "Public"}, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.CheckDatasourceAuthResponse, http_res) + if utils.match_response(http_res, ["401", "429", "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) + + raise errors.GleanError("Unexpected response received", http_res) + + async def check_datasource_auth_async( + self, + *, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.CheckDatasourceAuthResponse: + r"""Check datasource authorization + + Returns all datasource instances that require per-user OAuth authorization + for the authenticated user, along with a transient auth token that can be + appended to auth URLs to complete OAuth flows. + + Clients construct the full OAuth URL by combining the backend base URL, + the `authUrlRelativePath` from each instance, and the transient auth token: + `/?transient_auth_token=`. + + + :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) + req = self._build_request_async( + method="POST", + path="/rest/api/v1/checkdatasourceauth", + base_url=base_url, + url_variables=url_variables, + request=None, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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="checkdatasourceauth", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Authentication"], + extensions={"x-visibility": "Public"}, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.CheckDatasourceAuthResponse, http_res) + if utils.match_response(http_res, ["401", "429", "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) + + raise errors.GleanError("Unexpected response received", http_res) + def create_token( self, *, @@ -75,9 +247,11 @@ def create_token( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Authentication"], + extensions={"x-visibility": "Public"}, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -157,9 +331,11 @@ async def create_token_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Authentication"], + extensions={"x-visibility": "Public"}, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/glean/api_client/client_chat.py b/src/glean/api_client/client_chat.py index 5c0eb9c1..1095d5f1 100644 --- a/src/glean/api_client/client_chat.py +++ b/src/glean/api_client/client_chat.py @@ -6,14 +6,18 @@ from glean.api_client.types import OptionalNullable, UNSET from glean.api_client.utils import get_security_from_env from glean.api_client.utils.unmarshal_json_response import unmarshal_json_response -from typing import List, Mapping, Optional, Union +import httpx +from typing import Any, Iterable, List, Mapping, Optional, Union class ClientChat(BaseSDK): def create( self, *, - messages: Union[List[models.ChatMessage], List[models.ChatMessageTypedDict]], + messages: Union[ + Iterable[models.ChatMessage], Iterable[models.ChatMessageTypedDict] + ], + locale: Optional[str] = None, timezone_offset: Optional[int] = None, session_info: Optional[ Union[models.SessionInfo, models.SessionInfoTypedDict] @@ -43,6 +47,7 @@ def create( Have a conversation with Glean AI. :param messages: A list of chat messages, from most recent to least recent. At least one message must specify a USER author. + :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 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 session_info: :param save_chat: Save the current interaction as a Chat for the user to access and potentially continue later. @@ -70,6 +75,7 @@ def create( base_url = self._get_url(base_url, url_variables) request = models.ChatRequestRequest( + locale=locale, timezone_offset=timezone_offset, chat_request=models.ChatRequest( messages=utils.get_pydantic_model(messages, List[models.ChatMessage]), @@ -131,13 +137,18 @@ def create( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Chat"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "408", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) - if utils.match_response(http_res, "200", "application/json"): + if utils.match_response(http_res, ["200", "202"], "application/json"): return unmarshal_json_response(models.ChatResponse, http_res) if utils.match_response(http_res, ["400", "401", "408", "429", "4XX"], "*"): http_res_text = utils.stream_to_text(http_res) @@ -151,7 +162,10 @@ def create( async def create_async( self, *, - messages: Union[List[models.ChatMessage], List[models.ChatMessageTypedDict]], + messages: Union[ + Iterable[models.ChatMessage], Iterable[models.ChatMessageTypedDict] + ], + locale: Optional[str] = None, timezone_offset: Optional[int] = None, session_info: Optional[ Union[models.SessionInfo, models.SessionInfoTypedDict] @@ -181,6 +195,7 @@ async def create_async( Have a conversation with Glean AI. :param messages: A list of chat messages, from most recent to least recent. At least one message must specify a USER author. + :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 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 session_info: :param save_chat: Save the current interaction as a Chat for the user to access and potentially continue later. @@ -208,6 +223,7 @@ async def create_async( base_url = self._get_url(base_url, url_variables) request = models.ChatRequestRequest( + locale=locale, timezone_offset=timezone_offset, chat_request=models.ChatRequest( messages=utils.get_pydantic_model(messages, List[models.ChatMessage]), @@ -269,13 +285,18 @@ async def create_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Chat"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "408", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) - if utils.match_response(http_res, "200", "application/json"): + if utils.match_response(http_res, ["200", "202"], "application/json"): return unmarshal_json_response(models.ChatResponse, http_res) if utils.match_response(http_res, ["400", "401", "408", "429", "4XX"], "*"): http_res_text = await utils.stream_to_text_async(http_res) @@ -289,6 +310,7 @@ async def create_async( def delete_all( self, *, + locale: Optional[str] = None, timezone_offset: Optional[int] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -299,6 +321,7 @@ def delete_all( Deletes all saved Chats a user has had and all their contained conversational content. + :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 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 retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -316,6 +339,7 @@ def delete_all( base_url = self._get_url(base_url, url_variables) request = models.DeleteallchatsRequest( + locale=locale, timezone_offset=timezone_offset, ) @@ -353,9 +377,14 @@ def delete_all( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Chat"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "403", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -373,6 +402,7 @@ def delete_all( async def delete_all_async( self, *, + locale: Optional[str] = None, timezone_offset: Optional[int] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -383,6 +413,7 @@ async def delete_all_async( Deletes all saved Chats a user has had and all their contained conversational content. + :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 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 retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -400,6 +431,7 @@ async def delete_all_async( base_url = self._get_url(base_url, url_variables) request = models.DeleteallchatsRequest( + locale=locale, timezone_offset=timezone_offset, ) @@ -437,9 +469,14 @@ async def delete_all_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Chat"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "403", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -457,7 +494,8 @@ async def delete_all_async( def delete( self, *, - ids: List[str], + ids: Iterable[str], + locale: Optional[str] = None, timezone_offset: Optional[int] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -469,6 +507,7 @@ def delete( Deletes saved Chats and all their contained conversational content. :param ids: A non-empty list of ids of the Chats to be deleted. + :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 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 retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -486,9 +525,10 @@ def delete( base_url = self._get_url(base_url, url_variables) request = models.DeletechatsRequestRequest( + locale=locale, timezone_offset=timezone_offset, delete_chats_request=models.DeleteChatsRequest( - ids=ids, + ids=utils.unmarshal(ids, List[str]), ), ) @@ -533,9 +573,14 @@ def delete( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Chat"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "403", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -553,7 +598,8 @@ def delete( async def delete_async( self, *, - ids: List[str], + ids: Iterable[str], + locale: Optional[str] = None, timezone_offset: Optional[int] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -565,6 +611,7 @@ async def delete_async( Deletes saved Chats and all their contained conversational content. :param ids: A non-empty list of ids of the Chats to be deleted. + :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 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 retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -582,9 +629,10 @@ async def delete_async( base_url = self._get_url(base_url, url_variables) request = models.DeletechatsRequestRequest( + locale=locale, timezone_offset=timezone_offset, delete_chats_request=models.DeleteChatsRequest( - ids=ids, + ids=utils.unmarshal(ids, List[str]), ), ) @@ -629,9 +677,14 @@ async def delete_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Chat"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "403", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -650,6 +703,7 @@ def retrieve( self, *, id: str, + locale: Optional[str] = None, timezone_offset: Optional[int] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -661,6 +715,7 @@ def retrieve( Retrieves the chat history between Glean Assistant and the user for a given Chat. :param id: The id of the Chat to be retrieved. + :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 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 retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -678,6 +733,7 @@ def retrieve( base_url = self._get_url(base_url, url_variables) request = models.GetchatRequestRequest( + locale=locale, timezone_offset=timezone_offset, get_chat_request=models.GetChatRequest( id=id, @@ -721,15 +777,28 @@ def retrieve( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Chat"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "403", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) + response_data: Any = None if utils.match_response(http_res, "200", "application/json"): return unmarshal_json_response(models.GetChatResponse, http_res) - if utils.match_response(http_res, ["400", "401", "403", "429", "4XX"], "*"): + if utils.match_response(http_res, "403", "application/json"): + response_data = unmarshal_json_response( + errors.AccessRequestPermissionDeniedResponseErrorData, http_res + ) + raise errors.AccessRequestPermissionDeniedResponseError( + response_data, http_res + ) + if utils.match_response(http_res, ["400", "401", "429", "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", "*"): @@ -742,6 +811,7 @@ async def retrieve_async( self, *, id: str, + locale: Optional[str] = None, timezone_offset: Optional[int] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -753,6 +823,7 @@ async def retrieve_async( Retrieves the chat history between Glean Assistant and the user for a given Chat. :param id: The id of the Chat to be retrieved. + :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 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 retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -770,6 +841,7 @@ async def retrieve_async( base_url = self._get_url(base_url, url_variables) request = models.GetchatRequestRequest( + locale=locale, timezone_offset=timezone_offset, get_chat_request=models.GetChatRequest( id=id, @@ -813,15 +885,28 @@ async def retrieve_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Chat"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "403", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) + response_data: Any = None if utils.match_response(http_res, "200", "application/json"): return unmarshal_json_response(models.GetChatResponse, http_res) - if utils.match_response(http_res, ["400", "401", "403", "429", "4XX"], "*"): + if utils.match_response(http_res, "403", "application/json"): + response_data = unmarshal_json_response( + errors.AccessRequestPermissionDeniedResponseErrorData, http_res + ) + raise errors.AccessRequestPermissionDeniedResponseError( + response_data, http_res + ) + if utils.match_response(http_res, ["400", "401", "429", "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", "*"): @@ -833,6 +918,7 @@ async def retrieve_async( def list( self, *, + locale: Optional[str] = None, timezone_offset: Optional[int] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -843,6 +929,7 @@ def list( Retrieves all the saved Chats between Glean Assistant and the user. The returned Chats contain only metadata and no conversational content. + :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 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 retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -860,6 +947,7 @@ def list( base_url = self._get_url(base_url, url_variables) request = models.ListchatsRequest( + locale=locale, timezone_offset=timezone_offset, ) @@ -897,9 +985,14 @@ def list( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Chat"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["401", "403", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -917,6 +1010,7 @@ def list( async def list_async( self, *, + locale: Optional[str] = None, timezone_offset: Optional[int] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -927,6 +1021,7 @@ async def list_async( Retrieves all the saved Chats between Glean Assistant and the user. The returned Chats contain only metadata and no conversational content. + :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 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 retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -944,6 +1039,7 @@ async def list_async( base_url = self._get_url(base_url, url_variables) request = models.ListchatsRequest( + locale=locale, timezone_offset=timezone_offset, ) @@ -981,9 +1077,14 @@ async def list_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Chat"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["401", "403", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1002,6 +1103,7 @@ def retrieve_application( self, *, id: str, + locale: Optional[str] = None, timezone_offset: Optional[int] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -1013,6 +1115,7 @@ def retrieve_application( Gets the Chat application details for the specified application ID. :param id: The id of the Chat application to be retrieved. + :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 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 retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -1030,6 +1133,7 @@ def retrieve_application( base_url = self._get_url(base_url, url_variables) request = models.GetchatapplicationRequestRequest( + locale=locale, timezone_offset=timezone_offset, get_chat_application_request=models.GetChatApplicationRequest( id=id, @@ -1077,9 +1181,14 @@ def retrieve_application( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Chat"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Preview", + }, ), request=req, - error_status_codes=["400", "401", "403", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1098,6 +1207,7 @@ async def retrieve_application_async( self, *, id: str, + locale: Optional[str] = None, timezone_offset: Optional[int] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -1109,6 +1219,7 @@ async def retrieve_application_async( Gets the Chat application details for the specified application ID. :param id: The id of the Chat application to be retrieved. + :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 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 retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -1126,6 +1237,7 @@ async def retrieve_application_async( base_url = self._get_url(base_url, url_variables) request = models.GetchatapplicationRequestRequest( + locale=locale, timezone_offset=timezone_offset, get_chat_application_request=models.GetChatApplicationRequest( id=id, @@ -1173,9 +1285,14 @@ async def retrieve_application_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Chat"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Preview", + }, ), request=req, - error_status_codes=["400", "401", "403", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1193,18 +1310,23 @@ async def retrieve_application_async( def upload_files( self, *, - files: Union[List[models.File], List[models.FileTypedDict]], + files: Union[ + Iterable[models.UploadChatFilesRequestFile], + Iterable[models.UploadChatFilesRequestFileTypedDict], + ], + locale: Optional[str] = None, timezone_offset: Optional[int] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, ) -> models.UploadChatFilesResponse: - r"""Upload files for Chat. + r"""Upload files for Chat Upload files for Chat. :param files: Raw files to be uploaded for chat in binary format. + :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 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 retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -1222,9 +1344,12 @@ def upload_files( base_url = self._get_url(base_url, url_variables) request = models.UploadchatfilesRequestRequest( + locale=locale, timezone_offset=timezone_offset, upload_chat_files_request=models.UploadChatFilesRequest( - files=utils.get_pydantic_model(files, List[models.File]), + files=utils.get_pydantic_model( + files, List[models.UploadChatFilesRequestFile] + ), ), ) @@ -1269,9 +1394,11 @@ def upload_files( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Chat"], + extensions={"x-visibility": "Public"}, ), request=req, - error_status_codes=["400", "401", "403", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1289,18 +1416,23 @@ def upload_files( async def upload_files_async( self, *, - files: Union[List[models.File], List[models.FileTypedDict]], + files: Union[ + Iterable[models.UploadChatFilesRequestFile], + Iterable[models.UploadChatFilesRequestFileTypedDict], + ], + locale: Optional[str] = None, timezone_offset: Optional[int] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, ) -> models.UploadChatFilesResponse: - r"""Upload files for Chat. + r"""Upload files for Chat Upload files for Chat. :param files: Raw files to be uploaded for chat in binary format. + :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 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 retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -1318,9 +1450,12 @@ async def upload_files_async( base_url = self._get_url(base_url, url_variables) request = models.UploadchatfilesRequestRequest( + locale=locale, timezone_offset=timezone_offset, upload_chat_files_request=models.UploadChatFilesRequest( - files=utils.get_pydantic_model(files, List[models.File]), + files=utils.get_pydantic_model( + files, List[models.UploadChatFilesRequestFile] + ), ), ) @@ -1365,9 +1500,11 @@ async def upload_files_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Chat"], + extensions={"x-visibility": "Public"}, ), request=req, - error_status_codes=["400", "401", "403", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1385,18 +1522,20 @@ async def upload_files_async( def retrieve_files( self, *, - file_ids: List[str], + file_ids: Iterable[str], + locale: Optional[str] = None, timezone_offset: Optional[int] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, ) -> models.GetChatFilesResponse: - r"""Get files uploaded by a user for Chat. + r"""Get files uploaded by a user for Chat Get files uploaded by a user for Chat. :param file_ids: IDs of files to fetch. + :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 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 retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -1414,9 +1553,10 @@ def retrieve_files( base_url = self._get_url(base_url, url_variables) request = models.GetchatfilesRequestRequest( + locale=locale, timezone_offset=timezone_offset, get_chat_files_request=models.GetChatFilesRequest( - file_ids=file_ids, + file_ids=utils.unmarshal(file_ids, List[str]), ), ) @@ -1461,9 +1601,11 @@ def retrieve_files( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Chat"], + extensions={"x-visibility": "Public"}, ), request=req, - error_status_codes=["400", "401", "403", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1481,18 +1623,20 @@ def retrieve_files( async def retrieve_files_async( self, *, - file_ids: List[str], + file_ids: Iterable[str], + locale: Optional[str] = None, timezone_offset: Optional[int] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, ) -> models.GetChatFilesResponse: - r"""Get files uploaded by a user for Chat. + r"""Get files uploaded by a user for Chat Get files uploaded by a user for Chat. :param file_ids: IDs of files to fetch. + :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 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 retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -1510,9 +1654,10 @@ async def retrieve_files_async( base_url = self._get_url(base_url, url_variables) request = models.GetchatfilesRequestRequest( + locale=locale, timezone_offset=timezone_offset, get_chat_files_request=models.GetChatFilesRequest( - file_ids=file_ids, + file_ids=utils.unmarshal(file_ids, List[str]), ), ) @@ -1557,9 +1702,11 @@ async def retrieve_files_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Chat"], + extensions={"x-visibility": "Public"}, ), request=req, - error_status_codes=["400", "401", "403", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1577,18 +1724,20 @@ async def retrieve_files_async( def delete_files( self, *, - file_ids: List[str], + file_ids: Iterable[str], + locale: Optional[str] = None, timezone_offset: Optional[int] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, ): - r"""Delete files uploaded by a user for chat. + r"""Delete files uploaded by a user for chat Delete files uploaded by a user for Chat. :param file_ids: IDs of files to delete. + :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 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 retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -1606,9 +1755,10 @@ def delete_files( base_url = self._get_url(base_url, url_variables) request = models.DeletechatfilesRequestRequest( + locale=locale, timezone_offset=timezone_offset, delete_chat_files_request=models.DeleteChatFilesRequest( - file_ids=file_ids, + file_ids=utils.unmarshal(file_ids, List[str]), ), ) @@ -1653,9 +1803,11 @@ def delete_files( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Chat"], + extensions={"x-visibility": "Public"}, ), request=req, - error_status_codes=["400", "401", "403", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1673,18 +1825,20 @@ def delete_files( async def delete_files_async( self, *, - file_ids: List[str], + file_ids: Iterable[str], + locale: Optional[str] = None, timezone_offset: Optional[int] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, ): - r"""Delete files uploaded by a user for chat. + r"""Delete files uploaded by a user for chat Delete files uploaded by a user for Chat. :param file_ids: IDs of files to delete. + :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 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 retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -1702,9 +1856,10 @@ async def delete_files_async( base_url = self._get_url(base_url, url_variables) request = models.DeletechatfilesRequestRequest( + locale=locale, timezone_offset=timezone_offset, delete_chat_files_request=models.DeleteChatFilesRequest( - file_ids=file_ids, + file_ids=utils.unmarshal(file_ids, List[str]), ), ) @@ -1749,9 +1904,11 @@ async def delete_files_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Chat"], + extensions={"x-visibility": "Public"}, ), request=req, - error_status_codes=["400", "401", "403", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1766,10 +1923,198 @@ async def delete_files_async( raise errors.GleanError("Unexpected response received", http_res) + def retrieve_file( + self, + *, + file_id: str, + preview: Optional[bool] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> httpx.Response: + r"""Download a chat file + + Download the raw content of a file generated or uploaded during a chat session (for example, an image produced by the assistant). Returns the file bytes with a Content-Type header matching the file's MIME type. + + + :param file_id: Identifier of the chat file to download. + :param preview: When true and the file is a PDF, the response is served inline (Content-Disposition: inline) instead of as an attachment. + + :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.GetChatFileRequest( + file_id=file_id, + preview=preview, + ) + + req = self._build_request( + method="GET", + path="/rest/api/v1/chat-files/{fileId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/octet-stream", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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="getChatFile", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Chat"], + extensions={"x-visibility": "Public"}, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + stream=True, + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/octet-stream"): + return http_res + if utils.match_response(http_res, ["400", "401", "403", "404", "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, ["500", "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 retrieve_file_async( + self, + *, + file_id: str, + preview: Optional[bool] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> httpx.Response: + r"""Download a chat file + + Download the raw content of a file generated or uploaded during a chat session (for example, an image produced by the assistant). Returns the file bytes with a Content-Type header matching the file's MIME type. + + + :param file_id: Identifier of the chat file to download. + :param preview: When true and the file is a PDF, the response is served inline (Content-Disposition: inline) instead of as an attachment. + + :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.GetChatFileRequest( + file_id=file_id, + preview=preview, + ) + + req = self._build_request_async( + method="GET", + path="/rest/api/v1/chat-files/{fileId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/octet-stream", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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="getChatFile", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Chat"], + extensions={"x-visibility": "Public"}, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + stream=True, + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/octet-stream"): + return http_res + if utils.match_response(http_res, ["400", "401", "403", "404", "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, ["500", "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) + def create_stream( self, *, - messages: Union[List[models.ChatMessage], List[models.ChatMessageTypedDict]], + messages: Union[ + Iterable[models.ChatMessage], Iterable[models.ChatMessageTypedDict] + ], timezone_offset: Optional[int] = None, session_info: Optional[ Union[models.SessionInfo, models.SessionInfoTypedDict] @@ -1887,9 +2232,14 @@ def create_stream( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Chat"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "408", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1907,7 +2257,9 @@ def create_stream( async def create_stream_async( self, *, - messages: Union[List[models.ChatMessage], List[models.ChatMessageTypedDict]], + messages: Union[ + Iterable[models.ChatMessage], Iterable[models.ChatMessageTypedDict] + ], timezone_offset: Optional[int] = None, session_info: Optional[ Union[models.SessionInfo, models.SessionInfoTypedDict] @@ -2025,9 +2377,14 @@ async def create_stream_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Chat"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "408", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/glean/api_client/client_datasources.py b/src/glean/api_client/client_datasources.py new file mode 100644 index 00000000..0cfdfc1b --- /dev/null +++ b/src/glean/api_client/client_datasources.py @@ -0,0 +1,837 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from .basesdk import BaseSDK +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.unmarshal_json_response import unmarshal_json_response +from typing import Any, Mapping, Optional, Union + + +class ClientDatasources(BaseSDK): + def retrieve_configuration( + self, + *, + datasource_id: str, + instance_id: str, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.DatasourceConfigurationResponse: + r"""Get datasource instance configuration + + Gets the greenlisted configuration values for a datasource instance. Returns only configuration keys that are exposed via the public API greenlist. + + + :param datasource_id: The datasource type identifier (e.g. o365sharepoint) + :param instance_id: The datasource instance identifier + :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.GetDatasourceInstanceConfigurationRequest( + datasource_id=datasource_id, + instance_id=instance_id, + ) + + req = self._build_request( + method="GET", + path="/rest/api/v1/configure/datasources/{datasourceId}/instances/{instanceId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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="getDatasourceInstanceConfiguration", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Datasources"], + extensions={"x-visibility": "Preview"}, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response( + models.DatasourceConfigurationResponse, http_res + ) + if utils.match_response(http_res, ["400", "403", "404"], "application/json"): + response_data = unmarshal_json_response(errors.ErrorResponseData, http_res) + raise errors.ErrorResponse(response_data, http_res) + if utils.match_response(http_res, ["401", "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) + + raise errors.GleanError("Unexpected response received", http_res) + + async def retrieve_configuration_async( + self, + *, + datasource_id: str, + instance_id: str, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.DatasourceConfigurationResponse: + r"""Get datasource instance configuration + + Gets the greenlisted configuration values for a datasource instance. Returns only configuration keys that are exposed via the public API greenlist. + + + :param datasource_id: The datasource type identifier (e.g. o365sharepoint) + :param instance_id: The datasource instance identifier + :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.GetDatasourceInstanceConfigurationRequest( + datasource_id=datasource_id, + instance_id=instance_id, + ) + + req = self._build_request_async( + method="GET", + path="/rest/api/v1/configure/datasources/{datasourceId}/instances/{instanceId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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="getDatasourceInstanceConfiguration", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Datasources"], + extensions={"x-visibility": "Preview"}, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response( + models.DatasourceConfigurationResponse, http_res + ) + if utils.match_response(http_res, ["400", "403", "404"], "application/json"): + response_data = unmarshal_json_response(errors.ErrorResponseData, http_res) + raise errors.ErrorResponse(response_data, http_res) + if utils.match_response(http_res, ["401", "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) + + raise errors.GleanError("Unexpected response received", http_res) + + def update_configuration( + self, + *, + datasource_id: str, + instance_id: str, + configuration: Union[ + models.DatasourceInstanceConfiguration, + models.DatasourceInstanceConfigurationTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.DatasourceConfigurationResponse: + r"""Update datasource instance configuration + + Updates the greenlisted configuration values for a datasource instance. Only configuration keys that are exposed via the public API greenlist may be set. Returns the full greenlisted configuration after the update is applied. + + + :param datasource_id: The datasource type identifier (e.g. o365sharepoint) + :param instance_id: The datasource instance identifier + :param configuration: Configuration for a datasource instance + :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.UpdateDatasourceInstanceConfigurationRequest( + datasource_id=datasource_id, + instance_id=instance_id, + update_datasource_configuration_request=models.UpdateDatasourceConfigurationRequest( + configuration=utils.get_pydantic_model( + configuration, models.DatasourceInstanceConfiguration + ), + ), + ) + + req = self._build_request( + method="PATCH", + path="/rest/api/v1/configure/datasources/{datasourceId}/instances/{instanceId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=True, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request.update_datasource_configuration_request, + False, + False, + "json", + models.UpdateDatasourceConfigurationRequest, + ), + 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="updateDatasourceInstanceConfiguration", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Datasources"], + extensions={"x-visibility": "Preview"}, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response( + models.DatasourceConfigurationResponse, http_res + ) + if utils.match_response(http_res, ["400", "403", "404"], "application/json"): + response_data = unmarshal_json_response(errors.ErrorResponseData, http_res) + raise errors.ErrorResponse(response_data, http_res) + if utils.match_response(http_res, ["401", "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) + + raise errors.GleanError("Unexpected response received", http_res) + + async def update_configuration_async( + self, + *, + datasource_id: str, + instance_id: str, + configuration: Union[ + models.DatasourceInstanceConfiguration, + models.DatasourceInstanceConfigurationTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.DatasourceConfigurationResponse: + r"""Update datasource instance configuration + + Updates the greenlisted configuration values for a datasource instance. Only configuration keys that are exposed via the public API greenlist may be set. Returns the full greenlisted configuration after the update is applied. + + + :param datasource_id: The datasource type identifier (e.g. o365sharepoint) + :param instance_id: The datasource instance identifier + :param configuration: Configuration for a datasource instance + :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.UpdateDatasourceInstanceConfigurationRequest( + datasource_id=datasource_id, + instance_id=instance_id, + update_datasource_configuration_request=models.UpdateDatasourceConfigurationRequest( + configuration=utils.get_pydantic_model( + configuration, models.DatasourceInstanceConfiguration + ), + ), + ) + + req = self._build_request_async( + method="PATCH", + path="/rest/api/v1/configure/datasources/{datasourceId}/instances/{instanceId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=True, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request.update_datasource_configuration_request, + False, + False, + "json", + models.UpdateDatasourceConfigurationRequest, + ), + 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="updateDatasourceInstanceConfiguration", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Datasources"], + extensions={"x-visibility": "Preview"}, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response( + models.DatasourceConfigurationResponse, http_res + ) + if utils.match_response(http_res, ["400", "403", "404"], "application/json"): + response_data = unmarshal_json_response(errors.ErrorResponseData, http_res) + raise errors.ErrorResponse(response_data, http_res) + if utils.match_response(http_res, ["401", "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) + + raise errors.GleanError("Unexpected response received", http_res) + + def retrieve_credential_status( + self, + *, + datasource_instance_id: str, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.DatasourceCredentialStatusResponse: + r"""Get datasource instance credential status + + Returns the current credential status for a datasource instance. Access is limited to callers with the ADMIN scope; the handler enforces this check. + + + :param datasource_instance_id: The full datasource instance identifier (e.g. o365sharepoint_abc123) + :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.GetDatasourceCredentialStatusRequest( + datasource_instance_id=datasource_instance_id, + ) + + req = self._build_request( + method="GET", + path="/rest/api/v1/datasource/{datasourceInstanceId}/credentialstatus", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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="getDatasourceCredentialStatus", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Datasources"], + extensions={"x-visibility": "Preview"}, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response( + models.DatasourceCredentialStatusResponse, http_res + ) + if utils.match_response(http_res, ["400", "403", "404"], "application/json"): + response_data = unmarshal_json_response(errors.ErrorResponseData, http_res) + raise errors.ErrorResponse(response_data, http_res) + if utils.match_response(http_res, ["401", "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) + + raise errors.GleanError("Unexpected response received", http_res) + + async def retrieve_credential_status_async( + self, + *, + datasource_instance_id: str, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.DatasourceCredentialStatusResponse: + r"""Get datasource instance credential status + + Returns the current credential status for a datasource instance. Access is limited to callers with the ADMIN scope; the handler enforces this check. + + + :param datasource_instance_id: The full datasource instance identifier (e.g. o365sharepoint_abc123) + :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.GetDatasourceCredentialStatusRequest( + datasource_instance_id=datasource_instance_id, + ) + + req = self._build_request_async( + method="GET", + path="/rest/api/v1/datasource/{datasourceInstanceId}/credentialstatus", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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="getDatasourceCredentialStatus", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Datasources"], + extensions={"x-visibility": "Preview"}, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response( + models.DatasourceCredentialStatusResponse, http_res + ) + if utils.match_response(http_res, ["400", "403", "404"], "application/json"): + response_data = unmarshal_json_response(errors.ErrorResponseData, http_res) + raise errors.ErrorResponse(response_data, http_res) + if utils.match_response(http_res, ["401", "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) + + raise errors.GleanError("Unexpected response received", http_res) + + def rotate_credentials( + self, + *, + datasource_instance_id: str, + credentials: Union[ + models.DatasourceInstanceConfiguration, + models.DatasourceInstanceConfigurationTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.DatasourceCredentialStatusResponse: + r"""Rotate datasource instance credentials + + Rotates the credentials that a datasource instance uses to connect to its upstream system. Replaces the active credential material with the supplied values and returns the credential status after rotation. Access is limited to callers with the ADMIN scope; the handler enforces this check. + Only keys recognized as credential material for the datasource type may be set in `credentials.values` (e.g. `clientSecret`, `apiToken`, `privateKey`, depending on the configured auth method). Unrecognized keys, or keys that correspond to non-credential configuration, cause a 400; other instance configuration must be updated via PATCH /configure/datasources/{datasourceId}/instances/{instanceId}. + + + :param datasource_instance_id: The full datasource instance identifier (e.g. o365sharepoint_abc123) + :param credentials: Configuration for a datasource instance + :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.RotateDatasourceCredentialsRequestRequest( + datasource_instance_id=datasource_instance_id, + rotate_datasource_credentials_request=models.RotateDatasourceCredentialsRequest( + credentials=utils.get_pydantic_model( + credentials, models.DatasourceInstanceConfiguration + ), + ), + ) + + req = self._build_request( + method="POST", + path="/rest/api/v1/datasource/{datasourceInstanceId}/credentials", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=True, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request.rotate_datasource_credentials_request, + False, + False, + "json", + models.RotateDatasourceCredentialsRequest, + ), + 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="rotateDatasourceCredentials", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Datasources"], + extensions={"x-visibility": "Preview"}, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response( + models.DatasourceCredentialStatusResponse, http_res + ) + if utils.match_response(http_res, ["400", "403", "404"], "application/json"): + response_data = unmarshal_json_response(errors.ErrorResponseData, http_res) + raise errors.ErrorResponse(response_data, http_res) + if utils.match_response(http_res, ["401", "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) + + raise errors.GleanError("Unexpected response received", http_res) + + async def rotate_credentials_async( + self, + *, + datasource_instance_id: str, + credentials: Union[ + models.DatasourceInstanceConfiguration, + models.DatasourceInstanceConfigurationTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.DatasourceCredentialStatusResponse: + r"""Rotate datasource instance credentials + + Rotates the credentials that a datasource instance uses to connect to its upstream system. Replaces the active credential material with the supplied values and returns the credential status after rotation. Access is limited to callers with the ADMIN scope; the handler enforces this check. + Only keys recognized as credential material for the datasource type may be set in `credentials.values` (e.g. `clientSecret`, `apiToken`, `privateKey`, depending on the configured auth method). Unrecognized keys, or keys that correspond to non-credential configuration, cause a 400; other instance configuration must be updated via PATCH /configure/datasources/{datasourceId}/instances/{instanceId}. + + + :param datasource_instance_id: The full datasource instance identifier (e.g. o365sharepoint_abc123) + :param credentials: Configuration for a datasource instance + :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.RotateDatasourceCredentialsRequestRequest( + datasource_instance_id=datasource_instance_id, + rotate_datasource_credentials_request=models.RotateDatasourceCredentialsRequest( + credentials=utils.get_pydantic_model( + credentials, models.DatasourceInstanceConfiguration + ), + ), + ) + + req = self._build_request_async( + method="POST", + path="/rest/api/v1/datasource/{datasourceInstanceId}/credentials", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=True, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request.rotate_datasource_credentials_request, + False, + False, + "json", + models.RotateDatasourceCredentialsRequest, + ), + 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="rotateDatasourceCredentials", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Datasources"], + extensions={"x-visibility": "Preview"}, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response( + models.DatasourceCredentialStatusResponse, http_res + ) + if utils.match_response(http_res, ["400", "403", "404"], "application/json"): + response_data = unmarshal_json_response(errors.ErrorResponseData, http_res) + raise errors.ErrorResponse(response_data, http_res) + if utils.match_response(http_res, ["401", "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) + + raise errors.GleanError("Unexpected response received", http_res) diff --git a/src/glean/api_client/client_documents.py b/src/glean/api_client/client_documents.py index 82b6efd9..d93ffbbf 100644 --- a/src/glean/api_client/client_documents.py +++ b/src/glean/api_client/client_documents.py @@ -4,16 +4,17 @@ from datetime import datetime from glean.api_client import errors, models, utils from glean.api_client._hooks import HookContext -from glean.api_client.types import BaseModel, OptionalNullable, UNSET +from glean.api_client.types import OptionalNullable, UNSET from glean.api_client.utils import get_security_from_env from glean.api_client.utils.unmarshal_json_response import unmarshal_json_response -from typing import List, Mapping, Optional, Union, cast +from typing import Iterable, List, Mapping, Optional, Union class ClientDocuments(BaseSDK): def retrieve_permissions( self, *, + locale: Optional[str] = None, document_id: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -24,6 +25,7 @@ def retrieve_permissions( Read the emails of all users who have access to the given document. + :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 document_id: The Glean Document ID to retrieve permissions for. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -40,8 +42,11 @@ def retrieve_permissions( else: base_url = self._get_url(base_url, url_variables) - request = models.GetDocPermissionsRequest( - document_id=document_id, + request = models.GetdocpermissionsRequestRequest( + locale=locale, + get_doc_permissions_request=models.GetDocPermissionsRequest( + document_id=document_id, + ), ) req = self._build_request( @@ -58,7 +63,11 @@ def retrieve_permissions( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.GetDocPermissionsRequest + request.get_doc_permissions_request, + False, + False, + "json", + models.GetDocPermissionsRequest, ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -81,9 +90,14 @@ def retrieve_permissions( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Documents"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Preview", + }, ), request=req, - error_status_codes=["400", "401", "403", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -101,6 +115,7 @@ def retrieve_permissions( async def retrieve_permissions_async( self, *, + locale: Optional[str] = None, document_id: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -111,6 +126,7 @@ async def retrieve_permissions_async( Read the emails of all users who have access to the given document. + :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 document_id: The Glean Document ID to retrieve permissions for. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -127,8 +143,11 @@ async def retrieve_permissions_async( else: base_url = self._get_url(base_url, url_variables) - request = models.GetDocPermissionsRequest( - document_id=document_id, + request = models.GetdocpermissionsRequestRequest( + locale=locale, + get_doc_permissions_request=models.GetDocPermissionsRequest( + document_id=document_id, + ), ) req = self._build_request_async( @@ -145,7 +164,11 @@ async def retrieve_permissions_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.GetDocPermissionsRequest + request.get_doc_permissions_request, + False, + False, + "json", + models.GetDocPermissionsRequest, ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -168,9 +191,14 @@ async def retrieve_permissions_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Documents"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Preview", + }, ), request=req, - error_status_codes=["400", "401", "403", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -188,7 +216,8 @@ async def retrieve_permissions_async( def retrieve( self, *, - request: Optional[ + locale: Optional[str] = None, + get_documents_request: Optional[ Union[models.GetDocumentsRequest, models.GetDocumentsRequestTypedDict] ] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, @@ -200,7 +229,8 @@ def retrieve( Read the documents including metadata (does not include enhanced metadata via `/documentmetadata`) for the given list of Glean Document IDs or URLs specified in the request. - :param request: The request object to send. + :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 get_documents_request: Information about documents requested. :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 @@ -216,9 +246,12 @@ def retrieve( else: base_url = self._get_url(base_url, url_variables) - if not isinstance(request, BaseModel): - request = utils.unmarshal(request, Optional[models.GetDocumentsRequest]) - request = cast(Optional[models.GetDocumentsRequest], request) + request = models.GetdocumentsRequestRequest( + locale=locale, + get_documents_request=utils.get_pydantic_model( + get_documents_request, Optional[models.GetDocumentsRequest] + ), + ) req = self._build_request( method="POST", @@ -234,7 +267,11 @@ def retrieve( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, True, "json", Optional[models.GetDocumentsRequest] + request.get_documents_request if request is not None else None, + False, + True, + "json", + Optional[models.GetDocumentsRequest], ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -257,9 +294,14 @@ def retrieve( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Documents"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "403", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -277,7 +319,8 @@ def retrieve( async def retrieve_async( self, *, - request: Optional[ + locale: Optional[str] = None, + get_documents_request: Optional[ Union[models.GetDocumentsRequest, models.GetDocumentsRequestTypedDict] ] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, @@ -289,7 +332,8 @@ async def retrieve_async( Read the documents including metadata (does not include enhanced metadata via `/documentmetadata`) for the given list of Glean Document IDs or URLs specified in the request. - :param request: The request object to send. + :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 get_documents_request: Information about documents requested. :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 @@ -305,9 +349,12 @@ async def retrieve_async( else: base_url = self._get_url(base_url, url_variables) - if not isinstance(request, BaseModel): - request = utils.unmarshal(request, Optional[models.GetDocumentsRequest]) - request = cast(Optional[models.GetDocumentsRequest], request) + request = models.GetdocumentsRequestRequest( + locale=locale, + get_documents_request=utils.get_pydantic_model( + get_documents_request, Optional[models.GetDocumentsRequest] + ), + ) req = self._build_request_async( method="POST", @@ -323,7 +370,11 @@ async def retrieve_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, True, "json", Optional[models.GetDocumentsRequest] + request.get_documents_request if request is not None else None, + False, + True, + "json", + Optional[models.GetDocumentsRequest], ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -346,9 +397,14 @@ async def retrieve_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Documents"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "403", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -366,7 +422,8 @@ async def retrieve_async( def retrieve_by_facets( self, *, - request: Optional[ + locale: Optional[str] = None, + get_documents_by_facets_request: Optional[ Union[ models.GetDocumentsByFacetsRequest, models.GetDocumentsByFacetsRequestTypedDict, @@ -381,7 +438,8 @@ def retrieve_by_facets( Read the documents including metadata (does not include enhanced metadata via `/documentmetadata`) macthing the given facet conditions. - :param request: The request object to send. + :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 get_documents_by_facets_request: Information about facet conditions for documents to be retrieved. :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 @@ -397,11 +455,13 @@ def retrieve_by_facets( else: base_url = self._get_url(base_url, url_variables) - if not isinstance(request, BaseModel): - request = utils.unmarshal( - request, Optional[models.GetDocumentsByFacetsRequest] - ) - request = cast(Optional[models.GetDocumentsByFacetsRequest], request) + request = models.GetdocumentsbyfacetsRequestRequest( + locale=locale, + get_documents_by_facets_request=utils.get_pydantic_model( + get_documents_by_facets_request, + Optional[models.GetDocumentsByFacetsRequest], + ), + ) req = self._build_request( method="POST", @@ -417,7 +477,9 @@ def retrieve_by_facets( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, + request.get_documents_by_facets_request + if request is not None + else None, False, True, "json", @@ -444,9 +506,14 @@ def retrieve_by_facets( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Documents"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Preview", + }, ), request=req, - error_status_codes=["400", "401", "404", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -466,7 +533,8 @@ def retrieve_by_facets( async def retrieve_by_facets_async( self, *, - request: Optional[ + locale: Optional[str] = None, + get_documents_by_facets_request: Optional[ Union[ models.GetDocumentsByFacetsRequest, models.GetDocumentsByFacetsRequestTypedDict, @@ -481,7 +549,8 @@ async def retrieve_by_facets_async( Read the documents including metadata (does not include enhanced metadata via `/documentmetadata`) macthing the given facet conditions. - :param request: The request object to send. + :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 get_documents_by_facets_request: Information about facet conditions for documents to be retrieved. :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 @@ -497,11 +566,13 @@ async def retrieve_by_facets_async( else: base_url = self._get_url(base_url, url_variables) - if not isinstance(request, BaseModel): - request = utils.unmarshal( - request, Optional[models.GetDocumentsByFacetsRequest] - ) - request = cast(Optional[models.GetDocumentsByFacetsRequest], request) + request = models.GetdocumentsbyfacetsRequestRequest( + locale=locale, + get_documents_by_facets_request=utils.get_pydantic_model( + get_documents_by_facets_request, + Optional[models.GetDocumentsByFacetsRequest], + ), + ) req = self._build_request_async( method="POST", @@ -517,7 +588,9 @@ async def retrieve_by_facets_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, + request.get_documents_by_facets_request + if request is not None + else None, False, True, "json", @@ -544,9 +617,14 @@ async def retrieve_by_facets_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Documents"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Preview", + }, ), request=req, - error_status_codes=["400", "401", "404", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -567,8 +645,10 @@ def summarize( self, *, document_specs: Union[ - List[models.DocumentSpecUnion], List[models.DocumentSpecUnionTypedDict] + Iterable[models.DocumentSpecUnion], + Iterable[models.DocumentSpecUnionTypedDict], ], + locale: Optional[str] = None, timestamp: Optional[datetime] = None, query: Optional[str] = None, preferred_summary_length: Optional[int] = None, @@ -583,6 +663,7 @@ def summarize( Generate an AI summary of the requested documents. :param document_specs: Specifications of documents to summarize + :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 timestamp: The ISO 8601 timestamp associated with the client request. :param query: Optional query that the summary should be about :param preferred_summary_length: Optional length of summary output. If not given, defaults to 500 chars. @@ -602,14 +683,17 @@ def summarize( else: base_url = self._get_url(base_url, url_variables) - request = models.SummarizeRequest( - timestamp=timestamp, - query=query, - preferred_summary_length=preferred_summary_length, - document_specs=utils.get_pydantic_model( - document_specs, List[models.DocumentSpecUnion] + request = models.SummarizeRequestRequest( + locale=locale, + summarize_request=models.SummarizeRequest( + timestamp=timestamp, + query=query, + preferred_summary_length=preferred_summary_length, + document_specs=utils.get_pydantic_model( + document_specs, List[models.DocumentSpecUnion] + ), + tracking_token=tracking_token, ), - tracking_token=tracking_token, ) req = self._build_request( @@ -626,7 +710,7 @@ def summarize( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.SummarizeRequest + request.summarize_request, False, False, "json", models.SummarizeRequest ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -649,9 +733,14 @@ def summarize( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Summarize"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -670,8 +759,10 @@ async def summarize_async( self, *, document_specs: Union[ - List[models.DocumentSpecUnion], List[models.DocumentSpecUnionTypedDict] + Iterable[models.DocumentSpecUnion], + Iterable[models.DocumentSpecUnionTypedDict], ], + locale: Optional[str] = None, timestamp: Optional[datetime] = None, query: Optional[str] = None, preferred_summary_length: Optional[int] = None, @@ -686,6 +777,7 @@ async def summarize_async( Generate an AI summary of the requested documents. :param document_specs: Specifications of documents to summarize + :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 timestamp: The ISO 8601 timestamp associated with the client request. :param query: Optional query that the summary should be about :param preferred_summary_length: Optional length of summary output. If not given, defaults to 500 chars. @@ -705,14 +797,17 @@ async def summarize_async( else: base_url = self._get_url(base_url, url_variables) - request = models.SummarizeRequest( - timestamp=timestamp, - query=query, - preferred_summary_length=preferred_summary_length, - document_specs=utils.get_pydantic_model( - document_specs, List[models.DocumentSpecUnion] + request = models.SummarizeRequestRequest( + locale=locale, + summarize_request=models.SummarizeRequest( + timestamp=timestamp, + query=query, + preferred_summary_length=preferred_summary_length, + document_specs=utils.get_pydantic_model( + document_specs, List[models.DocumentSpecUnion] + ), + tracking_token=tracking_token, ), - tracking_token=tracking_token, ) req = self._build_request_async( @@ -729,7 +824,7 @@ async def summarize_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.SummarizeRequest + request.summarize_request, False, False, "json", models.SummarizeRequest ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -752,9 +847,14 @@ async def summarize_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Summarize"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/glean/api_client/client_governance.py b/src/glean/api_client/client_governance.py deleted file mode 100644 index 6011411d..00000000 --- a/src/glean/api_client/client_governance.py +++ /dev/null @@ -1,25 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from .basesdk import BaseSDK -from .sdkconfiguration import SDKConfiguration -from glean.api_client.data import Data -from glean.api_client.governance_documents import GovernanceDocuments -from typing import Optional - - -class ClientGovernance(BaseSDK): - data: Data - documents: GovernanceDocuments - - def __init__( - self, sdk_config: SDKConfiguration, parent_ref: Optional[object] = None - ) -> None: - BaseSDK.__init__(self, sdk_config, parent_ref=parent_ref) - self.sdk_configuration = sdk_config - self._init_sdks() - - def _init_sdks(self): - self.data = Data(self.sdk_configuration, parent_ref=self.parent_ref) - self.documents = GovernanceDocuments( - self.sdk_configuration, parent_ref=self.parent_ref - ) diff --git a/src/glean/api_client/client_search.py b/src/glean/api_client/client_search.py new file mode 100644 index 00000000..53d4e166 --- /dev/null +++ b/src/glean/api_client/client_search.py @@ -0,0 +1,1424 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from .basesdk import BaseSDK +from datetime import datetime +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.unmarshal_json_response import unmarshal_json_response +from typing import Any, Iterable, List, Mapping, Optional, Union + + +class ClientSearch(BaseSDK): + def query_as_admin( + self, + *, + query: str, + locale: Optional[str] = None, + timestamp: Optional[datetime] = None, + tracking_token: Optional[str] = None, + session_info: Optional[ + Union[models.SessionInfo, models.SessionInfoTypedDict] + ] = None, + source_document: Optional[ + Union[models.Document, models.DocumentTypedDict] + ] = None, + page_size: Optional[int] = None, + max_snippet_size: Optional[int] = None, + cursor: Optional[str] = None, + result_tab_ids: Optional[Iterable[str]] = None, + input_details: Optional[ + Union[ + models.SearchRequestInputDetails, + models.SearchRequestInputDetailsTypedDict, + ] + ] = None, + request_options: Optional[ + Union[models.SearchRequestOptions, models.SearchRequestOptionsTypedDict] + ] = None, + timeout_millis: Optional[int] = None, + disable_spellcheck: Optional[bool] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.SearchResponse: + r"""Search the index (admin) + + Retrieves results for search query without respect for permissions. This is available only to privileged users. + + :param query: The search terms. + :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 timestamp: The ISO 8601 timestamp associated with the client request. + :param tracking_token: A previously received trackingToken for a search associated with the same query. Useful for more requests and requests for other tabs. + :param session_info: + :param source_document: + :param page_size: Hint to the server about how many results to send back. Server may return less or more. Structured results and clustered results don't count towards pageSize. + :param max_snippet_size: Hint to the server about how many characters long a snippet may be. Server may return less or more. + :param cursor: Pagination cursor. A previously received opaque token representing the position in the overall results at which to start. + :param result_tab_ids: The unique IDs of the result tabs for which to fetch results. This will have precedence over datasource filters if both are specified and in conflict. + :param input_details: + :param request_options: + :param timeout_millis: Timeout in milliseconds for the request. A `408` error will be returned if handling the request takes longer. + :param disable_spellcheck: Whether or not to disable spellcheck. + :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.AdminsearchRequest( + locale=locale, + search_request=models.SearchRequest( + timestamp=timestamp, + tracking_token=tracking_token, + session_info=utils.get_pydantic_model( + session_info, Optional[models.SessionInfo] + ), + source_document=utils.get_pydantic_model( + source_document, Optional[models.Document] + ), + page_size=page_size, + max_snippet_size=max_snippet_size, + query=query, + cursor=cursor, + result_tab_ids=utils.unmarshal(result_tab_ids, Optional[List[str]]), + input_details=utils.get_pydantic_model( + input_details, Optional[models.SearchRequestInputDetails] + ), + request_options=utils.get_pydantic_model( + request_options, Optional[models.SearchRequestOptions] + ), + timeout_millis=timeout_millis, + disable_spellcheck=disable_spellcheck, + ), + ) + + req = self._build_request( + method="POST", + path="/rest/api/v1/adminsearch", + 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="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request.search_request, False, False, "json", models.SearchRequest + ), + 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="adminsearch", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Search"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Preview", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.SearchResponse, http_res) + if utils.match_response(http_res, ["403", "422"], "application/json"): + response_data = unmarshal_json_response(errors.GleanDataErrorData, http_res) + raise errors.GleanDataError(response_data, http_res) + if utils.match_response(http_res, ["400", "401", "429", "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) + + raise errors.GleanError("Unexpected response received", http_res) + + async def query_as_admin_async( + self, + *, + query: str, + locale: Optional[str] = None, + timestamp: Optional[datetime] = None, + tracking_token: Optional[str] = None, + session_info: Optional[ + Union[models.SessionInfo, models.SessionInfoTypedDict] + ] = None, + source_document: Optional[ + Union[models.Document, models.DocumentTypedDict] + ] = None, + page_size: Optional[int] = None, + max_snippet_size: Optional[int] = None, + cursor: Optional[str] = None, + result_tab_ids: Optional[Iterable[str]] = None, + input_details: Optional[ + Union[ + models.SearchRequestInputDetails, + models.SearchRequestInputDetailsTypedDict, + ] + ] = None, + request_options: Optional[ + Union[models.SearchRequestOptions, models.SearchRequestOptionsTypedDict] + ] = None, + timeout_millis: Optional[int] = None, + disable_spellcheck: Optional[bool] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.SearchResponse: + r"""Search the index (admin) + + Retrieves results for search query without respect for permissions. This is available only to privileged users. + + :param query: The search terms. + :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 timestamp: The ISO 8601 timestamp associated with the client request. + :param tracking_token: A previously received trackingToken for a search associated with the same query. Useful for more requests and requests for other tabs. + :param session_info: + :param source_document: + :param page_size: Hint to the server about how many results to send back. Server may return less or more. Structured results and clustered results don't count towards pageSize. + :param max_snippet_size: Hint to the server about how many characters long a snippet may be. Server may return less or more. + :param cursor: Pagination cursor. A previously received opaque token representing the position in the overall results at which to start. + :param result_tab_ids: The unique IDs of the result tabs for which to fetch results. This will have precedence over datasource filters if both are specified and in conflict. + :param input_details: + :param request_options: + :param timeout_millis: Timeout in milliseconds for the request. A `408` error will be returned if handling the request takes longer. + :param disable_spellcheck: Whether or not to disable spellcheck. + :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.AdminsearchRequest( + locale=locale, + search_request=models.SearchRequest( + timestamp=timestamp, + tracking_token=tracking_token, + session_info=utils.get_pydantic_model( + session_info, Optional[models.SessionInfo] + ), + source_document=utils.get_pydantic_model( + source_document, Optional[models.Document] + ), + page_size=page_size, + max_snippet_size=max_snippet_size, + query=query, + cursor=cursor, + result_tab_ids=utils.unmarshal(result_tab_ids, Optional[List[str]]), + input_details=utils.get_pydantic_model( + input_details, Optional[models.SearchRequestInputDetails] + ), + request_options=utils.get_pydantic_model( + request_options, Optional[models.SearchRequestOptions] + ), + timeout_millis=timeout_millis, + disable_spellcheck=disable_spellcheck, + ), + ) + + req = self._build_request_async( + method="POST", + path="/rest/api/v1/adminsearch", + 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="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request.search_request, False, False, "json", models.SearchRequest + ), + 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="adminsearch", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Search"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Preview", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.SearchResponse, http_res) + if utils.match_response(http_res, ["403", "422"], "application/json"): + response_data = unmarshal_json_response(errors.GleanDataErrorData, http_res) + raise errors.GleanDataError(response_data, http_res) + if utils.match_response(http_res, ["400", "401", "429", "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) + + raise errors.GleanError("Unexpected response received", http_res) + + def autocomplete( + self, + *, + locale: Optional[str] = None, + tracking_token: Optional[str] = None, + session_info: Optional[ + Union[models.SessionInfo, models.SessionInfoTypedDict] + ] = None, + query: Optional[str] = None, + datasources_filter: Optional[Iterable[str]] = None, + datasource: Optional[str] = None, + result_types: Optional[Iterable[models.AutocompleteRequestResultType]] = None, + result_size: Optional[int] = None, + auth_tokens: Optional[ + Union[Iterable[models.AuthToken], Iterable[models.AuthTokenTypedDict]] + ] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.AutocompleteResponse: + r"""Autocomplete + + Retrieve query suggestions, operators and documents for the given partially typed query. + + :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 tracking_token: + :param session_info: + :param query: Partially typed query. + :param datasources_filter: Filter results to only those relevant to one or more datasources (e.g. jira, gdrive). Results are unfiltered if missing. + :param datasource: Filter to only return results relevant to the given datasource. + :param result_types: Filter to only return results of the given type(s). All types may be returned if omitted. + :param result_size: Maximum number of results to be returned. If no value is provided, the backend will cap at 200. + + :param auth_tokens: Auth tokens which may be used for federated results. + :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.AutocompleteRequestRequest( + locale=locale, + autocomplete_request=models.AutocompleteRequest( + tracking_token=tracking_token, + session_info=utils.get_pydantic_model( + session_info, Optional[models.SessionInfo] + ), + query=query, + datasources_filter=utils.unmarshal( + datasources_filter, Optional[List[str]] + ), + datasource=datasource, + result_types=utils.unmarshal( + result_types, Optional[List[models.AutocompleteRequestResultType]] + ), + result_size=result_size, + auth_tokens=utils.get_pydantic_model( + auth_tokens, Optional[List[models.AuthToken]] + ), + ), + ) + + req = self._build_request( + method="POST", + path="/rest/api/v1/autocomplete", + 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="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request.autocomplete_request, + False, + False, + "json", + models.AutocompleteRequest, + ), + 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="autocomplete", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Search"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.AutocompleteResponse, http_res) + if utils.match_response(http_res, ["400", "401", "429", "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) + + raise errors.GleanError("Unexpected response received", http_res) + + async def autocomplete_async( + self, + *, + locale: Optional[str] = None, + tracking_token: Optional[str] = None, + session_info: Optional[ + Union[models.SessionInfo, models.SessionInfoTypedDict] + ] = None, + query: Optional[str] = None, + datasources_filter: Optional[Iterable[str]] = None, + datasource: Optional[str] = None, + result_types: Optional[Iterable[models.AutocompleteRequestResultType]] = None, + result_size: Optional[int] = None, + auth_tokens: Optional[ + Union[Iterable[models.AuthToken], Iterable[models.AuthTokenTypedDict]] + ] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.AutocompleteResponse: + r"""Autocomplete + + Retrieve query suggestions, operators and documents for the given partially typed query. + + :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 tracking_token: + :param session_info: + :param query: Partially typed query. + :param datasources_filter: Filter results to only those relevant to one or more datasources (e.g. jira, gdrive). Results are unfiltered if missing. + :param datasource: Filter to only return results relevant to the given datasource. + :param result_types: Filter to only return results of the given type(s). All types may be returned if omitted. + :param result_size: Maximum number of results to be returned. If no value is provided, the backend will cap at 200. + + :param auth_tokens: Auth tokens which may be used for federated results. + :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.AutocompleteRequestRequest( + locale=locale, + autocomplete_request=models.AutocompleteRequest( + tracking_token=tracking_token, + session_info=utils.get_pydantic_model( + session_info, Optional[models.SessionInfo] + ), + query=query, + datasources_filter=utils.unmarshal( + datasources_filter, Optional[List[str]] + ), + datasource=datasource, + result_types=utils.unmarshal( + result_types, Optional[List[models.AutocompleteRequestResultType]] + ), + result_size=result_size, + auth_tokens=utils.get_pydantic_model( + auth_tokens, Optional[List[models.AuthToken]] + ), + ), + ) + + req = self._build_request_async( + method="POST", + path="/rest/api/v1/autocomplete", + 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="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request.autocomplete_request, + False, + False, + "json", + models.AutocompleteRequest, + ), + 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="autocomplete", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Search"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.AutocompleteResponse, http_res) + if utils.match_response(http_res, ["400", "401", "429", "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) + + raise errors.GleanError("Unexpected response received", http_res) + + def retrieve_feed( + self, + *, + locale: Optional[str] = None, + categories: Optional[Iterable[models.FeedRequestCategory]] = None, + request_options: Optional[ + Union[models.FeedRequestOptions, models.FeedRequestOptionsTypedDict] + ] = None, + timeout_millis: Optional[int] = None, + session_info: Optional[ + Union[models.SessionInfo, models.SessionInfoTypedDict] + ] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.FeedResponse: + r"""Feed of documents and events + + The personalized feed/home includes different types of contents including suggestions, recents, calendar events and many more. + + :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 categories: Categories of content requested. An allowlist gives flexibility to request content separately or together. + :param request_options: + :param timeout_millis: Timeout in milliseconds for the request. A `408` error will be returned if handling the request takes longer. + :param session_info: + :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.FeedRequestRequest( + locale=locale, + feed_request=models.FeedRequest( + categories=utils.unmarshal( + categories, Optional[List[models.FeedRequestCategory]] + ), + request_options=utils.get_pydantic_model( + request_options, Optional[models.FeedRequestOptions] + ), + timeout_millis=timeout_millis, + session_info=utils.get_pydantic_model( + session_info, Optional[models.SessionInfo] + ), + ), + ) + + req = self._build_request( + method="POST", + path="/rest/api/v1/feed", + 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="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request.feed_request, False, False, "json", models.FeedRequest + ), + 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="feed", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Search"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.FeedResponse, http_res) + if utils.match_response(http_res, ["400", "401", "408", "429", "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) + + raise errors.GleanError("Unexpected response received", http_res) + + async def retrieve_feed_async( + self, + *, + locale: Optional[str] = None, + categories: Optional[Iterable[models.FeedRequestCategory]] = None, + request_options: Optional[ + Union[models.FeedRequestOptions, models.FeedRequestOptionsTypedDict] + ] = None, + timeout_millis: Optional[int] = None, + session_info: Optional[ + Union[models.SessionInfo, models.SessionInfoTypedDict] + ] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.FeedResponse: + r"""Feed of documents and events + + The personalized feed/home includes different types of contents including suggestions, recents, calendar events and many more. + + :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 categories: Categories of content requested. An allowlist gives flexibility to request content separately or together. + :param request_options: + :param timeout_millis: Timeout in milliseconds for the request. A `408` error will be returned if handling the request takes longer. + :param session_info: + :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.FeedRequestRequest( + locale=locale, + feed_request=models.FeedRequest( + categories=utils.unmarshal( + categories, Optional[List[models.FeedRequestCategory]] + ), + request_options=utils.get_pydantic_model( + request_options, Optional[models.FeedRequestOptions] + ), + timeout_millis=timeout_millis, + session_info=utils.get_pydantic_model( + session_info, Optional[models.SessionInfo] + ), + ), + ) + + req = self._build_request_async( + method="POST", + path="/rest/api/v1/feed", + 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="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request.feed_request, False, False, "json", models.FeedRequest + ), + 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="feed", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Search"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.FeedResponse, http_res) + if utils.match_response(http_res, ["400", "401", "408", "429", "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) + + raise errors.GleanError("Unexpected response received", http_res) + + def recommendations( + self, + *, + locale: Optional[str] = None, + timestamp: Optional[datetime] = None, + tracking_token: Optional[str] = None, + session_info: Optional[ + Union[models.SessionInfo, models.SessionInfoTypedDict] + ] = None, + source_document: Optional[ + Union[models.Document, models.DocumentTypedDict] + ] = None, + page_size: Optional[int] = None, + max_snippet_size: Optional[int] = None, + recommendation_document_spec: Optional[ + Union[models.DocumentSpecUnion, models.DocumentSpecUnionTypedDict] + ] = None, + request_options: Optional[ + Union[ + models.RecommendationsRequestOptions, + models.RecommendationsRequestOptionsTypedDict, + ] + ] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> Optional[models.ResultsResponse]: + r"""Recommend documents + + Retrieve recommended documents for the given URL or Glean Document ID. + + :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 timestamp: The ISO 8601 timestamp associated with the client request. + :param tracking_token: A previously received trackingToken for a search associated with the same query. Useful for more requests and requests for other tabs. + :param session_info: + :param source_document: + :param page_size: Hint to the server about how many results to send back. Server may return less or more. Structured results and clustered results don't count towards pageSize. + :param max_snippet_size: Hint to the server about how many characters long a snippet may be. Server may return less or more. + :param recommendation_document_spec: + :param request_options: + :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.RecommendationsRequestRequest( + locale=locale, + recommendations_request=models.RecommendationsRequest( + timestamp=timestamp, + tracking_token=tracking_token, + session_info=utils.get_pydantic_model( + session_info, Optional[models.SessionInfo] + ), + source_document=utils.get_pydantic_model( + source_document, Optional[models.Document] + ), + page_size=page_size, + max_snippet_size=max_snippet_size, + recommendation_document_spec=utils.get_pydantic_model( + recommendation_document_spec, Optional[models.DocumentSpecUnion] + ), + request_options=utils.get_pydantic_model( + request_options, Optional[models.RecommendationsRequestOptions] + ), + ), + ) + + req = self._build_request( + method="POST", + path="/rest/api/v1/recommendations", + 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="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request.recommendations_request, + False, + False, + "json", + models.RecommendationsRequest, + ), + 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="recommendations", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Search"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Preview", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.ResultsResponse, http_res) + if utils.match_response(http_res, ["202", "204"], "*"): + return None + if utils.match_response(http_res, ["400", "401", "403", "429", "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) + + raise errors.GleanError("Unexpected response received", http_res) + + async def recommendations_async( + self, + *, + locale: Optional[str] = None, + timestamp: Optional[datetime] = None, + tracking_token: Optional[str] = None, + session_info: Optional[ + Union[models.SessionInfo, models.SessionInfoTypedDict] + ] = None, + source_document: Optional[ + Union[models.Document, models.DocumentTypedDict] + ] = None, + page_size: Optional[int] = None, + max_snippet_size: Optional[int] = None, + recommendation_document_spec: Optional[ + Union[models.DocumentSpecUnion, models.DocumentSpecUnionTypedDict] + ] = None, + request_options: Optional[ + Union[ + models.RecommendationsRequestOptions, + models.RecommendationsRequestOptionsTypedDict, + ] + ] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> Optional[models.ResultsResponse]: + r"""Recommend documents + + Retrieve recommended documents for the given URL or Glean Document ID. + + :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 timestamp: The ISO 8601 timestamp associated with the client request. + :param tracking_token: A previously received trackingToken for a search associated with the same query. Useful for more requests and requests for other tabs. + :param session_info: + :param source_document: + :param page_size: Hint to the server about how many results to send back. Server may return less or more. Structured results and clustered results don't count towards pageSize. + :param max_snippet_size: Hint to the server about how many characters long a snippet may be. Server may return less or more. + :param recommendation_document_spec: + :param request_options: + :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.RecommendationsRequestRequest( + locale=locale, + recommendations_request=models.RecommendationsRequest( + timestamp=timestamp, + tracking_token=tracking_token, + session_info=utils.get_pydantic_model( + session_info, Optional[models.SessionInfo] + ), + source_document=utils.get_pydantic_model( + source_document, Optional[models.Document] + ), + page_size=page_size, + max_snippet_size=max_snippet_size, + recommendation_document_spec=utils.get_pydantic_model( + recommendation_document_spec, Optional[models.DocumentSpecUnion] + ), + request_options=utils.get_pydantic_model( + request_options, Optional[models.RecommendationsRequestOptions] + ), + ), + ) + + req = self._build_request_async( + method="POST", + path="/rest/api/v1/recommendations", + 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="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request.recommendations_request, + False, + False, + "json", + models.RecommendationsRequest, + ), + 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="recommendations", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Search"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Preview", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.ResultsResponse, http_res) + if utils.match_response(http_res, ["202", "204"], "*"): + return None + if utils.match_response(http_res, ["400", "401", "403", "429", "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) + + raise errors.GleanError("Unexpected response received", http_res) + + def query( + self, + *, + query: str, + locale: Optional[str] = None, + timestamp: Optional[datetime] = None, + tracking_token: Optional[str] = None, + session_info: Optional[ + Union[models.SessionInfo, models.SessionInfoTypedDict] + ] = None, + source_document: Optional[ + Union[models.Document, models.DocumentTypedDict] + ] = None, + page_size: Optional[int] = None, + max_snippet_size: Optional[int] = None, + cursor: Optional[str] = None, + result_tab_ids: Optional[Iterable[str]] = None, + input_details: Optional[ + Union[ + models.SearchRequestInputDetails, + models.SearchRequestInputDetailsTypedDict, + ] + ] = None, + request_options: Optional[ + Union[models.SearchRequestOptions, models.SearchRequestOptionsTypedDict] + ] = None, + timeout_millis: Optional[int] = None, + disable_spellcheck: Optional[bool] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.SearchResponse: + r"""Search + + Retrieve results from the index for the given query and filters. + + :param query: The search terms. + :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 timestamp: The ISO 8601 timestamp associated with the client request. + :param tracking_token: A previously received trackingToken for a search associated with the same query. Useful for more requests and requests for other tabs. + :param session_info: + :param source_document: + :param page_size: Hint to the server about how many results to send back. Server may return less or more. Structured results and clustered results don't count towards pageSize. + :param max_snippet_size: Hint to the server about how many characters long a snippet may be. Server may return less or more. + :param cursor: Pagination cursor. A previously received opaque token representing the position in the overall results at which to start. + :param result_tab_ids: The unique IDs of the result tabs for which to fetch results. This will have precedence over datasource filters if both are specified and in conflict. + :param input_details: + :param request_options: + :param timeout_millis: Timeout in milliseconds for the request. A `408` error will be returned if handling the request takes longer. + :param disable_spellcheck: Whether or not to disable spellcheck. + :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.SearchRequestRequest( + locale=locale, + search_request=models.SearchRequest( + timestamp=timestamp, + tracking_token=tracking_token, + session_info=utils.get_pydantic_model( + session_info, Optional[models.SessionInfo] + ), + source_document=utils.get_pydantic_model( + source_document, Optional[models.Document] + ), + page_size=page_size, + max_snippet_size=max_snippet_size, + query=query, + cursor=cursor, + result_tab_ids=utils.unmarshal(result_tab_ids, Optional[List[str]]), + input_details=utils.get_pydantic_model( + input_details, Optional[models.SearchRequestInputDetails] + ), + request_options=utils.get_pydantic_model( + request_options, Optional[models.SearchRequestOptions] + ), + timeout_millis=timeout_millis, + disable_spellcheck=disable_spellcheck, + ), + ) + + req = self._build_request( + method="POST", + path="/rest/api/v1/search", + 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="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request.search_request, False, False, "json", models.SearchRequest + ), + 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="search", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Search"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.SearchResponse, http_res) + if utils.match_response(http_res, ["403", "422"], "application/json"): + response_data = unmarshal_json_response(errors.GleanDataErrorData, http_res) + raise errors.GleanDataError(response_data, http_res) + if utils.match_response(http_res, ["400", "401", "408", "429", "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) + + raise errors.GleanError("Unexpected response received", http_res) + + async def query_async( + self, + *, + query: str, + locale: Optional[str] = None, + timestamp: Optional[datetime] = None, + tracking_token: Optional[str] = None, + session_info: Optional[ + Union[models.SessionInfo, models.SessionInfoTypedDict] + ] = None, + source_document: Optional[ + Union[models.Document, models.DocumentTypedDict] + ] = None, + page_size: Optional[int] = None, + max_snippet_size: Optional[int] = None, + cursor: Optional[str] = None, + result_tab_ids: Optional[Iterable[str]] = None, + input_details: Optional[ + Union[ + models.SearchRequestInputDetails, + models.SearchRequestInputDetailsTypedDict, + ] + ] = None, + request_options: Optional[ + Union[models.SearchRequestOptions, models.SearchRequestOptionsTypedDict] + ] = None, + timeout_millis: Optional[int] = None, + disable_spellcheck: Optional[bool] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.SearchResponse: + r"""Search + + Retrieve results from the index for the given query and filters. + + :param query: The search terms. + :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 timestamp: The ISO 8601 timestamp associated with the client request. + :param tracking_token: A previously received trackingToken for a search associated with the same query. Useful for more requests and requests for other tabs. + :param session_info: + :param source_document: + :param page_size: Hint to the server about how many results to send back. Server may return less or more. Structured results and clustered results don't count towards pageSize. + :param max_snippet_size: Hint to the server about how many characters long a snippet may be. Server may return less or more. + :param cursor: Pagination cursor. A previously received opaque token representing the position in the overall results at which to start. + :param result_tab_ids: The unique IDs of the result tabs for which to fetch results. This will have precedence over datasource filters if both are specified and in conflict. + :param input_details: + :param request_options: + :param timeout_millis: Timeout in milliseconds for the request. A `408` error will be returned if handling the request takes longer. + :param disable_spellcheck: Whether or not to disable spellcheck. + :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.SearchRequestRequest( + locale=locale, + search_request=models.SearchRequest( + timestamp=timestamp, + tracking_token=tracking_token, + session_info=utils.get_pydantic_model( + session_info, Optional[models.SessionInfo] + ), + source_document=utils.get_pydantic_model( + source_document, Optional[models.Document] + ), + page_size=page_size, + max_snippet_size=max_snippet_size, + query=query, + cursor=cursor, + result_tab_ids=utils.unmarshal(result_tab_ids, Optional[List[str]]), + input_details=utils.get_pydantic_model( + input_details, Optional[models.SearchRequestInputDetails] + ), + request_options=utils.get_pydantic_model( + request_options, Optional[models.SearchRequestOptions] + ), + timeout_millis=timeout_millis, + disable_spellcheck=disable_spellcheck, + ), + ) + + req = self._build_request_async( + method="POST", + path="/rest/api/v1/search", + 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="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request.search_request, False, False, "json", models.SearchRequest + ), + 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="search", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Search"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.SearchResponse, http_res) + if utils.match_response(http_res, ["403", "422"], "application/json"): + response_data = unmarshal_json_response(errors.GleanDataErrorData, http_res) + raise errors.GleanDataError(response_data, http_res) + if utils.match_response(http_res, ["400", "401", "408", "429", "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) + + raise errors.GleanError("Unexpected response received", http_res) diff --git a/src/glean/api_client/client_shortcuts.py b/src/glean/api_client/client_shortcuts.py index ec94b1e8..4241e617 100644 --- a/src/glean/api_client/client_shortcuts.py +++ b/src/glean/api_client/client_shortcuts.py @@ -3,10 +3,10 @@ from .basesdk import BaseSDK from glean.api_client import errors, models, utils from glean.api_client._hooks import HookContext -from glean.api_client.types import BaseModel, OptionalNullable, UNSET +from glean.api_client.types import OptionalNullable, UNSET from glean.api_client.utils import get_security_from_env from glean.api_client.utils.unmarshal_json_response import unmarshal_json_response -from typing import List, Mapping, Optional, Union, cast +from typing import Iterable, List, Mapping, Optional, Union class ClientShortcuts(BaseSDK): @@ -16,6 +16,7 @@ def create( data: Union[ models.ShortcutMutableProperties, models.ShortcutMutablePropertiesTypedDict ], + locale: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -26,6 +27,7 @@ def create( Create a user-generated shortcut that contains an alias and destination URL. :param data: + :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 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 @@ -41,8 +43,11 @@ def create( else: base_url = self._get_url(base_url, url_variables) - request = models.CreateShortcutRequest( - data=utils.get_pydantic_model(data, models.ShortcutMutableProperties), + request = models.CreateshortcutRequestRequest( + locale=locale, + create_shortcut_request=models.CreateShortcutRequest( + data=utils.get_pydantic_model(data, models.ShortcutMutableProperties), + ), ) req = self._build_request( @@ -59,7 +64,11 @@ def create( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.CreateShortcutRequest + request.create_shortcut_request, + False, + False, + "json", + models.CreateShortcutRequest, ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -82,9 +91,14 @@ def create( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Shortcuts"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -105,6 +119,7 @@ async def create_async( data: Union[ models.ShortcutMutableProperties, models.ShortcutMutablePropertiesTypedDict ], + locale: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -115,6 +130,7 @@ async def create_async( Create a user-generated shortcut that contains an alias and destination URL. :param data: + :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 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 @@ -130,8 +146,11 @@ async def create_async( else: base_url = self._get_url(base_url, url_variables) - request = models.CreateShortcutRequest( - data=utils.get_pydantic_model(data, models.ShortcutMutableProperties), + request = models.CreateshortcutRequestRequest( + locale=locale, + create_shortcut_request=models.CreateShortcutRequest( + data=utils.get_pydantic_model(data, models.ShortcutMutableProperties), + ), ) req = self._build_request_async( @@ -148,7 +167,11 @@ async def create_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.CreateShortcutRequest + request.create_shortcut_request, + False, + False, + "json", + models.CreateShortcutRequest, ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -171,9 +194,14 @@ async def create_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Shortcuts"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -192,6 +220,7 @@ def delete( self, *, id: int, + locale: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -202,6 +231,7 @@ def delete( Delete an existing user-generated shortcut. :param id: The opaque id of the user generated content. + :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 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 @@ -217,8 +247,11 @@ def delete( else: base_url = self._get_url(base_url, url_variables) - request = models.DeleteShortcutRequest( - id=id, + request = models.DeleteshortcutRequestRequest( + locale=locale, + delete_shortcut_request=models.DeleteShortcutRequest( + id=id, + ), ) req = self._build_request( @@ -235,7 +268,11 @@ def delete( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.DeleteShortcutRequest + request.delete_shortcut_request, + False, + False, + "json", + models.DeleteShortcutRequest, ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -258,9 +295,14 @@ def delete( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Shortcuts"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -279,6 +321,7 @@ async def delete_async( self, *, id: int, + locale: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -289,6 +332,7 @@ async def delete_async( Delete an existing user-generated shortcut. :param id: The opaque id of the user generated content. + :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 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 @@ -304,8 +348,11 @@ async def delete_async( else: base_url = self._get_url(base_url, url_variables) - request = models.DeleteShortcutRequest( - id=id, + request = models.DeleteshortcutRequestRequest( + locale=locale, + delete_shortcut_request=models.DeleteShortcutRequest( + id=id, + ), ) req = self._build_request_async( @@ -322,7 +369,11 @@ async def delete_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.DeleteShortcutRequest + request.delete_shortcut_request, + False, + False, + "json", + models.DeleteShortcutRequest, ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -345,9 +396,14 @@ async def delete_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Shortcuts"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -365,9 +421,10 @@ async def delete_async( def retrieve( self, *, - request: Union[ - models.GetShortcutRequestUnion, models.GetShortcutRequestUnionTypedDict + get_shortcut_request: Union[ + models.GetShortcutRequest, models.GetShortcutRequestTypedDict ], + locale: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -377,7 +434,8 @@ def retrieve( Read a particular shortcut's details given its ID. - :param request: The request object to send. + :param get_shortcut_request: GetShortcut request + :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 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 @@ -393,9 +451,12 @@ def retrieve( else: base_url = self._get_url(base_url, url_variables) - if not isinstance(request, BaseModel): - request = utils.unmarshal(request, models.GetShortcutRequestUnion) - request = cast(models.GetShortcutRequestUnion, request) + request = models.GetshortcutRequestRequest( + locale=locale, + get_shortcut_request=utils.get_pydantic_model( + get_shortcut_request, models.GetShortcutRequest + ), + ) req = self._build_request( method="POST", @@ -411,7 +472,11 @@ def retrieve( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.GetShortcutRequestUnion + request.get_shortcut_request, + False, + False, + "json", + models.GetShortcutRequest, ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -434,9 +499,14 @@ def retrieve( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Shortcuts"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -454,9 +524,10 @@ def retrieve( async def retrieve_async( self, *, - request: Union[ - models.GetShortcutRequestUnion, models.GetShortcutRequestUnionTypedDict + get_shortcut_request: Union[ + models.GetShortcutRequest, models.GetShortcutRequestTypedDict ], + locale: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -466,7 +537,8 @@ async def retrieve_async( Read a particular shortcut's details given its ID. - :param request: The request object to send. + :param get_shortcut_request: GetShortcut request + :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 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 @@ -482,9 +554,12 @@ async def retrieve_async( else: base_url = self._get_url(base_url, url_variables) - if not isinstance(request, BaseModel): - request = utils.unmarshal(request, models.GetShortcutRequestUnion) - request = cast(models.GetShortcutRequestUnion, request) + request = models.GetshortcutRequestRequest( + locale=locale, + get_shortcut_request=utils.get_pydantic_model( + get_shortcut_request, models.GetShortcutRequest + ), + ) req = self._build_request_async( method="POST", @@ -500,7 +575,11 @@ async def retrieve_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.GetShortcutRequestUnion + request.get_shortcut_request, + False, + False, + "json", + models.GetShortcutRequest, ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -523,9 +602,14 @@ async def retrieve_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Shortcuts"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -544,12 +628,13 @@ def list( self, *, page_size: int, + locale: Optional[str] = None, include_fields: Optional[ - List[models.ListShortcutsPaginatedRequestIncludeField] + Iterable[models.ListShortcutsPaginatedRequestIncludeField] ] = None, cursor: Optional[str] = None, filters: Optional[ - Union[List[models.FacetFilter], List[models.FacetFilterTypedDict]] + Union[Iterable[models.FacetFilter], Iterable[models.FacetFilterTypedDict]] ] = None, sort: Optional[Union[models.SortOptions, models.SortOptionsTypedDict]] = None, query: Optional[str] = None, @@ -563,6 +648,7 @@ def list( List shortcuts editable/owned by the currently authenticated user. :param page_size: + :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 include_fields: Array of fields/data to be included in response that are not included by default :param cursor: A token specifying the position in the overall results to start at. Received from the endpoint and iterated back. Currently being used as page no (as we implement offset pagination) :param filters: A list of filters for the query. An AND is assumed between different filters. We support filters on Go Link name, author, department and type. @@ -583,15 +669,21 @@ def list( else: base_url = self._get_url(base_url, url_variables) - request = models.ListShortcutsPaginatedRequest( - include_fields=include_fields, - page_size=page_size, - cursor=cursor, - filters=utils.get_pydantic_model( - filters, Optional[List[models.FacetFilter]] + request = models.ListshortcutsRequest( + locale=locale, + list_shortcuts_paginated_request=models.ListShortcutsPaginatedRequest( + include_fields=utils.unmarshal( + include_fields, + Optional[List[models.ListShortcutsPaginatedRequestIncludeField]], + ), + page_size=page_size, + cursor=cursor, + filters=utils.get_pydantic_model( + filters, Optional[List[models.FacetFilter]] + ), + sort=utils.get_pydantic_model(sort, Optional[models.SortOptions]), + query=query, ), - sort=utils.get_pydantic_model(sort, Optional[models.SortOptions]), - query=query, ) req = self._build_request( @@ -608,7 +700,11 @@ def list( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.ListShortcutsPaginatedRequest + request.list_shortcuts_paginated_request, + False, + False, + "json", + models.ListShortcutsPaginatedRequest, ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -631,9 +727,14 @@ def list( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Shortcuts"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -654,12 +755,13 @@ async def list_async( self, *, page_size: int, + locale: Optional[str] = None, include_fields: Optional[ - List[models.ListShortcutsPaginatedRequestIncludeField] + Iterable[models.ListShortcutsPaginatedRequestIncludeField] ] = None, cursor: Optional[str] = None, filters: Optional[ - Union[List[models.FacetFilter], List[models.FacetFilterTypedDict]] + Union[Iterable[models.FacetFilter], Iterable[models.FacetFilterTypedDict]] ] = None, sort: Optional[Union[models.SortOptions, models.SortOptionsTypedDict]] = None, query: Optional[str] = None, @@ -673,6 +775,7 @@ async def list_async( List shortcuts editable/owned by the currently authenticated user. :param page_size: + :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 include_fields: Array of fields/data to be included in response that are not included by default :param cursor: A token specifying the position in the overall results to start at. Received from the endpoint and iterated back. Currently being used as page no (as we implement offset pagination) :param filters: A list of filters for the query. An AND is assumed between different filters. We support filters on Go Link name, author, department and type. @@ -693,15 +796,21 @@ async def list_async( else: base_url = self._get_url(base_url, url_variables) - request = models.ListShortcutsPaginatedRequest( - include_fields=include_fields, - page_size=page_size, - cursor=cursor, - filters=utils.get_pydantic_model( - filters, Optional[List[models.FacetFilter]] + request = models.ListshortcutsRequest( + locale=locale, + list_shortcuts_paginated_request=models.ListShortcutsPaginatedRequest( + include_fields=utils.unmarshal( + include_fields, + Optional[List[models.ListShortcutsPaginatedRequestIncludeField]], + ), + page_size=page_size, + cursor=cursor, + filters=utils.get_pydantic_model( + filters, Optional[List[models.FacetFilter]] + ), + sort=utils.get_pydantic_model(sort, Optional[models.SortOptions]), + query=query, ), - sort=utils.get_pydantic_model(sort, Optional[models.SortOptions]), - query=query, ) req = self._build_request_async( @@ -718,7 +827,11 @@ async def list_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.ListShortcutsPaginatedRequest + request.list_shortcuts_paginated_request, + False, + False, + "json", + models.ListShortcutsPaginatedRequest, ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -741,9 +854,14 @@ async def list_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Shortcuts"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -764,6 +882,7 @@ def update( self, *, id: int, + locale: Optional[str] = None, input_alias: Optional[str] = None, destination_url: Optional[str] = None, destination_document_id: Optional[str] = None, @@ -772,14 +891,14 @@ def update( url_template: Optional[str] = None, added_roles: Optional[ Union[ - List[models.UserRoleSpecification], - List[models.UserRoleSpecificationTypedDict], + Iterable[models.UserRoleSpecification], + Iterable[models.UserRoleSpecificationTypedDict], ] ] = None, removed_roles: Optional[ Union[ - List[models.UserRoleSpecification], - List[models.UserRoleSpecificationTypedDict], + Iterable[models.UserRoleSpecification], + Iterable[models.UserRoleSpecificationTypedDict], ] ] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, @@ -792,6 +911,7 @@ def update( Updates the shortcut with the given ID. :param id: The opaque id of the user generated content. + :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 input_alias: Link text following go/ prefix as entered by the user. :param destination_url: Destination URL for the shortcut. :param destination_document_id: Glean Document ID for the URL, if known. @@ -815,19 +935,22 @@ def update( else: base_url = self._get_url(base_url, url_variables) - request = models.UpdateShortcutRequest( - id=id, - input_alias=input_alias, - destination_url=destination_url, - destination_document_id=destination_document_id, - description=description, - unlisted=unlisted, - url_template=url_template, - added_roles=utils.get_pydantic_model( - added_roles, Optional[List[models.UserRoleSpecification]] - ), - removed_roles=utils.get_pydantic_model( - removed_roles, Optional[List[models.UserRoleSpecification]] + request = models.UpdateshortcutRequestRequest( + locale=locale, + update_shortcut_request=models.UpdateShortcutRequest( + id=id, + input_alias=input_alias, + destination_url=destination_url, + destination_document_id=destination_document_id, + description=description, + unlisted=unlisted, + url_template=url_template, + added_roles=utils.get_pydantic_model( + added_roles, Optional[List[models.UserRoleSpecification]] + ), + removed_roles=utils.get_pydantic_model( + removed_roles, Optional[List[models.UserRoleSpecification]] + ), ), ) @@ -845,7 +968,11 @@ def update( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.UpdateShortcutRequest + request.update_shortcut_request, + False, + False, + "json", + models.UpdateShortcutRequest, ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -868,9 +995,14 @@ def update( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Shortcuts"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -889,6 +1021,7 @@ async def update_async( self, *, id: int, + locale: Optional[str] = None, input_alias: Optional[str] = None, destination_url: Optional[str] = None, destination_document_id: Optional[str] = None, @@ -897,14 +1030,14 @@ async def update_async( url_template: Optional[str] = None, added_roles: Optional[ Union[ - List[models.UserRoleSpecification], - List[models.UserRoleSpecificationTypedDict], + Iterable[models.UserRoleSpecification], + Iterable[models.UserRoleSpecificationTypedDict], ] ] = None, removed_roles: Optional[ Union[ - List[models.UserRoleSpecification], - List[models.UserRoleSpecificationTypedDict], + Iterable[models.UserRoleSpecification], + Iterable[models.UserRoleSpecificationTypedDict], ] ] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, @@ -917,6 +1050,7 @@ async def update_async( Updates the shortcut with the given ID. :param id: The opaque id of the user generated content. + :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 input_alias: Link text following go/ prefix as entered by the user. :param destination_url: Destination URL for the shortcut. :param destination_document_id: Glean Document ID for the URL, if known. @@ -940,19 +1074,22 @@ async def update_async( else: base_url = self._get_url(base_url, url_variables) - request = models.UpdateShortcutRequest( - id=id, - input_alias=input_alias, - destination_url=destination_url, - destination_document_id=destination_document_id, - description=description, - unlisted=unlisted, - url_template=url_template, - added_roles=utils.get_pydantic_model( - added_roles, Optional[List[models.UserRoleSpecification]] - ), - removed_roles=utils.get_pydantic_model( - removed_roles, Optional[List[models.UserRoleSpecification]] + request = models.UpdateshortcutRequestRequest( + locale=locale, + update_shortcut_request=models.UpdateShortcutRequest( + id=id, + input_alias=input_alias, + destination_url=destination_url, + destination_document_id=destination_document_id, + description=description, + unlisted=unlisted, + url_template=url_template, + added_roles=utils.get_pydantic_model( + added_roles, Optional[List[models.UserRoleSpecification]] + ), + removed_roles=utils.get_pydantic_model( + removed_roles, Optional[List[models.UserRoleSpecification]] + ), ), ) @@ -970,7 +1107,11 @@ async def update_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.UpdateShortcutRequest + request.update_shortcut_request, + False, + False, + "json", + models.UpdateShortcutRequest, ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -993,9 +1134,14 @@ async def update_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Shortcuts"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/glean/api_client/client_verification.py b/src/glean/api_client/client_verification.py index 67219858..706d8499 100644 --- a/src/glean/api_client/client_verification.py +++ b/src/glean/api_client/client_verification.py @@ -14,6 +14,7 @@ def add_reminder( self, *, document_id: str, + locale: Optional[str] = None, assignee: Optional[str] = None, remind_in_days: Optional[int] = None, reason: Optional[str] = None, @@ -27,6 +28,7 @@ def add_reminder( Creates a verification reminder for the document. Users can create verification reminders from different product surfaces. :param document_id: The document which the verification is for new reminders and/or update. + :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 assignee: The obfuscated id of the person this verification is assigned to. :param remind_in_days: Reminder for the next verifications in terms of days. For deletion, this will be omitted. :param reason: An optional free-text reason for the reminder. This is particularly useful when a reminder is used to ask for verification from another user (for example, \"Duplicate\", \"Incomplete\", \"Incorrect\"). @@ -45,11 +47,14 @@ def add_reminder( else: base_url = self._get_url(base_url, url_variables) - request = models.ReminderRequest( - document_id=document_id, - assignee=assignee, - remind_in_days=remind_in_days, - reason=reason, + request = models.AddverificationreminderRequest( + locale=locale, + reminder_request=models.ReminderRequest( + document_id=document_id, + assignee=assignee, + remind_in_days=remind_in_days, + reason=reason, + ), ) req = self._build_request( @@ -66,7 +71,7 @@ def add_reminder( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.ReminderRequest + request.reminder_request, False, False, "json", models.ReminderRequest ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -89,9 +94,14 @@ def add_reminder( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Verification"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "403", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -110,6 +120,7 @@ async def add_reminder_async( self, *, document_id: str, + locale: Optional[str] = None, assignee: Optional[str] = None, remind_in_days: Optional[int] = None, reason: Optional[str] = None, @@ -123,6 +134,7 @@ async def add_reminder_async( Creates a verification reminder for the document. Users can create verification reminders from different product surfaces. :param document_id: The document which the verification is for new reminders and/or update. + :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 assignee: The obfuscated id of the person this verification is assigned to. :param remind_in_days: Reminder for the next verifications in terms of days. For deletion, this will be omitted. :param reason: An optional free-text reason for the reminder. This is particularly useful when a reminder is used to ask for verification from another user (for example, \"Duplicate\", \"Incomplete\", \"Incorrect\"). @@ -141,11 +153,14 @@ async def add_reminder_async( else: base_url = self._get_url(base_url, url_variables) - request = models.ReminderRequest( - document_id=document_id, - assignee=assignee, - remind_in_days=remind_in_days, - reason=reason, + request = models.AddverificationreminderRequest( + locale=locale, + reminder_request=models.ReminderRequest( + document_id=document_id, + assignee=assignee, + remind_in_days=remind_in_days, + reason=reason, + ), ) req = self._build_request_async( @@ -162,7 +177,7 @@ async def add_reminder_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.ReminderRequest + request.reminder_request, False, False, "json", models.ReminderRequest ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -185,9 +200,14 @@ async def add_reminder_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Verification"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "403", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -206,6 +226,7 @@ def list( self, *, count: Optional[int] = None, + locale: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -216,6 +237,7 @@ def list( Returns the information to be rendered in verification dashboard. Includes information for each document owned by user regarding their verifications. :param count: Maximum number of documents to return + :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 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 @@ -233,6 +255,7 @@ def list( request = models.ListverificationsRequest( count=count, + locale=locale, ) req = self._build_request( @@ -269,9 +292,14 @@ def list( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Verification"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -290,6 +318,7 @@ async def list_async( self, *, count: Optional[int] = None, + locale: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -300,6 +329,7 @@ async def list_async( Returns the information to be rendered in verification dashboard. Includes information for each document owned by user regarding their verifications. :param count: Maximum number of documents to return + :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 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 @@ -317,6 +347,7 @@ async def list_async( request = models.ListverificationsRequest( count=count, + locale=locale, ) req = self._build_request_async( @@ -353,9 +384,14 @@ async def list_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Verification"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -374,6 +410,7 @@ def verify( self, *, document_id: str, + locale: Optional[str] = None, action: Optional[models.VerifyRequestAction] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -385,6 +422,7 @@ def verify( Verify documents to keep the knowledge up to date within customer corpus. :param document_id: The document which is verified. + :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 action: The verification action requested. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -401,9 +439,12 @@ def verify( else: base_url = self._get_url(base_url, url_variables) - request = models.VerifyRequest( - document_id=document_id, - action=action, + request = models.VerifyRequestRequest( + locale=locale, + verify_request=models.VerifyRequest( + document_id=document_id, + action=action, + ), ) req = self._build_request( @@ -420,7 +461,7 @@ def verify( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.VerifyRequest + request.verify_request, False, False, "json", models.VerifyRequest ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -443,9 +484,14 @@ def verify( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Verification"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "403", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -464,6 +510,7 @@ async def verify_async( self, *, document_id: str, + locale: Optional[str] = None, action: Optional[models.VerifyRequestAction] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -475,6 +522,7 @@ async def verify_async( Verify documents to keep the knowledge up to date within customer corpus. :param document_id: The document which is verified. + :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 action: The verification action requested. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -491,9 +539,12 @@ async def verify_async( else: base_url = self._get_url(base_url, url_variables) - request = models.VerifyRequest( - document_id=document_id, - action=action, + request = models.VerifyRequestRequest( + locale=locale, + verify_request=models.VerifyRequest( + document_id=document_id, + action=action, + ), ) req = self._build_request_async( @@ -510,7 +561,7 @@ async def verify_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.VerifyRequest + request.verify_request, False, False, "json", models.VerifyRequest ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -533,9 +584,14 @@ async def verify_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Verification"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "403", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/glean/api_client/collections.py b/src/glean/api_client/collections.py index e5d36ad7..ddc1b4d7 100644 --- a/src/glean/api_client/collections.py +++ b/src/glean/api_client/collections.py @@ -6,7 +6,7 @@ from glean.api_client.types import OptionalNullable, UNSET from glean.api_client.utils import get_security_from_env from glean.api_client.utils.unmarshal_json_response import unmarshal_json_response -from typing import Any, List, Mapping, Optional, Union +from typing import Any, Iterable, List, Mapping, Optional, Union class Collections(BaseSDK): @@ -14,10 +14,11 @@ def add_items( self, *, collection_id: float, + locale: Optional[str] = None, added_collection_item_descriptors: Optional[ Union[ - List[models.CollectionItemDescriptor], - List[models.CollectionItemDescriptorTypedDict], + Iterable[models.CollectionItemDescriptor], + Iterable[models.CollectionItemDescriptorTypedDict], ] ] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, @@ -30,6 +31,7 @@ def add_items( Add items to a Collection. :param collection_id: The ID of the Collection to add items to. + :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 added_collection_item_descriptors: The CollectionItemDescriptors of the items being added. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -46,11 +48,14 @@ def add_items( else: base_url = self._get_url(base_url, url_variables) - request = models.AddCollectionItemsRequest( - collection_id=collection_id, - added_collection_item_descriptors=utils.get_pydantic_model( - added_collection_item_descriptors, - Optional[List[models.CollectionItemDescriptor]], + request = models.AddcollectionitemsRequestRequest( + locale=locale, + add_collection_items_request=models.AddCollectionItemsRequest( + collection_id=collection_id, + added_collection_item_descriptors=utils.get_pydantic_model( + added_collection_item_descriptors, + Optional[List[models.CollectionItemDescriptor]], + ), ), ) @@ -68,7 +73,11 @@ def add_items( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.AddCollectionItemsRequest + request.add_collection_items_request, + False, + False, + "json", + models.AddCollectionItemsRequest, ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -91,9 +100,14 @@ def add_items( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Collections"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -112,10 +126,11 @@ async def add_items_async( self, *, collection_id: float, + locale: Optional[str] = None, added_collection_item_descriptors: Optional[ Union[ - List[models.CollectionItemDescriptor], - List[models.CollectionItemDescriptorTypedDict], + Iterable[models.CollectionItemDescriptor], + Iterable[models.CollectionItemDescriptorTypedDict], ] ] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, @@ -128,6 +143,7 @@ async def add_items_async( Add items to a Collection. :param collection_id: The ID of the Collection to add items to. + :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 added_collection_item_descriptors: The CollectionItemDescriptors of the items being added. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -144,11 +160,14 @@ async def add_items_async( else: base_url = self._get_url(base_url, url_variables) - request = models.AddCollectionItemsRequest( - collection_id=collection_id, - added_collection_item_descriptors=utils.get_pydantic_model( - added_collection_item_descriptors, - Optional[List[models.CollectionItemDescriptor]], + request = models.AddcollectionitemsRequestRequest( + locale=locale, + add_collection_items_request=models.AddCollectionItemsRequest( + collection_id=collection_id, + added_collection_item_descriptors=utils.get_pydantic_model( + added_collection_item_descriptors, + Optional[List[models.CollectionItemDescriptor]], + ), ), ) @@ -166,7 +185,11 @@ async def add_items_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.AddCollectionItemsRequest + request.add_collection_items_request, + False, + False, + "json", + models.AddCollectionItemsRequest, ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -189,9 +212,14 @@ async def add_items_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Collections"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -210,21 +238,22 @@ def create( self, *, name: str, + locale: Optional[str] = None, description: Optional[str] = None, added_roles: Optional[ Union[ - List[models.UserRoleSpecification], - List[models.UserRoleSpecificationTypedDict], + Iterable[models.UserRoleSpecification], + Iterable[models.UserRoleSpecificationTypedDict], ] ] = None, removed_roles: Optional[ Union[ - List[models.UserRoleSpecification], - List[models.UserRoleSpecificationTypedDict], + Iterable[models.UserRoleSpecification], + Iterable[models.UserRoleSpecificationTypedDict], ] ] = None, audience_filters: Optional[ - Union[List[models.FacetFilter], List[models.FacetFilterTypedDict]] + Union[Iterable[models.FacetFilter], Iterable[models.FacetFilterTypedDict]] ] = None, icon: Optional[str] = None, admin_locked: Optional[bool] = None, @@ -242,6 +271,7 @@ def create( Create a publicly visible (empty) Collection of documents. :param name: The unique name of the Collection. + :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 description: A brief summary of the Collection's contents. :param added_roles: A list of added user roles for the Collection. :param removed_roles: A list of removed user roles for the Collection. @@ -267,24 +297,29 @@ def create( else: base_url = self._get_url(base_url, url_variables) - request = models.CreateCollectionRequest( - name=name, - description=description, - added_roles=utils.get_pydantic_model( - added_roles, Optional[List[models.UserRoleSpecification]] - ), - removed_roles=utils.get_pydantic_model( - removed_roles, Optional[List[models.UserRoleSpecification]] - ), - audience_filters=utils.get_pydantic_model( - audience_filters, Optional[List[models.FacetFilter]] + request = models.CreatecollectionRequestRequest( + locale=locale, + create_collection_request=models.CreateCollectionRequest( + name=name, + description=description, + added_roles=utils.get_pydantic_model( + added_roles, Optional[List[models.UserRoleSpecification]] + ), + removed_roles=utils.get_pydantic_model( + removed_roles, Optional[List[models.UserRoleSpecification]] + ), + audience_filters=utils.get_pydantic_model( + audience_filters, Optional[List[models.FacetFilter]] + ), + icon=icon, + admin_locked=admin_locked, + parent_id=parent_id, + thumbnail=utils.get_pydantic_model( + thumbnail, Optional[models.Thumbnail] + ), + allowed_datasource=allowed_datasource, + new_next_item_id=new_next_item_id, ), - icon=icon, - admin_locked=admin_locked, - parent_id=parent_id, - thumbnail=utils.get_pydantic_model(thumbnail, Optional[models.Thumbnail]), - allowed_datasource=allowed_datasource, - new_next_item_id=new_next_item_id, ) req = self._build_request( @@ -301,7 +336,11 @@ def create( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.CreateCollectionRequest + request.create_collection_request, + False, + False, + "json", + models.CreateCollectionRequest, ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -324,9 +363,14 @@ def create( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Collections"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "422", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -351,21 +395,22 @@ async def create_async( self, *, name: str, + locale: Optional[str] = None, description: Optional[str] = None, added_roles: Optional[ Union[ - List[models.UserRoleSpecification], - List[models.UserRoleSpecificationTypedDict], + Iterable[models.UserRoleSpecification], + Iterable[models.UserRoleSpecificationTypedDict], ] ] = None, removed_roles: Optional[ Union[ - List[models.UserRoleSpecification], - List[models.UserRoleSpecificationTypedDict], + Iterable[models.UserRoleSpecification], + Iterable[models.UserRoleSpecificationTypedDict], ] ] = None, audience_filters: Optional[ - Union[List[models.FacetFilter], List[models.FacetFilterTypedDict]] + Union[Iterable[models.FacetFilter], Iterable[models.FacetFilterTypedDict]] ] = None, icon: Optional[str] = None, admin_locked: Optional[bool] = None, @@ -383,6 +428,7 @@ async def create_async( Create a publicly visible (empty) Collection of documents. :param name: The unique name of the Collection. + :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 description: A brief summary of the Collection's contents. :param added_roles: A list of added user roles for the Collection. :param removed_roles: A list of removed user roles for the Collection. @@ -408,24 +454,29 @@ async def create_async( else: base_url = self._get_url(base_url, url_variables) - request = models.CreateCollectionRequest( - name=name, - description=description, - added_roles=utils.get_pydantic_model( - added_roles, Optional[List[models.UserRoleSpecification]] - ), - removed_roles=utils.get_pydantic_model( - removed_roles, Optional[List[models.UserRoleSpecification]] - ), - audience_filters=utils.get_pydantic_model( - audience_filters, Optional[List[models.FacetFilter]] + request = models.CreatecollectionRequestRequest( + locale=locale, + create_collection_request=models.CreateCollectionRequest( + name=name, + description=description, + added_roles=utils.get_pydantic_model( + added_roles, Optional[List[models.UserRoleSpecification]] + ), + removed_roles=utils.get_pydantic_model( + removed_roles, Optional[List[models.UserRoleSpecification]] + ), + audience_filters=utils.get_pydantic_model( + audience_filters, Optional[List[models.FacetFilter]] + ), + icon=icon, + admin_locked=admin_locked, + parent_id=parent_id, + thumbnail=utils.get_pydantic_model( + thumbnail, Optional[models.Thumbnail] + ), + allowed_datasource=allowed_datasource, + new_next_item_id=new_next_item_id, ), - icon=icon, - admin_locked=admin_locked, - parent_id=parent_id, - thumbnail=utils.get_pydantic_model(thumbnail, Optional[models.Thumbnail]), - allowed_datasource=allowed_datasource, - new_next_item_id=new_next_item_id, ) req = self._build_request_async( @@ -442,7 +493,11 @@ async def create_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.CreateCollectionRequest + request.create_collection_request, + False, + False, + "json", + models.CreateCollectionRequest, ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -465,9 +520,14 @@ async def create_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Collections"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "422", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -491,7 +551,8 @@ async def create_async( def delete( self, *, - ids: List[int], + ids: Iterable[int], + locale: Optional[str] = None, allowed_datasource: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -503,6 +564,7 @@ def delete( Delete a Collection given the Collection's ID. :param ids: The IDs of the Collections to delete. + :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 allowed_datasource: The datasource allowed in the Collection to be deleted. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -519,9 +581,12 @@ def delete( else: base_url = self._get_url(base_url, url_variables) - request = models.DeleteCollectionRequest( - ids=ids, - allowed_datasource=allowed_datasource, + request = models.DeletecollectionRequestRequest( + locale=locale, + delete_collection_request=models.DeleteCollectionRequest( + ids=utils.unmarshal(ids, List[int]), + allowed_datasource=allowed_datasource, + ), ) req = self._build_request( @@ -538,7 +603,11 @@ def delete( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.DeleteCollectionRequest + request.delete_collection_request, + False, + False, + "json", + models.DeleteCollectionRequest, ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -561,9 +630,14 @@ def delete( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Collections"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "422", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -587,7 +661,8 @@ def delete( async def delete_async( self, *, - ids: List[int], + ids: Iterable[int], + locale: Optional[str] = None, allowed_datasource: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -599,6 +674,7 @@ async def delete_async( Delete a Collection given the Collection's ID. :param ids: The IDs of the Collections to delete. + :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 allowed_datasource: The datasource allowed in the Collection to be deleted. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -615,9 +691,12 @@ async def delete_async( else: base_url = self._get_url(base_url, url_variables) - request = models.DeleteCollectionRequest( - ids=ids, - allowed_datasource=allowed_datasource, + request = models.DeletecollectionRequestRequest( + locale=locale, + delete_collection_request=models.DeleteCollectionRequest( + ids=utils.unmarshal(ids, List[int]), + allowed_datasource=allowed_datasource, + ), ) req = self._build_request_async( @@ -634,7 +713,11 @@ async def delete_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.DeleteCollectionRequest + request.delete_collection_request, + False, + False, + "json", + models.DeleteCollectionRequest, ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -657,9 +740,14 @@ async def delete_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Collections"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "422", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -685,6 +773,7 @@ def delete_item( *, collection_id: float, item_id: str, + locale: Optional[str] = None, document_id: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -697,6 +786,7 @@ def delete_item( :param collection_id: The ID of the Collection to remove an item in. :param item_id: The item ID of the CollectionItem to remove from this Collection. + :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 document_id: The (optional) Glean Document ID of the CollectionItem to remove from this Collection if this is an indexed document. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -713,10 +803,13 @@ def delete_item( else: base_url = self._get_url(base_url, url_variables) - request = models.DeleteCollectionItemRequest( - collection_id=collection_id, - item_id=item_id, - document_id=document_id, + request = models.DeletecollectionitemRequestRequest( + locale=locale, + delete_collection_item_request=models.DeleteCollectionItemRequest( + collection_id=collection_id, + item_id=item_id, + document_id=document_id, + ), ) req = self._build_request( @@ -733,7 +826,11 @@ def delete_item( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.DeleteCollectionItemRequest + request.delete_collection_item_request, + False, + False, + "json", + models.DeleteCollectionItemRequest, ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -756,9 +853,14 @@ def delete_item( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Collections"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "422", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -780,6 +882,7 @@ async def delete_item_async( *, collection_id: float, item_id: str, + locale: Optional[str] = None, document_id: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -792,6 +895,7 @@ async def delete_item_async( :param collection_id: The ID of the Collection to remove an item in. :param item_id: The item ID of the CollectionItem to remove from this Collection. + :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 document_id: The (optional) Glean Document ID of the CollectionItem to remove from this Collection if this is an indexed document. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -808,10 +912,13 @@ async def delete_item_async( else: base_url = self._get_url(base_url, url_variables) - request = models.DeleteCollectionItemRequest( - collection_id=collection_id, - item_id=item_id, - document_id=document_id, + request = models.DeletecollectionitemRequestRequest( + locale=locale, + delete_collection_item_request=models.DeleteCollectionItemRequest( + collection_id=collection_id, + item_id=item_id, + document_id=document_id, + ), ) req = self._build_request_async( @@ -828,7 +935,11 @@ async def delete_item_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.DeleteCollectionItemRequest + request.delete_collection_item_request, + False, + False, + "json", + models.DeleteCollectionItemRequest, ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -851,9 +962,14 @@ async def delete_item_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Collections"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "422", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -875,21 +991,22 @@ def update( *, name: str, id: int, + locale: Optional[str] = None, description: Optional[str] = None, added_roles: Optional[ Union[ - List[models.UserRoleSpecification], - List[models.UserRoleSpecificationTypedDict], + Iterable[models.UserRoleSpecification], + Iterable[models.UserRoleSpecificationTypedDict], ] ] = None, removed_roles: Optional[ Union[ - List[models.UserRoleSpecification], - List[models.UserRoleSpecificationTypedDict], + Iterable[models.UserRoleSpecification], + Iterable[models.UserRoleSpecificationTypedDict], ] ] = None, audience_filters: Optional[ - Union[List[models.FacetFilter], List[models.FacetFilterTypedDict]] + Union[Iterable[models.FacetFilter], Iterable[models.FacetFilterTypedDict]] ] = None, icon: Optional[str] = None, admin_locked: Optional[bool] = None, @@ -907,6 +1024,7 @@ def update( :param name: The unique name of the Collection. :param id: The ID of the Collection to modify. + :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 description: A brief summary of the Collection's contents. :param added_roles: A list of added user roles for the Collection. :param removed_roles: A list of removed user roles for the Collection. @@ -931,24 +1049,29 @@ def update( else: base_url = self._get_url(base_url, url_variables) - request = models.EditCollectionRequest( - name=name, - description=description, - added_roles=utils.get_pydantic_model( - added_roles, Optional[List[models.UserRoleSpecification]] - ), - removed_roles=utils.get_pydantic_model( - removed_roles, Optional[List[models.UserRoleSpecification]] - ), - audience_filters=utils.get_pydantic_model( - audience_filters, Optional[List[models.FacetFilter]] + request = models.EditcollectionRequestRequest( + locale=locale, + edit_collection_request=models.EditCollectionRequest( + name=name, + description=description, + added_roles=utils.get_pydantic_model( + added_roles, Optional[List[models.UserRoleSpecification]] + ), + removed_roles=utils.get_pydantic_model( + removed_roles, Optional[List[models.UserRoleSpecification]] + ), + audience_filters=utils.get_pydantic_model( + audience_filters, Optional[List[models.FacetFilter]] + ), + icon=icon, + admin_locked=admin_locked, + parent_id=parent_id, + thumbnail=utils.get_pydantic_model( + thumbnail, Optional[models.Thumbnail] + ), + allowed_datasource=allowed_datasource, + id=id, ), - icon=icon, - admin_locked=admin_locked, - parent_id=parent_id, - thumbnail=utils.get_pydantic_model(thumbnail, Optional[models.Thumbnail]), - allowed_datasource=allowed_datasource, - id=id, ) req = self._build_request( @@ -965,7 +1088,11 @@ def update( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.EditCollectionRequest + request.edit_collection_request, + False, + False, + "json", + models.EditCollectionRequest, ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -988,9 +1115,14 @@ def update( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Collections"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "422", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1016,21 +1148,22 @@ async def update_async( *, name: str, id: int, + locale: Optional[str] = None, description: Optional[str] = None, added_roles: Optional[ Union[ - List[models.UserRoleSpecification], - List[models.UserRoleSpecificationTypedDict], + Iterable[models.UserRoleSpecification], + Iterable[models.UserRoleSpecificationTypedDict], ] ] = None, removed_roles: Optional[ Union[ - List[models.UserRoleSpecification], - List[models.UserRoleSpecificationTypedDict], + Iterable[models.UserRoleSpecification], + Iterable[models.UserRoleSpecificationTypedDict], ] ] = None, audience_filters: Optional[ - Union[List[models.FacetFilter], List[models.FacetFilterTypedDict]] + Union[Iterable[models.FacetFilter], Iterable[models.FacetFilterTypedDict]] ] = None, icon: Optional[str] = None, admin_locked: Optional[bool] = None, @@ -1048,6 +1181,7 @@ async def update_async( :param name: The unique name of the Collection. :param id: The ID of the Collection to modify. + :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 description: A brief summary of the Collection's contents. :param added_roles: A list of added user roles for the Collection. :param removed_roles: A list of removed user roles for the Collection. @@ -1072,24 +1206,29 @@ async def update_async( else: base_url = self._get_url(base_url, url_variables) - request = models.EditCollectionRequest( - name=name, - description=description, - added_roles=utils.get_pydantic_model( - added_roles, Optional[List[models.UserRoleSpecification]] - ), - removed_roles=utils.get_pydantic_model( - removed_roles, Optional[List[models.UserRoleSpecification]] - ), - audience_filters=utils.get_pydantic_model( - audience_filters, Optional[List[models.FacetFilter]] + request = models.EditcollectionRequestRequest( + locale=locale, + edit_collection_request=models.EditCollectionRequest( + name=name, + description=description, + added_roles=utils.get_pydantic_model( + added_roles, Optional[List[models.UserRoleSpecification]] + ), + removed_roles=utils.get_pydantic_model( + removed_roles, Optional[List[models.UserRoleSpecification]] + ), + audience_filters=utils.get_pydantic_model( + audience_filters, Optional[List[models.FacetFilter]] + ), + icon=icon, + admin_locked=admin_locked, + parent_id=parent_id, + thumbnail=utils.get_pydantic_model( + thumbnail, Optional[models.Thumbnail] + ), + allowed_datasource=allowed_datasource, + id=id, ), - icon=icon, - admin_locked=admin_locked, - parent_id=parent_id, - thumbnail=utils.get_pydantic_model(thumbnail, Optional[models.Thumbnail]), - allowed_datasource=allowed_datasource, - id=id, ) req = self._build_request_async( @@ -1106,7 +1245,11 @@ async def update_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.EditCollectionRequest + request.edit_collection_request, + False, + False, + "json", + models.EditCollectionRequest, ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -1129,9 +1272,14 @@ async def update_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Collections"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "422", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1157,6 +1305,7 @@ def update_item( *, collection_id: int, item_id: str, + locale: Optional[str] = None, name: Optional[str] = None, description: Optional[str] = None, icon: Optional[str] = None, @@ -1171,6 +1320,7 @@ def update_item( :param collection_id: The ID of the Collection to edit CollectionItems in. :param item_id: The ID of the CollectionItem to edit. + :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 name: The optional name of the Collection item. :param description: A helpful description of why this CollectionItem is in the Collection that it's in. :param icon: The emoji icon for this CollectionItem. Only used for Text type items. @@ -1189,12 +1339,15 @@ def update_item( else: base_url = self._get_url(base_url, url_variables) - request = models.EditCollectionItemRequest( - name=name, - description=description, - icon=icon, - collection_id=collection_id, - item_id=item_id, + request = models.EditcollectionitemRequestRequest( + locale=locale, + edit_collection_item_request=models.EditCollectionItemRequest( + name=name, + description=description, + icon=icon, + collection_id=collection_id, + item_id=item_id, + ), ) req = self._build_request( @@ -1211,7 +1364,11 @@ def update_item( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.EditCollectionItemRequest + request.edit_collection_item_request, + False, + False, + "json", + models.EditCollectionItemRequest, ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -1234,9 +1391,14 @@ def update_item( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Collections"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1256,6 +1418,7 @@ async def update_item_async( *, collection_id: int, item_id: str, + locale: Optional[str] = None, name: Optional[str] = None, description: Optional[str] = None, icon: Optional[str] = None, @@ -1270,6 +1433,7 @@ async def update_item_async( :param collection_id: The ID of the Collection to edit CollectionItems in. :param item_id: The ID of the CollectionItem to edit. + :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 name: The optional name of the Collection item. :param description: A helpful description of why this CollectionItem is in the Collection that it's in. :param icon: The emoji icon for this CollectionItem. Only used for Text type items. @@ -1288,12 +1452,15 @@ async def update_item_async( else: base_url = self._get_url(base_url, url_variables) - request = models.EditCollectionItemRequest( - name=name, - description=description, - icon=icon, - collection_id=collection_id, - item_id=item_id, + request = models.EditcollectionitemRequestRequest( + locale=locale, + edit_collection_item_request=models.EditCollectionItemRequest( + name=name, + description=description, + icon=icon, + collection_id=collection_id, + item_id=item_id, + ), ) req = self._build_request_async( @@ -1310,7 +1477,11 @@ async def update_item_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.EditCollectionItemRequest + request.edit_collection_item_request, + False, + False, + "json", + models.EditCollectionItemRequest, ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -1333,9 +1504,14 @@ async def update_item_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Collections"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1354,6 +1530,7 @@ def retrieve( self, *, id: int, + locale: Optional[str] = None, with_items: Optional[bool] = None, with_hierarchy: Optional[bool] = None, allowed_datasource: Optional[str] = None, @@ -1367,6 +1544,7 @@ def retrieve( Read the details of a Collection given its ID. Does not fetch items in this Collection. :param id: The ID of the Collection to be retrieved. + :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 with_items: Whether or not to include the Collection Items in this Collection. Only request if absolutely required, as this is expensive. :param with_hierarchy: Whether or not to include the top level Collection in this Collection's hierarchy. :param allowed_datasource: The datasource allowed in the Collection returned. @@ -1385,11 +1563,14 @@ def retrieve( else: base_url = self._get_url(base_url, url_variables) - request = models.GetCollectionRequest( - id=id, - with_items=with_items, - with_hierarchy=with_hierarchy, - allowed_datasource=allowed_datasource, + request = models.GetcollectionRequestRequest( + locale=locale, + get_collection_request=models.GetCollectionRequest( + id=id, + with_items=with_items, + with_hierarchy=with_hierarchy, + allowed_datasource=allowed_datasource, + ), ) req = self._build_request( @@ -1406,7 +1587,11 @@ def retrieve( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.GetCollectionRequest + request.get_collection_request, + False, + False, + "json", + models.GetCollectionRequest, ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -1429,9 +1614,14 @@ def retrieve( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Collections"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Preview", + }, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1450,6 +1640,7 @@ async def retrieve_async( self, *, id: int, + locale: Optional[str] = None, with_items: Optional[bool] = None, with_hierarchy: Optional[bool] = None, allowed_datasource: Optional[str] = None, @@ -1463,6 +1654,7 @@ async def retrieve_async( Read the details of a Collection given its ID. Does not fetch items in this Collection. :param id: The ID of the Collection to be retrieved. + :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 with_items: Whether or not to include the Collection Items in this Collection. Only request if absolutely required, as this is expensive. :param with_hierarchy: Whether or not to include the top level Collection in this Collection's hierarchy. :param allowed_datasource: The datasource allowed in the Collection returned. @@ -1481,11 +1673,14 @@ async def retrieve_async( else: base_url = self._get_url(base_url, url_variables) - request = models.GetCollectionRequest( - id=id, - with_items=with_items, - with_hierarchy=with_hierarchy, - allowed_datasource=allowed_datasource, + request = models.GetcollectionRequestRequest( + locale=locale, + get_collection_request=models.GetCollectionRequest( + id=id, + with_items=with_items, + with_hierarchy=with_hierarchy, + allowed_datasource=allowed_datasource, + ), ) req = self._build_request_async( @@ -1502,7 +1697,11 @@ async def retrieve_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.GetCollectionRequest + request.get_collection_request, + False, + False, + "json", + models.GetCollectionRequest, ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -1525,9 +1724,14 @@ async def retrieve_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Collections"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Preview", + }, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1545,6 +1749,7 @@ async def retrieve_async( def list( self, *, + locale: Optional[str] = None, include_audience: Optional[bool] = None, include_roles: Optional[bool] = None, allowed_datasource: Optional[str] = None, @@ -1557,6 +1762,7 @@ def list( List all existing Collections. + :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 include_audience: Whether to include the audience filters with the listed Collections. :param include_roles: Whether to include the editor roles with the listed Collections. :param allowed_datasource: The datasource type this Collection can hold. @@ -1576,10 +1782,13 @@ def list( else: base_url = self._get_url(base_url, url_variables) - request = models.ListCollectionsRequest( - include_audience=include_audience, - include_roles=include_roles, - allowed_datasource=allowed_datasource, + request = models.ListcollectionsRequestRequest( + locale=locale, + list_collections_request=models.ListCollectionsRequest( + include_audience=include_audience, + include_roles=include_roles, + allowed_datasource=allowed_datasource, + ), ) req = self._build_request( @@ -1596,7 +1805,11 @@ def list( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.ListCollectionsRequest + request.list_collections_request, + False, + False, + "json", + models.ListCollectionsRequest, ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -1619,9 +1832,14 @@ def list( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Collections"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1639,6 +1857,7 @@ def list( async def list_async( self, *, + locale: Optional[str] = None, include_audience: Optional[bool] = None, include_roles: Optional[bool] = None, allowed_datasource: Optional[str] = None, @@ -1651,6 +1870,7 @@ async def list_async( List all existing Collections. + :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 include_audience: Whether to include the audience filters with the listed Collections. :param include_roles: Whether to include the editor roles with the listed Collections. :param allowed_datasource: The datasource type this Collection can hold. @@ -1670,10 +1890,13 @@ async def list_async( else: base_url = self._get_url(base_url, url_variables) - request = models.ListCollectionsRequest( - include_audience=include_audience, - include_roles=include_roles, - allowed_datasource=allowed_datasource, + request = models.ListcollectionsRequestRequest( + locale=locale, + list_collections_request=models.ListCollectionsRequest( + include_audience=include_audience, + include_roles=include_roles, + allowed_datasource=allowed_datasource, + ), ) req = self._build_request_async( @@ -1690,7 +1913,11 @@ async def list_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.ListCollectionsRequest + request.list_collections_request, + False, + False, + "json", + models.ListCollectionsRequest, ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -1713,9 +1940,14 @@ async def list_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Collections"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/glean/api_client/custommetadata.py b/src/glean/api_client/custommetadata.py new file mode 100644 index 00000000..1e933c1c --- /dev/null +++ b/src/glean/api_client/custommetadata.py @@ -0,0 +1,1133 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from .basesdk import BaseSDK +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.unmarshal_json_response import unmarshal_json_response +from typing import Any, Iterable, List, Mapping, Optional, Union + + +class CustomMetadata(BaseSDK): + def upsert( + self, + *, + doc_id: str, + group_name: str, + custom_metadata: Union[ + Iterable[models.CustomProperty], Iterable[models.CustomPropertyTypedDict] + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.SuccessResponse: + r"""Add or update custom metadata + + Associates custom metadata with a specific document. Custom metadata enables you to enrich documents with additional structured information that can be used for search, filtering, and faceting. + + :param doc_id: Unique Glean identifier of the document + :param group_name: Name of the metadata group as specified while adding schema + :param custom_metadata: Array of custom metadata key-value pairs + :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 = models.PUT_REST_API_INDEX_DOCUMENT_DOC_ID_CUSTOM_METADATA_GROUP_NAME_OP_SERVERS[ + 0 + ] + url_variables = { + "instance": "instance-name", + } + + request = models.PutRestAPIIndexDocumentDocIDCustomMetadataGroupNameRequest( + doc_id=doc_id, + group_name=group_name, + custom_metadata_put_request=models.CustomMetadataPutRequest( + custom_metadata=utils.get_pydantic_model( + custom_metadata, List[models.CustomProperty] + ), + ), + ) + + req = self._build_request( + method="PUT", + path="/rest/api/index/document/{docId}/custom-metadata/{groupName}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=True, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request.custom_metadata_put_request, + False, + False, + "json", + models.CustomMetadataPutRequest, + ), + 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="put_/rest/api/index/document/{docId}/custom-metadata/{groupName}", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Custom Metadata"], + extensions=None, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.SuccessResponse, http_res) + if utils.match_response( + http_res, ["400", "401", "404", "429"], "application/json" + ): + response_data = unmarshal_json_response( + errors.ErrorInfoResponseData, http_res + ) + raise errors.ErrorInfoResponse(response_data, http_res) + if utils.match_response(http_res, "500", "application/json"): + response_data = unmarshal_json_response( + errors.ErrorInfoResponseData, http_res + ) + raise errors.ErrorInfoResponse(response_data, http_res) + 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) + + raise errors.GleanError("Unexpected response received", http_res) + + async def upsert_async( + self, + *, + doc_id: str, + group_name: str, + custom_metadata: Union[ + Iterable[models.CustomProperty], Iterable[models.CustomPropertyTypedDict] + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.SuccessResponse: + r"""Add or update custom metadata + + Associates custom metadata with a specific document. Custom metadata enables you to enrich documents with additional structured information that can be used for search, filtering, and faceting. + + :param doc_id: Unique Glean identifier of the document + :param group_name: Name of the metadata group as specified while adding schema + :param custom_metadata: Array of custom metadata key-value pairs + :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 = models.PUT_REST_API_INDEX_DOCUMENT_DOC_ID_CUSTOM_METADATA_GROUP_NAME_OP_SERVERS[ + 0 + ] + url_variables = { + "instance": "instance-name", + } + + request = models.PutRestAPIIndexDocumentDocIDCustomMetadataGroupNameRequest( + doc_id=doc_id, + group_name=group_name, + custom_metadata_put_request=models.CustomMetadataPutRequest( + custom_metadata=utils.get_pydantic_model( + custom_metadata, List[models.CustomProperty] + ), + ), + ) + + req = self._build_request_async( + method="PUT", + path="/rest/api/index/document/{docId}/custom-metadata/{groupName}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=True, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request.custom_metadata_put_request, + False, + False, + "json", + models.CustomMetadataPutRequest, + ), + 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="put_/rest/api/index/document/{docId}/custom-metadata/{groupName}", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Custom Metadata"], + extensions=None, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.SuccessResponse, http_res) + if utils.match_response( + http_res, ["400", "401", "404", "429"], "application/json" + ): + response_data = unmarshal_json_response( + errors.ErrorInfoResponseData, http_res + ) + raise errors.ErrorInfoResponse(response_data, http_res) + if utils.match_response(http_res, "500", "application/json"): + response_data = unmarshal_json_response( + errors.ErrorInfoResponseData, http_res + ) + raise errors.ErrorInfoResponse(response_data, http_res) + 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) + + raise errors.GleanError("Unexpected response received", http_res) + + def delete( + self, + *, + doc_id: str, + group_name: str, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.SuccessResponse: + r"""Remove custom metadata + + Removes all custom metadata for the specified metadata group from a document. + + :param doc_id: Unique Glean identifier of the document + :param group_name: Name of the metadata group as specified while adding schema + :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 = models.DELETE_REST_API_INDEX_DOCUMENT_DOC_ID_CUSTOM_METADATA_GROUP_NAME_OP_SERVERS[ + 0 + ] + url_variables = { + "instance": "instance-name", + } + + request = models.DeleteRestAPIIndexDocumentDocIDCustomMetadataGroupNameRequest( + doc_id=doc_id, + group_name=group_name, + ) + + req = self._build_request( + method="DELETE", + path="/rest/api/index/document/{docId}/custom-metadata/{groupName}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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="delete_/rest/api/index/document/{docId}/custom-metadata/{groupName}", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Custom Metadata"], + extensions=None, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.SuccessResponse, http_res) + if utils.match_response( + http_res, ["400", "401", "404", "429"], "application/json" + ): + response_data = unmarshal_json_response( + errors.ErrorInfoResponseData, http_res + ) + raise errors.ErrorInfoResponse(response_data, http_res) + if utils.match_response(http_res, "500", "application/json"): + response_data = unmarshal_json_response( + errors.ErrorInfoResponseData, http_res + ) + raise errors.ErrorInfoResponse(response_data, http_res) + 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) + + raise errors.GleanError("Unexpected response received", http_res) + + async def delete_async( + self, + *, + doc_id: str, + group_name: str, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.SuccessResponse: + r"""Remove custom metadata + + Removes all custom metadata for the specified metadata group from a document. + + :param doc_id: Unique Glean identifier of the document + :param group_name: Name of the metadata group as specified while adding schema + :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 = models.DELETE_REST_API_INDEX_DOCUMENT_DOC_ID_CUSTOM_METADATA_GROUP_NAME_OP_SERVERS[ + 0 + ] + url_variables = { + "instance": "instance-name", + } + + request = models.DeleteRestAPIIndexDocumentDocIDCustomMetadataGroupNameRequest( + doc_id=doc_id, + group_name=group_name, + ) + + req = self._build_request_async( + method="DELETE", + path="/rest/api/index/document/{docId}/custom-metadata/{groupName}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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="delete_/rest/api/index/document/{docId}/custom-metadata/{groupName}", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Custom Metadata"], + extensions=None, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.SuccessResponse, http_res) + if utils.match_response( + http_res, ["400", "401", "404", "429"], "application/json" + ): + response_data = unmarshal_json_response( + errors.ErrorInfoResponseData, http_res + ) + raise errors.ErrorInfoResponse(response_data, http_res) + if utils.match_response(http_res, "500", "application/json"): + response_data = unmarshal_json_response( + errors.ErrorInfoResponseData, http_res + ) + raise errors.ErrorInfoResponse(response_data, http_res) + 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) + + raise errors.GleanError("Unexpected response received", http_res) + + def get_schema( + self, + *, + group_name: str, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.CustomMetadataSchema: + r"""Retrieve metadata schema + + Retrieves the current schema definition for a metadata group. + + :param group_name: Name of the metadata group schema + :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 = ( + models.GET_REST_API_INDEX_CUSTOM_METADATA_SCHEMA_GROUP_NAME_OP_SERVERS[ + 0 + ] + ) + url_variables = { + "instance": "instance-name", + } + + request = models.GetRestAPIIndexCustomMetadataSchemaGroupNameRequest( + group_name=group_name, + ) + + req = self._build_request( + method="GET", + path="/rest/api/index/custom-metadata/schema/{groupName}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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="get_/rest/api/index/custom-metadata/schema/{groupName}", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Custom Metadata"], + extensions=None, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.CustomMetadataSchema, http_res) + if utils.match_response(http_res, ["401", "404", "429"], "application/json"): + response_data = unmarshal_json_response( + errors.ErrorInfoResponseData, http_res + ) + raise errors.ErrorInfoResponse(response_data, http_res) + if utils.match_response(http_res, "500", "application/json"): + response_data = unmarshal_json_response( + errors.ErrorInfoResponseData, http_res + ) + raise errors.ErrorInfoResponse(response_data, http_res) + 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) + + raise errors.GleanError("Unexpected response received", http_res) + + async def get_schema_async( + self, + *, + group_name: str, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.CustomMetadataSchema: + r"""Retrieve metadata schema + + Retrieves the current schema definition for a metadata group. + + :param group_name: Name of the metadata group schema + :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 = ( + models.GET_REST_API_INDEX_CUSTOM_METADATA_SCHEMA_GROUP_NAME_OP_SERVERS[ + 0 + ] + ) + url_variables = { + "instance": "instance-name", + } + + request = models.GetRestAPIIndexCustomMetadataSchemaGroupNameRequest( + group_name=group_name, + ) + + req = self._build_request_async( + method="GET", + path="/rest/api/index/custom-metadata/schema/{groupName}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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="get_/rest/api/index/custom-metadata/schema/{groupName}", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Custom Metadata"], + extensions=None, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.CustomMetadataSchema, http_res) + if utils.match_response(http_res, ["401", "404", "429"], "application/json"): + response_data = unmarshal_json_response( + errors.ErrorInfoResponseData, http_res + ) + raise errors.ErrorInfoResponse(response_data, http_res) + if utils.match_response(http_res, "500", "application/json"): + response_data = unmarshal_json_response( + errors.ErrorInfoResponseData, http_res + ) + raise errors.ErrorInfoResponse(response_data, http_res) + 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) + + raise errors.GleanError("Unexpected response received", http_res) + + def upsert_schema( + self, + *, + group_name: str, + metadata_keys: Union[ + Iterable[models.CustomMetadataPropertyDefinition], + Iterable[models.CustomMetadataPropertyDefinitionTypedDict], + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.SuccessResponse: + r"""Create or update metadata schema + + Defines or updates the schema for a metadata group. Schemas should be defined before indexing metadata. + + :param group_name: Name of the metadata group schema + :param metadata_keys: Array of metadata key definitions + :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 = ( + models.PUT_REST_API_INDEX_CUSTOM_METADATA_SCHEMA_GROUP_NAME_OP_SERVERS[ + 0 + ] + ) + url_variables = { + "instance": "instance-name", + } + + request = models.PutRestAPIIndexCustomMetadataSchemaGroupNameRequest( + group_name=group_name, + custom_metadata_schema=models.CustomMetadataSchema( + metadata_keys=utils.get_pydantic_model( + metadata_keys, List[models.CustomMetadataPropertyDefinition] + ), + ), + ) + + req = self._build_request( + method="PUT", + path="/rest/api/index/custom-metadata/schema/{groupName}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=True, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request.custom_metadata_schema, + False, + False, + "json", + models.CustomMetadataSchema, + ), + 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="put_/rest/api/index/custom-metadata/schema/{groupName}", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Custom Metadata"], + extensions=None, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.SuccessResponse, http_res) + if utils.match_response( + http_res, ["400", "401", "409", "429"], "application/json" + ): + response_data = unmarshal_json_response( + errors.ErrorInfoResponseData, http_res + ) + raise errors.ErrorInfoResponse(response_data, http_res) + if utils.match_response(http_res, "500", "application/json"): + response_data = unmarshal_json_response( + errors.ErrorInfoResponseData, http_res + ) + raise errors.ErrorInfoResponse(response_data, http_res) + 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) + + raise errors.GleanError("Unexpected response received", http_res) + + async def upsert_schema_async( + self, + *, + group_name: str, + metadata_keys: Union[ + Iterable[models.CustomMetadataPropertyDefinition], + Iterable[models.CustomMetadataPropertyDefinitionTypedDict], + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.SuccessResponse: + r"""Create or update metadata schema + + Defines or updates the schema for a metadata group. Schemas should be defined before indexing metadata. + + :param group_name: Name of the metadata group schema + :param metadata_keys: Array of metadata key definitions + :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 = ( + models.PUT_REST_API_INDEX_CUSTOM_METADATA_SCHEMA_GROUP_NAME_OP_SERVERS[ + 0 + ] + ) + url_variables = { + "instance": "instance-name", + } + + request = models.PutRestAPIIndexCustomMetadataSchemaGroupNameRequest( + group_name=group_name, + custom_metadata_schema=models.CustomMetadataSchema( + metadata_keys=utils.get_pydantic_model( + metadata_keys, List[models.CustomMetadataPropertyDefinition] + ), + ), + ) + + req = self._build_request_async( + method="PUT", + path="/rest/api/index/custom-metadata/schema/{groupName}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=True, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request.custom_metadata_schema, + False, + False, + "json", + models.CustomMetadataSchema, + ), + 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="put_/rest/api/index/custom-metadata/schema/{groupName}", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Custom Metadata"], + extensions=None, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.SuccessResponse, http_res) + if utils.match_response( + http_res, ["400", "401", "409", "429"], "application/json" + ): + response_data = unmarshal_json_response( + errors.ErrorInfoResponseData, http_res + ) + raise errors.ErrorInfoResponse(response_data, http_res) + if utils.match_response(http_res, "500", "application/json"): + response_data = unmarshal_json_response( + errors.ErrorInfoResponseData, http_res + ) + raise errors.ErrorInfoResponse(response_data, http_res) + 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) + + raise errors.GleanError("Unexpected response received", http_res) + + def delete_schema( + self, + *, + group_name: str, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.SuccessResponse: + r"""Remove metadata schema + + Deletes the schema definition for a metadata group. This does not delete existing metadata values on documents. + + :param group_name: Name of the metadata group schema + :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 = models.DELETE_REST_API_INDEX_CUSTOM_METADATA_SCHEMA_GROUP_NAME_OP_SERVERS[ + 0 + ] + url_variables = { + "instance": "instance-name", + } + + request = models.DeleteRestAPIIndexCustomMetadataSchemaGroupNameRequest( + group_name=group_name, + ) + + req = self._build_request( + method="DELETE", + path="/rest/api/index/custom-metadata/schema/{groupName}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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="delete_/rest/api/index/custom-metadata/schema/{groupName}", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Custom Metadata"], + extensions=None, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.SuccessResponse, http_res) + if utils.match_response( + http_res, ["400", "401", "404", "429"], "application/json" + ): + response_data = unmarshal_json_response( + errors.ErrorInfoResponseData, http_res + ) + raise errors.ErrorInfoResponse(response_data, http_res) + if utils.match_response(http_res, "500", "application/json"): + response_data = unmarshal_json_response( + errors.ErrorInfoResponseData, http_res + ) + raise errors.ErrorInfoResponse(response_data, http_res) + 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) + + raise errors.GleanError("Unexpected response received", http_res) + + async def delete_schema_async( + self, + *, + group_name: str, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.SuccessResponse: + r"""Remove metadata schema + + Deletes the schema definition for a metadata group. This does not delete existing metadata values on documents. + + :param group_name: Name of the metadata group schema + :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 = models.DELETE_REST_API_INDEX_CUSTOM_METADATA_SCHEMA_GROUP_NAME_OP_SERVERS[ + 0 + ] + url_variables = { + "instance": "instance-name", + } + + request = models.DeleteRestAPIIndexCustomMetadataSchemaGroupNameRequest( + group_name=group_name, + ) + + req = self._build_request_async( + method="DELETE", + path="/rest/api/index/custom-metadata/schema/{groupName}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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="delete_/rest/api/index/custom-metadata/schema/{groupName}", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Custom Metadata"], + extensions=None, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.SuccessResponse, http_res) + if utils.match_response( + http_res, ["400", "401", "404", "429"], "application/json" + ): + response_data = unmarshal_json_response( + errors.ErrorInfoResponseData, http_res + ) + raise errors.ErrorInfoResponse(response_data, http_res) + if utils.match_response(http_res, "500", "application/json"): + response_data = unmarshal_json_response( + errors.ErrorInfoResponseData, http_res + ) + raise errors.ErrorInfoResponse(response_data, http_res) + 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) + + raise errors.GleanError("Unexpected response received", http_res) diff --git a/src/glean/api_client/data.py b/src/glean/api_client/data.py index 756e122c..1187e013 100644 --- a/src/glean/api_client/data.py +++ b/src/glean/api_client/data.py @@ -2,6 +2,7 @@ from .basesdk import BaseSDK from .sdkconfiguration import SDKConfiguration +from glean.api_client.findings import Findings from glean.api_client.policies import Policies from glean.api_client.reports import Reports from typing import Optional @@ -10,6 +11,7 @@ class Data(BaseSDK): policies: Policies reports: Reports + findings: Findings def __init__( self, sdk_config: SDKConfiguration, parent_ref: Optional[object] = None @@ -21,3 +23,4 @@ def __init__( def _init_sdks(self): self.policies = Policies(self.sdk_configuration, parent_ref=self.parent_ref) self.reports = Reports(self.sdk_configuration, parent_ref=self.parent_ref) + self.findings = Findings(self.sdk_configuration, parent_ref=self.parent_ref) diff --git a/src/glean/api_client/entities.py b/src/glean/api_client/entities.py index 34b41dbd..adc08d27 100644 --- a/src/glean/api_client/entities.py +++ b/src/glean/api_client/entities.py @@ -1,34 +1,45 @@ """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.unmarshal_json_response import unmarshal_json_response -from typing import List, Mapping, Optional, Union +from typing import Iterable, List, Mapping, Optional, Union + + +class RetrievePersonPhotoAcceptEnum(str, Enum): + IMAGE_JPEG = "image/jpeg" + IMAGE_PNG = "image/png" class Entities(BaseSDK): def list( self, *, + locale: Optional[str] = None, filter_: Optional[ - Union[List[models.FacetFilter], List[models.FacetFilterTypedDict]] + Union[Iterable[models.FacetFilter], Iterable[models.FacetFilterTypedDict]] ] = None, sort: Optional[ - Union[List[models.SortOptions], List[models.SortOptionsTypedDict]] + Union[Iterable[models.SortOptions], Iterable[models.SortOptionsTypedDict]] ] = None, entity_type: Optional[ models.ListEntitiesRequestEntityType ] = models.ListEntitiesRequestEntityType.PEOPLE, datasource: Optional[str] = None, query: Optional[str] = None, - include_fields: Optional[List[models.ListEntitiesRequestIncludeField]] = None, + include_fields: Optional[ + Iterable[models.ListEntitiesRequestIncludeField] + ] = None, page_size: Optional[int] = None, cursor: Optional[str] = None, source: Optional[str] = None, - request_type: Optional[models.RequestType] = models.RequestType.STANDARD, + request_type: Optional[ + models.ListEntitiesRequestRequestType + ] = models.ListEntitiesRequestRequestType.STANDARD, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -38,6 +49,7 @@ def list( List some set of details for all entities that fit the given criteria and return in the requested order. Does not support negation in filters, assumes relation type EQUALS. There is a limit of 10000 entities that can be retrieved via this endpoint, except when using FULL_DIRECTORY request type for people entities. + :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 filter_: :param sort: Use EntitiesSortOrder enum for SortOptions.sortBy :param entity_type: @@ -63,19 +75,25 @@ def list( else: base_url = self._get_url(base_url, url_variables) - request = models.ListEntitiesRequest( - filter_=utils.get_pydantic_model( - filter_, Optional[List[models.FacetFilter]] + request = models.ListentitiesRequestRequest( + locale=locale, + list_entities_request=models.ListEntitiesRequest( + filter_=utils.get_pydantic_model( + filter_, Optional[List[models.FacetFilter]] + ), + sort=utils.get_pydantic_model(sort, Optional[List[models.SortOptions]]), + entity_type=entity_type, + datasource=datasource, + query=query, + include_fields=utils.unmarshal( + include_fields, + Optional[List[models.ListEntitiesRequestIncludeField]], + ), + page_size=page_size, + cursor=cursor, + source=source, + request_type=request_type, ), - sort=utils.get_pydantic_model(sort, Optional[List[models.SortOptions]]), - entity_type=entity_type, - datasource=datasource, - query=query, - include_fields=include_fields, - page_size=page_size, - cursor=cursor, - source=source, - request_type=request_type, ) req = self._build_request( @@ -92,7 +110,11 @@ def list( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.ListEntitiesRequest + request.list_entities_request, + False, + False, + "json", + models.ListEntitiesRequest, ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -115,9 +137,14 @@ def list( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Entities"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -135,22 +162,27 @@ def list( async def list_async( self, *, + locale: Optional[str] = None, filter_: Optional[ - Union[List[models.FacetFilter], List[models.FacetFilterTypedDict]] + Union[Iterable[models.FacetFilter], Iterable[models.FacetFilterTypedDict]] ] = None, sort: Optional[ - Union[List[models.SortOptions], List[models.SortOptionsTypedDict]] + Union[Iterable[models.SortOptions], Iterable[models.SortOptionsTypedDict]] ] = None, entity_type: Optional[ models.ListEntitiesRequestEntityType ] = models.ListEntitiesRequestEntityType.PEOPLE, datasource: Optional[str] = None, query: Optional[str] = None, - include_fields: Optional[List[models.ListEntitiesRequestIncludeField]] = None, + include_fields: Optional[ + Iterable[models.ListEntitiesRequestIncludeField] + ] = None, page_size: Optional[int] = None, cursor: Optional[str] = None, source: Optional[str] = None, - request_type: Optional[models.RequestType] = models.RequestType.STANDARD, + request_type: Optional[ + models.ListEntitiesRequestRequestType + ] = models.ListEntitiesRequestRequestType.STANDARD, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -160,6 +192,7 @@ async def list_async( List some set of details for all entities that fit the given criteria and return in the requested order. Does not support negation in filters, assumes relation type EQUALS. There is a limit of 10000 entities that can be retrieved via this endpoint, except when using FULL_DIRECTORY request type for people entities. + :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 filter_: :param sort: Use EntitiesSortOrder enum for SortOptions.sortBy :param entity_type: @@ -185,19 +218,25 @@ async def list_async( else: base_url = self._get_url(base_url, url_variables) - request = models.ListEntitiesRequest( - filter_=utils.get_pydantic_model( - filter_, Optional[List[models.FacetFilter]] + request = models.ListentitiesRequestRequest( + locale=locale, + list_entities_request=models.ListEntitiesRequest( + filter_=utils.get_pydantic_model( + filter_, Optional[List[models.FacetFilter]] + ), + sort=utils.get_pydantic_model(sort, Optional[List[models.SortOptions]]), + entity_type=entity_type, + datasource=datasource, + query=query, + include_fields=utils.unmarshal( + include_fields, + Optional[List[models.ListEntitiesRequestIncludeField]], + ), + page_size=page_size, + cursor=cursor, + source=source, + request_type=request_type, ), - sort=utils.get_pydantic_model(sort, Optional[List[models.SortOptions]]), - entity_type=entity_type, - datasource=datasource, - query=query, - include_fields=include_fields, - page_size=page_size, - cursor=cursor, - source=source, - request_type=request_type, ) req = self._build_request_async( @@ -214,7 +253,11 @@ async def list_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.ListEntitiesRequest + request.list_entities_request, + False, + False, + "json", + models.ListEntitiesRequest, ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -237,9 +280,14 @@ async def list_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Entities"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -257,11 +305,12 @@ async def list_async( def read_people( self, *, + locale: Optional[str] = None, timezone_offset: Optional[int] = None, - obfuscated_ids: Optional[List[str]] = None, - email_ids: Optional[List[str]] = None, - include_fields: Optional[List[models.PeopleRequestIncludeField]] = None, - include_types: Optional[List[models.IncludeType]] = None, + obfuscated_ids: Optional[Iterable[str]] = None, + email_ids: Optional[Iterable[str]] = None, + include_fields: Optional[Iterable[models.PeopleRequestIncludeField]] = None, + include_types: Optional[Iterable[models.IncludeType]] = None, source: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -272,6 +321,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 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. @@ -293,13 +343,20 @@ def read_people( else: base_url = self._get_url(base_url, url_variables) - request = models.PeopleRequest( - timezone_offset=timezone_offset, - obfuscated_ids=obfuscated_ids, - email_ids=email_ids, - include_fields=include_fields, - include_types=include_types, - source=source, + request = models.PeopleRequestRequest( + locale=locale, + people_request=models.PeopleRequest( + timezone_offset=timezone_offset, + obfuscated_ids=utils.unmarshal(obfuscated_ids, Optional[List[str]]), + email_ids=utils.unmarshal(email_ids, Optional[List[str]]), + include_fields=utils.unmarshal( + include_fields, Optional[List[models.PeopleRequestIncludeField]] + ), + include_types=utils.unmarshal( + include_types, Optional[List[models.IncludeType]] + ), + source=source, + ), ) req = self._build_request( @@ -316,7 +373,7 @@ def read_people( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.PeopleRequest + request.people_request, False, False, "json", models.PeopleRequest ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -339,9 +396,14 @@ def read_people( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Entities"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -359,11 +421,12 @@ def read_people( async def read_people_async( self, *, + locale: Optional[str] = None, timezone_offset: Optional[int] = None, - obfuscated_ids: Optional[List[str]] = None, - email_ids: Optional[List[str]] = None, - include_fields: Optional[List[models.PeopleRequestIncludeField]] = None, - include_types: Optional[List[models.IncludeType]] = None, + obfuscated_ids: Optional[Iterable[str]] = None, + email_ids: Optional[Iterable[str]] = None, + include_fields: Optional[Iterable[models.PeopleRequestIncludeField]] = None, + include_types: Optional[Iterable[models.IncludeType]] = None, source: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -374,6 +437,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 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. @@ -395,13 +459,20 @@ async def read_people_async( else: base_url = self._get_url(base_url, url_variables) - request = models.PeopleRequest( - timezone_offset=timezone_offset, - obfuscated_ids=obfuscated_ids, - email_ids=email_ids, - include_fields=include_fields, - include_types=include_types, - source=source, + request = models.PeopleRequestRequest( + locale=locale, + people_request=models.PeopleRequest( + timezone_offset=timezone_offset, + obfuscated_ids=utils.unmarshal(obfuscated_ids, Optional[List[str]]), + email_ids=utils.unmarshal(email_ids, Optional[List[str]]), + include_fields=utils.unmarshal( + include_fields, Optional[List[models.PeopleRequestIncludeField]] + ), + include_types=utils.unmarshal( + include_types, Optional[List[models.IncludeType]] + ), + source=source, + ), ) req = self._build_request_async( @@ -418,7 +489,7 @@ async def read_people_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.PeopleRequest + request.people_request, False, False, "json", models.PeopleRequest ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -441,9 +512,14 @@ async def read_people_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Entities"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -457,3 +533,209 @@ async def read_people_async( raise errors.GleanError("API error occurred", http_res, http_res_text) raise errors.GleanError("Unexpected response received", http_res) + + def retrieve_person_photo( + self, + *, + person_id: str, + ds: Optional[str] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + accept_header_override: Optional[RetrievePersonPhotoAcceptEnum] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.GetPersonPhotoResponse: + r"""Get person photo + + Returns the profile photo bytes for a person whose photo is stored in Glean (crawled from an identity source or user-uploaded via admin console). Photos hosted externally (e.g. Slack CDN) are not served by this endpoint; callers should follow the photoUrl from /people or /listentities directly. Responses include a Cache-Control header (max-age=3600) to reduce redundant fetches. + + + :param person_id: The obfuscated ID of the person whose photo to retrieve. + :param ds: Optional datasource override for crawled photos (e.g. AZURE, GDRIVE, OKTA). When omitted, the datasource is derived from the person's stored photo URL or the deployment's primary person datasource. + + :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 + 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.GetPersonPhotoRequest( + person_id=person_id, + ds=ds, + ) + + req = self._build_request( + method="GET", + path="/rest/api/v1/people/{person_id}/photo", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + 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 "image/jpeg;q=1, image/png;q=0", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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="getPersonPhoto", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Entities"], + extensions={"x-visibility": "Public"}, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + stream=True, + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "image/png"): + return models.GetPersonPhotoResponse( + result=http_res, headers=utils.get_response_headers(http_res.headers) + ) + if utils.match_response(http_res, "200", "image/jpeg"): + return models.GetPersonPhotoResponse( + result=http_res, headers=utils.get_response_headers(http_res.headers) + ) + if utils.match_response(http_res, ["400", "401", "404", "429", "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 retrieve_person_photo_async( + self, + *, + person_id: str, + ds: Optional[str] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + accept_header_override: Optional[RetrievePersonPhotoAcceptEnum] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.GetPersonPhotoResponse: + r"""Get person photo + + Returns the profile photo bytes for a person whose photo is stored in Glean (crawled from an identity source or user-uploaded via admin console). Photos hosted externally (e.g. Slack CDN) are not served by this endpoint; callers should follow the photoUrl from /people or /listentities directly. Responses include a Cache-Control header (max-age=3600) to reduce redundant fetches. + + + :param person_id: The obfuscated ID of the person whose photo to retrieve. + :param ds: Optional datasource override for crawled photos (e.g. AZURE, GDRIVE, OKTA). When omitted, the datasource is derived from the person's stored photo URL or the deployment's primary person datasource. + + :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 + 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.GetPersonPhotoRequest( + person_id=person_id, + ds=ds, + ) + + req = self._build_request_async( + method="GET", + path="/rest/api/v1/people/{person_id}/photo", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + 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 "image/jpeg;q=1, image/png;q=0", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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="getPersonPhoto", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Entities"], + extensions={"x-visibility": "Public"}, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + stream=True, + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "image/png"): + return models.GetPersonPhotoResponse( + result=http_res, headers=utils.get_response_headers(http_res.headers) + ) + if utils.match_response(http_res, "200", "image/jpeg"): + return models.GetPersonPhotoResponse( + result=http_res, headers=utils.get_response_headers(http_res.headers) + ) + if utils.match_response(http_res, ["400", "401", "404", "429", "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/src/glean/api_client/errors/__init__.py b/src/glean/api_client/errors/__init__.py index bc3197fc..5e260b86 100644 --- a/src/glean/api_client/errors/__init__.py +++ b/src/glean/api_client/errors/__init__.py @@ -1,73 +1,86 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from .gleanbaseerror import GleanBaseError -from typing import TYPE_CHECKING -from importlib import import_module -import builtins -import sys +from typing import Any, TYPE_CHECKING + +from glean.api_client.utils.dynamic_imports import lazy_getattr, lazy_dir if TYPE_CHECKING: + from .accessrequestpermissiondeniedresponse_error import ( + AccessRequestPermissionDeniedResponseError, + AccessRequestPermissionDeniedResponseErrorData, + ) from .collectionerror import CollectionError, CollectionErrorData + from .errorinforesponse import ErrorInfoResponse, ErrorInfoResponseData + from .errorresponse import ErrorResponse, ErrorResponseData from .gleandataerror import GleanDataError, GleanDataErrorData from .gleanerror import GleanError from .no_response_error import NoResponseError + from .platformproblemdetail_error import ( + PlatformProblemDetailError, + PlatformProblemDetailErrorData, + ) + from .platformunauthorizedagenttoolsproblem_error import ( + PlatformUnauthorizedAgentToolsProblemError, + PlatformUnauthorizedAgentToolsProblemErrorData, + ) from .responsevalidationerror import ResponseValidationError + from .unauthorizedagenttoolserror import ( + UnauthorizedAgentToolsError, + UnauthorizedAgentToolsErrorData, + ) __all__ = [ + "AccessRequestPermissionDeniedResponseError", + "AccessRequestPermissionDeniedResponseErrorData", "CollectionError", "CollectionErrorData", + "ErrorInfoResponse", + "ErrorInfoResponseData", + "ErrorResponse", + "ErrorResponseData", "GleanBaseError", "GleanDataError", "GleanDataErrorData", "GleanError", "NoResponseError", + "PlatformProblemDetailError", + "PlatformProblemDetailErrorData", + "PlatformUnauthorizedAgentToolsProblemError", + "PlatformUnauthorizedAgentToolsProblemErrorData", "ResponseValidationError", + "UnauthorizedAgentToolsError", + "UnauthorizedAgentToolsErrorData", ] _dynamic_imports: dict[str, str] = { + "AccessRequestPermissionDeniedResponseError": ".accessrequestpermissiondeniedresponse_error", + "AccessRequestPermissionDeniedResponseErrorData": ".accessrequestpermissiondeniedresponse_error", "CollectionError": ".collectionerror", "CollectionErrorData": ".collectionerror", + "ErrorInfoResponse": ".errorinforesponse", + "ErrorInfoResponseData": ".errorinforesponse", + "ErrorResponse": ".errorresponse", + "ErrorResponseData": ".errorresponse", "GleanDataError": ".gleandataerror", "GleanDataErrorData": ".gleandataerror", "GleanError": ".gleanerror", "NoResponseError": ".no_response_error", + "PlatformProblemDetailError": ".platformproblemdetail_error", + "PlatformProblemDetailErrorData": ".platformproblemdetail_error", + "PlatformUnauthorizedAgentToolsProblemError": ".platformunauthorizedagenttoolsproblem_error", + "PlatformUnauthorizedAgentToolsProblemErrorData": ".platformunauthorizedagenttoolsproblem_error", "ResponseValidationError": ".responsevalidationerror", + "UnauthorizedAgentToolsError": ".unauthorizedagenttoolserror", + "UnauthorizedAgentToolsErrorData": ".unauthorizedagenttoolserror", } -def dynamic_import(modname, retries=3): - for attempt in range(retries): - try: - return import_module(modname, __package__) - except KeyError: - # Clear any half-initialized module and retry - sys.modules.pop(modname, None) - if attempt == retries - 1: - break - raise KeyError(f"Failed to import module '{modname}' after {retries} attempts") - - -def __getattr__(attr_name: str) -> object: - module_name = _dynamic_imports.get(attr_name) - if module_name is None: - raise AttributeError( - f"No {attr_name} found in _dynamic_imports for module name -> {__name__} " - ) - - try: - module = dynamic_import(module_name) - result = getattr(module, attr_name) - return result - except ImportError as e: - raise ImportError( - f"Failed to import {attr_name} from {module_name}: {e}" - ) from e - except AttributeError as e: - raise AttributeError( - f"Failed to get {attr_name} from {module_name}: {e}" - ) from e +def __getattr__(attr_name: str) -> Any: + return lazy_getattr( + attr_name, package=__package__, dynamic_imports=_dynamic_imports + ) def __dir__(): - lazy_attrs = builtins.list(_dynamic_imports.keys()) - return builtins.sorted(lazy_attrs) + return lazy_dir(dynamic_imports=_dynamic_imports) diff --git a/src/glean/api_client/errors/accessrequestpermissiondeniedresponse_error.py b/src/glean/api_client/errors/accessrequestpermissiondeniedresponse_error.py new file mode 100644 index 00000000..45d07ad0 --- /dev/null +++ b/src/glean/api_client/errors/accessrequestpermissiondeniedresponse_error.py @@ -0,0 +1,42 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from dataclasses import dataclass, field +from glean.api_client.errors import GleanBaseError +from glean.api_client.models import ( + accessrequestpermissiondeniedresponse_error as models_accessrequestpermissiondeniedresponse_error, + person as models_person, + userrole as models_userrole, +) +from glean.api_client.types import BaseModel +import httpx +import pydantic +from typing import List, Optional +from typing_extensions import Annotated + + +class AccessRequestPermissionDeniedResponseErrorData(BaseModel): + error_type: Annotated[ + models_accessrequestpermissiondeniedresponse_error.AccessRequestPermissionDeniedResponseErrorType, + pydantic.Field(alias="errorType"), + ] + created_by: Annotated[models_person.Person, pydantic.Field(alias="createdBy")] + requestable_roles: Annotated[ + List[models_userrole.UserRole], pydantic.Field(alias="requestableRoles") + ] + has_pending_request: Annotated[bool, pydantic.Field(alias="hasPendingRequest")] + + +@dataclass(unsafe_hash=True) +class AccessRequestPermissionDeniedResponseError(GleanBaseError): + data: AccessRequestPermissionDeniedResponseErrorData = field(hash=False) + + def __init__( + self, + data: AccessRequestPermissionDeniedResponseErrorData, + raw_response: httpx.Response, + body: Optional[str] = None, + ): + message = body or raw_response.text + super().__init__(message, raw_response, body) + object.__setattr__(self, "data", data) diff --git a/src/glean/api_client/errors/errorinforesponse.py b/src/glean/api_client/errors/errorinforesponse.py new file mode 100644 index 00000000..22c95a54 --- /dev/null +++ b/src/glean/api_client/errors/errorinforesponse.py @@ -0,0 +1,33 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from dataclasses import dataclass, field +from glean.api_client.errors import GleanBaseError +from glean.api_client.types import BaseModel +import httpx +from typing import Optional + + +class ErrorInfoResponseData(BaseModel): + error: str + r"""Error message describing what went wrong""" + message: Optional[str] = None + r"""Additional details about the error""" + + +@dataclass(unsafe_hash=True) +class ErrorInfoResponse(GleanBaseError): + r"""Error response for custom metadata operations""" + + data: ErrorInfoResponseData = field(hash=False) + + def __init__( + self, + data: ErrorInfoResponseData, + raw_response: httpx.Response, + body: Optional[str] = None, + ): + fallback = body or raw_response.text + message = str(data.message) or fallback + super().__init__(message, raw_response, body) + object.__setattr__(self, "data", data) diff --git a/src/glean/api_client/errors/errorresponse.py b/src/glean/api_client/errors/errorresponse.py new file mode 100644 index 00000000..70cab4aa --- /dev/null +++ b/src/glean/api_client/errors/errorresponse.py @@ -0,0 +1,31 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from dataclasses import dataclass, field +from glean.api_client.errors import GleanBaseError +from glean.api_client.types import BaseModel +import httpx +from typing import Optional + + +class ErrorResponseData(BaseModel): + message: Optional[str] = None + r"""Client-facing error message describing what went wrong""" + + +@dataclass(unsafe_hash=True) +class ErrorResponse(GleanBaseError): + r"""Error response returned for failed requests""" + + data: ErrorResponseData = field(hash=False) + + def __init__( + self, + data: ErrorResponseData, + raw_response: httpx.Response, + body: Optional[str] = None, + ): + fallback = body or raw_response.text + message = str(data.message) or fallback + super().__init__(message, raw_response, body) + object.__setattr__(self, "data", data) diff --git a/src/glean/api_client/errors/gleandataerror.py b/src/glean/api_client/errors/gleandataerror.py index 978b0be0..754c85de 100644 --- a/src/glean/api_client/errors/gleandataerror.py +++ b/src/glean/api_client/errors/gleandataerror.py @@ -32,6 +32,10 @@ class GleanDataErrorData(BaseModel): Optional[List[models_errormessage.ErrorMessage]], pydantic.Field(alias="errorMessages"), ] = None + federated_search_rate_limit_error: Annotated[ + Optional[bool], pydantic.Field(alias="federatedSearchRateLimitError") + ] = None + r"""Indicates the federated search results could not be fetched due to rate limiting.""" @dataclass(unsafe_hash=True) diff --git a/src/glean/api_client/errors/platformproblemdetail_error.py b/src/glean/api_client/errors/platformproblemdetail_error.py new file mode 100644 index 00000000..2bd60f32 --- /dev/null +++ b/src/glean/api_client/errors/platformproblemdetail_error.py @@ -0,0 +1,50 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from dataclasses import dataclass, field +from glean.api_client.errors import GleanBaseError +from glean.api_client.models import ( + platformproblemdetailcode as models_platformproblemdetailcode, + platformproblemdetailerror as models_platformproblemdetailerror, +) +from glean.api_client.types import BaseModel +import httpx +from typing import List, Optional + + +class PlatformProblemDetailErrorData(BaseModel): + 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: models_platformproblemdetailcode.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[models_platformproblemdetailerror.PlatformProblemDetailError] + ] = None + r"""Field-level validation problems, one entry per offending field.""" + + +@dataclass(unsafe_hash=True) +class PlatformProblemDetailError(GleanBaseError): + r"""Error response following RFC 9457, extended with `code` and `documentation_url` for machine-readable classification and self-service remediation.""" + + data: PlatformProblemDetailErrorData = field(hash=False) + + def __init__( + self, + data: PlatformProblemDetailErrorData, + raw_response: httpx.Response, + body: Optional[str] = None, + ): + message = body or raw_response.text + super().__init__(message, raw_response, body) + object.__setattr__(self, "data", data) diff --git a/src/glean/api_client/errors/platformunauthorizedagenttoolsproblem_error.py b/src/glean/api_client/errors/platformunauthorizedagenttoolsproblem_error.py new file mode 100644 index 00000000..52de3843 --- /dev/null +++ b/src/glean/api_client/errors/platformunauthorizedagenttoolsproblem_error.py @@ -0,0 +1,55 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from dataclasses import dataclass, field +from glean.api_client.errors import GleanBaseError +from glean.api_client.models import ( + platformauthenticationsuggestion as models_platformauthenticationsuggestion, + platformproblemdetailcode as models_platformproblemdetailcode, + platformproblemdetailerror as models_platformproblemdetailerror, +) +from glean.api_client.types import BaseModel +import httpx +from typing import List, Optional + + +class PlatformUnauthorizedAgentToolsProblemErrorData(BaseModel): + 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: models_platformproblemdetailcode.PlatformProblemDetailCode + r"""Stable machine-readable error code.""" + request_id: str + r"""Platform-generated request ID for support correlation.""" + authentication_suggestions: List[ + models_platformauthenticationsuggestion.PlatformAuthenticationSuggestion + ] + r"""One entry per tool the caller must authorize.""" + documentation_url: Optional[str] = None + r"""Direct URL to documentation for this error code.""" + errors: Optional[ + List[models_platformproblemdetailerror.PlatformProblemDetailError] + ] = None + r"""Field-level validation problems, one entry per offending field.""" + + +@dataclass(unsafe_hash=True) +class PlatformUnauthorizedAgentToolsProblemError(GleanBaseError): + r"""Problem detail extended with `authentication_suggestions` naming each tool the caller must authorize.""" + + data: PlatformUnauthorizedAgentToolsProblemErrorData = field(hash=False) + + def __init__( + self, + data: PlatformUnauthorizedAgentToolsProblemErrorData, + raw_response: httpx.Response, + body: Optional[str] = None, + ): + message = body or raw_response.text + super().__init__(message, raw_response, body) + object.__setattr__(self, "data", data) diff --git a/src/glean/api_client/errors/unauthorizedagenttoolserror.py b/src/glean/api_client/errors/unauthorizedagenttoolserror.py new file mode 100644 index 00000000..0207c42c --- /dev/null +++ b/src/glean/api_client/errors/unauthorizedagenttoolserror.py @@ -0,0 +1,39 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from dataclasses import dataclass, field +from glean.api_client.errors import GleanBaseError +from glean.api_client.models import servertoolrequest as models_servertoolrequest +from glean.api_client.types import BaseModel +import httpx +import pydantic +from typing import List, Optional +from typing_extensions import Annotated + + +class UnauthorizedAgentToolsErrorData(BaseModel): + message: str + r"""Human-readable description of the failure.""" + authentication_suggestions: Annotated[ + List[models_servertoolrequest.ServerToolRequest], + pydantic.Field(alias="authenticationSuggestions"), + ] + r"""One entry per tool the caller must authorize.""" + + +@dataclass(unsafe_hash=True) +class UnauthorizedAgentToolsError(GleanBaseError): + r"""Returned when the agent has tools the caller must authorize before the run can start. Each entry in `authenticationSuggestions` names one such tool; POST its `serverId` to `/tool-servers/{serverId}/auth` with `returnUrl` in the request body to obtain an `authorizationUrl` to redirect the end user to, then retry the run once OAuth completes.""" + + data: UnauthorizedAgentToolsErrorData = field(hash=False) + + def __init__( + self, + data: UnauthorizedAgentToolsErrorData, + raw_response: httpx.Response, + body: Optional[str] = None, + ): + fallback = body or raw_response.text + message = str(data.message) or fallback + super().__init__(message, raw_response, body) + object.__setattr__(self, "data", data) diff --git a/src/glean/api_client/findings.py b/src/glean/api_client/findings.py new file mode 100644 index 00000000..6dce13bd --- /dev/null +++ b/src/glean/api_client/findings.py @@ -0,0 +1,741 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from .basesdk import BaseSDK +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.unmarshal_json_response import unmarshal_json_response +from typing import Iterable, List, Mapping, Optional, Union + + +class Findings(BaseSDK): + def create( + self, + *, + export_type: Optional[models.DlpExportFindingsRequestExportType] = None, + filter_: Optional[ + Union[models.DlpFindingFilter, models.DlpFindingFilterTypedDict] + ] = None, + issue_filter: Optional[ + Union[models.DlpIssueFilter, models.DlpIssueFilterTypedDict] + ] = None, + file_name: Optional[str] = None, + field_scope: Optional[models.FieldScope] = None, + fields_to_exclude: Optional[Iterable[str]] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.ExportInfo: + r"""Creates findings export + + Creates a new DLP findings export job. + + :param export_type: The type of export to perform + :param filter_: + :param issue_filter: Filter for DLP issues. Includes document-level filters and issue-specific filters. + :param file_name: The name of the file to export the findings to + :param field_scope: Controls which fields to include in the export + :param fields_to_exclude: List of field names to exclude from the export + :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.DlpExportFindingsRequest( + export_type=export_type, + filter_=utils.get_pydantic_model( + filter_, Optional[models.DlpFindingFilter] + ), + issue_filter=utils.get_pydantic_model( + issue_filter, Optional[models.DlpIssueFilter] + ), + file_name=file_name, + field_scope=field_scope, + fields_to_exclude=utils.unmarshal(fields_to_exclude, Optional[List[str]]), + ) + + req = self._build_request( + method="POST", + path="/rest/api/v1/governance/data/findings/exports", + 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="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request, False, False, "json", models.DlpExportFindingsRequest + ), + 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="createfindingsexport", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Governance"], + extensions={"x-visibility": "Public"}, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.ExportInfo, http_res) + if utils.match_response(http_res, ["403", "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, ["500", "5XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.GleanError("API error occurred", http_res, http_res_text) + + raise errors.GleanError("Unexpected response received", http_res) + + async def create_async( + self, + *, + export_type: Optional[models.DlpExportFindingsRequestExportType] = None, + filter_: Optional[ + Union[models.DlpFindingFilter, models.DlpFindingFilterTypedDict] + ] = None, + issue_filter: Optional[ + Union[models.DlpIssueFilter, models.DlpIssueFilterTypedDict] + ] = None, + file_name: Optional[str] = None, + field_scope: Optional[models.FieldScope] = None, + fields_to_exclude: Optional[Iterable[str]] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.ExportInfo: + r"""Creates findings export + + Creates a new DLP findings export job. + + :param export_type: The type of export to perform + :param filter_: + :param issue_filter: Filter for DLP issues. Includes document-level filters and issue-specific filters. + :param file_name: The name of the file to export the findings to + :param field_scope: Controls which fields to include in the export + :param fields_to_exclude: List of field names to exclude from the export + :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.DlpExportFindingsRequest( + export_type=export_type, + filter_=utils.get_pydantic_model( + filter_, Optional[models.DlpFindingFilter] + ), + issue_filter=utils.get_pydantic_model( + issue_filter, Optional[models.DlpIssueFilter] + ), + file_name=file_name, + field_scope=field_scope, + fields_to_exclude=utils.unmarshal(fields_to_exclude, Optional[List[str]]), + ) + + req = self._build_request_async( + method="POST", + path="/rest/api/v1/governance/data/findings/exports", + 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="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request, False, False, "json", models.DlpExportFindingsRequest + ), + 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="createfindingsexport", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Governance"], + extensions={"x-visibility": "Public"}, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.ExportInfo, http_res) + if utils.match_response(http_res, ["403", "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, ["500", "5XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.GleanError("API error occurred", http_res, http_res_text) + + raise errors.GleanError("Unexpected response received", http_res) + + def list( + self, + *, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.ListDlpFindingsExportsResponse: + r"""Lists findings exports + + Lists all DLP findings exports. + + :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) + req = self._build_request( + method="GET", + path="/rest/api/v1/governance/data/findings/exports", + base_url=base_url, + url_variables=url_variables, + request=None, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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="listfindingsexports", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Governance"], + extensions={"x-visibility": "Public"}, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response( + models.ListDlpFindingsExportsResponse, http_res + ) + if utils.match_response(http_res, ["403", "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, ["500", "5XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.GleanError("API error occurred", http_res, http_res_text) + + raise errors.GleanError("Unexpected response received", http_res) + + async def list_async( + self, + *, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.ListDlpFindingsExportsResponse: + r"""Lists findings exports + + Lists all DLP findings exports. + + :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) + req = self._build_request_async( + method="GET", + path="/rest/api/v1/governance/data/findings/exports", + base_url=base_url, + url_variables=url_variables, + request=None, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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="listfindingsexports", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Governance"], + extensions={"x-visibility": "Public"}, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response( + models.ListDlpFindingsExportsResponse, http_res + ) + if utils.match_response(http_res, ["403", "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, ["500", "5XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.GleanError("API error occurred", http_res, http_res_text) + + raise errors.GleanError("Unexpected response received", http_res) + + def download( + self, + *, + id: str, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> str: + r"""Downloads findings export + + Downloads a DLP findings export as a CSV file. + + :param id: The ID of the export to download. + :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.DownloadfindingsexportRequest( + id=id, + ) + + req = self._build_request( + method="GET", + path="/rest/api/v1/governance/data/findings/exports/{id}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="text/csv; charset=UTF-8", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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="downloadfindingsexport", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Governance"], + extensions={"x-visibility": "Public"}, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "text/csv; charset=UTF-8"): + return http_res.text + if utils.match_response(http_res, ["403", "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, ["500", "5XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.GleanError("API error occurred", http_res, http_res_text) + + raise errors.GleanError("Unexpected response received", http_res) + + async def download_async( + self, + *, + id: str, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> str: + r"""Downloads findings export + + Downloads a DLP findings export as a CSV file. + + :param id: The ID of the export to download. + :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.DownloadfindingsexportRequest( + id=id, + ) + + req = self._build_request_async( + method="GET", + path="/rest/api/v1/governance/data/findings/exports/{id}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="text/csv; charset=UTF-8", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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="downloadfindingsexport", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Governance"], + extensions={"x-visibility": "Public"}, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "text/csv; charset=UTF-8"): + return http_res.text + if utils.match_response(http_res, ["403", "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, ["500", "5XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.GleanError("API error occurred", http_res, http_res_text) + + raise errors.GleanError("Unexpected response received", http_res) + + def delete( + self, + *, + id: int, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ): + r"""Deletes findings export + + Deletes a DLP findings export. + + :param id: The ID of the export to delete. + :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.DeletefindingsexportRequest( + id=id, + ) + + req = self._build_request( + method="DELETE", + path="/rest/api/v1/governance/data/findings/exports/{id}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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="deletefindingsexport", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Governance"], + extensions={"x-visibility": "Public"}, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return + if utils.match_response(http_res, ["403", "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, ["500", "5XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.GleanError("API error occurred", http_res, http_res_text) + + raise errors.GleanError("Unexpected response received", http_res) + + async def delete_async( + self, + *, + id: int, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ): + r"""Deletes findings export + + Deletes a DLP findings export. + + :param id: The ID of the export to delete. + :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.DeletefindingsexportRequest( + id=id, + ) + + req = self._build_request_async( + method="DELETE", + path="/rest/api/v1/governance/data/findings/exports/{id}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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="deletefindingsexport", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Governance"], + extensions={"x-visibility": "Public"}, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return + if utils.match_response(http_res, ["403", "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, ["500", "5XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.GleanError("API error occurred", http_res, http_res_text) + + raise errors.GleanError("Unexpected response received", http_res) diff --git a/src/glean/api_client/governance.py b/src/glean/api_client/governance.py index 7f8a45f2..0917cce6 100644 --- a/src/glean/api_client/governance.py +++ b/src/glean/api_client/governance.py @@ -1,711 +1,25 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from .basesdk import BaseSDK -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.unmarshal_json_response import unmarshal_json_response -from typing import List, Mapping, Optional, Union +from .sdkconfiguration import SDKConfiguration +from glean.api_client.data import Data +from glean.api_client.governance_documents import GovernanceDocuments +from typing import Optional class Governance(BaseSDK): - def createfindingsexport( - self, - *, - export_type: Optional[models.ExportType] = None, - filter_: Optional[ - Union[models.DlpFindingFilter, models.DlpFindingFilterTypedDict] - ] = None, - file_name: Optional[str] = None, - field_scope: Optional[models.FieldScope] = None, - fields_to_exclude: Optional[List[str]] = None, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> models.ExportInfo: - r"""Creates findings export + data: Data + documents: GovernanceDocuments - Creates a new DLP findings export job. + def __init__( + self, sdk_config: SDKConfiguration, parent_ref: Optional[object] = None + ) -> None: + BaseSDK.__init__(self, sdk_config, parent_ref=parent_ref) + self.sdk_configuration = sdk_config + self._init_sdks() - :param export_type: The type of export to perform - :param filter_: - :param file_name: The name of the file to export the findings to - :param field_scope: Controls which fields to include in the export - :param fields_to_exclude: List of field names to exclude from the export - :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.DlpExportFindingsRequest( - export_type=export_type, - filter_=utils.get_pydantic_model( - filter_, Optional[models.DlpFindingFilter] - ), - file_name=file_name, - field_scope=field_scope, - fields_to_exclude=fields_to_exclude, - ) - - req = self._build_request( - method="POST", - path="/rest/api/v1/governance/data/findings/exports", - 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="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.DlpExportFindingsRequest - ), - 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="createfindingsexport", - oauth2_scopes=None, - security_source=get_security_from_env( - self.sdk_configuration.security, models.Security - ), - ), - request=req, - error_status_codes=["403", "4XX", "500", "5XX"], - retry_config=retry_config, - ) - - if utils.match_response(http_res, "200", "application/json"): - return unmarshal_json_response(models.ExportInfo, http_res) - if utils.match_response(http_res, ["403", "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, ["500", "5XX"], "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.GleanError("API error occurred", http_res, http_res_text) - - raise errors.GleanError("Unexpected response received", http_res) - - async def createfindingsexport_async( - self, - *, - export_type: Optional[models.ExportType] = None, - filter_: Optional[ - Union[models.DlpFindingFilter, models.DlpFindingFilterTypedDict] - ] = None, - file_name: Optional[str] = None, - field_scope: Optional[models.FieldScope] = None, - fields_to_exclude: Optional[List[str]] = None, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> models.ExportInfo: - r"""Creates findings export - - Creates a new DLP findings export job. - - :param export_type: The type of export to perform - :param filter_: - :param file_name: The name of the file to export the findings to - :param field_scope: Controls which fields to include in the export - :param fields_to_exclude: List of field names to exclude from the export - :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.DlpExportFindingsRequest( - export_type=export_type, - filter_=utils.get_pydantic_model( - filter_, Optional[models.DlpFindingFilter] - ), - file_name=file_name, - field_scope=field_scope, - fields_to_exclude=fields_to_exclude, - ) - - req = self._build_request_async( - method="POST", - path="/rest/api/v1/governance/data/findings/exports", - 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="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.DlpExportFindingsRequest - ), - 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="createfindingsexport", - oauth2_scopes=None, - security_source=get_security_from_env( - self.sdk_configuration.security, models.Security - ), - ), - request=req, - error_status_codes=["403", "4XX", "500", "5XX"], - retry_config=retry_config, - ) - - if utils.match_response(http_res, "200", "application/json"): - return unmarshal_json_response(models.ExportInfo, http_res) - if utils.match_response(http_res, ["403", "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, ["500", "5XX"], "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.GleanError("API error occurred", http_res, http_res_text) - - raise errors.GleanError("Unexpected response received", http_res) - - def listfindingsexports( - self, - *, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> models.ListDlpFindingsExportsResponse: - r"""Lists findings exports - - Lists all DLP findings exports. - - :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) - req = self._build_request( - method="GET", - path="/rest/api/v1/governance/data/findings/exports", - base_url=base_url, - url_variables=url_variables, - request=None, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - 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="listfindingsexports", - oauth2_scopes=None, - security_source=get_security_from_env( - self.sdk_configuration.security, models.Security - ), - ), - request=req, - error_status_codes=["403", "4XX", "500", "5XX"], - retry_config=retry_config, - ) - - if utils.match_response(http_res, "200", "application/json"): - return unmarshal_json_response( - models.ListDlpFindingsExportsResponse, http_res - ) - if utils.match_response(http_res, ["403", "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, ["500", "5XX"], "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.GleanError("API error occurred", http_res, http_res_text) - - raise errors.GleanError("Unexpected response received", http_res) - - async def listfindingsexports_async( - self, - *, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> models.ListDlpFindingsExportsResponse: - r"""Lists findings exports - - Lists all DLP findings exports. - - :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) - req = self._build_request_async( - method="GET", - path="/rest/api/v1/governance/data/findings/exports", - base_url=base_url, - url_variables=url_variables, - request=None, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - 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="listfindingsexports", - oauth2_scopes=None, - security_source=get_security_from_env( - self.sdk_configuration.security, models.Security - ), - ), - request=req, - error_status_codes=["403", "4XX", "500", "5XX"], - retry_config=retry_config, - ) - - if utils.match_response(http_res, "200", "application/json"): - return unmarshal_json_response( - models.ListDlpFindingsExportsResponse, http_res - ) - if utils.match_response(http_res, ["403", "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, ["500", "5XX"], "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.GleanError("API error occurred", http_res, http_res_text) - - raise errors.GleanError("Unexpected response received", http_res) - - def downloadfindingsexport( - self, - *, - id: str, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> str: - r"""Downloads findings export - - Downloads a DLP findings export as a CSV file. - - :param id: The ID of the export to download. - :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.DownloadfindingsexportRequest( - id=id, - ) - - req = self._build_request( - method="GET", - path="/rest/api/v1/governance/data/findings/exports/{id}", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=True, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="text/csv; charset=UTF-8", - http_headers=http_headers, - security=self.sdk_configuration.security, - 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="downloadfindingsexport", - oauth2_scopes=None, - security_source=get_security_from_env( - self.sdk_configuration.security, models.Security - ), - ), - request=req, - error_status_codes=["403", "4XX", "500", "5XX"], - retry_config=retry_config, - ) - - if utils.match_response(http_res, "200", "text/csv; charset=UTF-8"): - return http_res.text - if utils.match_response(http_res, ["403", "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, ["500", "5XX"], "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.GleanError("API error occurred", http_res, http_res_text) - - raise errors.GleanError("Unexpected response received", http_res) - - async def downloadfindingsexport_async( - self, - *, - id: str, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> str: - r"""Downloads findings export - - Downloads a DLP findings export as a CSV file. - - :param id: The ID of the export to download. - :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.DownloadfindingsexportRequest( - id=id, - ) - - req = self._build_request_async( - method="GET", - path="/rest/api/v1/governance/data/findings/exports/{id}", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=True, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="text/csv; charset=UTF-8", - http_headers=http_headers, - security=self.sdk_configuration.security, - allow_empty_value=None, - timeout_ms=timeout_ms, + def _init_sdks(self): + self.data = Data(self.sdk_configuration, parent_ref=self.parent_ref) + self.documents = GovernanceDocuments( + self.sdk_configuration, parent_ref=self.parent_ref ) - - 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="downloadfindingsexport", - oauth2_scopes=None, - security_source=get_security_from_env( - self.sdk_configuration.security, models.Security - ), - ), - request=req, - error_status_codes=["403", "4XX", "500", "5XX"], - retry_config=retry_config, - ) - - if utils.match_response(http_res, "200", "text/csv; charset=UTF-8"): - return http_res.text - if utils.match_response(http_res, ["403", "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, ["500", "5XX"], "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.GleanError("API error occurred", http_res, http_res_text) - - raise errors.GleanError("Unexpected response received", http_res) - - def deletefindingsexport( - self, - *, - id: int, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ): - r"""Deletes findings export - - Deletes a DLP findings export. - - :param id: The ID of the export to delete. - :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.DeletefindingsexportRequest( - id=id, - ) - - req = self._build_request( - method="DELETE", - path="/rest/api/v1/governance/data/findings/exports/{id}", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=True, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="*/*", - http_headers=http_headers, - security=self.sdk_configuration.security, - 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="deletefindingsexport", - oauth2_scopes=None, - security_source=get_security_from_env( - self.sdk_configuration.security, models.Security - ), - ), - request=req, - error_status_codes=["403", "4XX", "500", "5XX"], - retry_config=retry_config, - ) - - if utils.match_response(http_res, "200", "*"): - return - if utils.match_response(http_res, ["403", "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, ["500", "5XX"], "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.GleanError("API error occurred", http_res, http_res_text) - - raise errors.GleanError("Unexpected response received", http_res) - - async def deletefindingsexport_async( - self, - *, - id: int, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ): - r"""Deletes findings export - - Deletes a DLP findings export. - - :param id: The ID of the export to delete. - :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.DeletefindingsexportRequest( - id=id, - ) - - req = self._build_request_async( - method="DELETE", - path="/rest/api/v1/governance/data/findings/exports/{id}", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=True, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="*/*", - http_headers=http_headers, - security=self.sdk_configuration.security, - 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="deletefindingsexport", - oauth2_scopes=None, - security_source=get_security_from_env( - self.sdk_configuration.security, models.Security - ), - ), - request=req, - error_status_codes=["403", "4XX", "500", "5XX"], - retry_config=retry_config, - ) - - if utils.match_response(http_res, "200", "*"): - return - if utils.match_response(http_res, ["403", "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, ["500", "5XX"], "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.GleanError("API error occurred", http_res, http_res_text) - - raise errors.GleanError("Unexpected response received", http_res) diff --git a/src/glean/api_client/indexing.py b/src/glean/api_client/indexing.py index 27b07e8e..e4cc2c52 100644 --- a/src/glean/api_client/indexing.py +++ b/src/glean/api_client/indexing.py @@ -2,9 +2,10 @@ from .basesdk import BaseSDK from .sdkconfiguration import SDKConfiguration -from glean.api_client.datasources import Datasources +from glean.api_client.custommetadata import CustomMetadata from glean.api_client.indexing_authentication import IndexingAuthentication from glean.api_client.indexing_datasource import IndexingDatasource +from glean.api_client.indexing_datasources import IndexingDatasources from glean.api_client.indexing_documents import IndexingDocuments from glean.api_client.indexing_permissions import IndexingPermissions from glean.api_client.indexing_shortcuts import IndexingShortcuts @@ -17,9 +18,10 @@ class Indexing(BaseSDK): permissions: IndexingPermissions datasource: IndexingDatasource people: People - datasources: Datasources + datasources: IndexingDatasources authentication: IndexingAuthentication shortcuts: IndexingShortcuts + custom_metadata: CustomMetadata def __init__( self, sdk_config: SDKConfiguration, parent_ref: Optional[object] = None @@ -39,7 +41,7 @@ def _init_sdks(self): self.sdk_configuration, parent_ref=self.parent_ref ) self.people = People(self.sdk_configuration, parent_ref=self.parent_ref) - self.datasources = Datasources( + self.datasources = IndexingDatasources( self.sdk_configuration, parent_ref=self.parent_ref ) self.authentication = IndexingAuthentication( @@ -48,3 +50,6 @@ def _init_sdks(self): self.shortcuts = IndexingShortcuts( self.sdk_configuration, parent_ref=self.parent_ref ) + self.custom_metadata = CustomMetadata( + self.sdk_configuration, parent_ref=self.parent_ref + ) diff --git a/src/glean/api_client/indexing_authentication.py b/src/glean/api_client/indexing_authentication.py index ae42f9ff..98f3a192 100644 --- a/src/glean/api_client/indexing_authentication.py +++ b/src/glean/api_client/indexing_authentication.py @@ -70,9 +70,11 @@ def rotate_token( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Authentication"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -147,9 +149,11 @@ async def rotate_token_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Authentication"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/glean/api_client/indexing_datasource.py b/src/glean/api_client/indexing_datasource.py index 7e118cd3..a0e769b2 100644 --- a/src/glean/api_client/indexing_datasource.py +++ b/src/glean/api_client/indexing_datasource.py @@ -56,7 +56,7 @@ def status( request_has_path_params=True, request_has_query_params=True, user_agent_header="user-agent", - accept_header_value="application/json; charset=UTF-8", + accept_header_value="application/json", http_headers=http_headers, security=self.sdk_configuration.security, allow_empty_value=None, @@ -80,13 +80,15 @@ def status( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Troubleshooting"], + extensions={"x-beta": True}, ), request=req, - error_status_codes=["400", "401", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) - if utils.match_response(http_res, "200", "application/json; charset=UTF-8"): + if utils.match_response(http_res, "200", "application/json"): return unmarshal_json_response( models.DebugDatasourceStatusResponse, http_res ) @@ -145,7 +147,7 @@ async def status_async( request_has_path_params=True, request_has_query_params=True, user_agent_header="user-agent", - accept_header_value="application/json; charset=UTF-8", + accept_header_value="application/json", http_headers=http_headers, security=self.sdk_configuration.security, allow_empty_value=None, @@ -169,13 +171,15 @@ async def status_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Troubleshooting"], + extensions={"x-beta": True}, ), request=req, - error_status_codes=["400", "401", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) - if utils.match_response(http_res, "200", "application/json; charset=UTF-8"): + if utils.match_response(http_res, "200", "application/json"): return unmarshal_json_response( models.DebugDatasourceStatusResponse, http_res ) diff --git a/src/glean/api_client/datasources.py b/src/glean/api_client/indexing_datasources.py similarity index 69% rename from src/glean/api_client/datasources.py rename to src/glean/api_client/indexing_datasources.py index d7340a08..cdf0f4db 100644 --- a/src/glean/api_client/datasources.py +++ b/src/glean/api_client/indexing_datasources.py @@ -6,10 +6,10 @@ from glean.api_client.types import OptionalNullable, UNSET from glean.api_client.utils import get_security_from_env from glean.api_client.utils.unmarshal_json_response import unmarshal_json_response -from typing import List, Mapping, Optional, Union +from typing import Any, Dict, Iterable, List, Mapping, Optional, Union -class Datasources(BaseSDK): +class IndexingDatasources(BaseSDK): def add( self, *, @@ -21,32 +21,35 @@ def add( url_regex: Optional[str] = None, icon_url: Optional[str] = None, object_definitions: Optional[ - Union[List[models.ObjectDefinition], List[models.ObjectDefinitionTypedDict]] + Union[ + Iterable[models.ObjectDefinition], + Iterable[models.ObjectDefinitionTypedDict], + ] ] = None, suggestion_text: Optional[str] = None, home_url: Optional[str] = None, - crawler_seed_urls: Optional[List[str]] = None, + crawler_seed_urls: Optional[Iterable[str]] = None, icon_dark_url: Optional[str] = None, - hide_built_in_facets: Optional[List[models.HideBuiltInFacet]] = None, + hide_built_in_facets: Optional[Iterable[models.HideBuiltInFacet]] = None, canonicalizing_url_regex: Optional[ Union[ - List[models.CanonicalizingRegexType], - List[models.CanonicalizingRegexTypeTypedDict], + Iterable[models.CanonicalizingRegexType], + Iterable[models.CanonicalizingRegexTypeTypedDict], ] ] = None, canonicalizing_title_regex: Optional[ Union[ - List[models.CanonicalizingRegexType], - List[models.CanonicalizingRegexTypeTypedDict], + Iterable[models.CanonicalizingRegexType], + Iterable[models.CanonicalizingRegexTypeTypedDict], ] ] = None, redlist_title_regex: Optional[str] = None, connector_type: Optional[models.CustomDatasourceConfigConnectorType] = None, quicklinks: Optional[ - Union[List[models.Quicklink], List[models.QuicklinkTypedDict]] + Union[Iterable[models.Quicklink], Iterable[models.QuicklinkTypedDict]] ] = None, render_config_preset: Optional[str] = None, - aliases: Optional[List[str]] = None, + aliases: Optional[Iterable[str]] = None, is_on_prem: Optional[bool] = None, trust_url_regex_for_view_activity: Optional[bool] = True, include_utm_source: Optional[bool] = None, @@ -118,9 +121,11 @@ def add( ), suggestion_text=suggestion_text, home_url=home_url, - crawler_seed_urls=crawler_seed_urls, + crawler_seed_urls=utils.unmarshal(crawler_seed_urls, Optional[List[str]]), icon_dark_url=icon_dark_url, - hide_built_in_facets=hide_built_in_facets, + hide_built_in_facets=utils.unmarshal( + hide_built_in_facets, Optional[List[models.HideBuiltInFacet]] + ), canonicalizing_url_regex=utils.get_pydantic_model( canonicalizing_url_regex, Optional[List[models.CanonicalizingRegexType]] ), @@ -134,7 +139,7 @@ def add( quicklinks, Optional[List[models.Quicklink]] ), render_config_preset=render_config_preset, - aliases=aliases, + aliases=utils.unmarshal(aliases, Optional[List[str]]), is_on_prem=is_on_prem, trust_url_regex_for_view_activity=trust_url_regex_for_view_activity, include_utm_source=include_utm_source, @@ -183,9 +188,11 @@ def add( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Datasources"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -211,32 +218,35 @@ async def add_async( url_regex: Optional[str] = None, icon_url: Optional[str] = None, object_definitions: Optional[ - Union[List[models.ObjectDefinition], List[models.ObjectDefinitionTypedDict]] + Union[ + Iterable[models.ObjectDefinition], + Iterable[models.ObjectDefinitionTypedDict], + ] ] = None, suggestion_text: Optional[str] = None, home_url: Optional[str] = None, - crawler_seed_urls: Optional[List[str]] = None, + crawler_seed_urls: Optional[Iterable[str]] = None, icon_dark_url: Optional[str] = None, - hide_built_in_facets: Optional[List[models.HideBuiltInFacet]] = None, + hide_built_in_facets: Optional[Iterable[models.HideBuiltInFacet]] = None, canonicalizing_url_regex: Optional[ Union[ - List[models.CanonicalizingRegexType], - List[models.CanonicalizingRegexTypeTypedDict], + Iterable[models.CanonicalizingRegexType], + Iterable[models.CanonicalizingRegexTypeTypedDict], ] ] = None, canonicalizing_title_regex: Optional[ Union[ - List[models.CanonicalizingRegexType], - List[models.CanonicalizingRegexTypeTypedDict], + Iterable[models.CanonicalizingRegexType], + Iterable[models.CanonicalizingRegexTypeTypedDict], ] ] = None, redlist_title_regex: Optional[str] = None, connector_type: Optional[models.CustomDatasourceConfigConnectorType] = None, quicklinks: Optional[ - Union[List[models.Quicklink], List[models.QuicklinkTypedDict]] + Union[Iterable[models.Quicklink], Iterable[models.QuicklinkTypedDict]] ] = None, render_config_preset: Optional[str] = None, - aliases: Optional[List[str]] = None, + aliases: Optional[Iterable[str]] = None, is_on_prem: Optional[bool] = None, trust_url_regex_for_view_activity: Optional[bool] = True, include_utm_source: Optional[bool] = None, @@ -308,9 +318,11 @@ async def add_async( ), suggestion_text=suggestion_text, home_url=home_url, - crawler_seed_urls=crawler_seed_urls, + crawler_seed_urls=utils.unmarshal(crawler_seed_urls, Optional[List[str]]), icon_dark_url=icon_dark_url, - hide_built_in_facets=hide_built_in_facets, + hide_built_in_facets=utils.unmarshal( + hide_built_in_facets, Optional[List[models.HideBuiltInFacet]] + ), canonicalizing_url_regex=utils.get_pydantic_model( canonicalizing_url_regex, Optional[List[models.CanonicalizingRegexType]] ), @@ -324,7 +336,7 @@ async def add_async( quicklinks, Optional[List[models.Quicklink]] ), render_config_preset=render_config_preset, - aliases=aliases, + aliases=utils.unmarshal(aliases, Optional[List[str]]), is_on_prem=is_on_prem, trust_url_regex_for_view_activity=trust_url_regex_for_view_activity, include_utm_source=include_utm_source, @@ -373,9 +385,11 @@ async def add_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Datasources"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -460,9 +474,11 @@ def retrieve_config( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Datasources"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -547,9 +563,11 @@ async def retrieve_config_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Datasources"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -563,3 +581,231 @@ async def retrieve_config_async( raise errors.GleanError("API error occurred", http_res, http_res_text) raise errors.GleanError("Unexpected response received", http_res) + + def submit( + self, + *, + datasource_instance: str, + type_: str, + request_body: Mapping[str, Any], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.PostRestAPIIndexSubmissionsDatasourceInstanceTypeResponse: + r"""Submit datasource data + + Validates and asynchronously processes a datasource-specific submission. + + :param datasource_instance: Datasource instance that should process the submission + :param type: Submission type registered for the datasource + :param request_body: + :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 = models.POST_REST_API_INDEX_SUBMISSIONS_DATASOURCE_INSTANCE_TYPE_OP_SERVERS[ + 0 + ] + url_variables = { + "instance": "instance-name", + } + + request = models.PostRestAPIIndexSubmissionsDatasourceInstanceTypeRequest( + datasource_instance=datasource_instance, + type=type_, + request_body=utils.unmarshal(request_body, Dict[str, Any]), + ) + + req = self._build_request( + method="POST", + path="/rest/api/index/submissions/{datasourceInstance}/{type}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=True, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request.request_body, False, False, "json", Dict[str, Any] + ), + 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="post_/rest/api/index/submissions/{datasourceInstance}/{type}", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Datasources"], + extensions=None, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "202", "application/json"): + return unmarshal_json_response( + models.PostRestAPIIndexSubmissionsDatasourceInstanceTypeResponse, + http_res, + ) + if utils.match_response(http_res, ["400", "401", "404"], "application/json"): + response_data = unmarshal_json_response( + errors.ErrorInfoResponseData, http_res + ) + raise errors.ErrorInfoResponse(response_data, http_res) + if utils.match_response(http_res, "500", "application/json"): + response_data = unmarshal_json_response( + errors.ErrorInfoResponseData, http_res + ) + raise errors.ErrorInfoResponse(response_data, http_res) + if utils.match_response(http_res, ["405", "413", "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, ["503", "5XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.GleanError("API error occurred", http_res, http_res_text) + + raise errors.GleanError("Unexpected response received", http_res) + + async def submit_async( + self, + *, + datasource_instance: str, + type_: str, + request_body: Mapping[str, Any], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.PostRestAPIIndexSubmissionsDatasourceInstanceTypeResponse: + r"""Submit datasource data + + Validates and asynchronously processes a datasource-specific submission. + + :param datasource_instance: Datasource instance that should process the submission + :param type: Submission type registered for the datasource + :param request_body: + :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 = models.POST_REST_API_INDEX_SUBMISSIONS_DATASOURCE_INSTANCE_TYPE_OP_SERVERS[ + 0 + ] + url_variables = { + "instance": "instance-name", + } + + request = models.PostRestAPIIndexSubmissionsDatasourceInstanceTypeRequest( + datasource_instance=datasource_instance, + type=type_, + request_body=utils.unmarshal(request_body, Dict[str, Any]), + ) + + req = self._build_request_async( + method="POST", + path="/rest/api/index/submissions/{datasourceInstance}/{type}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=True, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request.request_body, False, False, "json", Dict[str, Any] + ), + 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="post_/rest/api/index/submissions/{datasourceInstance}/{type}", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Datasources"], + extensions=None, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "202", "application/json"): + return unmarshal_json_response( + models.PostRestAPIIndexSubmissionsDatasourceInstanceTypeResponse, + http_res, + ) + if utils.match_response(http_res, ["400", "401", "404"], "application/json"): + response_data = unmarshal_json_response( + errors.ErrorInfoResponseData, http_res + ) + raise errors.ErrorInfoResponse(response_data, http_res) + if utils.match_response(http_res, "500", "application/json"): + response_data = unmarshal_json_response( + errors.ErrorInfoResponseData, http_res + ) + raise errors.ErrorInfoResponse(response_data, http_res) + if utils.match_response(http_res, ["405", "413", "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, ["503", "5XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.GleanError("API error occurred", http_res, http_res_text) + + raise errors.GleanError("Unexpected response received", http_res) diff --git a/src/glean/api_client/indexing_documents.py b/src/glean/api_client/indexing_documents.py index 4cfffdbc..6f044b6c 100644 --- a/src/glean/api_client/indexing_documents.py +++ b/src/glean/api_client/indexing_documents.py @@ -6,7 +6,7 @@ from glean.api_client.types import BaseModel, OptionalNullable, UNSET from glean.api_client.utils import get_security_from_env from glean.api_client.utils.unmarshal_json_response import unmarshal_json_response -from typing import List, Mapping, Optional, Union, cast +from typing import Iterable, List, Mapping, Optional, Union, cast from typing_extensions import deprecated @@ -84,9 +84,11 @@ def add_or_update( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Documents"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "409", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -174,9 +176,11 @@ async def add_or_update_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Documents"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "409", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -196,7 +200,8 @@ def index( *, datasource: str, documents: Union[ - List[models.DocumentDefinition], List[models.DocumentDefinitionTypedDict] + Iterable[models.DocumentDefinition], + Iterable[models.DocumentDefinitionTypedDict], ], upload_id: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, @@ -271,9 +276,11 @@ def index( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Documents"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "409", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -293,7 +300,8 @@ async def index_async( *, datasource: str, documents: Union[ - List[models.DocumentDefinition], List[models.DocumentDefinitionTypedDict] + Iterable[models.DocumentDefinition], + Iterable[models.DocumentDefinitionTypedDict], ], upload_id: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, @@ -368,9 +376,11 @@ async def index_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Documents"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "409", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -391,7 +401,8 @@ def bulk_index( upload_id: str, datasource: str, documents: Union[ - List[models.DocumentDefinition], List[models.DocumentDefinitionTypedDict] + Iterable[models.DocumentDefinition], + Iterable[models.DocumentDefinitionTypedDict], ], is_first_page: Optional[bool] = None, is_last_page: Optional[bool] = None, @@ -477,9 +488,11 @@ def bulk_index( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Documents"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -500,7 +513,8 @@ async def bulk_index_async( upload_id: str, datasource: str, documents: Union[ - List[models.DocumentDefinition], List[models.DocumentDefinitionTypedDict] + Iterable[models.DocumentDefinition], + Iterable[models.DocumentDefinitionTypedDict], ], is_first_page: Optional[bool] = None, is_last_page: Optional[bool] = None, @@ -586,9 +600,11 @@ async def bulk_index_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Documents"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -695,9 +711,11 @@ def process_all( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Documents"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -804,9 +822,11 @@ async def process_all_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Documents"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -900,9 +920,11 @@ def delete( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Documents"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -996,9 +1018,11 @@ async def delete_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Documents"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1067,7 +1091,7 @@ def debug( request_has_path_params=True, request_has_query_params=True, user_agent_header="user-agent", - accept_header_value="application/json; charset=UTF-8", + accept_header_value="application/json", http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( @@ -1098,13 +1122,15 @@ def debug( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Troubleshooting"], + extensions={"x-beta": True}, ), request=req, - error_status_codes=["400", "401", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) - if utils.match_response(http_res, "200", "application/json; charset=UTF-8"): + if utils.match_response(http_res, "200", "application/json"): return unmarshal_json_response(models.DebugDocumentResponse, http_res) if utils.match_response(http_res, ["400", "401", "4XX"], "*"): http_res_text = utils.stream_to_text(http_res) @@ -1169,7 +1195,7 @@ async def debug_async( request_has_path_params=True, request_has_query_params=True, user_agent_header="user-agent", - accept_header_value="application/json; charset=UTF-8", + accept_header_value="application/json", http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( @@ -1200,13 +1226,15 @@ async def debug_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Troubleshooting"], + extensions={"x-beta": True}, ), request=req, - error_status_codes=["400", "401", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) - if utils.match_response(http_res, "200", "application/json; charset=UTF-8"): + if utils.match_response(http_res, "200", "application/json"): return unmarshal_json_response(models.DebugDocumentResponse, http_res) if utils.match_response(http_res, ["400", "401", "4XX"], "*"): http_res_text = await utils.stream_to_text_async(http_res) @@ -1222,8 +1250,8 @@ def debug_many( *, datasource: str, debug_documents: Union[ - List[models.DebugDocumentRequest], - List[models.DebugDocumentRequestTypedDict], + Iterable[models.DebugDocumentRequest], + Iterable[models.DebugDocumentRequestTypedDict], ], retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -1273,7 +1301,7 @@ def debug_many( request_has_path_params=True, request_has_query_params=True, user_agent_header="user-agent", - accept_header_value="application/json; charset=UTF-8", + accept_header_value="application/json", http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( @@ -1304,13 +1332,15 @@ def debug_many( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Troubleshooting"], + extensions={"x-beta": True}, ), request=req, - error_status_codes=["400", "401", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) - if utils.match_response(http_res, "200", "application/json; charset=UTF-8"): + if utils.match_response(http_res, "200", "application/json"): return unmarshal_json_response(models.DebugDocumentsResponse, http_res) if utils.match_response(http_res, ["400", "401", "4XX"], "*"): http_res_text = utils.stream_to_text(http_res) @@ -1326,8 +1356,8 @@ async def debug_many_async( *, datasource: str, debug_documents: Union[ - List[models.DebugDocumentRequest], - List[models.DebugDocumentRequestTypedDict], + Iterable[models.DebugDocumentRequest], + Iterable[models.DebugDocumentRequestTypedDict], ], retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -1377,7 +1407,7 @@ async def debug_many_async( request_has_path_params=True, request_has_query_params=True, user_agent_header="user-agent", - accept_header_value="application/json; charset=UTF-8", + accept_header_value="application/json", http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( @@ -1408,13 +1438,15 @@ async def debug_many_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Troubleshooting"], + extensions={"x-beta": True}, ), request=req, - error_status_codes=["400", "401", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) - if utils.match_response(http_res, "200", "application/json; charset=UTF-8"): + if utils.match_response(http_res, "200", "application/json"): return unmarshal_json_response(models.DebugDocumentsResponse, http_res) if utils.match_response(http_res, ["400", "401", "4XX"], "*"): http_res_text = await utils.stream_to_text_async(http_res) @@ -1507,9 +1539,11 @@ def check_access( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Troubleshooting"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1606,9 +1640,11 @@ async def check_access_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Troubleshooting"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1624,7 +1660,7 @@ async def check_access_async( raise errors.GleanError("Unexpected response received", http_res) @deprecated( - "warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible." + "warning: ** DEPRECATED ** - Deprecated on 2026-02-03, removal scheduled for 2026-10-15: Endpoint is deprecated." ) def status( self, @@ -1705,9 +1741,18 @@ def status( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Troubleshooting"], + extensions={ + "x-glean-deprecated": { + "id": "7eec0433-78fd-49f9-a34f-cca83640ec24", + "introduced": "2026-02-03", + "message": "Endpoint is deprecated", + "removal": "2026-10-15", + } + }, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1723,7 +1768,7 @@ def status( raise errors.GleanError("Unexpected response received", http_res) @deprecated( - "warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible." + "warning: ** DEPRECATED ** - Deprecated on 2026-02-03, removal scheduled for 2026-10-15: Endpoint is deprecated." ) async def status_async( self, @@ -1804,9 +1849,18 @@ async def status_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Troubleshooting"], + extensions={ + "x-glean-deprecated": { + "id": "7eec0433-78fd-49f9-a34f-cca83640ec24", + "introduced": "2026-02-03", + "message": "Endpoint is deprecated", + "removal": "2026-10-15", + } + }, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1822,7 +1876,7 @@ async def status_async( raise errors.GleanError("Unexpected response received", http_res) @deprecated( - "warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible." + "warning: ** DEPRECATED ** - Deprecated on 2026-02-03, removal scheduled for 2026-10-15: Endpoint is deprecated." ) def count( self, @@ -1897,9 +1951,18 @@ def count( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Troubleshooting"], + extensions={ + "x-glean-deprecated": { + "id": "c164089c-9412-4724-acf6-caf3b0d2a527", + "introduced": "2026-02-03", + "message": "Endpoint is deprecated", + "removal": "2026-10-15", + } + }, ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1915,7 +1978,7 @@ def count( raise errors.GleanError("Unexpected response received", http_res) @deprecated( - "warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible." + "warning: ** DEPRECATED ** - Deprecated on 2026-02-03, removal scheduled for 2026-10-15: Endpoint is deprecated." ) async def count_async( self, @@ -1990,9 +2053,18 @@ async def count_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Troubleshooting"], + extensions={ + "x-glean-deprecated": { + "id": "c164089c-9412-4724-acf6-caf3b0d2a527", + "introduced": "2026-02-03", + "message": "Endpoint is deprecated", + "removal": "2026-10-15", + } + }, ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -2006,3 +2078,223 @@ async def count_async( raise errors.GleanError("API error occurred", http_res, http_res_text) raise errors.GleanError("Unexpected response received", http_res) + + def debug_events( + self, + *, + datasource: str, + object_type: str, + doc_id: str, + start_date: Optional[str] = None, + max_events: Optional[int] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.DebugDocumentLifecycleResponse: + r"""Beta: Get document lifecycle events + + Retrieves lifecycle events for a specific document including upload time, index times and deletions. Rate limited to 1 request per minute per datasource. Currently in beta, might undergo breaking changes without prior notice. + + + :param datasource: The datasource to which the document belongs + :param object_type: Object type of the document to get lifecycle events for. + :param doc_id: Glean Document ID within the datasource to get lifecycle events for. + :param start_date: The start date for events to be fetched. Cannot be more than 30 days (default 7 days) in the past. + :param max_events: Max number of events to be fetched. Cannot be more than 100 (default 20). + :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.PostAPIIndexV1DebugDatasourceDocumentEventsRequest( + datasource=datasource, + debug_document_lifecycle_request=models.DebugDocumentLifecycleRequest( + object_type=object_type, + doc_id=doc_id, + start_date=start_date, + max_events=max_events, + ), + ) + + req = self._build_request( + method="POST", + path="/api/index/v1/debug/{datasource}/document/events", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=True, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request.debug_document_lifecycle_request, + False, + False, + "json", + models.DebugDocumentLifecycleRequest, + ), + 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="post_/api/index/v1/debug/{datasource}/document/events", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Troubleshooting"], + extensions={"x-beta": True}, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response( + models.DebugDocumentLifecycleResponse, http_res + ) + if utils.match_response(http_res, ["400", "401", "429", "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) + + raise errors.GleanError("Unexpected response received", http_res) + + async def debug_events_async( + self, + *, + datasource: str, + object_type: str, + doc_id: str, + start_date: Optional[str] = None, + max_events: Optional[int] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.DebugDocumentLifecycleResponse: + r"""Beta: Get document lifecycle events + + Retrieves lifecycle events for a specific document including upload time, index times and deletions. Rate limited to 1 request per minute per datasource. Currently in beta, might undergo breaking changes without prior notice. + + + :param datasource: The datasource to which the document belongs + :param object_type: Object type of the document to get lifecycle events for. + :param doc_id: Glean Document ID within the datasource to get lifecycle events for. + :param start_date: The start date for events to be fetched. Cannot be more than 30 days (default 7 days) in the past. + :param max_events: Max number of events to be fetched. Cannot be more than 100 (default 20). + :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.PostAPIIndexV1DebugDatasourceDocumentEventsRequest( + datasource=datasource, + debug_document_lifecycle_request=models.DebugDocumentLifecycleRequest( + object_type=object_type, + doc_id=doc_id, + start_date=start_date, + max_events=max_events, + ), + ) + + req = self._build_request_async( + method="POST", + path="/api/index/v1/debug/{datasource}/document/events", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=True, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request.debug_document_lifecycle_request, + False, + False, + "json", + models.DebugDocumentLifecycleRequest, + ), + 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="post_/api/index/v1/debug/{datasource}/document/events", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Troubleshooting"], + extensions={"x-beta": True}, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response( + models.DebugDocumentLifecycleResponse, http_res + ) + if utils.match_response(http_res, ["400", "401", "429", "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) + + raise errors.GleanError("Unexpected response received", http_res) diff --git a/src/glean/api_client/indexing_permissions.py b/src/glean/api_client/indexing_permissions.py index 9d15a17c..e6e349af 100644 --- a/src/glean/api_client/indexing_permissions.py +++ b/src/glean/api_client/indexing_permissions.py @@ -5,7 +5,7 @@ from glean.api_client._hooks import HookContext from glean.api_client.types import BaseModel, OptionalNullable, UNSET from glean.api_client.utils import get_security_from_env -from typing import List, Mapping, Optional, Union, cast +from typing import Iterable, List, Mapping, Optional, Union, cast class IndexingPermissions(BaseSDK): @@ -97,9 +97,11 @@ def update_permissions( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Documents"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "409", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -202,9 +204,11 @@ async def update_permissions_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Documents"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "409", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -297,9 +301,11 @@ def index_user( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Permissions"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -392,9 +398,11 @@ async def index_user_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Permissions"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -415,8 +423,8 @@ def bulk_index_users( upload_id: str, datasource: str, users: Union[ - List[models.DatasourceUserDefinition], - List[models.DatasourceUserDefinitionTypedDict], + Iterable[models.DatasourceUserDefinition], + Iterable[models.DatasourceUserDefinitionTypedDict], ], is_first_page: Optional[bool] = None, is_last_page: Optional[bool] = None, @@ -504,9 +512,11 @@ def bulk_index_users( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Permissions"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -527,8 +537,8 @@ async def bulk_index_users_async( upload_id: str, datasource: str, users: Union[ - List[models.DatasourceUserDefinition], - List[models.DatasourceUserDefinitionTypedDict], + Iterable[models.DatasourceUserDefinition], + Iterable[models.DatasourceUserDefinitionTypedDict], ], is_first_page: Optional[bool] = None, is_last_page: Optional[bool] = None, @@ -616,9 +626,11 @@ async def bulk_index_users_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Permissions"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -711,9 +723,11 @@ def index_group( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Permissions"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -806,9 +820,11 @@ async def index_group_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Permissions"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -829,8 +845,8 @@ def bulk_index_groups( upload_id: str, datasource: str, groups: Union[ - List[models.DatasourceGroupDefinition], - List[models.DatasourceGroupDefinitionTypedDict], + Iterable[models.DatasourceGroupDefinition], + Iterable[models.DatasourceGroupDefinitionTypedDict], ], is_first_page: Optional[bool] = None, is_last_page: Optional[bool] = None, @@ -918,9 +934,11 @@ def bulk_index_groups( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Permissions"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -941,8 +959,8 @@ async def bulk_index_groups_async( upload_id: str, datasource: str, groups: Union[ - List[models.DatasourceGroupDefinition], - List[models.DatasourceGroupDefinitionTypedDict], + Iterable[models.DatasourceGroupDefinition], + Iterable[models.DatasourceGroupDefinitionTypedDict], ], is_first_page: Optional[bool] = None, is_last_page: Optional[bool] = None, @@ -1030,9 +1048,11 @@ async def bulk_index_groups_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Permissions"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1128,9 +1148,11 @@ def index_membership( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Permissions"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1226,9 +1248,11 @@ async def index_membership_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Permissions"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1249,8 +1273,8 @@ def bulk_index_memberships( upload_id: str, datasource: str, memberships: Union[ - List[models.DatasourceBulkMembershipDefinition], - List[models.DatasourceBulkMembershipDefinitionTypedDict], + Iterable[models.DatasourceBulkMembershipDefinition], + Iterable[models.DatasourceBulkMembershipDefinitionTypedDict], ], is_first_page: Optional[bool] = None, is_last_page: Optional[bool] = None, @@ -1336,9 +1360,11 @@ def bulk_index_memberships( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Permissions"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1359,8 +1385,8 @@ async def bulk_index_memberships_async( upload_id: str, datasource: str, memberships: Union[ - List[models.DatasourceBulkMembershipDefinition], - List[models.DatasourceBulkMembershipDefinitionTypedDict], + Iterable[models.DatasourceBulkMembershipDefinition], + Iterable[models.DatasourceBulkMembershipDefinitionTypedDict], ], is_first_page: Optional[bool] = None, is_last_page: Optional[bool] = None, @@ -1446,9 +1472,11 @@ async def bulk_index_memberships_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Permissions"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1545,9 +1573,11 @@ def process_memberships( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Permissions"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1644,9 +1674,11 @@ async def process_memberships_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Permissions"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1739,9 +1771,11 @@ def delete_user( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Permissions"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1834,9 +1868,11 @@ async def delete_user_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Permissions"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1929,9 +1965,11 @@ def delete_group( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Permissions"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -2024,9 +2062,11 @@ async def delete_group_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Permissions"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -2122,9 +2162,11 @@ def delete_membership( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Permissions"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -2220,9 +2262,11 @@ async def delete_membership_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Permissions"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -2241,7 +2285,7 @@ def authorize_beta_users( self, *, datasource: str, - emails: List[str], + emails: Iterable[str], retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -2270,7 +2314,7 @@ def authorize_beta_users( request = models.GreenlistUsersRequest( datasource=datasource, - emails=emails, + emails=utils.unmarshal(emails, List[str]), ) req = self._build_request( @@ -2310,9 +2354,11 @@ def authorize_beta_users( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Permissions"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -2331,7 +2377,7 @@ async def authorize_beta_users_async( self, *, datasource: str, - emails: List[str], + emails: Iterable[str], retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -2360,7 +2406,7 @@ async def authorize_beta_users_async( request = models.GreenlistUsersRequest( datasource=datasource, - emails=emails, + emails=utils.unmarshal(emails, List[str]), ) req = self._build_request_async( @@ -2400,9 +2446,11 @@ async def authorize_beta_users_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Permissions"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/glean/api_client/indexing_shortcuts.py b/src/glean/api_client/indexing_shortcuts.py index c626afd0..14298512 100644 --- a/src/glean/api_client/indexing_shortcuts.py +++ b/src/glean/api_client/indexing_shortcuts.py @@ -5,7 +5,7 @@ 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 typing import List, Mapping, Optional, Union +from typing import Iterable, List, Mapping, Optional, Union class IndexingShortcuts(BaseSDK): @@ -14,7 +14,8 @@ def bulk_index( *, upload_id: str, shortcuts: Union[ - List[models.ExternalShortcut], List[models.ExternalShortcutTypedDict] + Iterable[models.ExternalShortcut], + Iterable[models.ExternalShortcutTypedDict], ], is_first_page: Optional[bool] = None, is_last_page: Optional[bool] = None, @@ -26,7 +27,7 @@ def bulk_index( ): r"""Bulk index external shortcuts - Replaces all the currently indexed shortcuts using paginated batch API calls. Note that this endpoint is used for indexing shortcuts not hosted by Glean. If you want to upload shortcuts that would be hosted by Glean, please use the `/uploadshortcuts` endpoint. For information on what you can do with Golinks, which are Glean-hosted shortcuts, please refer to [this](https://help.glean.com/en/articles/5628838-how-go-links-work) page. + Replaces all the currently indexed shortcuts using paginated batch API calls. Note that this endpoint is used for indexing shortcuts not hosted by Glean. If you want to upload shortcuts that would be hosted by Glean, please use the `/uploadshortcuts` endpoint. For information on what you can do with Golinks, which are Glean-hosted shortcuts, please refer to [this](https://docs.glean.com/user-guide/knowledge/go-links/how-go-links-work) page. :param upload_id: Unique id that must be used for this bulk upload instance :param shortcuts: Batch of shortcuts information @@ -95,9 +96,11 @@ def bulk_index( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Shortcuts"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -117,7 +120,8 @@ async def bulk_index_async( *, upload_id: str, shortcuts: Union[ - List[models.ExternalShortcut], List[models.ExternalShortcutTypedDict] + Iterable[models.ExternalShortcut], + Iterable[models.ExternalShortcutTypedDict], ], is_first_page: Optional[bool] = None, is_last_page: Optional[bool] = None, @@ -129,7 +133,7 @@ async def bulk_index_async( ): r"""Bulk index external shortcuts - Replaces all the currently indexed shortcuts using paginated batch API calls. Note that this endpoint is used for indexing shortcuts not hosted by Glean. If you want to upload shortcuts that would be hosted by Glean, please use the `/uploadshortcuts` endpoint. For information on what you can do with Golinks, which are Glean-hosted shortcuts, please refer to [this](https://help.glean.com/en/articles/5628838-how-go-links-work) page. + Replaces all the currently indexed shortcuts using paginated batch API calls. Note that this endpoint is used for indexing shortcuts not hosted by Glean. If you want to upload shortcuts that would be hosted by Glean, please use the `/uploadshortcuts` endpoint. For information on what you can do with Golinks, which are Glean-hosted shortcuts, please refer to [this](https://docs.glean.com/user-guide/knowledge/go-links/how-go-links-work) page. :param upload_id: Unique id that must be used for this bulk upload instance :param shortcuts: Batch of shortcuts information @@ -198,9 +202,11 @@ async def bulk_index_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Shortcuts"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -220,7 +226,8 @@ def upload( *, upload_id: str, shortcuts: Union[ - List[models.IndexingShortcut], List[models.IndexingShortcutTypedDict] + Iterable[models.IndexingShortcut], + Iterable[models.IndexingShortcutTypedDict], ], is_first_page: Optional[bool] = None, is_last_page: Optional[bool] = None, @@ -301,9 +308,11 @@ def upload( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Shortcuts"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -323,7 +332,8 @@ async def upload_async( *, upload_id: str, shortcuts: Union[ - List[models.IndexingShortcut], List[models.IndexingShortcutTypedDict] + Iterable[models.IndexingShortcut], + Iterable[models.IndexingShortcutTypedDict], ], is_first_page: Optional[bool] = None, is_last_page: Optional[bool] = None, @@ -404,9 +414,11 @@ async def upload_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Shortcuts"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/glean/api_client/insights.py b/src/glean/api_client/insights.py index 4fc30c5c..e178944f 100644 --- a/src/glean/api_client/insights.py +++ b/src/glean/api_client/insights.py @@ -6,13 +6,14 @@ from glean.api_client.types import OptionalNullable, UNSET from glean.api_client.utils import get_security_from_env from glean.api_client.utils.unmarshal_json_response import unmarshal_json_response -from typing import List, Mapping, Optional, Union +from typing import Mapping, Optional, Union class Insights(BaseSDK): def retrieve( self, *, + locale: Optional[str] = None, overview_request: Optional[ Union[ models.InsightsOverviewRequest, models.InsightsOverviewRequestTypedDict @@ -29,23 +30,16 @@ def retrieve( models.AgentsInsightsV2Request, models.AgentsInsightsV2RequestTypedDict ] ] = None, - disable_per_user_insights: Optional[bool] = None, - categories: Optional[List[models.InsightsRequestCategory]] = None, - departments: Optional[List[str]] = None, - day_range: Optional[Union[models.Period, models.PeriodTypedDict]] = None, - ai_app_request_options: Optional[ - Union[ - models.InsightsAiAppRequestOptions, - models.InsightsAiAppRequestOptionsTypedDict, - ] + mcp_request: Optional[ + Union[models.McpInsightsRequest, models.McpInsightsRequestTypedDict] ] = None, - agents_request_options: Optional[ + mcp_breakdown_request: Optional[ Union[ - models.InsightsAgentsRequestOptions, - models.InsightsAgentsRequestOptionsTypedDict, + models.McpBreakdownInsightsRequest, + models.McpBreakdownInsightsRequestTypedDict, ] ] = None, - assistant_activity_types: Optional[List[models.AssistantActivityType]] = None, + disable_per_user_insights: Optional[bool] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -55,16 +49,13 @@ def retrieve( Gets the aggregate usage insights data displayed in the Insights Dashboards. + :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 overview_request: :param assistant_request: :param agents_request: + :param mcp_request: + :param mcp_breakdown_request: :param disable_per_user_insights: If true, suppresses the generation of per-user Insights in the response. Default is false. - :param categories: Categories of data requested. Request can include single or multiple types. - :param departments: Departments that the data is requested for. If this is empty, corresponds to whole company. - :param day_range: - :param ai_app_request_options: - :param agents_request_options: - :param assistant_activity_types: Types of activity that should count in the definition of an Assistant Active User. Affects only insights for AI category. :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 @@ -80,27 +71,26 @@ def retrieve( else: base_url = self._get_url(base_url, url_variables) - request = models.InsightsRequest( - overview_request=utils.get_pydantic_model( - overview_request, Optional[models.InsightsOverviewRequest] - ), - assistant_request=utils.get_pydantic_model( - assistant_request, Optional[models.InsightsAssistantRequest] - ), - agents_request=utils.get_pydantic_model( - agents_request, Optional[models.AgentsInsightsV2Request] - ), - disable_per_user_insights=disable_per_user_insights, - categories=categories, - departments=departments, - day_range=utils.get_pydantic_model(day_range, Optional[models.Period]), - ai_app_request_options=utils.get_pydantic_model( - ai_app_request_options, Optional[models.InsightsAiAppRequestOptions] - ), - agents_request_options=utils.get_pydantic_model( - agents_request_options, Optional[models.InsightsAgentsRequestOptions] + request = models.InsightsRequestRequest( + locale=locale, + insights_request=models.InsightsRequest( + overview_request=utils.get_pydantic_model( + overview_request, Optional[models.InsightsOverviewRequest] + ), + assistant_request=utils.get_pydantic_model( + assistant_request, Optional[models.InsightsAssistantRequest] + ), + agents_request=utils.get_pydantic_model( + agents_request, Optional[models.AgentsInsightsV2Request] + ), + mcp_request=utils.get_pydantic_model( + mcp_request, Optional[models.McpInsightsRequest] + ), + mcp_breakdown_request=utils.get_pydantic_model( + mcp_breakdown_request, Optional[models.McpBreakdownInsightsRequest] + ), + disable_per_user_insights=disable_per_user_insights, ), - assistant_activity_types=assistant_activity_types, ) req = self._build_request( @@ -117,7 +107,7 @@ def retrieve( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.InsightsRequest + request.insights_request, False, False, "json", models.InsightsRequest ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -140,9 +130,14 @@ def retrieve( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Insights"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -160,6 +155,7 @@ def retrieve( async def retrieve_async( self, *, + locale: Optional[str] = None, overview_request: Optional[ Union[ models.InsightsOverviewRequest, models.InsightsOverviewRequestTypedDict @@ -176,23 +172,16 @@ async def retrieve_async( models.AgentsInsightsV2Request, models.AgentsInsightsV2RequestTypedDict ] ] = None, - disable_per_user_insights: Optional[bool] = None, - categories: Optional[List[models.InsightsRequestCategory]] = None, - departments: Optional[List[str]] = None, - day_range: Optional[Union[models.Period, models.PeriodTypedDict]] = None, - ai_app_request_options: Optional[ - Union[ - models.InsightsAiAppRequestOptions, - models.InsightsAiAppRequestOptionsTypedDict, - ] + mcp_request: Optional[ + Union[models.McpInsightsRequest, models.McpInsightsRequestTypedDict] ] = None, - agents_request_options: Optional[ + mcp_breakdown_request: Optional[ Union[ - models.InsightsAgentsRequestOptions, - models.InsightsAgentsRequestOptionsTypedDict, + models.McpBreakdownInsightsRequest, + models.McpBreakdownInsightsRequestTypedDict, ] ] = None, - assistant_activity_types: Optional[List[models.AssistantActivityType]] = None, + disable_per_user_insights: Optional[bool] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -202,16 +191,13 @@ async def retrieve_async( Gets the aggregate usage insights data displayed in the Insights Dashboards. + :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 overview_request: :param assistant_request: :param agents_request: + :param mcp_request: + :param mcp_breakdown_request: :param disable_per_user_insights: If true, suppresses the generation of per-user Insights in the response. Default is false. - :param categories: Categories of data requested. Request can include single or multiple types. - :param departments: Departments that the data is requested for. If this is empty, corresponds to whole company. - :param day_range: - :param ai_app_request_options: - :param agents_request_options: - :param assistant_activity_types: Types of activity that should count in the definition of an Assistant Active User. Affects only insights for AI category. :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 @@ -227,27 +213,26 @@ async def retrieve_async( else: base_url = self._get_url(base_url, url_variables) - request = models.InsightsRequest( - overview_request=utils.get_pydantic_model( - overview_request, Optional[models.InsightsOverviewRequest] - ), - assistant_request=utils.get_pydantic_model( - assistant_request, Optional[models.InsightsAssistantRequest] - ), - agents_request=utils.get_pydantic_model( - agents_request, Optional[models.AgentsInsightsV2Request] - ), - disable_per_user_insights=disable_per_user_insights, - categories=categories, - departments=departments, - day_range=utils.get_pydantic_model(day_range, Optional[models.Period]), - ai_app_request_options=utils.get_pydantic_model( - ai_app_request_options, Optional[models.InsightsAiAppRequestOptions] - ), - agents_request_options=utils.get_pydantic_model( - agents_request_options, Optional[models.InsightsAgentsRequestOptions] + request = models.InsightsRequestRequest( + locale=locale, + insights_request=models.InsightsRequest( + overview_request=utils.get_pydantic_model( + overview_request, Optional[models.InsightsOverviewRequest] + ), + assistant_request=utils.get_pydantic_model( + assistant_request, Optional[models.InsightsAssistantRequest] + ), + agents_request=utils.get_pydantic_model( + agents_request, Optional[models.AgentsInsightsV2Request] + ), + mcp_request=utils.get_pydantic_model( + mcp_request, Optional[models.McpInsightsRequest] + ), + mcp_breakdown_request=utils.get_pydantic_model( + mcp_breakdown_request, Optional[models.McpBreakdownInsightsRequest] + ), + disable_per_user_insights=disable_per_user_insights, ), - assistant_activity_types=assistant_activity_types, ) req = self._build_request_async( @@ -264,7 +249,7 @@ async def retrieve_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.InsightsRequest + request.insights_request, False, False, "json", models.InsightsRequest ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -287,9 +272,14 @@ async def retrieve_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Insights"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/glean/api_client/messages.py b/src/glean/api_client/messages.py index 591c47b9..77016bff 100644 --- a/src/glean/api_client/messages.py +++ b/src/glean/api_client/messages.py @@ -16,6 +16,7 @@ def retrieve( id_type: models.IDType, id: str, datasource: models.Datasource, + locale: Optional[str] = None, workspace_id: Optional[str] = None, direction: Optional[models.Direction] = None, timestamp_millis: Optional[int] = None, @@ -33,6 +34,7 @@ def retrieve( :param id_type: Type of the id in the incoming request. :param id: ID corresponding to the requested idType. Note that channel and threads are represented by the underlying datasource's ID and conversations are represented by their document's ID. :param datasource: The type of the data source. + :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 workspace_id: Id for the for the workspace in case of multiple workspaces. :param direction: The direction of the results asked with respect to the reference timestamp. Missing field defaults to OLDER. Only applicable when using a message_id. :param timestamp_millis: Timestamp in millis of the reference message. Only applicable when using a message_id. @@ -53,15 +55,18 @@ def retrieve( else: base_url = self._get_url(base_url, url_variables) - request = models.MessagesRequest( - id_type=id_type, - id=id, - workspace_id=workspace_id, - direction=direction, - timestamp_millis=timestamp_millis, - include_root_message=include_root_message, - datasource=datasource, - datasource_instance_display_name=datasource_instance_display_name, + request = models.MessagesRequestRequest( + locale=locale, + messages_request=models.MessagesRequest( + id_type=id_type, + id=id, + workspace_id=workspace_id, + direction=direction, + timestamp_millis=timestamp_millis, + include_root_message=include_root_message, + datasource=datasource, + datasource_instance_display_name=datasource_instance_display_name, + ), ) req = self._build_request( @@ -78,7 +83,7 @@ def retrieve( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.MessagesRequest + request.messages_request, False, False, "json", models.MessagesRequest ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -101,9 +106,14 @@ def retrieve( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Messages"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Preview", + }, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -124,6 +134,7 @@ async def retrieve_async( id_type: models.IDType, id: str, datasource: models.Datasource, + locale: Optional[str] = None, workspace_id: Optional[str] = None, direction: Optional[models.Direction] = None, timestamp_millis: Optional[int] = None, @@ -141,6 +152,7 @@ async def retrieve_async( :param id_type: Type of the id in the incoming request. :param id: ID corresponding to the requested idType. Note that channel and threads are represented by the underlying datasource's ID and conversations are represented by their document's ID. :param datasource: The type of the data source. + :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 workspace_id: Id for the for the workspace in case of multiple workspaces. :param direction: The direction of the results asked with respect to the reference timestamp. Missing field defaults to OLDER. Only applicable when using a message_id. :param timestamp_millis: Timestamp in millis of the reference message. Only applicable when using a message_id. @@ -161,15 +173,18 @@ async def retrieve_async( else: base_url = self._get_url(base_url, url_variables) - request = models.MessagesRequest( - id_type=id_type, - id=id, - workspace_id=workspace_id, - direction=direction, - timestamp_millis=timestamp_millis, - include_root_message=include_root_message, - datasource=datasource, - datasource_instance_display_name=datasource_instance_display_name, + request = models.MessagesRequestRequest( + locale=locale, + messages_request=models.MessagesRequest( + id_type=id_type, + id=id, + workspace_id=workspace_id, + direction=direction, + timestamp_millis=timestamp_millis, + include_root_message=include_root_message, + datasource=datasource, + datasource_instance_display_name=datasource_instance_display_name, + ), ) req = self._build_request_async( @@ -186,7 +201,7 @@ async def retrieve_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.MessagesRequest + request.messages_request, False, False, "json", models.MessagesRequest ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -209,9 +224,14 @@ async def retrieve_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Messages"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Preview", + }, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/glean/api_client/models/__init__.py b/src/glean/api_client/models/__init__.py index df6441d4..ebcfa532 100644 --- a/src/glean/api_client/models/__init__.py +++ b/src/glean/api_client/models/__init__.py @@ -66,12 +66,25 @@ from .userrolespecification import UserRoleSpecification, UserRoleSpecificationTypedDict from .verification import State, Verification, VerificationTypedDict from .verificationmetadata import VerificationMetadata, VerificationMetadataTypedDict -from typing import TYPE_CHECKING -from importlib import import_module -import builtins -import sys +from typing import Any, TYPE_CHECKING + +from glean.api_client.utils.dynamic_imports import lazy_getattr, lazy_dir if TYPE_CHECKING: + from .accessrequestpermissiondeniedresponse_error import ( + AccessRequestPermissionDeniedResponseErrorType, + ) + from .actionauthtype import ActionAuthType + from .actionpackauthstatus import ( + ActionPackAuthStatus, + ActionPackAuthStatusTypedDict, + ) + from .actionpackauthstatusresponse import ( + ActionPackAuthStatusResponse, + ActionPackAuthStatusResponseTypedDict, + ) + from .actionpreview import ActionPreview, ActionPreviewTypedDict + from .actionsummary import ActionSummary, ActionSummaryTypedDict from .activity import Activity, ActivityTypedDict from .activityevent import ( ActivityEvent, @@ -84,6 +97,10 @@ AddCollectionItemsErrorErrorType, AddCollectionItemsErrorTypedDict, ) + from .addcollectionitemsop import ( + AddcollectionitemsRequestRequest, + AddcollectionitemsRequestRequestTypedDict, + ) from .addcollectionitemsrequest import ( AddCollectionItemsRequest, AddCollectionItemsRequestTypedDict, @@ -98,6 +115,11 @@ Value, ValueTypedDict, ) + from .addverificationreminderop import ( + AddverificationreminderRequest, + AddverificationreminderRequestTypedDict, + ) + from .adminsearchop import AdminsearchRequest, AdminsearchRequestTypedDict from .agent import ( Agent, AgentCapabilities, @@ -130,17 +152,16 @@ AgentsInsightsV2Response, AgentsInsightsV2ResponseTypedDict, ) + from .agentstimesavedinsight import ( + AgentsTimeSavedInsight, + AgentsTimeSavedInsightTypedDict, + ) from .agentsusagebydepartmentinsight import ( AgentsUsageByDepartmentInsight, AgentsUsageByDepartmentInsightTypedDict, ) + from .agentusecaseinsight import AgentUseCaseInsight, AgentUseCaseInsightTypedDict from .agentusersinsight import AgentUsersInsight, AgentUsersInsightTypedDict - from .aiappactioncounts import AiAppActionCounts, AiAppActionCountsTypedDict - from .aiappsinsightsresponse import ( - AiAppsInsightsResponse, - AiAppsInsightsResponseTypedDict, - ) - from .aiinsightsresponse import AiInsightsResponse, AiInsightsResponseTypedDict from .allowlistoptions import AllowlistOptions, AllowlistOptionsTypedDict from .announcement import ( Announcement, @@ -171,9 +192,41 @@ AuthConfigStatus, AuthConfigType, AuthConfigTypedDict, + AuthHeaderType, GrantType, + TokenEndpointAuthMethod, + ) + from .authcontext import AuthContext, AuthContextTypedDict + from .authorizeactionpackop import ( + AuthorizeActionPackRequestRequest, + AuthorizeActionPackRequestRequestTypedDict, + ) + from .authorizeactionpackrequest import ( + AuthorizeActionPackRequest, + AuthorizeActionPackRequestTypedDict, + ) + from .authorizeactionpackresponse import ( + AuthorizeActionPackResponse, + AuthorizeActionPackResponseTypedDict, ) + from .authorizetoolserverop import ( + AuthorizeToolServerRequestRequest, + AuthorizeToolServerRequestRequestTypedDict, + ) + from .authorizetoolserverrequest import ( + AuthorizeToolServerRequest, + AuthorizeToolServerRequestTypedDict, + ) + from .authorizetoolserverresponse import ( + AuthorizeToolServerResponse, + AuthorizeToolServerResponseTypedDict, + ) + from .authstatus import AuthStatus from .authtoken import AuthToken, AuthTokenTypedDict + from .autocompleteop import ( + AutocompleteRequestRequest, + AutocompleteRequestRequestTypedDict, + ) from .autocompleterequest import ( AutocompleteRequest, AutocompleteRequestResultType, @@ -232,6 +285,7 @@ CalendarEventEventType, CalendarEventTypedDict, ) + from .calendarroombookingstatus import CalendarRoomBookingStatus from .canonicalizingregextype import ( CanonicalizingRegexType, CanonicalizingRegexTypeTypedDict, @@ -253,12 +307,17 @@ ChatRestrictionFiltersTypedDict, ) from .chatresult import ChatResult, ChatResultTypedDict + from .chatskill import ChatSkill, ChatSkillTypedDict from .chatstreamop import ChatStreamRequest, ChatStreamRequestTypedDict from .chatsuggestion import ChatSuggestion, ChatSuggestionTypedDict from .chatzerostatesuggestionoptions import ( ChatZeroStateSuggestionOptions, ChatZeroStateSuggestionOptionsTypedDict, ) + from .checkdatasourceauthresponse import ( + CheckDatasourceAuthResponse, + CheckDatasourceAuthResponseTypedDict, + ) from .checkdocumentaccessrequest import ( CheckDocumentAccessRequest, CheckDocumentAccessRequestTypedDict, @@ -298,26 +357,34 @@ ConferenceDataTypedDict, Provider, ) + from .configurationvalue import ConfigurationValue, ConfigurationValueTypedDict from .connectortype import ConnectorType from .contentdefinition import ContentDefinition, ContentDefinitionTypedDict - from .contentinsightsresponse import ( - ContentInsightsResponse, - ContentInsightsResponseTypedDict, - ) from .contenttype import ContentType from .countinfo import CountInfo, CountInfoTypedDict + from .createagentop import CreateAgentRequest, CreateAgentRequestTypedDict + from .createannouncementop import ( + CreateannouncementRequestRequest, + CreateannouncementRequestRequestTypedDict, + ) from .createannouncementrequest import ( CreateAnnouncementRequest, CreateAnnouncementRequestChannel, CreateAnnouncementRequestPostType, CreateAnnouncementRequestTypedDict, ) + from .createanswerop import ( + CreateanswerRequestRequest, + CreateanswerRequestRequestTypedDict, + ) from .createanswerrequest import CreateAnswerRequest, CreateAnswerRequestTypedDict from .createauthtokenresponse import ( CreateAuthTokenResponse, CreateAuthTokenResponseTypedDict, ) from .createcollectionop import ( + CreatecollectionRequestRequest, + CreatecollectionRequestRequestTypedDict, CreatecollectionResponse, CreatecollectionResponseTypedDict, ResponseBody1, @@ -337,6 +404,10 @@ CreateDlpReportResponse, CreateDlpReportResponseTypedDict, ) + from .createshortcutop import ( + CreateshortcutRequestRequest, + CreateshortcutRequestRequestTypedDict, + ) from .createshortcutrequest import ( CreateShortcutRequest, CreateShortcutRequestTypedDict, @@ -345,6 +416,10 @@ CreateShortcutResponse, CreateShortcutResponseTypedDict, ) + from .createworkflowrequest import ( + CreateWorkflowRequest, + CreateWorkflowRequestTypedDict, + ) from .currentactiveusers import CurrentActiveUsers, CurrentActiveUsersTypedDict from .customdatasourceconfig import ( CustomDatasourceConfig, @@ -364,6 +439,19 @@ CustomFieldValueHyperlinkTypedDict, ) from .customfieldvaluestr import CustomFieldValueStr, CustomFieldValueStrTypedDict + from .custommetadatapropertydefinition import ( + CustomMetadataPropertyDefinition, + CustomMetadataPropertyDefinitionPropertyType, + CustomMetadataPropertyDefinitionTypedDict, + ) + from .custommetadataputrequest import ( + CustomMetadataPutRequest, + CustomMetadataPutRequestTypedDict, + ) + from .custommetadataschema import ( + CustomMetadataSchema, + CustomMetadataSchemaTypedDict, + ) from .customproperty import CustomProperty, CustomPropertyTypedDict from .customsensitiveexpression import ( CustomSensitiveExpression, @@ -379,10 +467,23 @@ DatasourceBulkMembershipDefinition, DatasourceBulkMembershipDefinitionTypedDict, ) + from .datasourceconfigurationresponse import ( + DatasourceConfigurationResponse, + DatasourceConfigurationResponseTypedDict, + ) + from .datasourcecredentialstatus import DatasourceCredentialStatus + from .datasourcecredentialstatusresponse import ( + DatasourceCredentialStatusResponse, + DatasourceCredentialStatusResponseTypedDict, + ) from .datasourcegroupdefinition import ( DatasourceGroupDefinition, DatasourceGroupDefinitionTypedDict, ) + from .datasourceinstanceconfiguration import ( + DatasourceInstanceConfiguration, + DatasourceInstanceConfigurationTypedDict, + ) from .datasourcemembershipdefinition import ( DatasourceMembershipDefinition, DatasourceMembershipDefinitionTypedDict, @@ -413,6 +514,14 @@ Identity, IdentityTypedDict, ) + from .debugdocumentlifecyclerequest import ( + DebugDocumentLifecycleRequest, + DebugDocumentLifecycleRequestTypedDict, + ) + from .debugdocumentlifecycleresponse import ( + DebugDocumentLifecycleResponse, + DebugDocumentLifecycleResponseTypedDict, + ) from .debugdocumentrequest import ( DebugDocumentRequest, DebugDocumentRequestTypedDict, @@ -435,11 +544,29 @@ ) from .debuguserrequest import DebugUserRequest, DebugUserRequestTypedDict from .debuguserresponse import DebugUserResponse, DebugUserResponseTypedDict + from .delete_rest_api_index_custom_metadata_schema_groupname_op import ( + DELETE_REST_API_INDEX_CUSTOM_METADATA_SCHEMA_GROUP_NAME_OP_SERVERS, + DeleteRestAPIIndexCustomMetadataSchemaGroupNameRequest, + DeleteRestAPIIndexCustomMetadataSchemaGroupNameRequestTypedDict, + ) + from .delete_rest_api_index_document_docid_custom_metadata_groupname_op import ( + DELETE_REST_API_INDEX_DOCUMENT_DOC_ID_CUSTOM_METADATA_GROUP_NAME_OP_SERVERS, + DeleteRestAPIIndexDocumentDocIDCustomMetadataGroupNameRequest, + DeleteRestAPIIndexDocumentDocIDCustomMetadataGroupNameRequestTypedDict, + ) from .deleteallchatsop import DeleteallchatsRequest, DeleteallchatsRequestTypedDict + from .deleteannouncementop import ( + DeleteannouncementRequestRequest, + DeleteannouncementRequestRequestTypedDict, + ) from .deleteannouncementrequest import ( DeleteAnnouncementRequest, DeleteAnnouncementRequestTypedDict, ) + from .deleteanswerop import ( + DeleteanswerRequestRequest, + DeleteanswerRequestRequestTypedDict, + ) from .deleteanswerrequest import DeleteAnswerRequest, DeleteAnswerRequestTypedDict from .deletechatfilesop import ( DeletechatfilesRequestRequest, @@ -454,6 +581,10 @@ DeletechatsRequestRequestTypedDict, ) from .deletechatsrequest import DeleteChatsRequest, DeleteChatsRequestTypedDict + from .deletecollectionitemop import ( + DeletecollectionitemRequestRequest, + DeletecollectionitemRequestRequestTypedDict, + ) from .deletecollectionitemrequest import ( DeleteCollectionItemRequest, DeleteCollectionItemRequestTypedDict, @@ -462,6 +593,10 @@ DeleteCollectionItemResponse, DeleteCollectionItemResponseTypedDict, ) + from .deletecollectionop import ( + DeletecollectionRequestRequest, + DeletecollectionRequestRequestTypedDict, + ) from .deletecollectionrequest import ( DeleteCollectionRequest, DeleteCollectionRequestTypedDict, @@ -483,6 +618,10 @@ DeleteMembershipRequest, DeleteMembershipRequestTypedDict, ) + from .deleteshortcutop import ( + DeleteshortcutRequestRequest, + DeleteshortcutRequestRequestTypedDict, + ) from .deleteshortcutrequest import ( DeleteShortcutRequest, DeleteShortcutRequestTypedDict, @@ -500,12 +639,14 @@ from .dlpconfig import DlpConfig, DlpConfigTypedDict from .dlpexportfindingsrequest import ( DlpExportFindingsRequest, + DlpExportFindingsRequestExportType, DlpExportFindingsRequestTypedDict, - ExportType, FieldScope, ) from .dlpfindingfilter import DlpFindingFilter, DlpFindingFilterTypedDict from .dlpfrequency import DlpFrequency + from .dlpissuefilter import DlpIssueFilter, DlpIssueFilterTypedDict + from .dlpissuestatus import DlpIssueStatus from .dlpperson import DlpPerson, DlpPersonTypedDict from .dlppersonmetadata import DlpPersonMetadata, DlpPersonMetadataTypedDict from .dlpreport import DlpReport, DlpReportTypedDict, LastScanStatus @@ -514,7 +655,6 @@ from .dlpsimpleresult import DlpSimpleResult from .documentcontent import DocumentContent, DocumentContentTypedDict from .documentdefinition import DocumentDefinition, DocumentDefinitionTypedDict - from .documentinsight import DocumentInsight, DocumentInsightTypedDict from .documentinteractionsdefinition import ( DocumentInteractionsDefinition, DocumentInteractionsDefinitionTypedDict, @@ -571,11 +711,20 @@ DownloadreportcsvRequest, DownloadreportcsvRequestTypedDict, ) + from .editagentop import EditAgentRequest, EditAgentRequestTypedDict + from .editanswerop import ( + EditanswerRequestRequest, + EditanswerRequestRequestTypedDict, + ) from .editanswerrequest import ( EditAnswerRequest, EditAnswerRequestSourceType, EditAnswerRequestTypedDict, ) + from .editcollectionitemop import ( + EditcollectionitemRequestRequest, + EditcollectionitemRequestRequestTypedDict, + ) from .editcollectionitemrequest import ( EditCollectionItemRequest, EditCollectionItemRequestTypedDict, @@ -584,6 +733,10 @@ EditCollectionItemResponse, EditCollectionItemResponseTypedDict, ) + from .editcollectionop import ( + EditcollectionRequestRequest, + EditcollectionRequestRequestTypedDict, + ) from .editcollectionrequest import ( EditCollectionRequest, EditCollectionRequestTypedDict, @@ -593,7 +746,9 @@ EditCollectionResponseErrorCode, EditCollectionResponseTypedDict, ) + from .editpinop import EditpinRequestRequest, EditpinRequestRequestTypedDict from .editpinrequest import EditPinRequest, EditPinRequestTypedDict + from .editworkflowrequest import EditWorkflowRequest, EditWorkflowRequestTypedDict from .employeeinfodefinition import ( EmployeeInfoDefinition, EmployeeInfoDefinitionTypedDict, @@ -606,7 +761,12 @@ from .eventclassification import EventClassification, EventClassificationTypedDict from .eventclassificationname import EventClassificationName from .eventstrategyname import EventStrategyName - from .exportinfo import ExportInfo, ExportInfoStatus, ExportInfoTypedDict + from .exportinfo import ( + ExportInfo, + ExportInfoExportType, + ExportInfoStatus, + ExportInfoTypedDict, + ) from .externalsharingoptions import ( ExternalSharingOptions, ExternalSharingOptionsTypedDict, @@ -625,10 +785,10 @@ from .facetvalue import FacetValue, FacetValueTypedDict from .favoriteinfo import FavoriteInfo, FavoriteInfoTypedDict from .feedback import ( - Event, Feedback, FeedbackCategory, FeedbackChannel, + FeedbackEvent, FeedbackTypedDict, ) from .feedbackchatexchange import ( @@ -646,6 +806,7 @@ UIConfig, UIConfigTypedDict, ) + from .feedop import FeedRequestRequest, FeedRequestRequestTypedDict from .feedrequest import FeedRequest, FeedRequestCategory, FeedRequestTypedDict from .feedrequestoptions import ( CategoryToResultSize, @@ -654,17 +815,31 @@ FeedRequestOptionsTypedDict, ) from .feedresponse import FeedResponse, FeedResponseTypedDict - from .feedresult import FeedResult, FeedResultCategory, FeedResultTypedDict + from .feedresult import ( + FeedResult, + FeedResultCategory, + FeedResultTypedDict, + PlacementReason, + ) from .followupaction import FollowupAction, FollowupActionTypedDict from .generatedattachment import GeneratedAttachment, GeneratedAttachmentTypedDict from .generatedattachmentcontent import ( GeneratedAttachmentContent, GeneratedAttachmentContentTypedDict, ) + from .get_rest_api_index_custom_metadata_schema_groupname_op import ( + GET_REST_API_INDEX_CUSTOM_METADATA_SCHEMA_GROUP_NAME_OP_SERVERS, + GetRestAPIIndexCustomMetadataSchemaGroupNameRequest, + GetRestAPIIndexCustomMetadataSchemaGroupNameRequestTypedDict, + ) from .get_rest_api_v1_tools_listop import ( GetRestAPIV1ToolsListRequest, GetRestAPIV1ToolsListRequestTypedDict, ) + from .getactionpackauthstatusop import ( + GetActionPackAuthStatusRequest, + GetActionPackAuthStatusRequestTypedDict, + ) from .getagentop import GetAgentRequest, GetAgentRequestTypedDict from .getagentschemasop import ( GetAgentSchemasRequest, @@ -675,6 +850,7 @@ GetAnswerErrorErrorType, GetAnswerErrorTypedDict, ) + from .getanswerop import GetanswerRequestRequest, GetanswerRequestRequestTypedDict from .getanswerrequest import GetAnswerRequest, GetAnswerRequestTypedDict from .getanswerresponse import GetAnswerResponse, GetAnswerResponseTypedDict from .getchatapplicationop import ( @@ -689,6 +865,7 @@ GetChatApplicationResponse, GetChatApplicationResponseTypedDict, ) + from .getchatfileop import GetChatFileRequest, GetChatFileRequestTypedDict from .getchatfilesop import ( GetchatfilesRequestRequest, GetchatfilesRequestRequestTypedDict, @@ -701,6 +878,10 @@ from .getchatop import GetchatRequestRequest, GetchatRequestRequestTypedDict from .getchatrequest import GetChatRequest, GetChatRequestTypedDict from .getchatresponse import GetChatResponse, GetChatResponseTypedDict + from .getcollectionop import ( + GetcollectionRequestRequest, + GetcollectionRequestRequestTypedDict, + ) from .getcollectionrequest import ( GetCollectionRequest, GetCollectionRequestTypedDict, @@ -713,10 +894,22 @@ GetDatasourceConfigRequest, GetDatasourceConfigRequestTypedDict, ) + from .getdatasourcecredentialstatusop import ( + GetDatasourceCredentialStatusRequest, + GetDatasourceCredentialStatusRequestTypedDict, + ) + from .getdatasourceinstanceconfigurationop import ( + GetDatasourceInstanceConfigurationRequest, + GetDatasourceInstanceConfigurationRequestTypedDict, + ) from .getdlpreportresponse import ( GetDlpReportResponse, GetDlpReportResponseTypedDict, ) + from .getdocpermissionsop import ( + GetdocpermissionsRequestRequest, + GetdocpermissionsRequestRequestTypedDict, + ) from .getdocpermissionsrequest import ( GetDocPermissionsRequest, GetDocPermissionsRequestTypedDict, @@ -733,6 +926,10 @@ GetDocumentCountResponse, GetDocumentCountResponseTypedDict, ) + from .getdocumentsbyfacetsop import ( + GetdocumentsbyfacetsRequestRequest, + GetdocumentsbyfacetsRequestRequestTypedDict, + ) from .getdocumentsbyfacetsrequest import ( GetDocumentsByFacetsRequest, GetDocumentsByFacetsRequestTypedDict, @@ -741,6 +938,10 @@ GetDocumentsByFacetsResponse, GetDocumentsByFacetsResponseTypedDict, ) + from .getdocumentsop import ( + GetdocumentsRequestRequest, + GetdocumentsRequestRequestTypedDict, + ) from .getdocumentsrequest import ( GetDocumentsRequest, GetDocumentsRequestIncludeField, @@ -766,6 +967,15 @@ GetdocvisibilityRequest, GetdocvisibilityRequestTypedDict, ) + from .getpersonphotoop import ( + GetPersonPhotoRequest, + GetPersonPhotoRequestTypedDict, + GetPersonPhotoResponse, + GetPersonPhotoResponseResult, + GetPersonPhotoResponseResultTypedDict, + GetPersonPhotoResponseTypedDict, + ) + from .getpinop import GetpinRequestRequest, GetpinRequestRequestTypedDict from .getpinrequest import GetPinRequest, GetPinRequestTypedDict from .getpinresponse import GetPinResponse, GetPinResponseTypedDict from .getpolicyop import GetpolicyRequest, GetpolicyRequestTypedDict @@ -773,13 +983,25 @@ GetreportstatusRequest, GetreportstatusRequestTypedDict, ) - from .getshortcutrequest_union import ( + from .getshortcutop import ( + GetshortcutRequestRequest, + GetshortcutRequestRequestTypedDict, + ) + from .getshortcutrequest import ( GetShortcutRequest, + GetShortcutRequest1, + GetShortcutRequest1TypedDict, GetShortcutRequestTypedDict, - GetShortcutRequestUnion, - GetShortcutRequestUnionTypedDict, ) from .getshortcutresponse import GetShortcutResponse, GetShortcutResponseTypedDict + from .gettoolserverauthstatusop import ( + GetToolServerAuthStatusRequest, + GetToolServerAuthStatusRequestTypedDict, + ) + from .gettoolservertoolsop import ( + GetToolServerToolsRequest, + GetToolServerToolsRequestTypedDict, + ) from .getusercountrequest import GetUserCountRequest, GetUserCountRequestTypedDict from .getusercountresponse import ( GetUserCountResponse, @@ -800,6 +1022,19 @@ from .hotword import Hotword, HotwordTypedDict from .hotwordproximity import HotwordProximity, HotwordProximityTypedDict from .iconconfig import IconConfig, IconConfigTypedDict, IconType + from .importagentop import ( + ImportAgentRequestRequest, + ImportAgentRequestRequestTypedDict, + ) + from .importagentrequest import ( + Bundle, + BundleTypedDict, + ImportAgentRequest, + ImportAgentRequestTypedDict, + ) + from .importagentresponse import ImportAgentResponse, ImportAgentResponseTypedDict + from .importagentstatus import ImportAgentStatus + from .importagentsyncmode import ImportAgentSyncMode from .indexdocumentrequest import ( IndexDocumentRequest, IndexDocumentRequestTypedDict, @@ -827,19 +1062,12 @@ InputOptionsTimePeriodType, InputOptionsTypedDict, ) - from .insightsagentsrequestoptions import ( - InsightsAgentsRequestOptions, - InsightsAgentsRequestOptionsTypedDict, - ) - from .insightsaiapprequestoptions import ( - InsightsAiAppRequestOptions, - InsightsAiAppRequestOptionsTypedDict, - ) from .insightsassistantrequest import ( InsightsAssistantRequest, InsightsAssistantRequestTypedDict, ) from .insightschatsummary import InsightsChatSummary, InsightsChatSummaryTypedDict + from .insightsop import InsightsRequestRequest, InsightsRequestRequestTypedDict from .insightsoverviewrequest import ( InsightsOverviewRequest, InsightsOverviewRequestTypedDict, @@ -848,12 +1076,7 @@ InsightsOverviewResponse, InsightsOverviewResponseTypedDict, ) - from .insightsrequest import ( - AssistantActivityType, - InsightsRequest, - InsightsRequestCategory, - InsightsRequestTypedDict, - ) + from .insightsrequest import InsightsRequest, InsightsRequestTypedDict from .insightsresponse import InsightsResponse, InsightsResponseTypedDict from .insightssearchsummary import ( InsightsSearchSummary, @@ -864,10 +1087,23 @@ InvalidOperatorValueErrorTypedDict, ) from .labeledcountinfo import LabeledCountInfo, LabeledCountInfoTypedDict + from .lifecycleevent import ( + LifeCycleEvent, + LifeCycleEventEvent, + LifeCycleEventTypedDict, + ) + from .listanswersop import ( + ListanswersRequestRequest, + ListanswersRequestRequestTypedDict, + ) from .listanswersrequest import ListAnswersRequest, ListAnswersRequestTypedDict from .listanswersresponse import ListAnswersResponse, ListAnswersResponseTypedDict from .listchatsop import ListchatsRequest, ListchatsRequestTypedDict from .listchatsresponse import ListChatsResponse, ListChatsResponseTypedDict + from .listcollectionsop import ( + ListcollectionsRequestRequest, + ListcollectionsRequestRequestTypedDict, + ) from .listcollectionsrequest import ( ListCollectionsRequest, ListCollectionsRequestTypedDict, @@ -884,20 +1120,30 @@ ListDlpReportsResponse, ListDlpReportsResponseTypedDict, ) + from .listentitiesop import ( + ListentitiesRequestRequest, + ListentitiesRequestRequestTypedDict, + ) from .listentitiesrequest import ( ListEntitiesRequest, ListEntitiesRequestEntityType, ListEntitiesRequestIncludeField, + ListEntitiesRequestRequestType, ListEntitiesRequestTypedDict, - RequestType, ) from .listentitiesresponse import ( ListEntitiesResponse, ListEntitiesResponseTypedDict, ) - from .listpinsop import ListpinsRequest, ListpinsRequestTypedDict + from .listpinsop import ( + ListpinsRequest, + ListpinsRequestBody, + ListpinsRequestBodyTypedDict, + ListpinsRequestTypedDict, + ) from .listpinsresponse import ListPinsResponse, ListPinsResponseTypedDict from .listpoliciesop import ListpoliciesRequest, ListpoliciesRequestTypedDict + from .listshortcutsop import ListshortcutsRequest, ListshortcutsRequestTypedDict from .listshortcutspaginatedrequest import ( ListShortcutsPaginatedRequest, ListShortcutsPaginatedRequestIncludeField, @@ -924,12 +1170,31 @@ ManualFeedbackSideBySideInfoTypedDict, ManualFeedbackSideBySideInfoVote, ) + from .mcpbreakdowninsightsrequest import ( + BreakdownType, + McpBreakdownInsightsRequest, + McpBreakdownInsightsRequestTypedDict, + ) + from .mcpbreakdowninsightsresponse import ( + McpBreakdownInsightsResponse, + McpBreakdownInsightsResponseTypedDict, + ) + from .mcphostapplicationbreakdown import ( + McpHostApplicationBreakdown, + McpHostApplicationBreakdownTypedDict, + ) + from .mcpinsightsrequest import McpInsightsRequest, McpInsightsRequestTypedDict + from .mcpinsightsresponse import McpInsightsResponse, McpInsightsResponseTypedDict + from .mcpserverbreakdown import McpServerBreakdown, McpServerBreakdownTypedDict + from .mcptoolbreakdown import McpToolBreakdown, McpToolBreakdownTypedDict + from .mcpuserbreakdown import McpUserBreakdown, McpUserBreakdownTypedDict from .message import ( Message, MessageTextBlock, MessageTextBlockTypedDict, MessageTypedDict, ) + from .messagesop import MessagesRequestRequest, MessagesRequestRequestTypedDict from .messagesrequest import ( Datasource, Direction, @@ -950,6 +1215,7 @@ OperatorType, ) from .operatorscope import OperatorScope, OperatorScopeTypedDict + from .peopleop import PeopleRequestRequest, PeopleRequestRequestTypedDict from .peoplerequest import ( IncludeType, PeopleRequest, @@ -972,8 +1238,482 @@ PerUserAssistantInsightTypedDict, ) from .peruserinsight import PerUserInsight, PerUserInsightTypedDict + from .pinop import PinRequestRequest, PinRequestRequestTypedDict from .pinrequest import PinRequest, PinRequestTypedDict + from .platform_agents_create_runop import ( + PlatformAgentsCreateRunRequest, + PlatformAgentsCreateRunRequestTypedDict, + PlatformAgentsCreateRunResponse, + PlatformAgentsCreateRunResponseTypedDict, + ) + from .platform_agents_get_schemasop import ( + PlatformAgentsGetSchemasRequest, + PlatformAgentsGetSchemasRequestTypedDict, + ) + from .platform_agents_getop import ( + PlatformAgentsGetRequest, + PlatformAgentsGetRequestTypedDict, + ) + from .platform_chat_createop import ( + PlatformChatCreateResponse, + PlatformChatCreateResponseTypedDict, + ) + from .platform_search_filtersop import ( + PlatformSearchFiltersRequest, + PlatformSearchFiltersRequestTypedDict, + PlatformSearchFiltersResponseResponse, + PlatformSearchFiltersResponseResponseTypedDict, + ) + from .platform_skills_create_versionop import ( + PlatformSkillsCreateVersionRequest, + PlatformSkillsCreateVersionRequestTypedDict, + ) + from .platform_skills_deleteop import ( + PlatformSkillsDeleteRequest, + PlatformSkillsDeleteRequestTypedDict, + ) + from .platform_skills_get_contentop import ( + PlatformSkillsGetContentRequest, + PlatformSkillsGetContentRequestTypedDict, + PlatformSkillsGetContentResponse, + PlatformSkillsGetContentResponseTypedDict, + ) + from .platform_skills_get_version_contentop import ( + PlatformSkillsGetVersionContentRequest, + PlatformSkillsGetVersionContentRequestTypedDict, + PlatformSkillsGetVersionContentResponse, + PlatformSkillsGetVersionContentResponseTypedDict, + ) + from .platform_skills_get_versionop import ( + PlatformSkillsGetVersionRequest, + PlatformSkillsGetVersionRequestTypedDict, + ) + from .platform_skills_getop import ( + PlatformSkillsGetRequest, + PlatformSkillsGetRequestTypedDict, + ) + from .platform_skills_list_versionsop import ( + PlatformSkillsListVersionsRequest, + PlatformSkillsListVersionsRequestTypedDict, + ) + from .platform_skills_listop import ( + PlatformSkillsListRequest, + PlatformSkillsListRequestTypedDict, + ) + from .platform_skills_preview_sourceop import ( + PlatformSkillsPreviewSourceResponse, + PlatformSkillsPreviewSourceResponseTypedDict, + ) + from .platform_skills_syncop import ( + PlatformSkillsSyncRequest, + PlatformSkillsSyncRequestTypedDict, + ) + from .platform_skills_updateop import ( + PlatformSkillsUpdateRequest, + PlatformSkillsUpdateRequestTypedDict, + ) + from .platform_trigger_presets_events_searchop import ( + PlatformTriggerPresetsEventsSearchRequest, + PlatformTriggerPresetsEventsSearchRequestTypedDict, + ) + from .platform_trigger_presets_getop import ( + PlatformTriggerPresetsGetRequest, + PlatformTriggerPresetsGetRequestTypedDict, + ) + from .platform_trigger_presets_input_values_listop import ( + PlatformTriggerPresetsInputValuesListRequest, + PlatformTriggerPresetsInputValuesListRequestTypedDict, + ) + from .platform_trigger_presets_listop import ( + PlatformTriggerPresetsListRequest, + PlatformTriggerPresetsListRequestTypedDict, + ) + from .platform_triggers_createop import ( + PlatformTriggersCreateTriggerWebhookEventRequest, + PlatformTriggersCreateTriggerWebhookEventRequestTypedDict, + ) + from .platform_triggers_deleteop import ( + PlatformTriggersDeleteRequest, + PlatformTriggersDeleteRequestTypedDict, + ) + from .platform_triggers_events_searchop import ( + PlatformTriggersEventsSearchRequest, + PlatformTriggersEventsSearchRequestTypedDict, + ) + from .platform_triggers_getop import ( + PlatformTriggersGetRequest, + PlatformTriggersGetRequestTypedDict, + ) + from .platform_triggers_listop import ( + PlatformTriggersListRequest, + PlatformTriggersListRequestTypedDict, + ) + from .platform_triggers_updateop import ( + PlatformTriggersUpdateRequest, + PlatformTriggersUpdateRequestTypedDict, + ) + from .platformactionsummary import ( + PlatformActionSummary, + PlatformActionSummaryTypedDict, + ) + from .platformagent import PlatformAgent, PlatformAgentTypedDict + from .platformagentcapabilities import ( + PlatformAgentCapabilities, + PlatformAgentCapabilitiesTypedDict, + ) + from .platformagentexecutionstatus import PlatformAgentExecutionStatus + from .platformagentgetresponse import ( + PlatformAgentGetResponse, + PlatformAgentGetResponseTypedDict, + ) + from .platformagentrun import PlatformAgentRun, PlatformAgentRunTypedDict + from .platformagentruncreaterequest import ( + PlatformAgentRunCreateRequest, + PlatformAgentRunCreateRequestTypedDict, + ) + from .platformagentrunwaitresponse import ( + PlatformAgentRunWaitResponse, + PlatformAgentRunWaitResponseTypedDict, + ) + from .platformagentschemasresponse import ( + PlatformAgentSchemasResponse, + PlatformAgentSchemasResponseTypedDict, + ) + from .platformagentssearchrequest import ( + PlatformAgentsSearchRequest, + PlatformAgentsSearchRequestTypedDict, + ) + from .platformagentssearchresponse import ( + PlatformAgentsSearchResponse, + PlatformAgentsSearchResponseTypedDict, + ) + from .platformauthenticationsuggestion import ( + PlatformAuthenticationSuggestion, + PlatformAuthenticationSuggestionTypedDict, + ) + from .platformchatcitationannotation import ( + PlatformChatCitationAnnotation, + PlatformChatCitationAnnotationType, + PlatformChatCitationAnnotationTypedDict, + ) + from .platformchatcitationsnippet import ( + PlatformChatCitationSnippet, + PlatformChatCitationSnippetTypedDict, + ) + from .platformchatcitationsource import ( + PlatformChatCitationSource, + PlatformChatCitationSourceTypedDict, + ) + from .platformchatcompletedresponse import ( + Object, + PlatformChatCompletedResponse, + PlatformChatCompletedResponseStatus, + PlatformChatCompletedResponseTypedDict, + ) + from .platformchatcreaterequest import ( + Input, + InputTypedDict, + PlatformChatCreateRequest, + PlatformChatCreateRequestTypedDict, + ) + from .platformchatcustomentitysource import ( + PlatformChatCustomEntitySource, + PlatformChatCustomEntitySourceType, + PlatformChatCustomEntitySourceTypedDict, + ) + from .platformchatdocumentsource import ( + PlatformChatDocumentSource, + PlatformChatDocumentSourceDocument1, + PlatformChatDocumentSourceDocument1TypedDict, + PlatformChatDocumentSourceDocument2, + PlatformChatDocumentSourceDocument2TypedDict, + PlatformChatDocumentSourceType1, + PlatformChatDocumentSourceType2, + PlatformChatDocumentSourceTypedDict, + ) + from .platformchatfilesource import ( + PlatformChatFileSource, + PlatformChatFileSourceType, + PlatformChatFileSourceTypedDict, + ) + from .platformchatinputmessage import ( + PlatformChatInputMessage, + PlatformChatInputMessageRole, + PlatformChatInputMessageTypedDict, + ) + from .platformchatoutputmessage import ( + PlatformChatOutputMessage, + PlatformChatOutputMessageRole, + PlatformChatOutputMessageType, + PlatformChatOutputMessageTypedDict, + ) + from .platformchatoutputtextcontent import ( + PlatformChatOutputTextContent, + PlatformChatOutputTextContentType, + PlatformChatOutputTextContentTypedDict, + ) + from .platformchatpersonsource import ( + PlatformChatPersonSource, + PlatformChatPersonSourceType, + PlatformChatPersonSourceTypedDict, + ) + from .platformcontentschedulewebhookevent import ( + PlatformContentScheduleWebhookEvent, + PlatformContentScheduleWebhookEventTypedDict, + ) + from .platformcontenttype import PlatformContentType + from .platformdatasourcefilterinfo import ( + PlatformDatasourceFilterInfo, + PlatformDatasourceFilterInfoTypedDict, + ) + from .platformdocumentchangewebhookevent import ( + PlatformDocumentChangeWebhookEvent, + PlatformDocumentChangeWebhookEventTypedDict, + ) + from .platformfilter import PlatformFilter, PlatformFilterTypedDict + from .platformfilterfieldinfo import ( + PlatformFilterFieldInfo, + PlatformFilterFieldInfoTypedDict, + ) + from .platformfilteroperator import PlatformFilterOperator + from .platformmessage import PlatformMessage, PlatformMessageTypedDict + from .platformmessagerole import PlatformMessageRole + from .platformmessagetextblock import ( + PlatformMessageTextBlock, + PlatformMessageTextBlockTypedDict, + ) + from .platformpersonreference import ( + PlatformPersonReference, + PlatformPersonReferenceTypedDict, + ) + from .platformproblemdetailcode import PlatformProblemDetailCode + from .platformproblemdetailerror import ( + PlatformProblemDetailError, + PlatformProblemDetailErrorTypedDict, + ) + from .platformresult import PlatformResult, PlatformResultTypedDict + from .platformsearchfiltersresponse import ( + PlatformSearchFiltersResponse, + PlatformSearchFiltersResponseTypedDict, + ) + from .platformsearchrequest import ( + PlatformSearchRequest, + PlatformSearchRequestTypedDict, + ) + from .platformsearchresponse import ( + PlatformSearchResponse, + PlatformSearchResponseTypedDict, + ) + from .platformskill import PlatformSkill, PlatformSkillTypedDict + from .platformskillcreaterequest import ( + PlatformSkillCreateRequest, + PlatformSkillCreateRequestFile, + PlatformSkillCreateRequestFileTypedDict, + PlatformSkillCreateRequestTypedDict, + ) + from .platformskillcreateresponse import ( + PlatformSkillCreateResponse, + PlatformSkillCreateResponseTypedDict, + ) + from .platformskillgetresponse import ( + PlatformSkillGetResponse, + PlatformSkillGetResponseTypedDict, + ) + from .platformskillimportrequest import ( + PlatformSkillImportRequest, + PlatformSkillImportRequestTypedDict, + ) + from .platformskillimportresponse import ( + PlatformSkillImportResponse, + PlatformSkillImportResponseTypedDict, + ) + from .platformskillorigin import PlatformSkillOrigin + from .platformskillslistresponse import ( + PlatformSkillsListResponse, + PlatformSkillsListResponseTypedDict, + ) + from .platformskillsourcepreview import ( + PlatformSkillSourcePreview, + PlatformSkillSourcePreviewTypedDict, + ) + from .platformskillsourcepreviewfailure import ( + PlatformSkillSourcePreviewFailure, + PlatformSkillSourcePreviewFailureTypedDict, + ) + from .platformskillsourcepreviewfailurecode import ( + PlatformSkillSourcePreviewFailureCode, + ) + from .platformskillsourcepreviewfile import ( + PlatformSkillSourcePreviewFile, + PlatformSkillSourcePreviewFileTypedDict, + ) + from .platformskillsourcepreviewrequest import ( + PlatformSkillSourcePreviewRequest, + PlatformSkillSourcePreviewRequestTypedDict, + ) + from .platformskillsourcepreviewresponse import ( + PlatformSkillSourcePreviewResponse, + PlatformSkillSourcePreviewResponseTypedDict, + ) + from .platformskillsourceprovenance import ( + PlatformSkillSourceProvenance, + PlatformSkillSourceProvenanceTypedDict, + ) + from .platformskillstatus import PlatformSkillStatus + from .platformskillsyncresponse import ( + PlatformSkillSyncResponse, + PlatformSkillSyncResponseTypedDict, + ) + from .platformskillsyncresultstatus import PlatformSkillSyncResultStatus + from .platformskillsyncstatus import PlatformSkillSyncStatus + from .platformskillupdaterequest import ( + PlatformSkillUpdateRequest, + PlatformSkillUpdateRequestTypedDict, + ) + from .platformskillupdateresponse import ( + PlatformSkillUpdateResponse, + PlatformSkillUpdateResponseTypedDict, + ) + from .platformskillupdatestatus import PlatformSkillUpdateStatus + from .platformskillvalidationfile import ( + PlatformSkillValidationFile, + PlatformSkillValidationFileTypedDict, + ) + from .platformskillvalidationmetadata import ( + PlatformSkillValidationMetadata, + PlatformSkillValidationMetadataTypedDict, + ) + from .platformskillvalidationrequest import ( + PlatformSkillValidationRequest, + PlatformSkillValidationRequestFile, + PlatformSkillValidationRequestFileTypedDict, + PlatformSkillValidationRequestTypedDict, + ) + from .platformskillvalidationresponse import ( + PlatformSkillValidationResponse, + PlatformSkillValidationResponseTypedDict, + ) + from .platformskillversion import ( + PlatformSkillVersion, + PlatformSkillVersionTypedDict, + ) + from .platformskillversioncreaterequest import ( + PlatformSkillVersionCreateRequest, + PlatformSkillVersionCreateRequestFile, + PlatformSkillVersionCreateRequestFileTypedDict, + PlatformSkillVersionCreateRequestTypedDict, + ) + from .platformskillversioncreateresponse import ( + PlatformSkillVersionCreateResponse, + PlatformSkillVersionCreateResponseTypedDict, + ) + from .platformskillversiongetresponse import ( + PlatformSkillVersionGetResponse, + PlatformSkillVersionGetResponseTypedDict, + ) + from .platformskillversionslistresponse import ( + PlatformSkillVersionsListResponse, + PlatformSkillVersionsListResponseTypedDict, + ) + from .platformtimerange import PlatformTimeRange, PlatformTimeRangeTypedDict + from .platformtrigger import PlatformTrigger, PlatformTriggerTypedDict + from .platformtriggerauth_output import ( + PlatformTriggerAuth, + PlatformTriggerAuthOutput, + PlatformTriggerAuthOutputTypedDict, + PlatformTriggerAuthType, + PlatformTriggerAuthTypedDict, + ) + from .platformtriggercreaterequest import ( + PlatformTriggerCreateRequest, + PlatformTriggerCreateRequestTypedDict, + ) + from .platformtriggercreateresponse import ( + PlatformTriggerCreateResponse, + PlatformTriggerCreateResponseTypedDict, + ) + from .platformtriggerdelivery import ( + PlatformTriggerDelivery, + PlatformTriggerDeliveryTypedDict, + ) + from .platformtriggerdelivery_output import ( + PlatformTriggerDeliveryOutput, + PlatformTriggerDeliveryOutputTypedDict, + ) + from .platformtriggerevent import ( + PlatformTriggerEvent, + PlatformTriggerEventTypedDict, + ) + from .platformtriggereventreason import PlatformTriggerEventReason + from .platformtriggereventsearchrequest import ( + PlatformTriggerEventSearchRequest, + PlatformTriggerEventSearchRequestTypedDict, + ) + from .platformtriggereventsearchresponse import ( + PlatformTriggerEventSearchResponse, + PlatformTriggerEventSearchResponseTypedDict, + ) + from .platformtriggereventtype import PlatformTriggerEventType + from .platformtriggergetresponse import ( + PlatformTriggerGetResponse, + PlatformTriggerGetResponseTypedDict, + ) + from .platformtriggerlistresponse import ( + PlatformTriggerListResponse, + PlatformTriggerListResponseTypedDict, + ) + from .platformtriggerpreset import ( + PlatformTriggerPreset, + PlatformTriggerPresetTypedDict, + ) + from .platformtriggerpreseteventsearchrequest import ( + PlatformTriggerPresetEventSearchRequest, + PlatformTriggerPresetEventSearchRequestTypedDict, + ) + from .platformtriggerpresetgetresponse import ( + PlatformTriggerPresetGetResponse, + PlatformTriggerPresetGetResponseTypedDict, + ) + from .platformtriggerpresetinput import ( + PlatformTriggerPresetInput, + PlatformTriggerPresetInputTypedDict, + ) + from .platformtriggerpresetinputtype import PlatformTriggerPresetInputType + from .platformtriggerpresetinputvalue import ( + PlatformTriggerPresetInputValue, + PlatformTriggerPresetInputValueTypedDict, + ) + from .platformtriggerpresetinputvaluelistresponse import ( + PlatformTriggerPresetInputValueListResponse, + PlatformTriggerPresetInputValueListResponseTypedDict, + ) + from .platformtriggerpresetlistresponse import ( + PlatformTriggerPresetListResponse, + PlatformTriggerPresetListResponseTypedDict, + ) + from .platformtriggerpresetsummary import ( + PlatformTriggerPresetSummary, + PlatformTriggerPresetSummaryTypedDict, + ) + from .platformtriggerstatus import PlatformTriggerStatus + from .platformtriggerupdaterequest import ( + PlatformTriggerUpdateRequest, + PlatformTriggerUpdateRequestTypedDict, + ) + from .platformtriggerwebhookevent import ( + PlatformTriggerWebhookEvent, + PlatformTriggerWebhookEventTypedDict, + ) + from .platformtriggerwithsecret import ( + PlatformTriggerWithSecret, + PlatformTriggerWithSecretTypedDict, + ) + from .platformwarning import PlatformWarning, PlatformWarningTypedDict from .possiblevalue import PossibleValue, PossibleValueTypedDict + from .post_api_index_v1_debug_datasource_document_eventsop import ( + PostAPIIndexV1DebugDatasourceDocumentEventsRequest, + PostAPIIndexV1DebugDatasourceDocumentEventsRequestTypedDict, + ) from .post_api_index_v1_debug_datasource_documentop import ( PostAPIIndexV1DebugDatasourceDocumentRequest, PostAPIIndexV1DebugDatasourceDocumentRequestTypedDict, @@ -990,6 +1730,13 @@ PostAPIIndexV1DebugDatasourceUserRequest, PostAPIIndexV1DebugDatasourceUserRequestTypedDict, ) + from .post_rest_api_index_submissions_datasourceinstance_type_op import ( + POST_REST_API_INDEX_SUBMISSIONS_DATASOURCE_INSTANCE_TYPE_OP_SERVERS, + PostRestAPIIndexSubmissionsDatasourceInstanceTypeRequest, + PostRestAPIIndexSubmissionsDatasourceInstanceTypeRequestTypedDict, + PostRestAPIIndexSubmissionsDatasourceInstanceTypeResponse, + PostRestAPIIndexSubmissionsDatasourceInstanceTypeResponseTypedDict, + ) from .processalldocumentsrequest import ( ProcessAllDocumentsRequest, ProcessAllDocumentsRequestTypedDict, @@ -1009,18 +1756,27 @@ ) from .propertydefinition import ( PropertyDefinition, + PropertyDefinitionPropertyType, PropertyDefinitionTypedDict, - PropertyType, UIOptions, ) from .propertygroup import PropertyGroup, PropertyGroupTypedDict - from .queryinsight import QueryInsight, QueryInsightTypedDict - from .queryinsightsresponse import ( - QueryInsightsResponse, - QueryInsightsResponseTypedDict, + from .put_rest_api_index_custom_metadata_schema_groupname_op import ( + PUT_REST_API_INDEX_CUSTOM_METADATA_SCHEMA_GROUP_NAME_OP_SERVERS, + PutRestAPIIndexCustomMetadataSchemaGroupNameRequest, + PutRestAPIIndexCustomMetadataSchemaGroupNameRequestTypedDict, + ) + from .put_rest_api_index_document_docid_custom_metadata_groupname_op import ( + PUT_REST_API_INDEX_DOCUMENT_DOC_ID_CUSTOM_METADATA_GROUP_NAME_OP_SERVERS, + PutRestAPIIndexDocumentDocIDCustomMetadataGroupNameRequest, + PutRestAPIIndexDocumentDocIDCustomMetadataGroupNameRequestTypedDict, ) from .quicklink import Quicklink, QuicklinkTypedDict, Scope from .readpermission import ReadPermission, ReadPermissionTypedDict + from .recommendationsop import ( + RecommendationsRequestRequest, + RecommendationsRequestRequestTypedDict, + ) from .recommendationsrequest import ( RecommendationsRequest, RecommendationsRequestTypedDict, @@ -1047,6 +1803,14 @@ from .resultsdescription import ResultsDescription, ResultsDescriptionTypedDict from .resultsresponse import ResultsResponse, ResultsResponseTypedDict from .resulttab import ResultTab, ResultTabTypedDict + from .rotatedatasourcecredentialsop import ( + RotateDatasourceCredentialsRequestRequest, + RotateDatasourceCredentialsRequestRequestTypedDict, + ) + from .rotatedatasourcecredentialsrequest import ( + RotateDatasourceCredentialsRequest, + RotateDatasourceCredentialsRequestTypedDict, + ) from .rotatetokenresponse import RotateTokenResponse, RotateTokenResponseTypedDict from .scopetype import ScopeType from .searchagentsrequest import SearchAgentsRequest, SearchAgentsRequestTypedDict @@ -1054,6 +1818,7 @@ SearchAgentsResponse, SearchAgentsResponseTypedDict, ) + from .searchop import SearchRequestRequest, SearchRequestRequestTypedDict from .searchproviderinfo import SearchProviderInfo, SearchProviderInfoTypedDict from .searchrequest import SearchRequest, SearchRequestTypedDict from .searchrequestinputdetails import ( @@ -1085,6 +1850,17 @@ SensitiveInfoTypeLikelihoodThreshold, SensitiveInfoTypeTypedDict, ) + from .servertoolrequest import ( + ServerToolRequest, + ServerToolRequestRequestType, + ServerToolRequestTypedDict, + ) + from .servertoolresponse import ( + GrantScope, + ServerToolResponse, + ServerToolResponseRequestType, + ServerToolResponseTypedDict, + ) from .sessioninfo import SessionInfo, SessionInfoTypedDict from .sharingoptions import SharingOptions, SharingOptionsTypedDict from .shortcuterror import ( @@ -1092,11 +1868,6 @@ ShortcutErrorErrorType, ShortcutErrorTypedDict, ) - from .shortcutinsight import ShortcutInsight, ShortcutInsightTypedDict - from .shortcutinsightsresponse import ( - ShortcutInsightsResponse, - ShortcutInsightsResponseTypedDict, - ) from .shortcutmutableproperties import ( ShortcutMutableProperties, ShortcutMutablePropertiesTypedDict, @@ -1123,6 +1894,8 @@ StructuredTextMutableProperties, StructuredTextMutablePropertiesTypedDict, ) + from .successresponse import SuccessResponse, SuccessResponseTypedDict + from .summarizeop import SummarizeRequestRequest, SummarizeRequestRequestTypedDict from .summarizerequest import SummarizeRequest, SummarizeRequestTypedDict from .summarizeresponse import ( Error, @@ -1144,8 +1917,15 @@ TimeRangeFilterTypedDict, ) from .tool import Tool, ToolType, ToolTypedDict + from .toolannotations import ToolAnnotations, ToolAnnotationsTypedDict + from .tooldefinition import ToolDefinition, ToolDefinitionTypedDict + from .tooldefinitionsresponse import ( + ToolDefinitionsResponse, + ToolDefinitionsResponseTypedDict, + ) from .toolinfo import ToolInfo, ToolInfoTypedDict from .toolmetadata import ( + ActionTypeSource, AuthType, KnowledgeType, ToolMetadata, @@ -1157,16 +1937,38 @@ from .toolscallparameter import ToolsCallParameter, ToolsCallParameterTypedDict from .toolscallrequest import ToolsCallRequest, ToolsCallRequestTypedDict from .toolscallresponse import ToolsCallResponse, ToolsCallResponseTypedDict + from .toolserverauthstatus import ToolServerAuthStatus + from .toolserverauthstatusresponse import ( + ToolServerAuthStatusResponse, + ToolServerAuthStatusResponseTypedDict, + ) from .toolsets import ToolSets, ToolSetsTypedDict from .toolslistresponse import ToolsListResponse, ToolsListResponseTypedDict from .ugctype import UgcType + from .unauthorizeddatasourceinstance import ( + UnauthorizedDatasourceInstance, + UnauthorizedDatasourceInstanceTypedDict, + ) from .unpin import Unpin, UnpinTypedDict + from .unpinop import UnpinRequest, UnpinRequestTypedDict + from .updateannouncementop import ( + UpdateannouncementRequestRequest, + UpdateannouncementRequestRequestTypedDict, + ) from .updateannouncementrequest import ( UpdateAnnouncementRequest, UpdateAnnouncementRequestChannel, UpdateAnnouncementRequestPostType, UpdateAnnouncementRequestTypedDict, ) + from .updatedatasourceconfigurationrequest import ( + UpdateDatasourceConfigurationRequest, + UpdateDatasourceConfigurationRequestTypedDict, + ) + from .updatedatasourceinstanceconfigurationop import ( + UpdateDatasourceInstanceConfigurationRequest, + UpdateDatasourceInstanceConfigurationRequestTypedDict, + ) from .updatedlpconfigrequest import ( UpdateDlpConfigRequest, UpdateDlpConfigRequestTypedDict, @@ -1196,6 +1998,10 @@ UpdatePermissionsRequestTypedDict, ) from .updatepolicyop import UpdatepolicyRequest, UpdatepolicyRequestTypedDict + from .updateshortcutop import ( + UpdateshortcutRequestRequest, + UpdateshortcutRequestRequestTypedDict, + ) from .updateshortcutrequest import ( UpdateShortcutRequest, UpdateShortcutRequestTypedDict, @@ -1210,9 +2016,9 @@ UploadchatfilesRequestRequestTypedDict, ) from .uploadchatfilesrequest import ( - File, - FileTypedDict, UploadChatFilesRequest, + UploadChatFilesRequestFile, + UploadChatFilesRequestFileTypedDict, UploadChatFilesRequestTypedDict, ) from .uploadchatfilesresponse import ( @@ -1235,10 +2041,6 @@ UserGeneratedContentID, UserGeneratedContentIDTypedDict, ) - from .userinsightsresponse import ( - UserInsightsResponse, - UserInsightsResponseTypedDict, - ) from .userreferencedefinition import ( UserReferenceDefinition, UserReferenceDefinitionTypedDict, @@ -1247,12 +2049,13 @@ from .userstatusresponse import UserStatusResponse, UserStatusResponseTypedDict from .userviewinfo import UserViewInfo, UserViewInfoTypedDict from .verificationfeed import VerificationFeed, VerificationFeedTypedDict + from .verifyop import VerifyRequestRequest, VerifyRequestRequestTypedDict from .verifyrequest import ( VerifyRequest, VerifyRequestAction, VerifyRequestTypedDict, ) - from .viewerinfo import Role, ViewerInfo, ViewerInfoTypedDict + from .viewerinfo import ViewerInfo, ViewerInfoRole, ViewerInfoTypedDict from .workflow import Workflow, WorkflowTypedDict from .workflowfeedbackinfo import ( WorkflowFeedbackInfo, @@ -1317,6 +2120,17 @@ __all__ = [ + "AccessRequestPermissionDeniedResponseErrorType", + "ActionAuthType", + "ActionPackAuthStatus", + "ActionPackAuthStatusResponse", + "ActionPackAuthStatusResponseTypedDict", + "ActionPackAuthStatusTypedDict", + "ActionPreview", + "ActionPreviewTypedDict", + "ActionSummary", + "ActionSummaryTypedDict", + "ActionTypeSource", "Activity", "ActivityEnum", "ActivityEvent", @@ -1332,8 +2146,14 @@ "AddCollectionItemsRequestTypedDict", "AddCollectionItemsResponse", "AddCollectionItemsResponseTypedDict", + "AddcollectionitemsRequestRequest", + "AddcollectionitemsRequestRequestTypedDict", "AdditionalFieldDefinition", "AdditionalFieldDefinitionTypedDict", + "AddverificationreminderRequest", + "AddverificationreminderRequestTypedDict", + "AdminsearchRequest", + "AdminsearchRequestTypedDict", "Agent", "AgentCapabilities", "AgentCapabilitiesTypedDict", @@ -1352,20 +2172,18 @@ "AgentSchemas", "AgentSchemasTypedDict", "AgentTypedDict", + "AgentUseCaseInsight", + "AgentUseCaseInsightTypedDict", "AgentUsersInsight", "AgentUsersInsightTypedDict", "AgentsInsightsV2Request", "AgentsInsightsV2RequestTypedDict", "AgentsInsightsV2Response", "AgentsInsightsV2ResponseTypedDict", + "AgentsTimeSavedInsight", + "AgentsTimeSavedInsightTypedDict", "AgentsUsageByDepartmentInsight", "AgentsUsageByDepartmentInsightTypedDict", - "AiAppActionCounts", - "AiAppActionCountsTypedDict", - "AiAppsInsightsResponse", - "AiAppsInsightsResponseTypedDict", - "AiInsightsResponse", - "AiInsightsResponseTypedDict", "AllowlistOptions", "AllowlistOptionsTypedDict", "Announcement", @@ -1391,18 +2209,35 @@ "AnswerTypedDict", "AppResult", "AppResultTypedDict", - "AssistantActivityType", "AssistantInsightsResponse", "AssistantInsightsResponseTypedDict", "AuthConfig", "AuthConfigStatus", "AuthConfigType", "AuthConfigTypedDict", + "AuthContext", + "AuthContextTypedDict", + "AuthHeaderType", + "AuthStatus", "AuthToken", "AuthTokenTypedDict", "AuthType", "Author", + "AuthorizeActionPackRequest", + "AuthorizeActionPackRequestRequest", + "AuthorizeActionPackRequestRequestTypedDict", + "AuthorizeActionPackRequestTypedDict", + "AuthorizeActionPackResponse", + "AuthorizeActionPackResponseTypedDict", + "AuthorizeToolServerRequest", + "AuthorizeToolServerRequestRequest", + "AuthorizeToolServerRequestRequestTypedDict", + "AuthorizeToolServerRequestTypedDict", + "AuthorizeToolServerResponse", + "AuthorizeToolServerResponseTypedDict", "AutocompleteRequest", + "AutocompleteRequestRequest", + "AutocompleteRequestRequestTypedDict", "AutocompleteRequestResultType", "AutocompleteRequestTypedDict", "AutocompleteResponse", @@ -1414,6 +2249,7 @@ "AutocompleteResultTypedDict", "Badge", "BadgeTypedDict", + "BreakdownType", "BulkIndexDocumentsRequest", "BulkIndexDocumentsRequestTypedDict", "BulkIndexEmployeesRequest", @@ -1431,6 +2267,8 @@ "BulkUploadHistoryEvent", "BulkUploadHistoryEventStatus", "BulkUploadHistoryEventTypedDict", + "Bundle", + "BundleTypedDict", "CalendarAttendee", "CalendarAttendeeTypedDict", "CalendarAttendees", @@ -1438,6 +2276,7 @@ "CalendarEvent", "CalendarEventEventType", "CalendarEventTypedDict", + "CalendarRoomBookingStatus", "CanonicalizingRegexType", "CanonicalizingRegexTypeTypedDict", "CategoryToResultSize", @@ -1471,6 +2310,8 @@ "ChatRestrictionFiltersTypedDict", "ChatResult", "ChatResultTypedDict", + "ChatSkill", + "ChatSkillTypedDict", "ChatStreamRequest", "ChatStreamRequestTypedDict", "ChatSuggestion", @@ -1478,6 +2319,8 @@ "ChatTypedDict", "ChatZeroStateSuggestionOptions", "ChatZeroStateSuggestionOptionsTypedDict", + "CheckDatasourceAuthResponse", + "CheckDatasourceAuthResponseTypedDict", "CheckDocumentAccessRequest", "CheckDocumentAccessRequestTypedDict", "CheckDocumentAccessResponse", @@ -1516,14 +2359,16 @@ "ConferenceData", "ConferenceDataSource", "ConferenceDataTypedDict", + "ConfigurationValue", + "ConfigurationValueTypedDict", "ConnectorType", "ContentDefinition", "ContentDefinitionTypedDict", - "ContentInsightsResponse", - "ContentInsightsResponseTypedDict", "ContentType", "CountInfo", "CountInfoTypedDict", + "CreateAgentRequest", + "CreateAgentRequestTypedDict", "CreateAnnouncementRequest", "CreateAnnouncementRequestChannel", "CreateAnnouncementRequestPostType", @@ -1542,8 +2387,18 @@ "CreateShortcutRequestTypedDict", "CreateShortcutResponse", "CreateShortcutResponseTypedDict", + "CreateWorkflowRequest", + "CreateWorkflowRequestTypedDict", + "CreateannouncementRequestRequest", + "CreateannouncementRequestRequestTypedDict", + "CreateanswerRequestRequest", + "CreateanswerRequestRequestTypedDict", + "CreatecollectionRequestRequest", + "CreatecollectionRequestRequestTypedDict", "CreatecollectionResponse", "CreatecollectionResponseTypedDict", + "CreateshortcutRequestRequest", + "CreateshortcutRequestRequestTypedDict", "CurrentActiveUsers", "CurrentActiveUsersTypedDict", "CustomDataValue", @@ -1565,6 +2420,13 @@ "CustomFieldValueStr", "CustomFieldValueStrTypedDict", "CustomFieldValueTypedDict", + "CustomMetadataPropertyDefinition", + "CustomMetadataPropertyDefinitionPropertyType", + "CustomMetadataPropertyDefinitionTypedDict", + "CustomMetadataPutRequest", + "CustomMetadataPutRequestTypedDict", + "CustomMetadataSchema", + "CustomMetadataSchemaTypedDict", "CustomProperty", "CustomPropertyTypedDict", "CustomSensitiveExpression", @@ -1577,12 +2439,21 @@ "CustomerMetadata", "CustomerMetadataTypedDict", "CustomerTypedDict", + "DELETE_REST_API_INDEX_CUSTOM_METADATA_SCHEMA_GROUP_NAME_OP_SERVERS", + "DELETE_REST_API_INDEX_DOCUMENT_DOC_ID_CUSTOM_METADATA_GROUP_NAME_OP_SERVERS", "Datasource", "DatasourceBulkMembershipDefinition", "DatasourceBulkMembershipDefinitionTypedDict", "DatasourceCategory", + "DatasourceConfigurationResponse", + "DatasourceConfigurationResponseTypedDict", + "DatasourceCredentialStatus", + "DatasourceCredentialStatusResponse", + "DatasourceCredentialStatusResponseTypedDict", "DatasourceGroupDefinition", "DatasourceGroupDefinitionTypedDict", + "DatasourceInstanceConfiguration", + "DatasourceInstanceConfigurationTypedDict", "DatasourceMembershipDefinition", "DatasourceMembershipDefinitionTypedDict", "DatasourceObjectTypeDocumentCountEntry", @@ -1601,6 +2472,10 @@ "DebugDatasourceStatusResponseCounts", "DebugDatasourceStatusResponseCountsTypedDict", "DebugDatasourceStatusResponseTypedDict", + "DebugDocumentLifecycleRequest", + "DebugDocumentLifecycleRequestTypedDict", + "DebugDocumentLifecycleResponse", + "DebugDocumentLifecycleResponseTypedDict", "DebugDocumentRequest", "DebugDocumentRequestTypedDict", "DebugDocumentResponse", @@ -1637,6 +2512,10 @@ "DeleteGroupRequestTypedDict", "DeleteMembershipRequest", "DeleteMembershipRequestTypedDict", + "DeleteRestAPIIndexCustomMetadataSchemaGroupNameRequest", + "DeleteRestAPIIndexCustomMetadataSchemaGroupNameRequestTypedDict", + "DeleteRestAPIIndexDocumentDocIDCustomMetadataGroupNameRequest", + "DeleteRestAPIIndexDocumentDocIDCustomMetadataGroupNameRequestTypedDict", "DeleteShortcutRequest", "DeleteShortcutRequestTypedDict", "DeleteTeamRequest", @@ -1645,12 +2524,22 @@ "DeleteUserRequestTypedDict", "DeleteallchatsRequest", "DeleteallchatsRequestTypedDict", + "DeleteannouncementRequestRequest", + "DeleteannouncementRequestRequestTypedDict", + "DeleteanswerRequestRequest", + "DeleteanswerRequestRequestTypedDict", "DeletechatfilesRequestRequest", "DeletechatfilesRequestRequestTypedDict", "DeletechatsRequestRequest", "DeletechatsRequestRequestTypedDict", + "DeletecollectionRequestRequest", + "DeletecollectionRequestRequestTypedDict", + "DeletecollectionitemRequestRequest", + "DeletecollectionitemRequestRequestTypedDict", "DeletefindingsexportRequest", "DeletefindingsexportRequestTypedDict", + "DeleteshortcutRequestRequest", + "DeleteshortcutRequestRequestTypedDict", "Digest", "DigestSection", "DigestSectionTypedDict", @@ -1665,10 +2554,14 @@ "DlpConfig", "DlpConfigTypedDict", "DlpExportFindingsRequest", + "DlpExportFindingsRequestExportType", "DlpExportFindingsRequestTypedDict", "DlpFindingFilter", "DlpFindingFilterTypedDict", "DlpFrequency", + "DlpIssueFilter", + "DlpIssueFilterTypedDict", + "DlpIssueStatus", "DlpPerson", "DlpPersonMetadata", "DlpPersonMetadataTypedDict", @@ -1684,8 +2577,6 @@ "DocumentContentTypedDict", "DocumentDefinition", "DocumentDefinitionTypedDict", - "DocumentInsight", - "DocumentInsightTypedDict", "DocumentInteractions", "DocumentInteractionsDefinition", "DocumentInteractionsDefinitionTypedDict", @@ -1730,6 +2621,8 @@ "DownloadpolicycsvRequestTypedDict", "DownloadreportcsvRequest", "DownloadreportcsvRequestTypedDict", + "EditAgentRequest", + "EditAgentRequestTypedDict", "EditAnswerRequest", "EditAnswerRequestSourceType", "EditAnswerRequestTypedDict", @@ -1744,6 +2637,16 @@ "EditCollectionResponseTypedDict", "EditPinRequest", "EditPinRequestTypedDict", + "EditWorkflowRequest", + "EditWorkflowRequestTypedDict", + "EditanswerRequestRequest", + "EditanswerRequestRequestTypedDict", + "EditcollectionRequestRequest", + "EditcollectionRequestRequestTypedDict", + "EditcollectionitemRequestRequest", + "EditcollectionitemRequestRequestTypedDict", + "EditpinRequestRequest", + "EditpinRequestRequestTypedDict", "EmployeeInfoDefinition", "EmployeeInfoDefinitionTypedDict", "EmployeeTeamInfo", @@ -1756,15 +2659,14 @@ "ErrorMessage", "ErrorMessageTypedDict", "ErrorTypedDict", - "Event", "EventClassification", "EventClassificationName", "EventClassificationTypedDict", "EventStrategyName", "ExportInfo", + "ExportInfoExportType", "ExportInfoStatus", "ExportInfoTypedDict", - "ExportType", "ExternalSharingOptions", "ExternalSharingOptionsTypedDict", "ExternalShortcut", @@ -1793,6 +2695,8 @@ "FeedRequestCategory", "FeedRequestOptions", "FeedRequestOptionsTypedDict", + "FeedRequestRequest", + "FeedRequestRequestTypedDict", "FeedRequestTypedDict", "FeedResponse", "FeedResponseTypedDict", @@ -1804,15 +2708,15 @@ "FeedbackChannel", "FeedbackChatExchange", "FeedbackChatExchangeTypedDict", + "FeedbackEvent", "FeedbackRequest", "FeedbackRequestTypedDict", "FeedbackTypedDict", "FieldScope", - "File", - "FileTypedDict", "FollowupAction", "FollowupActionTypedDict", "Format", + "GET_REST_API_INDEX_CUSTOM_METADATA_SCHEMA_GROUP_NAME_OP_SERVERS", "GeneratedAttachment", "GeneratedAttachmentContent", "GeneratedAttachmentContentTypedDict", @@ -1820,6 +2724,8 @@ "GeneratedQna", "GeneratedQnaStatus", "GeneratedQnaTypedDict", + "GetActionPackAuthStatusRequest", + "GetActionPackAuthStatusRequestTypedDict", "GetAgentRequest", "GetAgentRequestTypedDict", "GetAgentSchemasRequest", @@ -1835,6 +2741,8 @@ "GetChatApplicationRequestTypedDict", "GetChatApplicationResponse", "GetChatApplicationResponseTypedDict", + "GetChatFileRequest", + "GetChatFileRequestTypedDict", "GetChatFilesRequest", "GetChatFilesRequestTypedDict", "GetChatFilesResponse", @@ -1849,6 +2757,10 @@ "GetCollectionResponseTypedDict", "GetDatasourceConfigRequest", "GetDatasourceConfigRequestTypedDict", + "GetDatasourceCredentialStatusRequest", + "GetDatasourceCredentialStatusRequestTypedDict", + "GetDatasourceInstanceConfigurationRequest", + "GetDatasourceInstanceConfigurationRequestTypedDict", "GetDlpReportResponse", "GetDlpReportResponseTypedDict", "GetDocPermissionsRequest", @@ -1874,40 +2786,67 @@ "GetDocumentsRequestTypedDict", "GetDocumentsResponse", "GetDocumentsResponseTypedDict", + "GetPersonPhotoRequest", + "GetPersonPhotoRequestTypedDict", + "GetPersonPhotoResponse", + "GetPersonPhotoResponseResult", + "GetPersonPhotoResponseResultTypedDict", + "GetPersonPhotoResponseTypedDict", "GetPinRequest", "GetPinRequestTypedDict", "GetPinResponse", "GetPinResponseTypedDict", + "GetRestAPIIndexCustomMetadataSchemaGroupNameRequest", + "GetRestAPIIndexCustomMetadataSchemaGroupNameRequestTypedDict", "GetRestAPIV1ToolsListRequest", "GetRestAPIV1ToolsListRequestTypedDict", "GetShortcutRequest", + "GetShortcutRequest1", + "GetShortcutRequest1TypedDict", "GetShortcutRequestTypedDict", - "GetShortcutRequestUnion", - "GetShortcutRequestUnionTypedDict", "GetShortcutResponse", "GetShortcutResponseTypedDict", + "GetToolServerAuthStatusRequest", + "GetToolServerAuthStatusRequestTypedDict", + "GetToolServerToolsRequest", + "GetToolServerToolsRequestTypedDict", "GetUserCountRequest", "GetUserCountRequestTypedDict", "GetUserCountResponse", "GetUserCountResponseTypedDict", + "GetanswerRequestRequest", + "GetanswerRequestRequestTypedDict", "GetchatRequestRequest", "GetchatRequestRequestTypedDict", "GetchatapplicationRequestRequest", "GetchatapplicationRequestRequestTypedDict", "GetchatfilesRequestRequest", "GetchatfilesRequestRequestTypedDict", + "GetcollectionRequestRequest", + "GetcollectionRequestRequestTypedDict", + "GetdocpermissionsRequestRequest", + "GetdocpermissionsRequestRequestTypedDict", + "GetdocumentsRequestRequest", + "GetdocumentsRequestRequestTypedDict", + "GetdocumentsbyfacetsRequestRequest", + "GetdocumentsbyfacetsRequestRequestTypedDict", "GetdocvisibilityRequest", "GetdocvisibilityRequestTypedDict", + "GetpinRequestRequest", + "GetpinRequestRequestTypedDict", "GetpolicyRequest", "GetpolicyRequestTypedDict", "GetreportstatusRequest", "GetreportstatusRequestTypedDict", + "GetshortcutRequestRequest", + "GetshortcutRequestRequestTypedDict", "GleanAssistInsightsResponse", "GleanAssistInsightsResponseTypedDict", "GleanDataError", "GleanDataErrorTypedDict", "GrantPermission", "GrantPermissionTypedDict", + "GrantScope", "GrantType", "GreenlistUsersRequest", "GreenlistUsersRequestTypedDict", @@ -1925,6 +2864,14 @@ "IconType", "Identity", "IdentityTypedDict", + "ImportAgentRequest", + "ImportAgentRequestRequest", + "ImportAgentRequestRequestTypedDict", + "ImportAgentRequestTypedDict", + "ImportAgentResponse", + "ImportAgentResponseTypedDict", + "ImportAgentStatus", + "ImportAgentSyncMode", "IncludeType", "IndexDocumentRequest", "IndexDocumentRequestTypedDict", @@ -1944,15 +2891,13 @@ "IndexUserRequestTypedDict", "IndexingShortcut", "IndexingShortcutTypedDict", + "Input", "InputOptions", "InputOptionsTimePeriodType", "InputOptionsTypedDict", "InputSchema", "InputSchemaTypedDict", - "InsightsAgentsRequestOptions", - "InsightsAgentsRequestOptionsTypedDict", - "InsightsAiAppRequestOptions", - "InsightsAiAppRequestOptionsTypedDict", + "InputTypedDict", "InsightsAssistantRequest", "InsightsAssistantRequestTypedDict", "InsightsChatSummary", @@ -1962,7 +2907,8 @@ "InsightsOverviewResponse", "InsightsOverviewResponseTypedDict", "InsightsRequest", - "InsightsRequestCategory", + "InsightsRequestRequest", + "InsightsRequestRequestTypedDict", "InsightsRequestTypedDict", "InsightsResponse", "InsightsResponseTypedDict", @@ -1978,6 +2924,9 @@ "LabeledCountInfo", "LabeledCountInfoTypedDict", "LastScanStatus", + "LifeCycleEvent", + "LifeCycleEventEvent", + "LifeCycleEventTypedDict", "ListAnswersRequest", "ListAnswersRequestTypedDict", "ListAnswersResponse", @@ -1995,6 +2944,7 @@ "ListEntitiesRequest", "ListEntitiesRequestEntityType", "ListEntitiesRequestIncludeField", + "ListEntitiesRequestRequestType", "ListEntitiesRequestTypedDict", "ListEntitiesResponse", "ListEntitiesResponseTypedDict", @@ -2005,12 +2955,22 @@ "ListShortcutsPaginatedRequestTypedDict", "ListShortcutsPaginatedResponse", "ListShortcutsPaginatedResponseTypedDict", + "ListanswersRequestRequest", + "ListanswersRequestRequestTypedDict", "ListchatsRequest", "ListchatsRequestTypedDict", + "ListcollectionsRequestRequest", + "ListcollectionsRequestRequestTypedDict", + "ListentitiesRequestRequest", + "ListentitiesRequestRequestTypedDict", "ListpinsRequest", + "ListpinsRequestBody", + "ListpinsRequestBodyTypedDict", "ListpinsRequestTypedDict", "ListpoliciesRequest", "ListpoliciesRequestTypedDict", + "ListshortcutsRequest", + "ListshortcutsRequestTypedDict", "ListverificationsRequest", "ListverificationsRequestTypedDict", "ManualFeedbackInfo", @@ -2021,6 +2981,22 @@ "ManualFeedbackSideBySideInfoSource", "ManualFeedbackSideBySideInfoTypedDict", "ManualFeedbackSideBySideInfoVote", + "McpBreakdownInsightsRequest", + "McpBreakdownInsightsRequestTypedDict", + "McpBreakdownInsightsResponse", + "McpBreakdownInsightsResponseTypedDict", + "McpHostApplicationBreakdown", + "McpHostApplicationBreakdownTypedDict", + "McpInsightsRequest", + "McpInsightsRequestTypedDict", + "McpInsightsResponse", + "McpInsightsResponseTypedDict", + "McpServerBreakdown", + "McpServerBreakdownTypedDict", + "McpToolBreakdown", + "McpToolBreakdownTypedDict", + "McpUserBreakdown", + "McpUserBreakdownTypedDict", "Meeting", "MeetingTypedDict", "Message", @@ -2029,10 +3005,13 @@ "MessageType", "MessageTypedDict", "MessagesRequest", + "MessagesRequestRequest", + "MessagesRequestRequestTypedDict", "MessagesRequestTypedDict", "MessagesResponse", "MessagesResponseTypedDict", "Mode", + "Object", "ObjectDefinition", "ObjectDefinitionTypedDict", "ObjectPermissions", @@ -2045,8 +3024,13 @@ "OrderBy", "OutputSchema", "OutputSchemaTypedDict", + "POST_REST_API_INDEX_SUBMISSIONS_DATASOURCE_INSTANCE_TYPE_OP_SERVERS", + "PUT_REST_API_INDEX_CUSTOM_METADATA_SCHEMA_GROUP_NAME_OP_SERVERS", + "PUT_REST_API_INDEX_DOCUMENT_DOC_ID_CUSTOM_METADATA_GROUP_NAME_OP_SERVERS", "PeopleRequest", "PeopleRequestIncludeField", + "PeopleRequestRequest", + "PeopleRequestRequestTypedDict", "PeopleRequestTypedDict", "PeopleResponse", "PeopleResponseTypedDict", @@ -2080,9 +3064,283 @@ "PinDocument", "PinDocumentTypedDict", "PinRequest", + "PinRequestRequest", + "PinRequestRequestTypedDict", "PinRequestTypedDict", + "PlacementReason", + "PlatformActionSummary", + "PlatformActionSummaryTypedDict", + "PlatformAgent", + "PlatformAgentCapabilities", + "PlatformAgentCapabilitiesTypedDict", + "PlatformAgentExecutionStatus", + "PlatformAgentGetResponse", + "PlatformAgentGetResponseTypedDict", + "PlatformAgentRun", + "PlatformAgentRunCreateRequest", + "PlatformAgentRunCreateRequestTypedDict", + "PlatformAgentRunTypedDict", + "PlatformAgentRunWaitResponse", + "PlatformAgentRunWaitResponseTypedDict", + "PlatformAgentSchemasResponse", + "PlatformAgentSchemasResponseTypedDict", + "PlatformAgentTypedDict", + "PlatformAgentsCreateRunRequest", + "PlatformAgentsCreateRunRequestTypedDict", + "PlatformAgentsCreateRunResponse", + "PlatformAgentsCreateRunResponseTypedDict", + "PlatformAgentsGetRequest", + "PlatformAgentsGetRequestTypedDict", + "PlatformAgentsGetSchemasRequest", + "PlatformAgentsGetSchemasRequestTypedDict", + "PlatformAgentsSearchRequest", + "PlatformAgentsSearchRequestTypedDict", + "PlatformAgentsSearchResponse", + "PlatformAgentsSearchResponseTypedDict", + "PlatformAuthenticationSuggestion", + "PlatformAuthenticationSuggestionTypedDict", + "PlatformChatCitationAnnotation", + "PlatformChatCitationAnnotationType", + "PlatformChatCitationAnnotationTypedDict", + "PlatformChatCitationSnippet", + "PlatformChatCitationSnippetTypedDict", + "PlatformChatCitationSource", + "PlatformChatCitationSourceTypedDict", + "PlatformChatCompletedResponse", + "PlatformChatCompletedResponseStatus", + "PlatformChatCompletedResponseTypedDict", + "PlatformChatCreateRequest", + "PlatformChatCreateRequestTypedDict", + "PlatformChatCreateResponse", + "PlatformChatCreateResponseTypedDict", + "PlatformChatCustomEntitySource", + "PlatformChatCustomEntitySourceType", + "PlatformChatCustomEntitySourceTypedDict", + "PlatformChatDocumentSource", + "PlatformChatDocumentSourceDocument1", + "PlatformChatDocumentSourceDocument1TypedDict", + "PlatformChatDocumentSourceDocument2", + "PlatformChatDocumentSourceDocument2TypedDict", + "PlatformChatDocumentSourceType1", + "PlatformChatDocumentSourceType2", + "PlatformChatDocumentSourceTypedDict", + "PlatformChatFileSource", + "PlatformChatFileSourceType", + "PlatformChatFileSourceTypedDict", + "PlatformChatInputMessage", + "PlatformChatInputMessageRole", + "PlatformChatInputMessageTypedDict", + "PlatformChatOutputMessage", + "PlatformChatOutputMessageRole", + "PlatformChatOutputMessageType", + "PlatformChatOutputMessageTypedDict", + "PlatformChatOutputTextContent", + "PlatformChatOutputTextContentType", + "PlatformChatOutputTextContentTypedDict", + "PlatformChatPersonSource", + "PlatformChatPersonSourceType", + "PlatformChatPersonSourceTypedDict", + "PlatformContentScheduleWebhookEvent", + "PlatformContentScheduleWebhookEventTypedDict", + "PlatformContentType", + "PlatformDatasourceFilterInfo", + "PlatformDatasourceFilterInfoTypedDict", + "PlatformDocumentChangeWebhookEvent", + "PlatformDocumentChangeWebhookEventTypedDict", + "PlatformFilter", + "PlatformFilterFieldInfo", + "PlatformFilterFieldInfoTypedDict", + "PlatformFilterOperator", + "PlatformFilterTypedDict", + "PlatformMessage", + "PlatformMessageRole", + "PlatformMessageTextBlock", + "PlatformMessageTextBlockTypedDict", + "PlatformMessageTypedDict", + "PlatformPersonReference", + "PlatformPersonReferenceTypedDict", + "PlatformProblemDetailCode", + "PlatformProblemDetailError", + "PlatformProblemDetailErrorTypedDict", + "PlatformResult", + "PlatformResultTypedDict", + "PlatformSearchFiltersRequest", + "PlatformSearchFiltersRequestTypedDict", + "PlatformSearchFiltersResponse", + "PlatformSearchFiltersResponseResponse", + "PlatformSearchFiltersResponseResponseTypedDict", + "PlatformSearchFiltersResponseTypedDict", + "PlatformSearchRequest", + "PlatformSearchRequestTypedDict", + "PlatformSearchResponse", + "PlatformSearchResponseTypedDict", + "PlatformSkill", + "PlatformSkillCreateRequest", + "PlatformSkillCreateRequestFile", + "PlatformSkillCreateRequestFileTypedDict", + "PlatformSkillCreateRequestTypedDict", + "PlatformSkillCreateResponse", + "PlatformSkillCreateResponseTypedDict", + "PlatformSkillGetResponse", + "PlatformSkillGetResponseTypedDict", + "PlatformSkillImportRequest", + "PlatformSkillImportRequestTypedDict", + "PlatformSkillImportResponse", + "PlatformSkillImportResponseTypedDict", + "PlatformSkillOrigin", + "PlatformSkillSourcePreview", + "PlatformSkillSourcePreviewFailure", + "PlatformSkillSourcePreviewFailureCode", + "PlatformSkillSourcePreviewFailureTypedDict", + "PlatformSkillSourcePreviewFile", + "PlatformSkillSourcePreviewFileTypedDict", + "PlatformSkillSourcePreviewRequest", + "PlatformSkillSourcePreviewRequestTypedDict", + "PlatformSkillSourcePreviewResponse", + "PlatformSkillSourcePreviewResponseTypedDict", + "PlatformSkillSourcePreviewTypedDict", + "PlatformSkillSourceProvenance", + "PlatformSkillSourceProvenanceTypedDict", + "PlatformSkillStatus", + "PlatformSkillSyncResponse", + "PlatformSkillSyncResponseTypedDict", + "PlatformSkillSyncResultStatus", + "PlatformSkillSyncStatus", + "PlatformSkillTypedDict", + "PlatformSkillUpdateRequest", + "PlatformSkillUpdateRequestTypedDict", + "PlatformSkillUpdateResponse", + "PlatformSkillUpdateResponseTypedDict", + "PlatformSkillUpdateStatus", + "PlatformSkillValidationFile", + "PlatformSkillValidationFileTypedDict", + "PlatformSkillValidationMetadata", + "PlatformSkillValidationMetadataTypedDict", + "PlatformSkillValidationRequest", + "PlatformSkillValidationRequestFile", + "PlatformSkillValidationRequestFileTypedDict", + "PlatformSkillValidationRequestTypedDict", + "PlatformSkillValidationResponse", + "PlatformSkillValidationResponseTypedDict", + "PlatformSkillVersion", + "PlatformSkillVersionCreateRequest", + "PlatformSkillVersionCreateRequestFile", + "PlatformSkillVersionCreateRequestFileTypedDict", + "PlatformSkillVersionCreateRequestTypedDict", + "PlatformSkillVersionCreateResponse", + "PlatformSkillVersionCreateResponseTypedDict", + "PlatformSkillVersionGetResponse", + "PlatformSkillVersionGetResponseTypedDict", + "PlatformSkillVersionTypedDict", + "PlatformSkillVersionsListResponse", + "PlatformSkillVersionsListResponseTypedDict", + "PlatformSkillsCreateVersionRequest", + "PlatformSkillsCreateVersionRequestTypedDict", + "PlatformSkillsDeleteRequest", + "PlatformSkillsDeleteRequestTypedDict", + "PlatformSkillsGetContentRequest", + "PlatformSkillsGetContentRequestTypedDict", + "PlatformSkillsGetContentResponse", + "PlatformSkillsGetContentResponseTypedDict", + "PlatformSkillsGetRequest", + "PlatformSkillsGetRequestTypedDict", + "PlatformSkillsGetVersionContentRequest", + "PlatformSkillsGetVersionContentRequestTypedDict", + "PlatformSkillsGetVersionContentResponse", + "PlatformSkillsGetVersionContentResponseTypedDict", + "PlatformSkillsGetVersionRequest", + "PlatformSkillsGetVersionRequestTypedDict", + "PlatformSkillsListRequest", + "PlatformSkillsListRequestTypedDict", + "PlatformSkillsListResponse", + "PlatformSkillsListResponseTypedDict", + "PlatformSkillsListVersionsRequest", + "PlatformSkillsListVersionsRequestTypedDict", + "PlatformSkillsPreviewSourceResponse", + "PlatformSkillsPreviewSourceResponseTypedDict", + "PlatformSkillsSyncRequest", + "PlatformSkillsSyncRequestTypedDict", + "PlatformSkillsUpdateRequest", + "PlatformSkillsUpdateRequestTypedDict", + "PlatformTimeRange", + "PlatformTimeRangeTypedDict", + "PlatformTrigger", + "PlatformTriggerAuth", + "PlatformTriggerAuthOutput", + "PlatformTriggerAuthOutputTypedDict", + "PlatformTriggerAuthType", + "PlatformTriggerAuthTypedDict", + "PlatformTriggerCreateRequest", + "PlatformTriggerCreateRequestTypedDict", + "PlatformTriggerCreateResponse", + "PlatformTriggerCreateResponseTypedDict", + "PlatformTriggerDelivery", + "PlatformTriggerDeliveryOutput", + "PlatformTriggerDeliveryOutputTypedDict", + "PlatformTriggerDeliveryTypedDict", + "PlatformTriggerEvent", + "PlatformTriggerEventReason", + "PlatformTriggerEventSearchRequest", + "PlatformTriggerEventSearchRequestTypedDict", + "PlatformTriggerEventSearchResponse", + "PlatformTriggerEventSearchResponseTypedDict", + "PlatformTriggerEventType", + "PlatformTriggerEventTypedDict", + "PlatformTriggerGetResponse", + "PlatformTriggerGetResponseTypedDict", + "PlatformTriggerListResponse", + "PlatformTriggerListResponseTypedDict", + "PlatformTriggerPreset", + "PlatformTriggerPresetEventSearchRequest", + "PlatformTriggerPresetEventSearchRequestTypedDict", + "PlatformTriggerPresetGetResponse", + "PlatformTriggerPresetGetResponseTypedDict", + "PlatformTriggerPresetInput", + "PlatformTriggerPresetInputType", + "PlatformTriggerPresetInputTypedDict", + "PlatformTriggerPresetInputValue", + "PlatformTriggerPresetInputValueListResponse", + "PlatformTriggerPresetInputValueListResponseTypedDict", + "PlatformTriggerPresetInputValueTypedDict", + "PlatformTriggerPresetListResponse", + "PlatformTriggerPresetListResponseTypedDict", + "PlatformTriggerPresetSummary", + "PlatformTriggerPresetSummaryTypedDict", + "PlatformTriggerPresetTypedDict", + "PlatformTriggerPresetsEventsSearchRequest", + "PlatformTriggerPresetsEventsSearchRequestTypedDict", + "PlatformTriggerPresetsGetRequest", + "PlatformTriggerPresetsGetRequestTypedDict", + "PlatformTriggerPresetsInputValuesListRequest", + "PlatformTriggerPresetsInputValuesListRequestTypedDict", + "PlatformTriggerPresetsListRequest", + "PlatformTriggerPresetsListRequestTypedDict", + "PlatformTriggerStatus", + "PlatformTriggerTypedDict", + "PlatformTriggerUpdateRequest", + "PlatformTriggerUpdateRequestTypedDict", + "PlatformTriggerWebhookEvent", + "PlatformTriggerWebhookEventTypedDict", + "PlatformTriggerWithSecret", + "PlatformTriggerWithSecretTypedDict", + "PlatformTriggersCreateTriggerWebhookEventRequest", + "PlatformTriggersCreateTriggerWebhookEventRequestTypedDict", + "PlatformTriggersDeleteRequest", + "PlatformTriggersDeleteRequestTypedDict", + "PlatformTriggersEventsSearchRequest", + "PlatformTriggersEventsSearchRequestTypedDict", + "PlatformTriggersGetRequest", + "PlatformTriggersGetRequestTypedDict", + "PlatformTriggersListRequest", + "PlatformTriggersListRequestTypedDict", + "PlatformTriggersUpdateRequest", + "PlatformTriggersUpdateRequestTypedDict", + "PlatformWarning", + "PlatformWarningTypedDict", "PossibleValue", "PossibleValueTypedDict", + "PostAPIIndexV1DebugDatasourceDocumentEventsRequest", + "PostAPIIndexV1DebugDatasourceDocumentEventsRequestTypedDict", "PostAPIIndexV1DebugDatasourceDocumentRequest", "PostAPIIndexV1DebugDatasourceDocumentRequestTypedDict", "PostAPIIndexV1DebugDatasourceDocumentsRequest", @@ -2091,6 +3349,10 @@ "PostAPIIndexV1DebugDatasourceStatusRequestTypedDict", "PostAPIIndexV1DebugDatasourceUserRequest", "PostAPIIndexV1DebugDatasourceUserRequestTypedDict", + "PostRestAPIIndexSubmissionsDatasourceInstanceTypeRequest", + "PostRestAPIIndexSubmissionsDatasourceInstanceTypeRequestTypedDict", + "PostRestAPIIndexSubmissionsDatasourceInstanceTypeResponse", + "PostRestAPIIndexSubmissionsDatasourceInstanceTypeResponseTypedDict", "ProcessAllDocumentsRequest", "ProcessAllDocumentsRequestTypedDict", "ProcessAllMembershipsRequest", @@ -2104,15 +3366,15 @@ "PromptTemplateResultTypedDict", "PromptTemplateTypedDict", "PropertyDefinition", + "PropertyDefinitionPropertyType", "PropertyDefinitionTypedDict", "PropertyGroup", "PropertyGroupTypedDict", - "PropertyType", "Provider", - "QueryInsight", - "QueryInsightTypedDict", - "QueryInsightsResponse", - "QueryInsightsResponseTypedDict", + "PutRestAPIIndexCustomMetadataSchemaGroupNameRequest", + "PutRestAPIIndexCustomMetadataSchemaGroupNameRequestTypedDict", + "PutRestAPIIndexDocumentDocIDCustomMetadataGroupNameRequest", + "PutRestAPIIndexDocumentDocIDCustomMetadataGroupNameRequestTypedDict", "QuerySuggestion", "QuerySuggestionList", "QuerySuggestionListTypedDict", @@ -2126,6 +3388,8 @@ "RecommendationsRequest", "RecommendationsRequestOptions", "RecommendationsRequestOptionsTypedDict", + "RecommendationsRequestRequest", + "RecommendationsRequestRequestTypedDict", "RecommendationsRequestTypedDict", "ReferenceRange", "ReferenceRangeTypedDict", @@ -2148,7 +3412,6 @@ "ReportStatusResponse", "ReportStatusResponseStatus", "ReportStatusResponseTypedDict", - "RequestType", "ResponseBody1", "ResponseBody1TypedDict", "ResponseBody2", @@ -2167,7 +3430,10 @@ "ResultsDescriptionTypedDict", "ResultsResponse", "ResultsResponseTypedDict", - "Role", + "RotateDatasourceCredentialsRequest", + "RotateDatasourceCredentialsRequestRequest", + "RotateDatasourceCredentialsRequestRequestTypedDict", + "RotateDatasourceCredentialsRequestTypedDict", "RotateTokenResponse", "RotateTokenResponseTypedDict", "Scope", @@ -2183,6 +3449,8 @@ "SearchRequestInputDetailsTypedDict", "SearchRequestOptions", "SearchRequestOptionsTypedDict", + "SearchRequestRequest", + "SearchRequestRequestTypedDict", "SearchRequestTypedDict", "SearchResponse", "SearchResponseMetadata", @@ -2207,6 +3475,12 @@ "SensitiveInfoType", "SensitiveInfoTypeLikelihoodThreshold", "SensitiveInfoTypeTypedDict", + "ServerToolRequest", + "ServerToolRequestRequestType", + "ServerToolRequestTypedDict", + "ServerToolResponse", + "ServerToolResponseRequestType", + "ServerToolResponseTypedDict", "SessionInfo", "SessionInfoTypedDict", "Share", @@ -2217,10 +3491,6 @@ "ShortcutError", "ShortcutErrorErrorType", "ShortcutErrorTypedDict", - "ShortcutInsight", - "ShortcutInsightTypedDict", - "ShortcutInsightsResponse", - "ShortcutInsightsResponseTypedDict", "ShortcutMutableProperties", "ShortcutMutablePropertiesTypedDict", "ShortcutTypedDict", @@ -2248,7 +3518,11 @@ "StructuredTextMutableProperties", "StructuredTextMutablePropertiesTypedDict", "StructuredTextTypedDict", + "SuccessResponse", + "SuccessResponseTypedDict", "SummarizeRequest", + "SummarizeRequestRequest", + "SummarizeRequestRequestTypedDict", "SummarizeRequestTypedDict", "SummarizeResponse", "SummarizeResponseTypedDict", @@ -2277,7 +3551,14 @@ "TimeRangeFilterTimePeriodType", "TimeRangeFilterTypedDict", "TimeRangeTypedDict", + "TokenEndpointAuthMethod", "Tool", + "ToolAnnotations", + "ToolAnnotationsTypedDict", + "ToolDefinition", + "ToolDefinitionTypedDict", + "ToolDefinitionsResponse", + "ToolDefinitionsResponseTypedDict", "ToolInfo", "ToolInfoTypedDict", "ToolMetadata", @@ -2286,6 +3567,9 @@ "ToolParameter", "ToolParameterType", "ToolParameterTypedDict", + "ToolServerAuthStatus", + "ToolServerAuthStatusResponse", + "ToolServerAuthStatusResponseTypedDict", "ToolSets", "ToolSetsTypedDict", "ToolType", @@ -2302,12 +3586,20 @@ "UIConfigTypedDict", "UIOptions", "UgcType", + "UnauthorizedDatasourceInstance", + "UnauthorizedDatasourceInstanceTypedDict", "Unpin", + "UnpinRequest", + "UnpinRequestTypedDict", "UnpinTypedDict", "UpdateAnnouncementRequest", "UpdateAnnouncementRequestChannel", "UpdateAnnouncementRequestPostType", "UpdateAnnouncementRequestTypedDict", + "UpdateDatasourceConfigurationRequest", + "UpdateDatasourceConfigurationRequestTypedDict", + "UpdateDatasourceInstanceConfigurationRequest", + "UpdateDatasourceInstanceConfigurationRequestTypedDict", "UpdateDlpConfigRequest", "UpdateDlpConfigRequestTypedDict", "UpdateDlpConfigResponse", @@ -2327,9 +3619,15 @@ "UpdateShortcutResponse", "UpdateShortcutResponseTypedDict", "UpdateType", + "UpdateannouncementRequestRequest", + "UpdateannouncementRequestRequestTypedDict", "UpdatepolicyRequest", "UpdatepolicyRequestTypedDict", + "UpdateshortcutRequestRequest", + "UpdateshortcutRequestRequestTypedDict", "UploadChatFilesRequest", + "UploadChatFilesRequestFile", + "UploadChatFilesRequestFileTypedDict", "UploadChatFilesRequestTypedDict", "UploadChatFilesResponse", "UploadChatFilesResponseTypedDict", @@ -2346,8 +3644,6 @@ "UserActivityTypedDict", "UserGeneratedContentID", "UserGeneratedContentIDTypedDict", - "UserInsightsResponse", - "UserInsightsResponseTypedDict", "UserReferenceDefinition", "UserReferenceDefinitionTypedDict", "UserRole", @@ -2368,8 +3664,11 @@ "VerificationTypedDict", "VerifyRequest", "VerifyRequestAction", + "VerifyRequestRequest", + "VerifyRequestRequestTypedDict", "VerifyRequestTypedDict", "ViewerInfo", + "ViewerInfoRole", "ViewerInfoTypedDict", "WarningType", "Workflow", @@ -2388,6 +3687,16 @@ ] _dynamic_imports: dict[str, str] = { + "AccessRequestPermissionDeniedResponseErrorType": ".accessrequestpermissiondeniedresponse_error", + "ActionAuthType": ".actionauthtype", + "ActionPackAuthStatus": ".actionpackauthstatus", + "ActionPackAuthStatusTypedDict": ".actionpackauthstatus", + "ActionPackAuthStatusResponse": ".actionpackauthstatusresponse", + "ActionPackAuthStatusResponseTypedDict": ".actionpackauthstatusresponse", + "ActionPreview": ".actionpreview", + "ActionPreviewTypedDict": ".actionpreview", + "ActionSummary": ".actionsummary", + "ActionSummaryTypedDict": ".actionsummary", "Activity": ".activity", "ActivityTypedDict": ".activity", "ActivityEvent": ".activityevent", @@ -2398,6 +3707,8 @@ "AddCollectionItemsError": ".addcollectionitemserror", "AddCollectionItemsErrorErrorType": ".addcollectionitemserror", "AddCollectionItemsErrorTypedDict": ".addcollectionitemserror", + "AddcollectionitemsRequestRequest": ".addcollectionitemsop", + "AddcollectionitemsRequestRequestTypedDict": ".addcollectionitemsop", "AddCollectionItemsRequest": ".addcollectionitemsrequest", "AddCollectionItemsRequestTypedDict": ".addcollectionitemsrequest", "AddCollectionItemsResponse": ".addcollectionitemsresponse", @@ -2406,6 +3717,10 @@ "AdditionalFieldDefinitionTypedDict": ".additionalfielddefinition", "Value": ".additionalfielddefinition", "ValueTypedDict": ".additionalfielddefinition", + "AddverificationreminderRequest": ".addverificationreminderop", + "AddverificationreminderRequestTypedDict": ".addverificationreminderop", + "AdminsearchRequest": ".adminsearchop", + "AdminsearchRequestTypedDict": ".adminsearchop", "Agent": ".agent", "AgentCapabilities": ".agent", "AgentCapabilitiesTypedDict": ".agent", @@ -2433,16 +3748,14 @@ "AgentsInsightsV2RequestTypedDict": ".agentsinsightsv2request", "AgentsInsightsV2Response": ".agentsinsightsv2response", "AgentsInsightsV2ResponseTypedDict": ".agentsinsightsv2response", + "AgentsTimeSavedInsight": ".agentstimesavedinsight", + "AgentsTimeSavedInsightTypedDict": ".agentstimesavedinsight", "AgentsUsageByDepartmentInsight": ".agentsusagebydepartmentinsight", "AgentsUsageByDepartmentInsightTypedDict": ".agentsusagebydepartmentinsight", + "AgentUseCaseInsight": ".agentusecaseinsight", + "AgentUseCaseInsightTypedDict": ".agentusecaseinsight", "AgentUsersInsight": ".agentusersinsight", "AgentUsersInsightTypedDict": ".agentusersinsight", - "AiAppActionCounts": ".aiappactioncounts", - "AiAppActionCountsTypedDict": ".aiappactioncounts", - "AiAppsInsightsResponse": ".aiappsinsightsresponse", - "AiAppsInsightsResponseTypedDict": ".aiappsinsightsresponse", - "AiInsightsResponse": ".aiinsightsresponse", - "AiInsightsResponseTypedDict": ".aiinsightsresponse", "AllowlistOptions": ".allowlistoptions", "AllowlistOptionsTypedDict": ".allowlistoptions", "Announcement": ".announcement", @@ -2467,9 +3780,28 @@ "AuthConfigStatus": ".authconfig", "AuthConfigType": ".authconfig", "AuthConfigTypedDict": ".authconfig", + "AuthHeaderType": ".authconfig", "GrantType": ".authconfig", + "TokenEndpointAuthMethod": ".authconfig", + "AuthContext": ".authcontext", + "AuthContextTypedDict": ".authcontext", + "AuthorizeActionPackRequestRequest": ".authorizeactionpackop", + "AuthorizeActionPackRequestRequestTypedDict": ".authorizeactionpackop", + "AuthorizeActionPackRequest": ".authorizeactionpackrequest", + "AuthorizeActionPackRequestTypedDict": ".authorizeactionpackrequest", + "AuthorizeActionPackResponse": ".authorizeactionpackresponse", + "AuthorizeActionPackResponseTypedDict": ".authorizeactionpackresponse", + "AuthorizeToolServerRequestRequest": ".authorizetoolserverop", + "AuthorizeToolServerRequestRequestTypedDict": ".authorizetoolserverop", + "AuthorizeToolServerRequest": ".authorizetoolserverrequest", + "AuthorizeToolServerRequestTypedDict": ".authorizetoolserverrequest", + "AuthorizeToolServerResponse": ".authorizetoolserverresponse", + "AuthorizeToolServerResponseTypedDict": ".authorizetoolserverresponse", + "AuthStatus": ".authstatus", "AuthToken": ".authtoken", "AuthTokenTypedDict": ".authtoken", + "AutocompleteRequestRequest": ".autocompleteop", + "AutocompleteRequestRequestTypedDict": ".autocompleteop", "AutocompleteRequest": ".autocompleterequest", "AutocompleteRequestResultType": ".autocompleterequest", "AutocompleteRequestTypedDict": ".autocompleterequest", @@ -2503,6 +3835,7 @@ "CalendarEvent": ".calendarevent", "CalendarEventEventType": ".calendarevent", "CalendarEventTypedDict": ".calendarevent", + "CalendarRoomBookingStatus": ".calendarroombookingstatus", "CanonicalizingRegexType": ".canonicalizingregextype", "CanonicalizingRegexTypeTypedDict": ".canonicalizingregextype", "Chat": ".chat", @@ -2533,12 +3866,16 @@ "ChatRestrictionFiltersTypedDict": ".chatrestrictionfilters", "ChatResult": ".chatresult", "ChatResultTypedDict": ".chatresult", + "ChatSkill": ".chatskill", + "ChatSkillTypedDict": ".chatskill", "ChatStreamRequest": ".chatstreamop", "ChatStreamRequestTypedDict": ".chatstreamop", "ChatSuggestion": ".chatsuggestion", "ChatSuggestionTypedDict": ".chatsuggestion", "ChatZeroStateSuggestionOptions": ".chatzerostatesuggestionoptions", "ChatZeroStateSuggestionOptionsTypedDict": ".chatzerostatesuggestionoptions", + "CheckDatasourceAuthResponse": ".checkdatasourceauthresponse", + "CheckDatasourceAuthResponseTypedDict": ".checkdatasourceauthresponse", "CheckDocumentAccessRequest": ".checkdocumentaccessrequest", "CheckDocumentAccessRequestTypedDict": ".checkdocumentaccessrequest", "CheckDocumentAccessResponse": ".checkdocumentaccessresponse", @@ -2567,22 +3904,30 @@ "ConferenceDataSource": ".conferencedata", "ConferenceDataTypedDict": ".conferencedata", "Provider": ".conferencedata", + "ConfigurationValue": ".configurationvalue", + "ConfigurationValueTypedDict": ".configurationvalue", "ConnectorType": ".connectortype", "ContentDefinition": ".contentdefinition", "ContentDefinitionTypedDict": ".contentdefinition", - "ContentInsightsResponse": ".contentinsightsresponse", - "ContentInsightsResponseTypedDict": ".contentinsightsresponse", "ContentType": ".contenttype", "CountInfo": ".countinfo", "CountInfoTypedDict": ".countinfo", + "CreateAgentRequest": ".createagentop", + "CreateAgentRequestTypedDict": ".createagentop", + "CreateannouncementRequestRequest": ".createannouncementop", + "CreateannouncementRequestRequestTypedDict": ".createannouncementop", "CreateAnnouncementRequest": ".createannouncementrequest", "CreateAnnouncementRequestChannel": ".createannouncementrequest", "CreateAnnouncementRequestPostType": ".createannouncementrequest", "CreateAnnouncementRequestTypedDict": ".createannouncementrequest", + "CreateanswerRequestRequest": ".createanswerop", + "CreateanswerRequestRequestTypedDict": ".createanswerop", "CreateAnswerRequest": ".createanswerrequest", "CreateAnswerRequestTypedDict": ".createanswerrequest", "CreateAuthTokenResponse": ".createauthtokenresponse", "CreateAuthTokenResponseTypedDict": ".createauthtokenresponse", + "CreatecollectionRequestRequest": ".createcollectionop", + "CreatecollectionRequestRequestTypedDict": ".createcollectionop", "CreatecollectionResponse": ".createcollectionop", "CreatecollectionResponseTypedDict": ".createcollectionop", "ResponseBody1": ".createcollectionop", @@ -2595,10 +3940,14 @@ "CreateDlpReportRequestTypedDict": ".createdlpreportrequest", "CreateDlpReportResponse": ".createdlpreportresponse", "CreateDlpReportResponseTypedDict": ".createdlpreportresponse", + "CreateshortcutRequestRequest": ".createshortcutop", + "CreateshortcutRequestRequestTypedDict": ".createshortcutop", "CreateShortcutRequest": ".createshortcutrequest", "CreateShortcutRequestTypedDict": ".createshortcutrequest", "CreateShortcutResponse": ".createshortcutresponse", "CreateShortcutResponseTypedDict": ".createshortcutresponse", + "CreateWorkflowRequest": ".createworkflowrequest", + "CreateWorkflowRequestTypedDict": ".createworkflowrequest", "CurrentActiveUsers": ".currentactiveusers", "CurrentActiveUsersTypedDict": ".currentactiveusers", "CustomDatasourceConfig": ".customdatasourceconfig", @@ -2616,6 +3965,13 @@ "CustomFieldValueHyperlinkTypedDict": ".customfieldvaluehyperlink", "CustomFieldValueStr": ".customfieldvaluestr", "CustomFieldValueStrTypedDict": ".customfieldvaluestr", + "CustomMetadataPropertyDefinition": ".custommetadatapropertydefinition", + "CustomMetadataPropertyDefinitionPropertyType": ".custommetadatapropertydefinition", + "CustomMetadataPropertyDefinitionTypedDict": ".custommetadatapropertydefinition", + "CustomMetadataPutRequest": ".custommetadataputrequest", + "CustomMetadataPutRequestTypedDict": ".custommetadataputrequest", + "CustomMetadataSchema": ".custommetadataschema", + "CustomMetadataSchemaTypedDict": ".custommetadataschema", "CustomProperty": ".customproperty", "CustomPropertyTypedDict": ".customproperty", "CustomSensitiveExpression": ".customsensitiveexpression", @@ -2626,8 +3982,15 @@ "CustomSensitiveRuleType": ".customsensitiveruletype", "DatasourceBulkMembershipDefinition": ".datasourcebulkmembershipdefinition", "DatasourceBulkMembershipDefinitionTypedDict": ".datasourcebulkmembershipdefinition", + "DatasourceConfigurationResponse": ".datasourceconfigurationresponse", + "DatasourceConfigurationResponseTypedDict": ".datasourceconfigurationresponse", + "DatasourceCredentialStatus": ".datasourcecredentialstatus", + "DatasourceCredentialStatusResponse": ".datasourcecredentialstatusresponse", + "DatasourceCredentialStatusResponseTypedDict": ".datasourcecredentialstatusresponse", "DatasourceGroupDefinition": ".datasourcegroupdefinition", "DatasourceGroupDefinitionTypedDict": ".datasourcegroupdefinition", + "DatasourceInstanceConfiguration": ".datasourceinstanceconfiguration", + "DatasourceInstanceConfigurationTypedDict": ".datasourceinstanceconfiguration", "DatasourceMembershipDefinition": ".datasourcemembershipdefinition", "DatasourceMembershipDefinitionTypedDict": ".datasourcemembershipdefinition", "DatasourceObjectTypeDocumentCountEntry": ".datasourceobjecttypedocumentcountentry", @@ -2649,6 +4012,10 @@ "DocumentsTypedDict": ".debugdatasourcestatusresponse", "Identity": ".debugdatasourcestatusresponse", "IdentityTypedDict": ".debugdatasourcestatusresponse", + "DebugDocumentLifecycleRequest": ".debugdocumentlifecyclerequest", + "DebugDocumentLifecycleRequestTypedDict": ".debugdocumentlifecyclerequest", + "DebugDocumentLifecycleResponse": ".debugdocumentlifecycleresponse", + "DebugDocumentLifecycleResponseTypedDict": ".debugdocumentlifecycleresponse", "DebugDocumentRequest": ".debugdocumentrequest", "DebugDocumentRequestTypedDict": ".debugdocumentrequest", "DebugDocumentResponse": ".debugdocumentresponse", @@ -2663,10 +4030,20 @@ "DebugUserRequestTypedDict": ".debuguserrequest", "DebugUserResponse": ".debuguserresponse", "DebugUserResponseTypedDict": ".debuguserresponse", + "DELETE_REST_API_INDEX_CUSTOM_METADATA_SCHEMA_GROUP_NAME_OP_SERVERS": ".delete_rest_api_index_custom_metadata_schema_groupname_op", + "DeleteRestAPIIndexCustomMetadataSchemaGroupNameRequest": ".delete_rest_api_index_custom_metadata_schema_groupname_op", + "DeleteRestAPIIndexCustomMetadataSchemaGroupNameRequestTypedDict": ".delete_rest_api_index_custom_metadata_schema_groupname_op", + "DELETE_REST_API_INDEX_DOCUMENT_DOC_ID_CUSTOM_METADATA_GROUP_NAME_OP_SERVERS": ".delete_rest_api_index_document_docid_custom_metadata_groupname_op", + "DeleteRestAPIIndexDocumentDocIDCustomMetadataGroupNameRequest": ".delete_rest_api_index_document_docid_custom_metadata_groupname_op", + "DeleteRestAPIIndexDocumentDocIDCustomMetadataGroupNameRequestTypedDict": ".delete_rest_api_index_document_docid_custom_metadata_groupname_op", "DeleteallchatsRequest": ".deleteallchatsop", "DeleteallchatsRequestTypedDict": ".deleteallchatsop", + "DeleteannouncementRequestRequest": ".deleteannouncementop", + "DeleteannouncementRequestRequestTypedDict": ".deleteannouncementop", "DeleteAnnouncementRequest": ".deleteannouncementrequest", "DeleteAnnouncementRequestTypedDict": ".deleteannouncementrequest", + "DeleteanswerRequestRequest": ".deleteanswerop", + "DeleteanswerRequestRequestTypedDict": ".deleteanswerop", "DeleteAnswerRequest": ".deleteanswerrequest", "DeleteAnswerRequestTypedDict": ".deleteanswerrequest", "DeletechatfilesRequestRequest": ".deletechatfilesop", @@ -2677,10 +4054,14 @@ "DeletechatsRequestRequestTypedDict": ".deletechatsop", "DeleteChatsRequest": ".deletechatsrequest", "DeleteChatsRequestTypedDict": ".deletechatsrequest", + "DeletecollectionitemRequestRequest": ".deletecollectionitemop", + "DeletecollectionitemRequestRequestTypedDict": ".deletecollectionitemop", "DeleteCollectionItemRequest": ".deletecollectionitemrequest", "DeleteCollectionItemRequestTypedDict": ".deletecollectionitemrequest", "DeleteCollectionItemResponse": ".deletecollectionitemresponse", "DeleteCollectionItemResponseTypedDict": ".deletecollectionitemresponse", + "DeletecollectionRequestRequest": ".deletecollectionop", + "DeletecollectionRequestRequestTypedDict": ".deletecollectionop", "DeleteCollectionRequest": ".deletecollectionrequest", "DeleteCollectionRequestTypedDict": ".deletecollectionrequest", "DeleteDocumentRequest": ".deletedocumentrequest", @@ -2693,6 +4074,8 @@ "DeleteGroupRequestTypedDict": ".deletegrouprequest", "DeleteMembershipRequest": ".deletemembershiprequest", "DeleteMembershipRequestTypedDict": ".deletemembershiprequest", + "DeleteshortcutRequestRequest": ".deleteshortcutop", + "DeleteshortcutRequestRequestTypedDict": ".deleteshortcutop", "DeleteShortcutRequest": ".deleteshortcutrequest", "DeleteShortcutRequestTypedDict": ".deleteshortcutrequest", "DeleteTeamRequest": ".deleteteamrequest", @@ -2712,12 +4095,15 @@ "DlpConfig": ".dlpconfig", "DlpConfigTypedDict": ".dlpconfig", "DlpExportFindingsRequest": ".dlpexportfindingsrequest", + "DlpExportFindingsRequestExportType": ".dlpexportfindingsrequest", "DlpExportFindingsRequestTypedDict": ".dlpexportfindingsrequest", - "ExportType": ".dlpexportfindingsrequest", "FieldScope": ".dlpexportfindingsrequest", "DlpFindingFilter": ".dlpfindingfilter", "DlpFindingFilterTypedDict": ".dlpfindingfilter", "DlpFrequency": ".dlpfrequency", + "DlpIssueFilter": ".dlpissuefilter", + "DlpIssueFilterTypedDict": ".dlpissuefilter", + "DlpIssueStatus": ".dlpissuestatus", "DlpPerson": ".dlpperson", "DlpPersonTypedDict": ".dlpperson", "DlpPersonMetadata": ".dlppersonmetadata", @@ -2732,8 +4118,6 @@ "DocumentContentTypedDict": ".documentcontent", "DocumentDefinition": ".documentdefinition", "DocumentDefinitionTypedDict": ".documentdefinition", - "DocumentInsight": ".documentinsight", - "DocumentInsightTypedDict": ".documentinsight", "DocumentInteractionsDefinition": ".documentinteractionsdefinition", "DocumentInteractionsDefinitionTypedDict": ".documentinteractionsdefinition", "DocumentOrError": ".documentorerror_union", @@ -2771,20 +4155,32 @@ "DownloadpolicycsvRequestTypedDict": ".downloadpolicycsvop", "DownloadreportcsvRequest": ".downloadreportcsvop", "DownloadreportcsvRequestTypedDict": ".downloadreportcsvop", + "EditAgentRequest": ".editagentop", + "EditAgentRequestTypedDict": ".editagentop", + "EditanswerRequestRequest": ".editanswerop", + "EditanswerRequestRequestTypedDict": ".editanswerop", "EditAnswerRequest": ".editanswerrequest", "EditAnswerRequestSourceType": ".editanswerrequest", "EditAnswerRequestTypedDict": ".editanswerrequest", + "EditcollectionitemRequestRequest": ".editcollectionitemop", + "EditcollectionitemRequestRequestTypedDict": ".editcollectionitemop", "EditCollectionItemRequest": ".editcollectionitemrequest", "EditCollectionItemRequestTypedDict": ".editcollectionitemrequest", "EditCollectionItemResponse": ".editcollectionitemresponse", "EditCollectionItemResponseTypedDict": ".editcollectionitemresponse", + "EditcollectionRequestRequest": ".editcollectionop", + "EditcollectionRequestRequestTypedDict": ".editcollectionop", "EditCollectionRequest": ".editcollectionrequest", "EditCollectionRequestTypedDict": ".editcollectionrequest", "EditCollectionResponse": ".editcollectionresponse", "EditCollectionResponseErrorCode": ".editcollectionresponse", "EditCollectionResponseTypedDict": ".editcollectionresponse", + "EditpinRequestRequest": ".editpinop", + "EditpinRequestRequestTypedDict": ".editpinop", "EditPinRequest": ".editpinrequest", "EditPinRequestTypedDict": ".editpinrequest", + "EditWorkflowRequest": ".editworkflowrequest", + "EditWorkflowRequestTypedDict": ".editworkflowrequest", "EmployeeInfoDefinition": ".employeeinfodefinition", "EmployeeInfoDefinitionTypedDict": ".employeeinfodefinition", "EmployeeTeamInfo": ".employeeteaminfo", @@ -2800,6 +4196,7 @@ "EventClassificationName": ".eventclassificationname", "EventStrategyName": ".eventstrategyname", "ExportInfo": ".exportinfo", + "ExportInfoExportType": ".exportinfo", "ExportInfoStatus": ".exportinfo", "ExportInfoTypedDict": ".exportinfo", "ExternalSharingOptions": ".externalsharingoptions", @@ -2823,10 +4220,10 @@ "FacetValueTypedDict": ".facetvalue", "FavoriteInfo": ".favoriteinfo", "FavoriteInfoTypedDict": ".favoriteinfo", - "Event": ".feedback", "Feedback": ".feedback", "FeedbackCategory": ".feedback", "FeedbackChannel": ".feedback", + "FeedbackEvent": ".feedback", "FeedbackTypedDict": ".feedback", "FeedbackChatExchange": ".feedbackchatexchange", "FeedbackChatExchangeTypedDict": ".feedbackchatexchange", @@ -2840,6 +4237,8 @@ "JustificationType": ".feedentry", "UIConfig": ".feedentry", "UIConfigTypedDict": ".feedentry", + "FeedRequestRequest": ".feedop", + "FeedRequestRequestTypedDict": ".feedop", "FeedRequest": ".feedrequest", "FeedRequestCategory": ".feedrequest", "FeedRequestTypedDict": ".feedrequest", @@ -2852,14 +4251,20 @@ "FeedResult": ".feedresult", "FeedResultCategory": ".feedresult", "FeedResultTypedDict": ".feedresult", + "PlacementReason": ".feedresult", "FollowupAction": ".followupaction", "FollowupActionTypedDict": ".followupaction", "GeneratedAttachment": ".generatedattachment", "GeneratedAttachmentTypedDict": ".generatedattachment", "GeneratedAttachmentContent": ".generatedattachmentcontent", "GeneratedAttachmentContentTypedDict": ".generatedattachmentcontent", + "GET_REST_API_INDEX_CUSTOM_METADATA_SCHEMA_GROUP_NAME_OP_SERVERS": ".get_rest_api_index_custom_metadata_schema_groupname_op", + "GetRestAPIIndexCustomMetadataSchemaGroupNameRequest": ".get_rest_api_index_custom_metadata_schema_groupname_op", + "GetRestAPIIndexCustomMetadataSchemaGroupNameRequestTypedDict": ".get_rest_api_index_custom_metadata_schema_groupname_op", "GetRestAPIV1ToolsListRequest": ".get_rest_api_v1_tools_listop", "GetRestAPIV1ToolsListRequestTypedDict": ".get_rest_api_v1_tools_listop", + "GetActionPackAuthStatusRequest": ".getactionpackauthstatusop", + "GetActionPackAuthStatusRequestTypedDict": ".getactionpackauthstatusop", "GetAgentRequest": ".getagentop", "GetAgentRequestTypedDict": ".getagentop", "GetAgentSchemasRequest": ".getagentschemasop", @@ -2867,6 +4272,8 @@ "GetAnswerError": ".getanswererror", "GetAnswerErrorErrorType": ".getanswererror", "GetAnswerErrorTypedDict": ".getanswererror", + "GetanswerRequestRequest": ".getanswerop", + "GetanswerRequestRequestTypedDict": ".getanswerop", "GetAnswerRequest": ".getanswerrequest", "GetAnswerRequestTypedDict": ".getanswerrequest", "GetAnswerResponse": ".getanswerresponse", @@ -2877,6 +4284,8 @@ "GetChatApplicationRequestTypedDict": ".getchatapplicationrequest", "GetChatApplicationResponse": ".getchatapplicationresponse", "GetChatApplicationResponseTypedDict": ".getchatapplicationresponse", + "GetChatFileRequest": ".getchatfileop", + "GetChatFileRequestTypedDict": ".getchatfileop", "GetchatfilesRequestRequest": ".getchatfilesop", "GetchatfilesRequestRequestTypedDict": ".getchatfilesop", "GetChatFilesRequest": ".getchatfilesrequest", @@ -2889,14 +4298,22 @@ "GetChatRequestTypedDict": ".getchatrequest", "GetChatResponse": ".getchatresponse", "GetChatResponseTypedDict": ".getchatresponse", + "GetcollectionRequestRequest": ".getcollectionop", + "GetcollectionRequestRequestTypedDict": ".getcollectionop", "GetCollectionRequest": ".getcollectionrequest", "GetCollectionRequestTypedDict": ".getcollectionrequest", "GetCollectionResponse": ".getcollectionresponse", "GetCollectionResponseTypedDict": ".getcollectionresponse", "GetDatasourceConfigRequest": ".getdatasourceconfigrequest", "GetDatasourceConfigRequestTypedDict": ".getdatasourceconfigrequest", + "GetDatasourceCredentialStatusRequest": ".getdatasourcecredentialstatusop", + "GetDatasourceCredentialStatusRequestTypedDict": ".getdatasourcecredentialstatusop", + "GetDatasourceInstanceConfigurationRequest": ".getdatasourceinstanceconfigurationop", + "GetDatasourceInstanceConfigurationRequestTypedDict": ".getdatasourceinstanceconfigurationop", "GetDlpReportResponse": ".getdlpreportresponse", "GetDlpReportResponseTypedDict": ".getdlpreportresponse", + "GetdocpermissionsRequestRequest": ".getdocpermissionsop", + "GetdocpermissionsRequestRequestTypedDict": ".getdocpermissionsop", "GetDocPermissionsRequest": ".getdocpermissionsrequest", "GetDocPermissionsRequestTypedDict": ".getdocpermissionsrequest", "GetDocPermissionsResponse": ".getdocpermissionsresponse", @@ -2905,10 +4322,14 @@ "GetDocumentCountRequestTypedDict": ".getdocumentcountrequest", "GetDocumentCountResponse": ".getdocumentcountresponse", "GetDocumentCountResponseTypedDict": ".getdocumentcountresponse", + "GetdocumentsbyfacetsRequestRequest": ".getdocumentsbyfacetsop", + "GetdocumentsbyfacetsRequestRequestTypedDict": ".getdocumentsbyfacetsop", "GetDocumentsByFacetsRequest": ".getdocumentsbyfacetsrequest", "GetDocumentsByFacetsRequestTypedDict": ".getdocumentsbyfacetsrequest", "GetDocumentsByFacetsResponse": ".getdocumentsbyfacetsresponse", "GetDocumentsByFacetsResponseTypedDict": ".getdocumentsbyfacetsresponse", + "GetdocumentsRequestRequest": ".getdocumentsop", + "GetdocumentsRequestRequestTypedDict": ".getdocumentsop", "GetDocumentsRequest": ".getdocumentsrequest", "GetDocumentsRequestIncludeField": ".getdocumentsrequest", "GetDocumentsRequestTypedDict": ".getdocumentsrequest", @@ -2922,6 +4343,14 @@ "GetDocumentVisibilityOverridesResponseTypedDict": ".getdocumentvisibilityoverridesresponse", "GetdocvisibilityRequest": ".getdocvisibilityop", "GetdocvisibilityRequestTypedDict": ".getdocvisibilityop", + "GetPersonPhotoRequest": ".getpersonphotoop", + "GetPersonPhotoRequestTypedDict": ".getpersonphotoop", + "GetPersonPhotoResponse": ".getpersonphotoop", + "GetPersonPhotoResponseResult": ".getpersonphotoop", + "GetPersonPhotoResponseResultTypedDict": ".getpersonphotoop", + "GetPersonPhotoResponseTypedDict": ".getpersonphotoop", + "GetpinRequestRequest": ".getpinop", + "GetpinRequestRequestTypedDict": ".getpinop", "GetPinRequest": ".getpinrequest", "GetPinRequestTypedDict": ".getpinrequest", "GetPinResponse": ".getpinresponse", @@ -2930,12 +4359,18 @@ "GetpolicyRequestTypedDict": ".getpolicyop", "GetreportstatusRequest": ".getreportstatusop", "GetreportstatusRequestTypedDict": ".getreportstatusop", - "GetShortcutRequest": ".getshortcutrequest_union", - "GetShortcutRequestTypedDict": ".getshortcutrequest_union", - "GetShortcutRequestUnion": ".getshortcutrequest_union", - "GetShortcutRequestUnionTypedDict": ".getshortcutrequest_union", + "GetshortcutRequestRequest": ".getshortcutop", + "GetshortcutRequestRequestTypedDict": ".getshortcutop", + "GetShortcutRequest": ".getshortcutrequest", + "GetShortcutRequest1": ".getshortcutrequest", + "GetShortcutRequest1TypedDict": ".getshortcutrequest", + "GetShortcutRequestTypedDict": ".getshortcutrequest", "GetShortcutResponse": ".getshortcutresponse", "GetShortcutResponseTypedDict": ".getshortcutresponse", + "GetToolServerAuthStatusRequest": ".gettoolserverauthstatusop", + "GetToolServerAuthStatusRequestTypedDict": ".gettoolserverauthstatusop", + "GetToolServerToolsRequest": ".gettoolservertoolsop", + "GetToolServerToolsRequestTypedDict": ".gettoolservertoolsop", "GetUserCountRequest": ".getusercountrequest", "GetUserCountRequestTypedDict": ".getusercountrequest", "GetUserCountResponse": ".getusercountresponse", @@ -2958,6 +4393,16 @@ "IconConfig": ".iconconfig", "IconConfigTypedDict": ".iconconfig", "IconType": ".iconconfig", + "ImportAgentRequestRequest": ".importagentop", + "ImportAgentRequestRequestTypedDict": ".importagentop", + "Bundle": ".importagentrequest", + "BundleTypedDict": ".importagentrequest", + "ImportAgentRequest": ".importagentrequest", + "ImportAgentRequestTypedDict": ".importagentrequest", + "ImportAgentResponse": ".importagentresponse", + "ImportAgentResponseTypedDict": ".importagentresponse", + "ImportAgentStatus": ".importagentstatus", + "ImportAgentSyncMode": ".importagentsyncmode", "IndexDocumentRequest": ".indexdocumentrequest", "IndexDocumentRequestTypedDict": ".indexdocumentrequest", "IndexDocumentsRequest": ".indexdocumentsrequest", @@ -2980,21 +4425,17 @@ "InputOptions": ".inputoptions", "InputOptionsTimePeriodType": ".inputoptions", "InputOptionsTypedDict": ".inputoptions", - "InsightsAgentsRequestOptions": ".insightsagentsrequestoptions", - "InsightsAgentsRequestOptionsTypedDict": ".insightsagentsrequestoptions", - "InsightsAiAppRequestOptions": ".insightsaiapprequestoptions", - "InsightsAiAppRequestOptionsTypedDict": ".insightsaiapprequestoptions", "InsightsAssistantRequest": ".insightsassistantrequest", "InsightsAssistantRequestTypedDict": ".insightsassistantrequest", "InsightsChatSummary": ".insightschatsummary", "InsightsChatSummaryTypedDict": ".insightschatsummary", + "InsightsRequestRequest": ".insightsop", + "InsightsRequestRequestTypedDict": ".insightsop", "InsightsOverviewRequest": ".insightsoverviewrequest", "InsightsOverviewRequestTypedDict": ".insightsoverviewrequest", "InsightsOverviewResponse": ".insightsoverviewresponse", "InsightsOverviewResponseTypedDict": ".insightsoverviewresponse", - "AssistantActivityType": ".insightsrequest", "InsightsRequest": ".insightsrequest", - "InsightsRequestCategory": ".insightsrequest", "InsightsRequestTypedDict": ".insightsrequest", "InsightsResponse": ".insightsresponse", "InsightsResponseTypedDict": ".insightsresponse", @@ -3004,6 +4445,11 @@ "InvalidOperatorValueErrorTypedDict": ".invalidoperatorvalueerror", "LabeledCountInfo": ".labeledcountinfo", "LabeledCountInfoTypedDict": ".labeledcountinfo", + "LifeCycleEvent": ".lifecycleevent", + "LifeCycleEventEvent": ".lifecycleevent", + "LifeCycleEventTypedDict": ".lifecycleevent", + "ListanswersRequestRequest": ".listanswersop", + "ListanswersRequestRequestTypedDict": ".listanswersop", "ListAnswersRequest": ".listanswersrequest", "ListAnswersRequestTypedDict": ".listanswersrequest", "ListAnswersResponse": ".listanswersresponse", @@ -3012,6 +4458,8 @@ "ListchatsRequestTypedDict": ".listchatsop", "ListChatsResponse": ".listchatsresponse", "ListChatsResponseTypedDict": ".listchatsresponse", + "ListcollectionsRequestRequest": ".listcollectionsop", + "ListcollectionsRequestRequestTypedDict": ".listcollectionsop", "ListCollectionsRequest": ".listcollectionsrequest", "ListCollectionsRequestTypedDict": ".listcollectionsrequest", "ListCollectionsResponse": ".listcollectionsresponse", @@ -3020,19 +4468,25 @@ "ListDlpFindingsExportsResponseTypedDict": ".listdlpfindingsexportsresponse", "ListDlpReportsResponse": ".listdlpreportsresponse", "ListDlpReportsResponseTypedDict": ".listdlpreportsresponse", + "ListentitiesRequestRequest": ".listentitiesop", + "ListentitiesRequestRequestTypedDict": ".listentitiesop", "ListEntitiesRequest": ".listentitiesrequest", "ListEntitiesRequestEntityType": ".listentitiesrequest", "ListEntitiesRequestIncludeField": ".listentitiesrequest", + "ListEntitiesRequestRequestType": ".listentitiesrequest", "ListEntitiesRequestTypedDict": ".listentitiesrequest", - "RequestType": ".listentitiesrequest", "ListEntitiesResponse": ".listentitiesresponse", "ListEntitiesResponseTypedDict": ".listentitiesresponse", "ListpinsRequest": ".listpinsop", + "ListpinsRequestBody": ".listpinsop", + "ListpinsRequestBodyTypedDict": ".listpinsop", "ListpinsRequestTypedDict": ".listpinsop", "ListPinsResponse": ".listpinsresponse", "ListPinsResponseTypedDict": ".listpinsresponse", "ListpoliciesRequest": ".listpoliciesop", "ListpoliciesRequestTypedDict": ".listpoliciesop", + "ListshortcutsRequest": ".listshortcutsop", + "ListshortcutsRequestTypedDict": ".listshortcutsop", "ListShortcutsPaginatedRequest": ".listshortcutspaginatedrequest", "ListShortcutsPaginatedRequestIncludeField": ".listshortcutspaginatedrequest", "ListShortcutsPaginatedRequestTypedDict": ".listshortcutspaginatedrequest", @@ -3049,10 +4503,29 @@ "ManualFeedbackSideBySideInfoSource": ".manualfeedbacksidebysideinfo", "ManualFeedbackSideBySideInfoTypedDict": ".manualfeedbacksidebysideinfo", "ManualFeedbackSideBySideInfoVote": ".manualfeedbacksidebysideinfo", + "BreakdownType": ".mcpbreakdowninsightsrequest", + "McpBreakdownInsightsRequest": ".mcpbreakdowninsightsrequest", + "McpBreakdownInsightsRequestTypedDict": ".mcpbreakdowninsightsrequest", + "McpBreakdownInsightsResponse": ".mcpbreakdowninsightsresponse", + "McpBreakdownInsightsResponseTypedDict": ".mcpbreakdowninsightsresponse", + "McpHostApplicationBreakdown": ".mcphostapplicationbreakdown", + "McpHostApplicationBreakdownTypedDict": ".mcphostapplicationbreakdown", + "McpInsightsRequest": ".mcpinsightsrequest", + "McpInsightsRequestTypedDict": ".mcpinsightsrequest", + "McpInsightsResponse": ".mcpinsightsresponse", + "McpInsightsResponseTypedDict": ".mcpinsightsresponse", + "McpServerBreakdown": ".mcpserverbreakdown", + "McpServerBreakdownTypedDict": ".mcpserverbreakdown", + "McpToolBreakdown": ".mcptoolbreakdown", + "McpToolBreakdownTypedDict": ".mcptoolbreakdown", + "McpUserBreakdown": ".mcpuserbreakdown", + "McpUserBreakdownTypedDict": ".mcpuserbreakdown", "Message": ".message", "MessageTextBlock": ".message", "MessageTextBlockTypedDict": ".message", "MessageTypedDict": ".message", + "MessagesRequestRequest": ".messagesop", + "MessagesRequestRequestTypedDict": ".messagesop", "Datasource": ".messagesrequest", "Direction": ".messagesrequest", "IDType": ".messagesrequest", @@ -3070,6 +4543,8 @@ "OperatorType": ".operatormetadata", "OperatorScope": ".operatorscope", "OperatorScopeTypedDict": ".operatorscope", + "PeopleRequestRequest": ".peopleop", + "PeopleRequestRequestTypedDict": ".peopleop", "IncludeType": ".peoplerequest", "PeopleRequest": ".peoplerequest", "PeopleRequestIncludeField": ".peoplerequest", @@ -3095,10 +4570,286 @@ "PerUserAssistantInsightTypedDict": ".peruserassistantinsight", "PerUserInsight": ".peruserinsight", "PerUserInsightTypedDict": ".peruserinsight", + "PinRequestRequest": ".pinop", + "PinRequestRequestTypedDict": ".pinop", "PinRequest": ".pinrequest", "PinRequestTypedDict": ".pinrequest", + "PlatformAgentsCreateRunRequest": ".platform_agents_create_runop", + "PlatformAgentsCreateRunRequestTypedDict": ".platform_agents_create_runop", + "PlatformAgentsCreateRunResponse": ".platform_agents_create_runop", + "PlatformAgentsCreateRunResponseTypedDict": ".platform_agents_create_runop", + "PlatformAgentsGetSchemasRequest": ".platform_agents_get_schemasop", + "PlatformAgentsGetSchemasRequestTypedDict": ".platform_agents_get_schemasop", + "PlatformAgentsGetRequest": ".platform_agents_getop", + "PlatformAgentsGetRequestTypedDict": ".platform_agents_getop", + "PlatformChatCreateResponse": ".platform_chat_createop", + "PlatformChatCreateResponseTypedDict": ".platform_chat_createop", + "PlatformSearchFiltersRequest": ".platform_search_filtersop", + "PlatformSearchFiltersRequestTypedDict": ".platform_search_filtersop", + "PlatformSearchFiltersResponseResponse": ".platform_search_filtersop", + "PlatformSearchFiltersResponseResponseTypedDict": ".platform_search_filtersop", + "PlatformSkillsCreateVersionRequest": ".platform_skills_create_versionop", + "PlatformSkillsCreateVersionRequestTypedDict": ".platform_skills_create_versionop", + "PlatformSkillsDeleteRequest": ".platform_skills_deleteop", + "PlatformSkillsDeleteRequestTypedDict": ".platform_skills_deleteop", + "PlatformSkillsGetContentRequest": ".platform_skills_get_contentop", + "PlatformSkillsGetContentRequestTypedDict": ".platform_skills_get_contentop", + "PlatformSkillsGetContentResponse": ".platform_skills_get_contentop", + "PlatformSkillsGetContentResponseTypedDict": ".platform_skills_get_contentop", + "PlatformSkillsGetVersionContentRequest": ".platform_skills_get_version_contentop", + "PlatformSkillsGetVersionContentRequestTypedDict": ".platform_skills_get_version_contentop", + "PlatformSkillsGetVersionContentResponse": ".platform_skills_get_version_contentop", + "PlatformSkillsGetVersionContentResponseTypedDict": ".platform_skills_get_version_contentop", + "PlatformSkillsGetVersionRequest": ".platform_skills_get_versionop", + "PlatformSkillsGetVersionRequestTypedDict": ".platform_skills_get_versionop", + "PlatformSkillsGetRequest": ".platform_skills_getop", + "PlatformSkillsGetRequestTypedDict": ".platform_skills_getop", + "PlatformSkillsListVersionsRequest": ".platform_skills_list_versionsop", + "PlatformSkillsListVersionsRequestTypedDict": ".platform_skills_list_versionsop", + "PlatformSkillsListRequest": ".platform_skills_listop", + "PlatformSkillsListRequestTypedDict": ".platform_skills_listop", + "PlatformSkillsPreviewSourceResponse": ".platform_skills_preview_sourceop", + "PlatformSkillsPreviewSourceResponseTypedDict": ".platform_skills_preview_sourceop", + "PlatformSkillsSyncRequest": ".platform_skills_syncop", + "PlatformSkillsSyncRequestTypedDict": ".platform_skills_syncop", + "PlatformSkillsUpdateRequest": ".platform_skills_updateop", + "PlatformSkillsUpdateRequestTypedDict": ".platform_skills_updateop", + "PlatformTriggerPresetsEventsSearchRequest": ".platform_trigger_presets_events_searchop", + "PlatformTriggerPresetsEventsSearchRequestTypedDict": ".platform_trigger_presets_events_searchop", + "PlatformTriggerPresetsGetRequest": ".platform_trigger_presets_getop", + "PlatformTriggerPresetsGetRequestTypedDict": ".platform_trigger_presets_getop", + "PlatformTriggerPresetsInputValuesListRequest": ".platform_trigger_presets_input_values_listop", + "PlatformTriggerPresetsInputValuesListRequestTypedDict": ".platform_trigger_presets_input_values_listop", + "PlatformTriggerPresetsListRequest": ".platform_trigger_presets_listop", + "PlatformTriggerPresetsListRequestTypedDict": ".platform_trigger_presets_listop", + "PlatformTriggersCreateTriggerWebhookEventRequest": ".platform_triggers_createop", + "PlatformTriggersCreateTriggerWebhookEventRequestTypedDict": ".platform_triggers_createop", + "PlatformTriggersDeleteRequest": ".platform_triggers_deleteop", + "PlatformTriggersDeleteRequestTypedDict": ".platform_triggers_deleteop", + "PlatformTriggersEventsSearchRequest": ".platform_triggers_events_searchop", + "PlatformTriggersEventsSearchRequestTypedDict": ".platform_triggers_events_searchop", + "PlatformTriggersGetRequest": ".platform_triggers_getop", + "PlatformTriggersGetRequestTypedDict": ".platform_triggers_getop", + "PlatformTriggersListRequest": ".platform_triggers_listop", + "PlatformTriggersListRequestTypedDict": ".platform_triggers_listop", + "PlatformTriggersUpdateRequest": ".platform_triggers_updateop", + "PlatformTriggersUpdateRequestTypedDict": ".platform_triggers_updateop", + "PlatformActionSummary": ".platformactionsummary", + "PlatformActionSummaryTypedDict": ".platformactionsummary", + "PlatformAgent": ".platformagent", + "PlatformAgentTypedDict": ".platformagent", + "PlatformAgentCapabilities": ".platformagentcapabilities", + "PlatformAgentCapabilitiesTypedDict": ".platformagentcapabilities", + "PlatformAgentExecutionStatus": ".platformagentexecutionstatus", + "PlatformAgentGetResponse": ".platformagentgetresponse", + "PlatformAgentGetResponseTypedDict": ".platformagentgetresponse", + "PlatformAgentRun": ".platformagentrun", + "PlatformAgentRunTypedDict": ".platformagentrun", + "PlatformAgentRunCreateRequest": ".platformagentruncreaterequest", + "PlatformAgentRunCreateRequestTypedDict": ".platformagentruncreaterequest", + "PlatformAgentRunWaitResponse": ".platformagentrunwaitresponse", + "PlatformAgentRunWaitResponseTypedDict": ".platformagentrunwaitresponse", + "PlatformAgentSchemasResponse": ".platformagentschemasresponse", + "PlatformAgentSchemasResponseTypedDict": ".platformagentschemasresponse", + "PlatformAgentsSearchRequest": ".platformagentssearchrequest", + "PlatformAgentsSearchRequestTypedDict": ".platformagentssearchrequest", + "PlatformAgentsSearchResponse": ".platformagentssearchresponse", + "PlatformAgentsSearchResponseTypedDict": ".platformagentssearchresponse", + "PlatformAuthenticationSuggestion": ".platformauthenticationsuggestion", + "PlatformAuthenticationSuggestionTypedDict": ".platformauthenticationsuggestion", + "PlatformChatCitationAnnotation": ".platformchatcitationannotation", + "PlatformChatCitationAnnotationType": ".platformchatcitationannotation", + "PlatformChatCitationAnnotationTypedDict": ".platformchatcitationannotation", + "PlatformChatCitationSnippet": ".platformchatcitationsnippet", + "PlatformChatCitationSnippetTypedDict": ".platformchatcitationsnippet", + "PlatformChatCitationSource": ".platformchatcitationsource", + "PlatformChatCitationSourceTypedDict": ".platformchatcitationsource", + "Object": ".platformchatcompletedresponse", + "PlatformChatCompletedResponse": ".platformchatcompletedresponse", + "PlatformChatCompletedResponseStatus": ".platformchatcompletedresponse", + "PlatformChatCompletedResponseTypedDict": ".platformchatcompletedresponse", + "Input": ".platformchatcreaterequest", + "InputTypedDict": ".platformchatcreaterequest", + "PlatformChatCreateRequest": ".platformchatcreaterequest", + "PlatformChatCreateRequestTypedDict": ".platformchatcreaterequest", + "PlatformChatCustomEntitySource": ".platformchatcustomentitysource", + "PlatformChatCustomEntitySourceType": ".platformchatcustomentitysource", + "PlatformChatCustomEntitySourceTypedDict": ".platformchatcustomentitysource", + "PlatformChatDocumentSource": ".platformchatdocumentsource", + "PlatformChatDocumentSourceDocument1": ".platformchatdocumentsource", + "PlatformChatDocumentSourceDocument1TypedDict": ".platformchatdocumentsource", + "PlatformChatDocumentSourceDocument2": ".platformchatdocumentsource", + "PlatformChatDocumentSourceDocument2TypedDict": ".platformchatdocumentsource", + "PlatformChatDocumentSourceType1": ".platformchatdocumentsource", + "PlatformChatDocumentSourceType2": ".platformchatdocumentsource", + "PlatformChatDocumentSourceTypedDict": ".platformchatdocumentsource", + "PlatformChatFileSource": ".platformchatfilesource", + "PlatformChatFileSourceType": ".platformchatfilesource", + "PlatformChatFileSourceTypedDict": ".platformchatfilesource", + "PlatformChatInputMessage": ".platformchatinputmessage", + "PlatformChatInputMessageRole": ".platformchatinputmessage", + "PlatformChatInputMessageTypedDict": ".platformchatinputmessage", + "PlatformChatOutputMessage": ".platformchatoutputmessage", + "PlatformChatOutputMessageRole": ".platformchatoutputmessage", + "PlatformChatOutputMessageType": ".platformchatoutputmessage", + "PlatformChatOutputMessageTypedDict": ".platformchatoutputmessage", + "PlatformChatOutputTextContent": ".platformchatoutputtextcontent", + "PlatformChatOutputTextContentType": ".platformchatoutputtextcontent", + "PlatformChatOutputTextContentTypedDict": ".platformchatoutputtextcontent", + "PlatformChatPersonSource": ".platformchatpersonsource", + "PlatformChatPersonSourceType": ".platformchatpersonsource", + "PlatformChatPersonSourceTypedDict": ".platformchatpersonsource", + "PlatformContentScheduleWebhookEvent": ".platformcontentschedulewebhookevent", + "PlatformContentScheduleWebhookEventTypedDict": ".platformcontentschedulewebhookevent", + "PlatformContentType": ".platformcontenttype", + "PlatformDatasourceFilterInfo": ".platformdatasourcefilterinfo", + "PlatformDatasourceFilterInfoTypedDict": ".platformdatasourcefilterinfo", + "PlatformDocumentChangeWebhookEvent": ".platformdocumentchangewebhookevent", + "PlatformDocumentChangeWebhookEventTypedDict": ".platformdocumentchangewebhookevent", + "PlatformFilter": ".platformfilter", + "PlatformFilterTypedDict": ".platformfilter", + "PlatformFilterFieldInfo": ".platformfilterfieldinfo", + "PlatformFilterFieldInfoTypedDict": ".platformfilterfieldinfo", + "PlatformFilterOperator": ".platformfilteroperator", + "PlatformMessage": ".platformmessage", + "PlatformMessageTypedDict": ".platformmessage", + "PlatformMessageRole": ".platformmessagerole", + "PlatformMessageTextBlock": ".platformmessagetextblock", + "PlatformMessageTextBlockTypedDict": ".platformmessagetextblock", + "PlatformPersonReference": ".platformpersonreference", + "PlatformPersonReferenceTypedDict": ".platformpersonreference", + "PlatformProblemDetailCode": ".platformproblemdetailcode", + "PlatformProblemDetailError": ".platformproblemdetailerror", + "PlatformProblemDetailErrorTypedDict": ".platformproblemdetailerror", + "PlatformResult": ".platformresult", + "PlatformResultTypedDict": ".platformresult", + "PlatformSearchFiltersResponse": ".platformsearchfiltersresponse", + "PlatformSearchFiltersResponseTypedDict": ".platformsearchfiltersresponse", + "PlatformSearchRequest": ".platformsearchrequest", + "PlatformSearchRequestTypedDict": ".platformsearchrequest", + "PlatformSearchResponse": ".platformsearchresponse", + "PlatformSearchResponseTypedDict": ".platformsearchresponse", + "PlatformSkill": ".platformskill", + "PlatformSkillTypedDict": ".platformskill", + "PlatformSkillCreateRequest": ".platformskillcreaterequest", + "PlatformSkillCreateRequestFile": ".platformskillcreaterequest", + "PlatformSkillCreateRequestFileTypedDict": ".platformskillcreaterequest", + "PlatformSkillCreateRequestTypedDict": ".platformskillcreaterequest", + "PlatformSkillCreateResponse": ".platformskillcreateresponse", + "PlatformSkillCreateResponseTypedDict": ".platformskillcreateresponse", + "PlatformSkillGetResponse": ".platformskillgetresponse", + "PlatformSkillGetResponseTypedDict": ".platformskillgetresponse", + "PlatformSkillImportRequest": ".platformskillimportrequest", + "PlatformSkillImportRequestTypedDict": ".platformskillimportrequest", + "PlatformSkillImportResponse": ".platformskillimportresponse", + "PlatformSkillImportResponseTypedDict": ".platformskillimportresponse", + "PlatformSkillOrigin": ".platformskillorigin", + "PlatformSkillsListResponse": ".platformskillslistresponse", + "PlatformSkillsListResponseTypedDict": ".platformskillslistresponse", + "PlatformSkillSourcePreview": ".platformskillsourcepreview", + "PlatformSkillSourcePreviewTypedDict": ".platformskillsourcepreview", + "PlatformSkillSourcePreviewFailure": ".platformskillsourcepreviewfailure", + "PlatformSkillSourcePreviewFailureTypedDict": ".platformskillsourcepreviewfailure", + "PlatformSkillSourcePreviewFailureCode": ".platformskillsourcepreviewfailurecode", + "PlatformSkillSourcePreviewFile": ".platformskillsourcepreviewfile", + "PlatformSkillSourcePreviewFileTypedDict": ".platformskillsourcepreviewfile", + "PlatformSkillSourcePreviewRequest": ".platformskillsourcepreviewrequest", + "PlatformSkillSourcePreviewRequestTypedDict": ".platformskillsourcepreviewrequest", + "PlatformSkillSourcePreviewResponse": ".platformskillsourcepreviewresponse", + "PlatformSkillSourcePreviewResponseTypedDict": ".platformskillsourcepreviewresponse", + "PlatformSkillSourceProvenance": ".platformskillsourceprovenance", + "PlatformSkillSourceProvenanceTypedDict": ".platformskillsourceprovenance", + "PlatformSkillStatus": ".platformskillstatus", + "PlatformSkillSyncResponse": ".platformskillsyncresponse", + "PlatformSkillSyncResponseTypedDict": ".platformskillsyncresponse", + "PlatformSkillSyncResultStatus": ".platformskillsyncresultstatus", + "PlatformSkillSyncStatus": ".platformskillsyncstatus", + "PlatformSkillUpdateRequest": ".platformskillupdaterequest", + "PlatformSkillUpdateRequestTypedDict": ".platformskillupdaterequest", + "PlatformSkillUpdateResponse": ".platformskillupdateresponse", + "PlatformSkillUpdateResponseTypedDict": ".platformskillupdateresponse", + "PlatformSkillUpdateStatus": ".platformskillupdatestatus", + "PlatformSkillValidationFile": ".platformskillvalidationfile", + "PlatformSkillValidationFileTypedDict": ".platformskillvalidationfile", + "PlatformSkillValidationMetadata": ".platformskillvalidationmetadata", + "PlatformSkillValidationMetadataTypedDict": ".platformskillvalidationmetadata", + "PlatformSkillValidationRequest": ".platformskillvalidationrequest", + "PlatformSkillValidationRequestFile": ".platformskillvalidationrequest", + "PlatformSkillValidationRequestFileTypedDict": ".platformskillvalidationrequest", + "PlatformSkillValidationRequestTypedDict": ".platformskillvalidationrequest", + "PlatformSkillValidationResponse": ".platformskillvalidationresponse", + "PlatformSkillValidationResponseTypedDict": ".platformskillvalidationresponse", + "PlatformSkillVersion": ".platformskillversion", + "PlatformSkillVersionTypedDict": ".platformskillversion", + "PlatformSkillVersionCreateRequest": ".platformskillversioncreaterequest", + "PlatformSkillVersionCreateRequestFile": ".platformskillversioncreaterequest", + "PlatformSkillVersionCreateRequestFileTypedDict": ".platformskillversioncreaterequest", + "PlatformSkillVersionCreateRequestTypedDict": ".platformskillversioncreaterequest", + "PlatformSkillVersionCreateResponse": ".platformskillversioncreateresponse", + "PlatformSkillVersionCreateResponseTypedDict": ".platformskillversioncreateresponse", + "PlatformSkillVersionGetResponse": ".platformskillversiongetresponse", + "PlatformSkillVersionGetResponseTypedDict": ".platformskillversiongetresponse", + "PlatformSkillVersionsListResponse": ".platformskillversionslistresponse", + "PlatformSkillVersionsListResponseTypedDict": ".platformskillversionslistresponse", + "PlatformTimeRange": ".platformtimerange", + "PlatformTimeRangeTypedDict": ".platformtimerange", + "PlatformTrigger": ".platformtrigger", + "PlatformTriggerTypedDict": ".platformtrigger", + "PlatformTriggerAuth": ".platformtriggerauth_output", + "PlatformTriggerAuthOutput": ".platformtriggerauth_output", + "PlatformTriggerAuthOutputTypedDict": ".platformtriggerauth_output", + "PlatformTriggerAuthType": ".platformtriggerauth_output", + "PlatformTriggerAuthTypedDict": ".platformtriggerauth_output", + "PlatformTriggerCreateRequest": ".platformtriggercreaterequest", + "PlatformTriggerCreateRequestTypedDict": ".platformtriggercreaterequest", + "PlatformTriggerCreateResponse": ".platformtriggercreateresponse", + "PlatformTriggerCreateResponseTypedDict": ".platformtriggercreateresponse", + "PlatformTriggerDelivery": ".platformtriggerdelivery", + "PlatformTriggerDeliveryTypedDict": ".platformtriggerdelivery", + "PlatformTriggerDeliveryOutput": ".platformtriggerdelivery_output", + "PlatformTriggerDeliveryOutputTypedDict": ".platformtriggerdelivery_output", + "PlatformTriggerEvent": ".platformtriggerevent", + "PlatformTriggerEventTypedDict": ".platformtriggerevent", + "PlatformTriggerEventReason": ".platformtriggereventreason", + "PlatformTriggerEventSearchRequest": ".platformtriggereventsearchrequest", + "PlatformTriggerEventSearchRequestTypedDict": ".platformtriggereventsearchrequest", + "PlatformTriggerEventSearchResponse": ".platformtriggereventsearchresponse", + "PlatformTriggerEventSearchResponseTypedDict": ".platformtriggereventsearchresponse", + "PlatformTriggerEventType": ".platformtriggereventtype", + "PlatformTriggerGetResponse": ".platformtriggergetresponse", + "PlatformTriggerGetResponseTypedDict": ".platformtriggergetresponse", + "PlatformTriggerListResponse": ".platformtriggerlistresponse", + "PlatformTriggerListResponseTypedDict": ".platformtriggerlistresponse", + "PlatformTriggerPreset": ".platformtriggerpreset", + "PlatformTriggerPresetTypedDict": ".platformtriggerpreset", + "PlatformTriggerPresetEventSearchRequest": ".platformtriggerpreseteventsearchrequest", + "PlatformTriggerPresetEventSearchRequestTypedDict": ".platformtriggerpreseteventsearchrequest", + "PlatformTriggerPresetGetResponse": ".platformtriggerpresetgetresponse", + "PlatformTriggerPresetGetResponseTypedDict": ".platformtriggerpresetgetresponse", + "PlatformTriggerPresetInput": ".platformtriggerpresetinput", + "PlatformTriggerPresetInputTypedDict": ".platformtriggerpresetinput", + "PlatformTriggerPresetInputType": ".platformtriggerpresetinputtype", + "PlatformTriggerPresetInputValue": ".platformtriggerpresetinputvalue", + "PlatformTriggerPresetInputValueTypedDict": ".platformtriggerpresetinputvalue", + "PlatformTriggerPresetInputValueListResponse": ".platformtriggerpresetinputvaluelistresponse", + "PlatformTriggerPresetInputValueListResponseTypedDict": ".platformtriggerpresetinputvaluelistresponse", + "PlatformTriggerPresetListResponse": ".platformtriggerpresetlistresponse", + "PlatformTriggerPresetListResponseTypedDict": ".platformtriggerpresetlistresponse", + "PlatformTriggerPresetSummary": ".platformtriggerpresetsummary", + "PlatformTriggerPresetSummaryTypedDict": ".platformtriggerpresetsummary", + "PlatformTriggerStatus": ".platformtriggerstatus", + "PlatformTriggerUpdateRequest": ".platformtriggerupdaterequest", + "PlatformTriggerUpdateRequestTypedDict": ".platformtriggerupdaterequest", + "PlatformTriggerWebhookEvent": ".platformtriggerwebhookevent", + "PlatformTriggerWebhookEventTypedDict": ".platformtriggerwebhookevent", + "PlatformTriggerWithSecret": ".platformtriggerwithsecret", + "PlatformTriggerWithSecretTypedDict": ".platformtriggerwithsecret", + "PlatformWarning": ".platformwarning", + "PlatformWarningTypedDict": ".platformwarning", "PossibleValue": ".possiblevalue", "PossibleValueTypedDict": ".possiblevalue", + "PostAPIIndexV1DebugDatasourceDocumentEventsRequest": ".post_api_index_v1_debug_datasource_document_eventsop", + "PostAPIIndexV1DebugDatasourceDocumentEventsRequestTypedDict": ".post_api_index_v1_debug_datasource_document_eventsop", "PostAPIIndexV1DebugDatasourceDocumentRequest": ".post_api_index_v1_debug_datasource_documentop", "PostAPIIndexV1DebugDatasourceDocumentRequestTypedDict": ".post_api_index_v1_debug_datasource_documentop", "PostAPIIndexV1DebugDatasourceDocumentsRequest": ".post_api_index_v1_debug_datasource_documentsop", @@ -3107,6 +4858,11 @@ "PostAPIIndexV1DebugDatasourceStatusRequestTypedDict": ".post_api_index_v1_debug_datasource_statusop", "PostAPIIndexV1DebugDatasourceUserRequest": ".post_api_index_v1_debug_datasource_userop", "PostAPIIndexV1DebugDatasourceUserRequestTypedDict": ".post_api_index_v1_debug_datasource_userop", + "POST_REST_API_INDEX_SUBMISSIONS_DATASOURCE_INSTANCE_TYPE_OP_SERVERS": ".post_rest_api_index_submissions_datasourceinstance_type_op", + "PostRestAPIIndexSubmissionsDatasourceInstanceTypeRequest": ".post_rest_api_index_submissions_datasourceinstance_type_op", + "PostRestAPIIndexSubmissionsDatasourceInstanceTypeRequestTypedDict": ".post_rest_api_index_submissions_datasourceinstance_type_op", + "PostRestAPIIndexSubmissionsDatasourceInstanceTypeResponse": ".post_rest_api_index_submissions_datasourceinstance_type_op", + "PostRestAPIIndexSubmissionsDatasourceInstanceTypeResponseTypedDict": ".post_rest_api_index_submissions_datasourceinstance_type_op", "ProcessAllDocumentsRequest": ".processalldocumentsrequest", "ProcessAllDocumentsRequestTypedDict": ".processalldocumentsrequest", "ProcessAllMembershipsRequest": ".processallmembershipsrequest", @@ -3118,20 +4874,24 @@ "PromptTemplateResult": ".prompttemplateresult", "PromptTemplateResultTypedDict": ".prompttemplateresult", "PropertyDefinition": ".propertydefinition", + "PropertyDefinitionPropertyType": ".propertydefinition", "PropertyDefinitionTypedDict": ".propertydefinition", - "PropertyType": ".propertydefinition", "UIOptions": ".propertydefinition", "PropertyGroup": ".propertygroup", "PropertyGroupTypedDict": ".propertygroup", - "QueryInsight": ".queryinsight", - "QueryInsightTypedDict": ".queryinsight", - "QueryInsightsResponse": ".queryinsightsresponse", - "QueryInsightsResponseTypedDict": ".queryinsightsresponse", + "PUT_REST_API_INDEX_CUSTOM_METADATA_SCHEMA_GROUP_NAME_OP_SERVERS": ".put_rest_api_index_custom_metadata_schema_groupname_op", + "PutRestAPIIndexCustomMetadataSchemaGroupNameRequest": ".put_rest_api_index_custom_metadata_schema_groupname_op", + "PutRestAPIIndexCustomMetadataSchemaGroupNameRequestTypedDict": ".put_rest_api_index_custom_metadata_schema_groupname_op", + "PUT_REST_API_INDEX_DOCUMENT_DOC_ID_CUSTOM_METADATA_GROUP_NAME_OP_SERVERS": ".put_rest_api_index_document_docid_custom_metadata_groupname_op", + "PutRestAPIIndexDocumentDocIDCustomMetadataGroupNameRequest": ".put_rest_api_index_document_docid_custom_metadata_groupname_op", + "PutRestAPIIndexDocumentDocIDCustomMetadataGroupNameRequestTypedDict": ".put_rest_api_index_document_docid_custom_metadata_groupname_op", "Quicklink": ".quicklink", "QuicklinkTypedDict": ".quicklink", "Scope": ".quicklink", "ReadPermission": ".readpermission", "ReadPermissionTypedDict": ".readpermission", + "RecommendationsRequestRequest": ".recommendationsop", + "RecommendationsRequestRequestTypedDict": ".recommendationsop", "RecommendationsRequest": ".recommendationsrequest", "RecommendationsRequestTypedDict": ".recommendationsrequest", "RecommendationsRequestOptions": ".recommendationsrequestoptions", @@ -3157,6 +4917,10 @@ "ResultsResponseTypedDict": ".resultsresponse", "ResultTab": ".resulttab", "ResultTabTypedDict": ".resulttab", + "RotateDatasourceCredentialsRequestRequest": ".rotatedatasourcecredentialsop", + "RotateDatasourceCredentialsRequestRequestTypedDict": ".rotatedatasourcecredentialsop", + "RotateDatasourceCredentialsRequest": ".rotatedatasourcecredentialsrequest", + "RotateDatasourceCredentialsRequestTypedDict": ".rotatedatasourcecredentialsrequest", "RotateTokenResponse": ".rotatetokenresponse", "RotateTokenResponseTypedDict": ".rotatetokenresponse", "ScopeType": ".scopetype", @@ -3164,6 +4928,8 @@ "SearchAgentsRequestTypedDict": ".searchagentsrequest", "SearchAgentsResponse": ".searchagentsresponse", "SearchAgentsResponseTypedDict": ".searchagentsresponse", + "SearchRequestRequest": ".searchop", + "SearchRequestRequestTypedDict": ".searchop", "SearchProviderInfo": ".searchproviderinfo", "SearchProviderInfoTypedDict": ".searchproviderinfo", "SearchRequest": ".searchrequest", @@ -3193,6 +4959,13 @@ "SensitiveInfoType": ".sensitiveinfotype", "SensitiveInfoTypeLikelihoodThreshold": ".sensitiveinfotype", "SensitiveInfoTypeTypedDict": ".sensitiveinfotype", + "ServerToolRequest": ".servertoolrequest", + "ServerToolRequestRequestType": ".servertoolrequest", + "ServerToolRequestTypedDict": ".servertoolrequest", + "GrantScope": ".servertoolresponse", + "ServerToolResponse": ".servertoolresponse", + "ServerToolResponseRequestType": ".servertoolresponse", + "ServerToolResponseTypedDict": ".servertoolresponse", "SessionInfo": ".sessioninfo", "SessionInfoTypedDict": ".sessioninfo", "SharingOptions": ".sharingoptions", @@ -3200,10 +4973,6 @@ "ShortcutError": ".shortcuterror", "ShortcutErrorErrorType": ".shortcuterror", "ShortcutErrorTypedDict": ".shortcuterror", - "ShortcutInsight": ".shortcutinsight", - "ShortcutInsightTypedDict": ".shortcutinsight", - "ShortcutInsightsResponse": ".shortcutinsightsresponse", - "ShortcutInsightsResponseTypedDict": ".shortcutinsightsresponse", "ShortcutMutableProperties": ".shortcutmutableproperties", "ShortcutMutablePropertiesTypedDict": ".shortcutmutableproperties", "ShortcutsPaginationMetadata": ".shortcutspaginationmetadata", @@ -3225,6 +4994,10 @@ "StructuredLocationTypedDict": ".structuredlocation", "StructuredTextMutableProperties": ".structuredtextmutableproperties", "StructuredTextMutablePropertiesTypedDict": ".structuredtextmutableproperties", + "SuccessResponse": ".successresponse", + "SuccessResponseTypedDict": ".successresponse", + "SummarizeRequestRequest": ".summarizeop", + "SummarizeRequestRequestTypedDict": ".summarizeop", "SummarizeRequest": ".summarizerequest", "SummarizeRequestTypedDict": ".summarizerequest", "Error": ".summarizeresponse", @@ -3253,8 +5026,15 @@ "Tool": ".tool", "ToolType": ".tool", "ToolTypedDict": ".tool", + "ToolAnnotations": ".toolannotations", + "ToolAnnotationsTypedDict": ".toolannotations", + "ToolDefinition": ".tooldefinition", + "ToolDefinitionTypedDict": ".tooldefinition", + "ToolDefinitionsResponse": ".tooldefinitionsresponse", + "ToolDefinitionsResponseTypedDict": ".tooldefinitionsresponse", "ToolInfo": ".toolinfo", "ToolInfoTypedDict": ".toolinfo", + "ActionTypeSource": ".toolmetadata", "AuthType": ".toolmetadata", "KnowledgeType": ".toolmetadata", "ToolMetadata": ".toolmetadata", @@ -3270,17 +5050,30 @@ "ToolsCallRequestTypedDict": ".toolscallrequest", "ToolsCallResponse": ".toolscallresponse", "ToolsCallResponseTypedDict": ".toolscallresponse", + "ToolServerAuthStatus": ".toolserverauthstatus", + "ToolServerAuthStatusResponse": ".toolserverauthstatusresponse", + "ToolServerAuthStatusResponseTypedDict": ".toolserverauthstatusresponse", "ToolSets": ".toolsets", "ToolSetsTypedDict": ".toolsets", "ToolsListResponse": ".toolslistresponse", "ToolsListResponseTypedDict": ".toolslistresponse", "UgcType": ".ugctype", + "UnauthorizedDatasourceInstance": ".unauthorizeddatasourceinstance", + "UnauthorizedDatasourceInstanceTypedDict": ".unauthorizeddatasourceinstance", "Unpin": ".unpin", "UnpinTypedDict": ".unpin", + "UnpinRequest": ".unpinop", + "UnpinRequestTypedDict": ".unpinop", + "UpdateannouncementRequestRequest": ".updateannouncementop", + "UpdateannouncementRequestRequestTypedDict": ".updateannouncementop", "UpdateAnnouncementRequest": ".updateannouncementrequest", "UpdateAnnouncementRequestChannel": ".updateannouncementrequest", "UpdateAnnouncementRequestPostType": ".updateannouncementrequest", "UpdateAnnouncementRequestTypedDict": ".updateannouncementrequest", + "UpdateDatasourceConfigurationRequest": ".updatedatasourceconfigurationrequest", + "UpdateDatasourceConfigurationRequestTypedDict": ".updatedatasourceconfigurationrequest", + "UpdateDatasourceInstanceConfigurationRequest": ".updatedatasourceinstanceconfigurationop", + "UpdateDatasourceInstanceConfigurationRequestTypedDict": ".updatedatasourceinstanceconfigurationop", "UpdateDlpConfigRequest": ".updatedlpconfigrequest", "UpdateDlpConfigRequestTypedDict": ".updatedlpconfigrequest", "UpdateDlpConfigResponse": ".updatedlpconfigresponse", @@ -3297,6 +5090,8 @@ "UpdatePermissionsRequestTypedDict": ".updatepermissionsrequest", "UpdatepolicyRequest": ".updatepolicyop", "UpdatepolicyRequestTypedDict": ".updatepolicyop", + "UpdateshortcutRequestRequest": ".updateshortcutop", + "UpdateshortcutRequestRequestTypedDict": ".updateshortcutop", "UpdateShortcutRequest": ".updateshortcutrequest", "UpdateShortcutRequestTypedDict": ".updateshortcutrequest", "UpdateShortcutResponse": ".updateshortcutresponse", @@ -3304,9 +5099,9 @@ "UpdateType": ".updatetype", "UploadchatfilesRequestRequest": ".uploadchatfilesop", "UploadchatfilesRequestRequestTypedDict": ".uploadchatfilesop", - "File": ".uploadchatfilesrequest", - "FileTypedDict": ".uploadchatfilesrequest", "UploadChatFilesRequest": ".uploadchatfilesrequest", + "UploadChatFilesRequestFile": ".uploadchatfilesrequest", + "UploadChatFilesRequestFileTypedDict": ".uploadchatfilesrequest", "UploadChatFilesRequestTypedDict": ".uploadchatfilesrequest", "UploadChatFilesResponse": ".uploadchatfilesresponse", "UploadChatFilesResponseTypedDict": ".uploadchatfilesresponse", @@ -3323,8 +5118,6 @@ "UserActivityInsightTypedDict": ".useractivityinsight", "UserGeneratedContentID": ".usergeneratedcontentid", "UserGeneratedContentIDTypedDict": ".usergeneratedcontentid", - "UserInsightsResponse": ".userinsightsresponse", - "UserInsightsResponseTypedDict": ".userinsightsresponse", "UserReferenceDefinition": ".userreferencedefinition", "UserReferenceDefinitionTypedDict": ".userreferencedefinition", "UserRole": ".userrole", @@ -3334,11 +5127,13 @@ "UserViewInfoTypedDict": ".userviewinfo", "VerificationFeed": ".verificationfeed", "VerificationFeedTypedDict": ".verificationfeed", + "VerifyRequestRequest": ".verifyop", + "VerifyRequestRequestTypedDict": ".verifyop", "VerifyRequest": ".verifyrequest", "VerifyRequestAction": ".verifyrequest", "VerifyRequestTypedDict": ".verifyrequest", - "Role": ".viewerinfo", "ViewerInfo": ".viewerinfo", + "ViewerInfoRole": ".viewerinfo", "ViewerInfoTypedDict": ".viewerinfo", "Workflow": ".workflow", "WorkflowTypedDict": ".workflow", @@ -3355,39 +5150,11 @@ } -def dynamic_import(modname, retries=3): - for attempt in range(retries): - try: - return import_module(modname, __package__) - except KeyError: - # Clear any half-initialized module and retry - sys.modules.pop(modname, None) - if attempt == retries - 1: - break - raise KeyError(f"Failed to import module '{modname}' after {retries} attempts") - - -def __getattr__(attr_name: str) -> object: - module_name = _dynamic_imports.get(attr_name) - if module_name is None: - raise AttributeError( - f"No {attr_name} found in _dynamic_imports for module name -> {__name__} " - ) - - try: - module = dynamic_import(module_name) - result = getattr(module, attr_name) - return result - except ImportError as e: - raise ImportError( - f"Failed to import {attr_name} from {module_name}: {e}" - ) from e - except AttributeError as e: - raise AttributeError( - f"Failed to get {attr_name} from {module_name}: {e}" - ) from e +def __getattr__(attr_name: str) -> Any: + return lazy_getattr( + attr_name, package=__package__, dynamic_imports=_dynamic_imports + ) def __dir__(): - lazy_attrs = builtins.list(_dynamic_imports.keys()) - return builtins.sorted(lazy_attrs) + return lazy_dir(dynamic_imports=_dynamic_imports) diff --git a/src/glean/api_client/models/accessrequestpermissiondeniedresponse_error.py b/src/glean/api_client/models/accessrequestpermissiondeniedresponse_error.py new file mode 100644 index 00000000..52b5d073 --- /dev/null +++ b/src/glean/api_client/models/accessrequestpermissiondeniedresponse_error.py @@ -0,0 +1,8 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum + + +class AccessRequestPermissionDeniedResponseErrorType(str, Enum): + PERMISSION_DENIED = "PERMISSION_DENIED" diff --git a/src/glean/api_client/models/actionauthtype.py b/src/glean/api_client/models/actionauthtype.py new file mode 100644 index 00000000..6a60ecd0 --- /dev/null +++ b/src/glean/api_client/models/actionauthtype.py @@ -0,0 +1,18 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +from glean.api_client import utils + + +class ActionAuthType(str, Enum, metaclass=utils.OpenEnumMeta): + r"""Authentication mechanism used by an action pack. + - `AUTH_USER_OAUTH`: Requires per-user OAuth consent to the third-party tool. + - `AUTH_ADMIN`: Uses a service-account / admin-owned credential. End users do not authorize individually. + - `AUTH_NONE`: Action pack requires no authentication. + + """ + + AUTH_USER_OAUTH = "AUTH_USER_OAUTH" + AUTH_ADMIN = "AUTH_ADMIN" + AUTH_NONE = "AUTH_NONE" diff --git a/src/glean/api_client/models/actionpackauthstatus.py b/src/glean/api_client/models/actionpackauthstatus.py new file mode 100644 index 00000000..c2507aaa --- /dev/null +++ b/src/glean/api_client/models/actionpackauthstatus.py @@ -0,0 +1,49 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .actionauthtype import ActionAuthType +from glean.api_client import models +from glean.api_client.types import BaseModel +import pydantic +from pydantic import field_serializer +from typing_extensions import Annotated, TypedDict + + +class ActionPackAuthStatusTypedDict(TypedDict): + authenticated: bool + r"""Whether the calling user is already authenticated to the tool backing the action pack.""" + auth_type: ActionAuthType + r"""Authentication mechanism used by an action pack. + - `AUTH_USER_OAUTH`: Requires per-user OAuth consent to the third-party tool. + - `AUTH_ADMIN`: Uses a service-account / admin-owned credential. End users do not authorize individually. + - `AUTH_NONE`: Action pack requires no authentication. + + """ + + +class ActionPackAuthStatus(BaseModel): + authenticated: bool + r"""Whether the calling user is already authenticated to the tool backing the action pack.""" + + auth_type: Annotated[ActionAuthType, pydantic.Field(alias="authType")] + r"""Authentication mechanism used by an action pack. + - `AUTH_USER_OAUTH`: Requires per-user OAuth consent to the third-party tool. + - `AUTH_ADMIN`: Uses a service-account / admin-owned credential. End users do not authorize individually. + - `AUTH_NONE`: Action pack requires no authentication. + + """ + + @field_serializer("auth_type") + def serialize_auth_type(self, value): + if isinstance(value, str): + try: + return models.ActionAuthType(value) + except ValueError: + return value + return value + + +try: + ActionPackAuthStatus.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/actionpackauthstatusresponse.py b/src/glean/api_client/models/actionpackauthstatusresponse.py new file mode 100644 index 00000000..512b9f6f --- /dev/null +++ b/src/glean/api_client/models/actionpackauthstatusresponse.py @@ -0,0 +1,21 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .actionpackauthstatus import ActionPackAuthStatus, ActionPackAuthStatusTypedDict +from glean.api_client.types import BaseModel +import pydantic +from typing_extensions import Annotated, TypedDict + + +class ActionPackAuthStatusResponseTypedDict(TypedDict): + action_pack: ActionPackAuthStatusTypedDict + + +class ActionPackAuthStatusResponse(BaseModel): + action_pack: Annotated[ActionPackAuthStatus, pydantic.Field(alias="actionPack")] + + +try: + ActionPackAuthStatusResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/actionpreview.py b/src/glean/api_client/models/actionpreview.py new file mode 100644 index 00000000..8aada545 --- /dev/null +++ b/src/glean/api_client/models/actionpreview.py @@ -0,0 +1,42 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer +from typing import Optional +from typing_extensions import NotRequired, TypedDict + + +class ActionPreviewTypedDict(TypedDict): + r"""Preview information for an action being executed.""" + + markdown: NotRequired[str] + r"""Markdown preview describing what the action will do.""" + description: NotRequired[str] + r"""Short summary of what this specific tool invocation will do.""" + + +class ActionPreview(BaseModel): + r"""Preview information for an action being executed.""" + + markdown: Optional[str] = None + r"""Markdown preview describing what the action will do.""" + + description: Optional[str] = None + r"""Short summary of what this specific tool invocation will do.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["markdown", "description"]) + 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/actionsummary.py b/src/glean/api_client/models/actionsummary.py new file mode 100644 index 00000000..399db3e4 --- /dev/null +++ b/src/glean/api_client/models/actionsummary.py @@ -0,0 +1,95 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer +from typing import Optional +from typing_extensions import NotRequired, TypedDict + + +class ActionSummaryTypedDict(TypedDict): + r"""Represents a minimal summary of an action.""" + + tool_id: str + r"""The unique identifier of the action.""" + display_name: str + r"""The display name of the action.""" + type: NotRequired[str] + r"""The type of tool - RETRIEVAL for read-only operations, ACTION for operations that modify data.""" + auth_type: NotRequired[str] + r"""The authentication type required - OAUTH_USER, OAUTH_ADMIN, API_KEY, BASIC_AUTH, DWD (domain-wide delegation), or NONE.""" + write_action_type: NotRequired[str] + r"""For write actions only - REDIRECT (client renders URL) or EXECUTION (external server call).""" + is_setup_finished: NotRequired[bool] + r"""Whether this action has been fully configured and validated.""" + data_source: NotRequired[str] + r"""Indicates the kind of knowledge a tool would access or modify. + Company knowledge: + - Glean search, and any native tools that derive from it (e.g., expert search, code search) + - Native federated tools to company data sources (e.g., outlook search) + World knowledge: + - Platform action like bravewebsearch, geminiwebsearch, etc + Neutral knowledge: + - Native tools that don't access or modify content via APIs (e.g., file analyst, think) + - Platform read or write tools (creator has to determine their knowledge implications) + + """ + + +class ActionSummary(BaseModel): + r"""Represents a minimal summary of an action.""" + + tool_id: str + r"""The unique identifier of the action.""" + + display_name: str + r"""The display name of the action.""" + + type: Optional[str] = None + r"""The type of tool - RETRIEVAL for read-only operations, ACTION for operations that modify data.""" + + auth_type: Optional[str] = None + r"""The authentication type required - OAUTH_USER, OAUTH_ADMIN, API_KEY, BASIC_AUTH, DWD (domain-wide delegation), or NONE.""" + + write_action_type: Optional[str] = None + r"""For write actions only - REDIRECT (client renders URL) or EXECUTION (external server call).""" + + is_setup_finished: Optional[bool] = None + r"""Whether this action has been fully configured and validated.""" + + data_source: Optional[str] = None + r"""Indicates the kind of knowledge a tool would access or modify. + Company knowledge: + - Glean search, and any native tools that derive from it (e.g., expert search, code search) + - Native federated tools to company data sources (e.g., outlook search) + World knowledge: + - Platform action like bravewebsearch, geminiwebsearch, etc + Neutral knowledge: + - Native tools that don't access or modify content via APIs (e.g., file analyst, think) + - Platform read or write tools (creator has to determine their knowledge implications) + + """ + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "type", + "auth_type", + "write_action_type", + "is_setup_finished", + "data_source", + ] + ) + 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/activityevent.py b/src/glean/api_client/models/activityevent.py index 8fe3b064..4f6bc8f3 100644 --- a/src/glean/api_client/models/activityevent.py +++ b/src/glean/api_client/models/activityevent.py @@ -64,7 +64,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/activityeventparams.py b/src/glean/api_client/models/activityeventparams.py index adf31862..b084d4af 100644 --- a/src/glean/api_client/models/activityeventparams.py +++ b/src/glean/api_client/models/activityeventparams.py @@ -81,10 +81,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + ActivityEventParams.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/addcollectionitemserror.py b/src/glean/api_client/models/addcollectionitemserror.py index 054b9380..8f738ea3 100644 --- a/src/glean/api_client/models/addcollectionitemserror.py +++ b/src/glean/api_client/models/addcollectionitemserror.py @@ -2,15 +2,17 @@ from __future__ import annotations from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict -class AddCollectionItemsErrorErrorType(str, Enum): +class AddCollectionItemsErrorErrorType(str, Enum, metaclass=utils.OpenEnumMeta): EXISTING_ITEM = "EXISTING_ITEM" + CORRUPT_ITEM = "CORRUPT_ITEM" class AddCollectionItemsErrorTypedDict(TypedDict): @@ -22,6 +24,15 @@ class AddCollectionItemsError(BaseModel): Optional[AddCollectionItemsErrorErrorType], pydantic.Field(alias="errorType") ] = None + @field_serializer("error_type") + def serialize_error_type(self, value): + if isinstance(value, str): + try: + return models.AddCollectionItemsErrorErrorType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["errorType"]) @@ -30,10 +41,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + AddCollectionItemsError.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/addcollectionitemsop.py b/src/glean/api_client/models/addcollectionitemsop.py new file mode 100644 index 00000000..2cd893c6 --- /dev/null +++ b/src/glean/api_client/models/addcollectionitemsop.py @@ -0,0 +1,49 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .addcollectionitemsrequest import ( + AddCollectionItemsRequest, + AddCollectionItemsRequestTypedDict, +) +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class AddcollectionitemsRequestRequestTypedDict(TypedDict): + add_collection_items_request: AddCollectionItemsRequestTypedDict + r"""Data describing the add operation.""" + locale: NotRequired[str] + r"""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`.""" + + +class AddcollectionitemsRequestRequest(BaseModel): + add_collection_items_request: Annotated[ + AddCollectionItemsRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""Data describing the add operation.""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""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`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/addcollectionitemsrequest.py b/src/glean/api_client/models/addcollectionitemsrequest.py index 1c901ea6..b440c09b 100644 --- a/src/glean/api_client/models/addcollectionitemsrequest.py +++ b/src/glean/api_client/models/addcollectionitemsrequest.py @@ -39,10 +39,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + AddCollectionItemsRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/addcollectionitemsresponse.py b/src/glean/api_client/models/addcollectionitemsresponse.py index 776d7a2a..80294bce 100644 --- a/src/glean/api_client/models/addcollectionitemsresponse.py +++ b/src/glean/api_client/models/addcollectionitemsresponse.py @@ -30,7 +30,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/additionalfielddefinition.py b/src/glean/api_client/models/additionalfielddefinition.py index 0b381cf2..75e99935 100644 --- a/src/glean/api_client/models/additionalfielddefinition.py +++ b/src/glean/api_client/models/additionalfielddefinition.py @@ -73,7 +73,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/addverificationreminderop.py b/src/glean/api_client/models/addverificationreminderop.py new file mode 100644 index 00000000..b6b9c1a2 --- /dev/null +++ b/src/glean/api_client/models/addverificationreminderop.py @@ -0,0 +1,46 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .reminderrequest import ReminderRequest, ReminderRequestTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class AddverificationreminderRequestTypedDict(TypedDict): + reminder_request: ReminderRequestTypedDict + r"""Details about the reminder.""" + locale: NotRequired[str] + r"""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`.""" + + +class AddverificationreminderRequest(BaseModel): + reminder_request: Annotated[ + ReminderRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""Details about the reminder.""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""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`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/adminsearchop.py b/src/glean/api_client/models/adminsearchop.py new file mode 100644 index 00000000..6578e5e3 --- /dev/null +++ b/src/glean/api_client/models/adminsearchop.py @@ -0,0 +1,46 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .searchrequest import SearchRequest, SearchRequestTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class AdminsearchRequestTypedDict(TypedDict): + search_request: SearchRequestTypedDict + r"""Admin search request""" + locale: NotRequired[str] + r"""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`.""" + + +class AdminsearchRequest(BaseModel): + search_request: Annotated[ + SearchRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""Admin search request""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""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`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/agent.py b/src/glean/api_client/models/agent.py index cca8a241..ce46c088 100644 --- a/src/glean/api_client/models/agent.py +++ b/src/glean/api_client/models/agent.py @@ -67,8 +67,8 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) - serialized.pop(k, None) + val = serialized.get(k, serialized.get(n)) + serialized.pop(k, serialized.pop(n, None)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -124,10 +124,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + AgentCapabilities.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/agentconfig.py b/src/glean/api_client/models/agentconfig.py index b82d01a4..2a7bb3d1 100644 --- a/src/glean/api_client/models/agentconfig.py +++ b/src/glean/api_client/models/agentconfig.py @@ -3,14 +3,15 @@ from __future__ import annotations from .toolsets import ToolSets, ToolSetsTypedDict from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict -class AgentEnum(str, Enum): +class AgentEnum(str, Enum, metaclass=utils.OpenEnumMeta): r"""Name of the agent.""" # Integrates with your company's knowledge. This will soon be deprecated in favor of the FAST and ADVANCED `agent` values @@ -23,9 +24,11 @@ class AgentEnum(str, Enum): FAST = "FAST" # Uses an agent powered by the agentic engine that thinks for longer and potentially makes more LLM calls to return higher quality results. Requires the agentic engine to be enabled in the deployment. ADVANCED = "ADVANCED" + # Uses an agent powered by the agentic engine that routes between reasoning efforts based on the question and context. + AUTO = "AUTO" -class Mode(str, Enum): +class Mode(str, Enum, metaclass=utils.OpenEnumMeta): r"""Top level modes to run GleanChat in.""" # Used if no mode supplied. @@ -64,6 +67,24 @@ class AgentConfig(BaseModel): ] = None r"""Whether the agent should create an image.""" + @field_serializer("agent") + def serialize_agent(self, value): + if isinstance(value, str): + try: + return models.AgentEnum(value) + except ValueError: + return value + return value + + @field_serializer("mode") + def serialize_mode(self, value): + if isinstance(value, str): + try: + return models.Mode(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["agent", "toolSets", "mode", "useImageGeneration"]) @@ -72,10 +93,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + AgentConfig.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/agentexecutionstatus.py b/src/glean/api_client/models/agentexecutionstatus.py index fa71fb35..b93cae26 100644 --- a/src/glean/api_client/models/agentexecutionstatus.py +++ b/src/glean/api_client/models/agentexecutionstatus.py @@ -2,9 +2,10 @@ from __future__ import annotations from enum import Enum +from glean.api_client import utils -class AgentExecutionStatus(str, Enum): +class AgentExecutionStatus(str, Enum, metaclass=utils.OpenEnumMeta): r"""The status of the run. One of 'error', 'success'.""" ERROR = "error" diff --git a/src/glean/api_client/models/agentrun.py b/src/glean/api_client/models/agentrun.py index 69d2ea18..0439dfdf 100644 --- a/src/glean/api_client/models/agentrun.py +++ b/src/glean/api_client/models/agentrun.py @@ -3,19 +3,20 @@ from __future__ import annotations from .agentexecutionstatus import AgentExecutionStatus from .message import Message, MessageTypedDict +from glean.api_client import models from glean.api_client.types import BaseModel, UNSET_SENTINEL -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Any, Dict, List, Optional from typing_extensions import NotRequired, TypedDict class AgentRunTypedDict(TypedDict): - r"""Payload for creating a run.""" + r"""Payload for creating a run. **Important**: If the agent uses an input form trigger, the `input` field is required and must include all fields defined in the form schema. Even fields marked as optional in the UI must be included in the request—use an empty string (`\"\"`) for optional fields without values. Omitting required form fields will result in a 500 error.""" agent_id: str r"""The ID of the agent to run.""" input: NotRequired[Dict[str, Any]] - r"""The input to the agent.""" + r"""The input to the agent. Required when the agent uses an input form trigger.""" messages: NotRequired[List[MessageTypedDict]] r"""The messages to pass an input to the agent.""" metadata: NotRequired[Dict[str, Any]] @@ -25,13 +26,13 @@ class AgentRunTypedDict(TypedDict): class AgentRun(BaseModel): - r"""Payload for creating a run.""" + r"""Payload for creating a run. **Important**: If the agent uses an input form trigger, the `input` field is required and must include all fields defined in the form schema. Even fields marked as optional in the UI must be included in the request—use an empty string (`\"\"`) for optional fields without values. Omitting required form fields will result in a 500 error.""" agent_id: str r"""The ID of the agent to run.""" input: Optional[Dict[str, Any]] = None - r"""The input to the agent.""" + r"""The input to the agent. Required when the agent uses an input form trigger.""" messages: Optional[List[Message]] = None r"""The messages to pass an input to the agent.""" @@ -42,6 +43,15 @@ class AgentRun(BaseModel): status: Optional[AgentExecutionStatus] = None r"""The status of the run. One of 'error', 'success'.""" + @field_serializer("status") + def serialize_status(self, value): + if isinstance(value, str): + try: + return models.AgentExecutionStatus(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["input", "messages", "metadata", "status"]) @@ -50,7 +60,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/agentruncreate.py b/src/glean/api_client/models/agentruncreate.py index df2aa824..407bbcb8 100644 --- a/src/glean/api_client/models/agentruncreate.py +++ b/src/glean/api_client/models/agentruncreate.py @@ -9,12 +9,12 @@ class AgentRunCreateTypedDict(TypedDict): - r"""Payload for creating a run.""" + r"""Payload for creating a run. **Important**: If the agent uses an input form trigger, the `input` field is required and must include all fields defined in the form schema. Even fields marked as optional in the UI must be included in the request—use an empty string (`\"\"`) for optional fields without values. Omitting required form fields will result in a 500 error.""" agent_id: str r"""The ID of the agent to run.""" input: NotRequired[Dict[str, Any]] - r"""The input to the agent.""" + r"""The input to the agent. Required when the agent uses an input form trigger.""" messages: NotRequired[List[MessageTypedDict]] r"""The messages to pass an input to the agent.""" metadata: NotRequired[Dict[str, Any]] @@ -22,13 +22,13 @@ class AgentRunCreateTypedDict(TypedDict): class AgentRunCreate(BaseModel): - r"""Payload for creating a run.""" + r"""Payload for creating a run. **Important**: If the agent uses an input form trigger, the `input` field is required and must include all fields defined in the form schema. Even fields marked as optional in the UI must be included in the request—use an empty string (`\"\"`) for optional fields without values. Omitting required form fields will result in a 500 error.""" agent_id: str r"""The ID of the agent to run.""" input: Optional[Dict[str, Any]] = None - r"""The input to the agent.""" + r"""The input to the agent. Required when the agent uses an input form trigger.""" messages: Optional[List[Message]] = None r"""The messages to pass an input to the agent.""" @@ -44,7 +44,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/agentrunwaitresponse.py b/src/glean/api_client/models/agentrunwaitresponse.py index d43eb2a6..e09e51eb 100644 --- a/src/glean/api_client/models/agentrunwaitresponse.py +++ b/src/glean/api_client/models/agentrunwaitresponse.py @@ -29,7 +29,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/agentschemas.py b/src/glean/api_client/models/agentschemas.py index 9dd72561..f69f3156 100644 --- a/src/glean/api_client/models/agentschemas.py +++ b/src/glean/api_client/models/agentschemas.py @@ -1,8 +1,11 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from glean.api_client.types import BaseModel -from typing_extensions import TypedDict +from .actionsummary import ActionSummary, ActionSummaryTypedDict +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 InputSchemaTypedDict(TypedDict): @@ -30,6 +33,10 @@ class AgentSchemasTypedDict(TypedDict): r"""The schema for the agent input. In JSON Schema format.""" output_schema: OutputSchemaTypedDict r"""The schema for the agent output. In JSON Schema format.""" + name: NotRequired[str] + r"""The name of the agent.""" + tools: NotRequired[List[ActionSummaryTypedDict]] + r"""List of tools that the agent can invoke. Only included when include_tools query parameter is set to true.""" class AgentSchemas(BaseModel): @@ -43,3 +50,25 @@ class AgentSchemas(BaseModel): output_schema: OutputSchema r"""The schema for the agent output. In JSON Schema format.""" + + name: Optional[str] = None + r"""The name of the agent.""" + + tools: Optional[List[ActionSummary]] = None + r"""List of tools that the agent can invoke. Only included when include_tools query parameter is set to true.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["name", "tools"]) + 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/agentsinsightsv2request.py b/src/glean/api_client/models/agentsinsightsv2request.py index 38bccea7..13a2eea4 100644 --- a/src/glean/api_client/models/agentsinsightsv2request.py +++ b/src/glean/api_client/models/agentsinsightsv2request.py @@ -14,6 +14,8 @@ class AgentsInsightsV2RequestTypedDict(TypedDict): r"""IDs of the Agents for which Insights should be returned. An empty array signifies all.""" departments: NotRequired[List[str]] r"""Departments for which Insights are requested.""" + manager_emails: NotRequired[List[str]] + r"""Manager emails whose teams should be filtered for. Empty array means no filtering.""" day_range: NotRequired[PeriodTypedDict] @@ -24,20 +26,31 @@ class AgentsInsightsV2Request(BaseModel): departments: Optional[List[str]] = None r"""Departments for which Insights are requested.""" + manager_emails: Annotated[ + Optional[List[str]], pydantic.Field(alias="managerEmails") + ] = None + r"""Manager emails whose teams should be filtered for. Empty array means no filtering.""" + day_range: Annotated[Optional[Period], pydantic.Field(alias="dayRange")] = None @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = set(["agentIds", "departments", "dayRange"]) + optional_fields = set(["agentIds", "departments", "managerEmails", "dayRange"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + AgentsInsightsV2Request.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/agentsinsightsv2response.py b/src/glean/api_client/models/agentsinsightsv2response.py index bb4cc22a..ae50b9b4 100644 --- a/src/glean/api_client/models/agentsinsightsv2response.py +++ b/src/glean/api_client/models/agentsinsightsv2response.py @@ -1,10 +1,15 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations +from .agentstimesavedinsight import ( + AgentsTimeSavedInsight, + AgentsTimeSavedInsightTypedDict, +) from .agentsusagebydepartmentinsight import ( AgentsUsageByDepartmentInsight, AgentsUsageByDepartmentInsightTypedDict, ) +from .agentusecaseinsight import AgentUseCaseInsight, AgentUseCaseInsightTypedDict from .agentusersinsight import AgentUsersInsight, AgentUsersInsightTypedDict from .labeledcountinfo import LabeledCountInfo, LabeledCountInfoTypedDict from .peragentinsight import PerAgentInsight, PerAgentInsightTypedDict @@ -17,20 +22,26 @@ class AgentsInsightsV2ResponseTypedDict(TypedDict): monthly_active_users: NotRequired[int] - r"""Number of current Monthly Active Users, in the specified departments.""" + r"""Number of current Monthly Active Users.""" weekly_active_users: NotRequired[int] - r"""Number of current Weekly Active Users, in the specified departments.""" + r"""Number of current Weekly Active Users.""" monthly_active_user_timeseries: NotRequired[LabeledCountInfoTypedDict] weekly_active_user_timeseries: NotRequired[LabeledCountInfoTypedDict] daily_active_user_timeseries: NotRequired[LabeledCountInfoTypedDict] shared_agents_count: NotRequired[int] r"""Total number of shared agents.""" top_agents_insights: NotRequired[List[PerAgentInsightTypedDict]] + top_use_cases_insights: NotRequired[List[AgentUseCaseInsightTypedDict]] agents_usage_by_department_insights: NotRequired[ List[AgentsUsageByDepartmentInsightTypedDict] ] agent_users_insights: NotRequired[List[AgentUsersInsightTypedDict]] + agents_time_saved_insights: NotRequired[List[AgentsTimeSavedInsightTypedDict]] + r"""Insights for agents time saved over the specified time period.""" daily_agent_runs_timeseries: NotRequired[LabeledCountInfoTypedDict] + successful_runs_timeseries: NotRequired[LabeledCountInfoTypedDict] + failed_runs_timeseries: NotRequired[LabeledCountInfoTypedDict] + paused_runs_timeseries: NotRequired[LabeledCountInfoTypedDict] upvotes_timeseries: NotRequired[LabeledCountInfoTypedDict] downvotes_timeseries: NotRequired[LabeledCountInfoTypedDict] @@ -39,12 +50,12 @@ class AgentsInsightsV2Response(BaseModel): monthly_active_users: Annotated[ Optional[int], pydantic.Field(alias="monthlyActiveUsers") ] = None - r"""Number of current Monthly Active Users, in the specified departments.""" + r"""Number of current Monthly Active Users.""" weekly_active_users: Annotated[ Optional[int], pydantic.Field(alias="weeklyActiveUsers") ] = None - r"""Number of current Weekly Active Users, in the specified departments.""" + r"""Number of current Weekly Active Users.""" monthly_active_user_timeseries: Annotated[ Optional[LabeledCountInfo], pydantic.Field(alias="monthlyActiveUserTimeseries") @@ -67,6 +78,10 @@ class AgentsInsightsV2Response(BaseModel): Optional[List[PerAgentInsight]], pydantic.Field(alias="topAgentsInsights") ] = None + top_use_cases_insights: Annotated[ + Optional[List[AgentUseCaseInsight]], pydantic.Field(alias="topUseCasesInsights") + ] = None + agents_usage_by_department_insights: Annotated[ Optional[List[AgentsUsageByDepartmentInsight]], pydantic.Field(alias="agentsUsageByDepartmentInsights"), @@ -76,10 +91,28 @@ class AgentsInsightsV2Response(BaseModel): Optional[List[AgentUsersInsight]], pydantic.Field(alias="agentUsersInsights") ] = None + agents_time_saved_insights: Annotated[ + Optional[List[AgentsTimeSavedInsight]], + pydantic.Field(alias="agentsTimeSavedInsights"), + ] = None + r"""Insights for agents time saved over the specified time period.""" + daily_agent_runs_timeseries: Annotated[ Optional[LabeledCountInfo], pydantic.Field(alias="dailyAgentRunsTimeseries") ] = None + successful_runs_timeseries: Annotated[ + Optional[LabeledCountInfo], pydantic.Field(alias="successfulRunsTimeseries") + ] = None + + failed_runs_timeseries: Annotated[ + Optional[LabeledCountInfo], pydantic.Field(alias="failedRunsTimeseries") + ] = None + + paused_runs_timeseries: Annotated[ + Optional[LabeledCountInfo], pydantic.Field(alias="pausedRunsTimeseries") + ] = None + upvotes_timeseries: Annotated[ Optional[LabeledCountInfo], pydantic.Field(alias="upvotesTimeseries") ] = None @@ -99,9 +132,14 @@ def serialize_model(self, handler): "dailyActiveUserTimeseries", "sharedAgentsCount", "topAgentsInsights", + "topUseCasesInsights", "agentsUsageByDepartmentInsights", "agentUsersInsights", + "agentsTimeSavedInsights", "dailyAgentRunsTimeseries", + "successfulRunsTimeseries", + "failedRunsTimeseries", + "pausedRunsTimeseries", "upvotesTimeseries", "downvotesTimeseries", ] @@ -111,10 +149,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + AgentsInsightsV2Response.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/agentstimesavedinsight.py b/src/glean/api_client/models/agentstimesavedinsight.py new file mode 100644 index 00000000..25a613c6 --- /dev/null +++ b/src/glean/api_client/models/agentstimesavedinsight.py @@ -0,0 +1,83 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .iconconfig import IconConfig, IconConfigTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +import pydantic +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class AgentsTimeSavedInsightTypedDict(TypedDict): + agent_id: NotRequired[str] + r"""Agent ID""" + agent_name: NotRequired[str] + r"""Agent name""" + icon: NotRequired[IconConfigTypedDict] + r"""Defines how to render an icon""" + is_deleted: NotRequired[bool] + r"""Indicates whether the agent has been deleted""" + run_count: NotRequired[int] + r"""Total number of runs for this agent over the specified time period.""" + mins_per_run: NotRequired[float] + r"""Average minutes saved per run for this agent over the specified time period.""" + feedback_user_count: NotRequired[int] + r"""Total number of users who provided feedback on time saved for this agent over the specified time period.""" + + +class AgentsTimeSavedInsight(BaseModel): + agent_id: Annotated[Optional[str], pydantic.Field(alias="agentId")] = None + r"""Agent ID""" + + agent_name: Annotated[Optional[str], pydantic.Field(alias="agentName")] = None + r"""Agent name""" + + icon: Optional[IconConfig] = None + r"""Defines how to render an icon""" + + is_deleted: Annotated[Optional[bool], pydantic.Field(alias="isDeleted")] = None + r"""Indicates whether the agent has been deleted""" + + run_count: Annotated[Optional[int], pydantic.Field(alias="runCount")] = None + r"""Total number of runs for this agent over the specified time period.""" + + mins_per_run: Annotated[Optional[float], pydantic.Field(alias="minsPerRun")] = None + r"""Average minutes saved per run for this agent over the specified time period.""" + + feedback_user_count: Annotated[ + Optional[int], pydantic.Field(alias="feedbackUserCount") + ] = None + r"""Total number of users who provided feedback on time saved for this agent over the specified time period.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "agentId", + "agentName", + "icon", + "isDeleted", + "runCount", + "minsPerRun", + "feedbackUserCount", + ] + ) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + + +try: + AgentsTimeSavedInsight.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/agentsusagebydepartmentinsight.py b/src/glean/api_client/models/agentsusagebydepartmentinsight.py index 206499f6..bcfd9c30 100644 --- a/src/glean/api_client/models/agentsusagebydepartmentinsight.py +++ b/src/glean/api_client/models/agentsusagebydepartmentinsight.py @@ -74,10 +74,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + AgentsUsageByDepartmentInsight.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/agentusecaseinsight.py b/src/glean/api_client/models/agentusecaseinsight.py new file mode 100644 index 00000000..4841a4ed --- /dev/null +++ b/src/glean/api_client/models/agentusecaseinsight.py @@ -0,0 +1,95 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .iconconfig import IconConfig, IconConfigTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +import pydantic +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class AgentUseCaseInsightTypedDict(TypedDict): + use_case: NotRequired[str] + r"""Use case name""" + run_count: NotRequired[int] + r"""Total number of runs for this use case over the specified time period.""" + trend: NotRequired[float] + r"""Percentage change in runs compared to the previous equivalent time period.""" + top_departments: NotRequired[str] + r"""Comma-separated list of the top departments using this use case.""" + top_agent_id: NotRequired[str] + r"""ID of the most-used agent for this use case.""" + top_agent_name: NotRequired[str] + r"""Name of the most-used agent for this use case.""" + top_agent_icon: NotRequired[IconConfigTypedDict] + r"""Defines how to render an icon""" + top_agent_is_deleted: NotRequired[bool] + r"""Indicates whether the top agent has been deleted.""" + + +class AgentUseCaseInsight(BaseModel): + use_case: Annotated[Optional[str], pydantic.Field(alias="useCase")] = None + r"""Use case name""" + + run_count: Annotated[Optional[int], pydantic.Field(alias="runCount")] = None + r"""Total number of runs for this use case over the specified time period.""" + + trend: Optional[float] = None + r"""Percentage change in runs compared to the previous equivalent time period.""" + + top_departments: Annotated[ + Optional[str], pydantic.Field(alias="topDepartments") + ] = None + r"""Comma-separated list of the top departments using this use case.""" + + top_agent_id: Annotated[Optional[str], pydantic.Field(alias="topAgentId")] = None + r"""ID of the most-used agent for this use case.""" + + top_agent_name: Annotated[Optional[str], pydantic.Field(alias="topAgentName")] = ( + None + ) + r"""Name of the most-used agent for this use case.""" + + top_agent_icon: Annotated[ + Optional[IconConfig], pydantic.Field(alias="topAgentIcon") + ] = None + r"""Defines how to render an icon""" + + top_agent_is_deleted: Annotated[ + Optional[bool], pydantic.Field(alias="topAgentIsDeleted") + ] = None + r"""Indicates whether the top agent has been deleted.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "useCase", + "runCount", + "trend", + "topDepartments", + "topAgentId", + "topAgentName", + "topAgentIcon", + "topAgentIsDeleted", + ] + ) + 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: + AgentUseCaseInsight.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/agentusersinsight.py b/src/glean/api_client/models/agentusersinsight.py index dee71aa6..13ed679e 100644 --- a/src/glean/api_client/models/agentusersinsight.py +++ b/src/glean/api_client/models/agentusersinsight.py @@ -66,10 +66,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + AgentUsersInsight.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/aiappactioncounts.py b/src/glean/api_client/models/aiappactioncounts.py deleted file mode 100644 index 5e2a0cdf..00000000 --- a/src/glean/api_client/models/aiappactioncounts.py +++ /dev/null @@ -1,98 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from glean.api_client.types import BaseModel, UNSET_SENTINEL -import pydantic -from pydantic import ConfigDict, model_serializer -from typing import Dict, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class AiAppActionCountsTypedDict(TypedDict): - r"""Map from action to frequency.""" - - total_slackbot_responses: NotRequired[int] - r"""Total number of Slackbot responses, both proactive and reactive.""" - total_slackbot_responses_shared: NotRequired[int] - r"""Total number of Slackbot responses shared publicly (upvoted).""" - total_slackbot_responses_not_helpful: NotRequired[int] - r"""Total number of Slackbot responses rejected as not helpful (downvoted).""" - total_chat_messages: NotRequired[int] - r"""Total number of Chat messages sent in requested period.""" - total_upvotes: NotRequired[int] - r"""Total number of Chat messages which received upvotes by the user.""" - total_downvotes: NotRequired[int] - r"""Total number of Chat messages which received downvotes by the user.""" - - -class AiAppActionCounts(BaseModel): - r"""Map from action to frequency.""" - - model_config = ConfigDict( - populate_by_name=True, arbitrary_types_allowed=True, extra="allow" - ) - __pydantic_extra__: Dict[str, int] = pydantic.Field(init=False) - - total_slackbot_responses: Annotated[ - Optional[int], pydantic.Field(alias="totalSlackbotResponses") - ] = None - r"""Total number of Slackbot responses, both proactive and reactive.""" - - total_slackbot_responses_shared: Annotated[ - Optional[int], pydantic.Field(alias="totalSlackbotResponsesShared") - ] = None - r"""Total number of Slackbot responses shared publicly (upvoted).""" - - total_slackbot_responses_not_helpful: Annotated[ - Optional[int], pydantic.Field(alias="totalSlackbotResponsesNotHelpful") - ] = None - r"""Total number of Slackbot responses rejected as not helpful (downvoted).""" - - total_chat_messages: Annotated[ - Optional[int], pydantic.Field(alias="totalChatMessages") - ] = None - r"""Total number of Chat messages sent in requested period.""" - - total_upvotes: Annotated[Optional[int], pydantic.Field(alias="totalUpvotes")] = None - r"""Total number of Chat messages which received upvotes by the user.""" - - total_downvotes: Annotated[ - Optional[int], pydantic.Field(alias="totalDownvotes") - ] = None - r"""Total number of Chat messages which received downvotes by the user.""" - - @property - def additional_properties(self): - return self.__pydantic_extra__ - - @additional_properties.setter - def additional_properties(self, value): - self.__pydantic_extra__ = value # pyright: ignore[reportIncompatibleVariableOverride] - - @model_serializer(mode="wrap") - def serialize_model(self, handler): - optional_fields = set( - [ - "totalSlackbotResponses", - "totalSlackbotResponsesShared", - "totalSlackbotResponsesNotHelpful", - "totalChatMessages", - "totalUpvotes", - "totalDownvotes", - ] - ) - serialized = handler(self) - m = {} - - for n, f in type(self).model_fields.items(): - k = f.alias or n - val = serialized.get(k) - serialized.pop(k, None) - - if val != UNSET_SENTINEL: - if val is not None or k not in optional_fields: - m[k] = val - for k, v in serialized.items(): - m[k] = v - - return m diff --git a/src/glean/api_client/models/aiappsinsightsresponse.py b/src/glean/api_client/models/aiappsinsightsresponse.py deleted file mode 100644 index 538609cc..00000000 --- a/src/glean/api_client/models/aiappsinsightsresponse.py +++ /dev/null @@ -1,70 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from .aiappactioncounts import AiAppActionCounts, AiAppActionCountsTypedDict -from .useractivityinsight import UserActivityInsight, UserActivityInsightTypedDict -from glean.api_client.types import BaseModel, UNSET_SENTINEL -import pydantic -from pydantic import model_serializer -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class AiAppsInsightsResponseTypedDict(TypedDict): - last_log_timestamp: NotRequired[int] - r"""Unix timestamp of the last activity processed to make the response (in seconds since epoch UTC).""" - ai_app_insights: NotRequired[List[UserActivityInsightTypedDict]] - total_active_users: NotRequired[int] - r"""Total number of active users on the Ai App in the requested period.""" - action_counts: NotRequired[AiAppActionCountsTypedDict] - r"""Map from action to frequency.""" - departments: NotRequired[List[str]] - r"""list of departments applicable for users tab.""" - - -class AiAppsInsightsResponse(BaseModel): - last_log_timestamp: Annotated[ - Optional[int], pydantic.Field(alias="lastLogTimestamp") - ] = None - r"""Unix timestamp of the last activity processed to make the response (in seconds since epoch UTC).""" - - ai_app_insights: Annotated[ - Optional[List[UserActivityInsight]], pydantic.Field(alias="aiAppInsights") - ] = None - - total_active_users: Annotated[ - Optional[int], pydantic.Field(alias="totalActiveUsers") - ] = None - r"""Total number of active users on the Ai App in the requested period.""" - - action_counts: Annotated[ - Optional[AiAppActionCounts], pydantic.Field(alias="actionCounts") - ] = None - r"""Map from action to frequency.""" - - departments: Optional[List[str]] = None - r"""list of departments applicable for users tab.""" - - @model_serializer(mode="wrap") - def serialize_model(self, handler): - optional_fields = set( - [ - "lastLogTimestamp", - "aiAppInsights", - "totalActiveUsers", - "actionCounts", - "departments", - ] - ) - serialized = handler(self) - m = {} - - for n, f in type(self).model_fields.items(): - k = f.alias or n - val = serialized.get(k) - - if val != UNSET_SENTINEL: - if val is not None or k not in optional_fields: - m[k] = val - - return m diff --git a/src/glean/api_client/models/aiinsightsresponse.py b/src/glean/api_client/models/aiinsightsresponse.py deleted file mode 100644 index 320406b9..00000000 --- a/src/glean/api_client/models/aiinsightsresponse.py +++ /dev/null @@ -1,123 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from .useractivityinsight import UserActivityInsight, UserActivityInsightTypedDict -from glean.api_client.types import BaseModel, UNSET_SENTINEL -import pydantic -from pydantic import model_serializer -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class AiInsightsResponseTypedDict(TypedDict): - last_log_timestamp: NotRequired[int] - r"""Unix timestamp of the last activity processed to make the response (in seconds since epoch UTC).""" - assistant_insights: NotRequired[List[UserActivityInsightTypedDict]] - total_active_assistant_users: NotRequired[int] - r"""Total number of Active Assistant users (chat, summary, AIA) in requested period.""" - total_chat_messages: NotRequired[int] - r"""Total number of Chat messages sent in requested period.""" - total_ai_summarizations: NotRequired[int] - r"""Total number of AI Document Summarizations invoked in the requested period.""" - total_ai_answers: NotRequired[int] - r"""Total number of AI Answers generated in the requested period.""" - total_upvotes: NotRequired[int] - r"""Total number of Chat messages which received upvotes by the user.""" - total_downvotes: NotRequired[int] - r"""Total number of Chat messages which received downvotes by the user.""" - total_gleanbot_responses: NotRequired[int] - r"""Total number of Gleanbot responses, both proactive and reactive.""" - total_gleanbot_responses_shared: NotRequired[int] - r"""Total number of Gleanbot responses shared publicly (upvoted).""" - total_gleanbot_responses_not_helpful: NotRequired[int] - r"""Total number of Glean responses rejected as not helpful (downvoted).""" - departments: NotRequired[List[str]] - r"""list of departments applicable for users tab.""" - - -class AiInsightsResponse(BaseModel): - last_log_timestamp: Annotated[ - Optional[int], pydantic.Field(alias="lastLogTimestamp") - ] = None - r"""Unix timestamp of the last activity processed to make the response (in seconds since epoch UTC).""" - - assistant_insights: Annotated[ - Optional[List[UserActivityInsight]], pydantic.Field(alias="assistantInsights") - ] = None - - total_active_assistant_users: Annotated[ - Optional[int], pydantic.Field(alias="totalActiveAssistantUsers") - ] = None - r"""Total number of Active Assistant users (chat, summary, AIA) in requested period.""" - - total_chat_messages: Annotated[ - Optional[int], pydantic.Field(alias="totalChatMessages") - ] = None - r"""Total number of Chat messages sent in requested period.""" - - total_ai_summarizations: Annotated[ - Optional[int], pydantic.Field(alias="totalAiSummarizations") - ] = None - r"""Total number of AI Document Summarizations invoked in the requested period.""" - - total_ai_answers: Annotated[ - Optional[int], pydantic.Field(alias="totalAiAnswers") - ] = None - r"""Total number of AI Answers generated in the requested period.""" - - total_upvotes: Annotated[Optional[int], pydantic.Field(alias="totalUpvotes")] = None - r"""Total number of Chat messages which received upvotes by the user.""" - - total_downvotes: Annotated[ - Optional[int], pydantic.Field(alias="totalDownvotes") - ] = None - r"""Total number of Chat messages which received downvotes by the user.""" - - total_gleanbot_responses: Annotated[ - Optional[int], pydantic.Field(alias="totalGleanbotResponses") - ] = None - r"""Total number of Gleanbot responses, both proactive and reactive.""" - - total_gleanbot_responses_shared: Annotated[ - Optional[int], pydantic.Field(alias="totalGleanbotResponsesShared") - ] = None - r"""Total number of Gleanbot responses shared publicly (upvoted).""" - - total_gleanbot_responses_not_helpful: Annotated[ - Optional[int], pydantic.Field(alias="totalGleanbotResponsesNotHelpful") - ] = None - r"""Total number of Glean responses rejected as not helpful (downvoted).""" - - departments: Optional[List[str]] = None - r"""list of departments applicable for users tab.""" - - @model_serializer(mode="wrap") - def serialize_model(self, handler): - optional_fields = set( - [ - "lastLogTimestamp", - "assistantInsights", - "totalActiveAssistantUsers", - "totalChatMessages", - "totalAiSummarizations", - "totalAiAnswers", - "totalUpvotes", - "totalDownvotes", - "totalGleanbotResponses", - "totalGleanbotResponsesShared", - "totalGleanbotResponsesNotHelpful", - "departments", - ] - ) - serialized = handler(self) - m = {} - - for n, f in type(self).model_fields.items(): - k = f.alias or n - val = serialized.get(k) - - if val != UNSET_SENTINEL: - if val is not None or k not in optional_fields: - m[k] = val - - return m diff --git a/src/glean/api_client/models/allowlistoptions.py b/src/glean/api_client/models/allowlistoptions.py index f49943d2..0059b3cd 100644 --- a/src/glean/api_client/models/allowlistoptions.py +++ b/src/glean/api_client/models/allowlistoptions.py @@ -8,27 +8,32 @@ class AllowlistOptionsTypedDict(TypedDict): - r"""Terms that are allow-listed during the scans. If any finding picked up by a rule exactly matches a term in the allow-list, it will not be counted as a violation.""" + r"""Terms and regexes that are allow-listed during the scans. If any finding picked up by a rule exactly matches a term, or matches a regex, in the allow-list, it will not be counted as a violation.""" terms: NotRequired[List[str]] r"""list of words and phrases to consider as whitelisted content""" + regexes: NotRequired[List[str]] + r"""list of regular expressions whose matches are considered whitelisted content""" class AllowlistOptions(BaseModel): - r"""Terms that are allow-listed during the scans. If any finding picked up by a rule exactly matches a term in the allow-list, it will not be counted as a violation.""" + r"""Terms and regexes that are allow-listed during the scans. If any finding picked up by a rule exactly matches a term, or matches a regex, in the allow-list, it will not be counted as a violation.""" terms: Optional[List[str]] = None r"""list of words and phrases to consider as whitelisted content""" + regexes: Optional[List[str]] = None + r"""list of regular expressions whose matches are considered whitelisted content""" + @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = set(["terms"]) + optional_fields = set(["terms", "regexes"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/announcement.py b/src/glean/api_client/models/announcement.py index 750b4017..2e111b78 100644 --- a/src/glean/api_client/models/announcement.py +++ b/src/glean/api_client/models/announcement.py @@ -3,27 +3,29 @@ from __future__ import annotations from .document import Document, DocumentTypedDict from .facetfilter import FacetFilter, FacetFilterTypedDict +from .favoriteinfo import FavoriteInfo, FavoriteInfoTypedDict from .objectpermissions import ObjectPermissions, ObjectPermissionsTypedDict from .person import Person, PersonTypedDict from .structuredtext import StructuredText, StructuredTextTypedDict from .thumbnail import Thumbnail, ThumbnailTypedDict from datetime import datetime from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import List, Optional from typing_extensions import Annotated, NotRequired, TypedDict -class AnnouncementChannel(str, Enum): +class AnnouncementChannel(str, Enum, metaclass=utils.OpenEnumMeta): r"""This determines whether this is a Social Feed post or a regular announcement.""" MAIN = "MAIN" SOCIAL_FEED = "SOCIAL_FEED" -class AnnouncementPostType(str, Enum): +class AnnouncementPostType(str, Enum, metaclass=utils.OpenEnumMeta): r"""This determines whether this is an external-link post or a regular announcement post. TEXT - Regular announcement that can contain rich text. LINK - Announcement that is linked to an external site.""" TEXT = "TEXT" @@ -52,7 +54,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -90,6 +92,8 @@ class AnnouncementTypedDict(TypedDict): draft_id: NotRequired[int] r"""The opaque id of the associated draft.""" permissions: NotRequired[ObjectPermissionsTypedDict] + tracking_token: NotRequired[str] + r"""An opaque token that represents this particular UGC. To be used for `/feedback` reporting.""" id: NotRequired[int] r"""The opaque id of the announcement.""" author: NotRequired[PersonTypedDict] @@ -102,6 +106,7 @@ class AnnouncementTypedDict(TypedDict): source_document: NotRequired[DocumentTypedDict] is_published: NotRequired[bool] r"""Whether or not the announcement is published.""" + favorite_info: NotRequired[FavoriteInfoTypedDict] class Announcement(BaseModel): @@ -159,6 +164,11 @@ class Announcement(BaseModel): permissions: Optional[ObjectPermissions] = None + tracking_token: Annotated[Optional[str], pydantic.Field(alias="trackingToken")] = ( + None + ) + r"""An opaque token that represents this particular UGC. To be used for `/feedback` reporting.""" + id: Optional[int] = None r"""The opaque id of the announcement.""" @@ -187,6 +197,28 @@ class Announcement(BaseModel): is_published: Annotated[Optional[bool], pydantic.Field(alias="isPublished")] = None r"""Whether or not the announcement is published.""" + favorite_info: Annotated[ + Optional[FavoriteInfo], pydantic.Field(alias="favoriteInfo") + ] = None + + @field_serializer("channel") + def serialize_channel(self, value): + if isinstance(value, str): + try: + return models.AnnouncementChannel(value) + except ValueError: + return value + return value + + @field_serializer("post_type") + def serialize_post_type(self, value): + if isinstance(value, str): + try: + return models.AnnouncementPostType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -207,6 +239,7 @@ def serialize_model(self, handler): "viewUrl", "draftId", "permissions", + "trackingToken", "id", "author", "createTimestamp", @@ -215,6 +248,7 @@ def serialize_model(self, handler): "viewerInfo", "sourceDocument", "isPublished", + "favoriteInfo", ] ) serialized = handler(self) @@ -222,10 +256,20 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + AnnouncementViewerInfo.model_rebuild() +except NameError: + pass +try: + Announcement.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/anonymousevent.py b/src/glean/api_client/models/anonymousevent.py index cfb4f58a..96c2e34b 100644 --- a/src/glean/api_client/models/anonymousevent.py +++ b/src/glean/api_client/models/anonymousevent.py @@ -3,14 +3,15 @@ from __future__ import annotations from .timeinterval import TimeInterval, TimeIntervalTypedDict from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict -class AnonymousEventEventType(str, Enum): +class AnonymousEventEventType(str, Enum, metaclass=utils.OpenEnumMeta): r"""The nature of the event, for example \"out of office\".""" DEFAULT = "DEFAULT" @@ -35,6 +36,15 @@ class AnonymousEvent(BaseModel): ] = None r"""The nature of the event, for example \"out of office\".""" + @field_serializer("event_type") + def serialize_event_type(self, value): + if isinstance(value, str): + try: + return models.AnonymousEventEventType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["time", "eventType"]) @@ -43,10 +53,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + AnonymousEvent.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/answer.py b/src/glean/api_client/models/answer.py index 9f610ed5..c0835860 100644 --- a/src/glean/api_client/models/answer.py +++ b/src/glean/api_client/models/answer.py @@ -6,9 +6,10 @@ from .objectpermissions import ObjectPermissions, ObjectPermissionsTypedDict from datetime import datetime from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import List, Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -25,7 +26,7 @@ from .verification import Verification, VerificationTypedDict -class AnswerSourceType(str, Enum): +class AnswerSourceType(str, Enum, metaclass=utils.OpenEnumMeta): DOCUMENT = "DOCUMENT" ASSISTANT = "ASSISTANT" @@ -53,6 +54,8 @@ class AnswerTypedDict(TypedDict): source_document_spec: NotRequired[DocumentSpecUnionTypedDict] source_type: NotRequired[AnswerSourceType] permissions: NotRequired[ObjectPermissionsTypedDict] + tracking_token: NotRequired[str] + r"""An opaque token that represents this particular UGC. To be used for `/feedback` reporting.""" combined_answer_text: NotRequired["StructuredTextTypedDict"] likes: NotRequired["AnswerLikesTypedDict"] author: NotRequired["PersonTypedDict"] @@ -89,7 +92,7 @@ class Answer(BaseModel): board_id: Annotated[ Optional[int], pydantic.Field( - deprecated="warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible.", + deprecated="warning: ** DEPRECATED ** - Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Answer Boards no longer supported.", alias="boardId", ), ] = None @@ -123,6 +126,11 @@ class Answer(BaseModel): permissions: Optional[ObjectPermissions] = None + tracking_token: Annotated[Optional[str], pydantic.Field(alias="trackingToken")] = ( + None + ) + r"""An opaque token that represents this particular UGC. To be used for `/feedback` reporting.""" + combined_answer_text: Annotated[ Optional["StructuredText"], pydantic.Field(alias="combinedAnswerText") ] = None @@ -157,6 +165,15 @@ class Answer(BaseModel): Optional["Document"], pydantic.Field(alias="sourceDocument") ] = None + @field_serializer("source_type") + def serialize_source_type(self, value): + if isinstance(value, str): + try: + return models.AnswerSourceType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -173,6 +190,7 @@ def serialize_model(self, handler): "sourceDocumentSpec", "sourceType", "permissions", + "trackingToken", "combinedAnswerText", "likes", "author", @@ -190,10 +208,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + Answer.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/answercreationdata.py b/src/glean/api_client/models/answercreationdata.py index cb1869dc..2e5aee70 100644 --- a/src/glean/api_client/models/answercreationdata.py +++ b/src/glean/api_client/models/answercreationdata.py @@ -58,7 +58,7 @@ class AnswerCreationData(BaseModel): board_id: Annotated[ Optional[int], pydantic.Field( - deprecated="warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible.", + deprecated="warning: ** DEPRECATED ** - Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Answer Boards no longer supported.", alias="boardId", ), ] = None @@ -123,10 +123,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + AnswerCreationData.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/answerlike.py b/src/glean/api_client/models/answerlike.py index d915c1a9..abee3d1a 100644 --- a/src/glean/api_client/models/answerlike.py +++ b/src/glean/api_client/models/answerlike.py @@ -34,10 +34,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + AnswerLike.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/answerlikes.py b/src/glean/api_client/models/answerlikes.py index 7eaed580..cd1539f0 100644 --- a/src/glean/api_client/models/answerlikes.py +++ b/src/glean/api_client/models/answerlikes.py @@ -26,3 +26,9 @@ class AnswerLikes(BaseModel): num_likes: Annotated[int, pydantic.Field(alias="numLikes")] r"""The total number of likes for the answer.""" + + +try: + AnswerLikes.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/answerresult.py b/src/glean/api_client/models/answerresult.py index 118b4fc4..f0b6ce8a 100644 --- a/src/glean/api_client/models/answerresult.py +++ b/src/glean/api_client/models/answerresult.py @@ -2,6 +2,7 @@ from __future__ import annotations from .answer import Answer, AnswerTypedDict +from .favoriteinfo import FavoriteInfo, FavoriteInfoTypedDict from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic from pydantic import model_serializer @@ -12,29 +13,44 @@ class AnswerResultTypedDict(TypedDict): answer: AnswerTypedDict tracking_token: NotRequired[str] - r"""An opaque token that represents this particular Answer. To be used for `/feedback` reporting.""" + r"""Use `answer.trackingToken` instead.""" + favorite_info: NotRequired[FavoriteInfoTypedDict] class AnswerResult(BaseModel): answer: Answer - tracking_token: Annotated[Optional[str], pydantic.Field(alias="trackingToken")] = ( - None - ) - r"""An opaque token that represents this particular Answer. To be used for `/feedback` reporting.""" + tracking_token: Annotated[ + Optional[str], + pydantic.Field( + deprecated="warning: ** DEPRECATED ** - Deprecated on 2026-05-07, removal scheduled for 2027-01-15: Use `answer.trackingToken` instead..", + alias="trackingToken", + ), + ] = None + r"""Use `answer.trackingToken` instead.""" + + favorite_info: Annotated[ + Optional[FavoriteInfo], pydantic.Field(alias="favoriteInfo") + ] = None @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = set(["trackingToken"]) + optional_fields = set(["trackingToken", "favoriteInfo"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + AnswerResult.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/appresult.py b/src/glean/api_client/models/appresult.py index cccd14a9..2105b7fe 100644 --- a/src/glean/api_client/models/appresult.py +++ b/src/glean/api_client/models/appresult.py @@ -40,10 +40,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + AppResult.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/assistantinsightsresponse.py b/src/glean/api_client/models/assistantinsightsresponse.py index 477229a7..47e9bf2f 100644 --- a/src/glean/api_client/models/assistantinsightsresponse.py +++ b/src/glean/api_client/models/assistantinsightsresponse.py @@ -15,9 +15,9 @@ class AssistantInsightsResponseTypedDict(TypedDict): monthly_active_users: NotRequired[int] - r"""Number of current Monthly Active Users, in the specified departments.""" + r"""Number of current Monthly Active Users.""" weekly_active_users: NotRequired[int] - r"""Number of current Weekly Active Users, in the specified departments.""" + r"""Number of current Weekly Active Users.""" last_updated_ts: NotRequired[int] r"""Unix timestamp of the last update for the insights data in the response.""" monthly_active_user_timeseries: NotRequired[LabeledCountInfoTypedDict] @@ -38,12 +38,12 @@ class AssistantInsightsResponse(BaseModel): monthly_active_users: Annotated[ Optional[int], pydantic.Field(alias="monthlyActiveUsers") ] = None - r"""Number of current Monthly Active Users, in the specified departments.""" + r"""Number of current Monthly Active Users.""" weekly_active_users: Annotated[ Optional[int], pydantic.Field(alias="weeklyActiveUsers") ] = None - r"""Number of current Weekly Active Users, in the specified departments.""" + r"""Number of current Weekly Active Users.""" last_updated_ts: Annotated[Optional[int], pydantic.Field(alias="lastUpdatedTs")] = ( None @@ -119,10 +119,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + AssistantInsightsResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/authconfig.py b/src/glean/api_client/models/authconfig.py index f7fa53f8..f085390a 100644 --- a/src/glean/api_client/models/authconfig.py +++ b/src/glean/api_client/models/authconfig.py @@ -3,14 +3,15 @@ from __future__ import annotations from datetime import datetime from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import List, Optional from typing_extensions import Annotated, NotRequired, TypedDict -class AuthConfigType(str, Enum): +class AuthConfigType(str, Enum, metaclass=utils.OpenEnumMeta): r"""The type of authentication being used. Use 'OAUTH_*' when Glean calls an external API (e.g., Jira) on behalf of a user to obtain an OAuth token. 'OAUTH_ADMIN' utilizes an admin token for external API calls on behalf all users. @@ -27,14 +28,14 @@ class AuthConfigType(str, Enum): DWD = "DWD" -class GrantType(str, Enum): +class GrantType(str, Enum, metaclass=utils.OpenEnumMeta): r"""The type of grant type being used.""" AUTH_CODE = "AUTH_CODE" CLIENT_CREDENTIALS = "CLIENT_CREDENTIALS" -class AuthConfigStatus(str, Enum): +class AuthConfigStatus(str, Enum, metaclass=utils.OpenEnumMeta): r"""Auth status of the tool.""" AWAITING_AUTH = "AWAITING_AUTH" @@ -42,6 +43,32 @@ class AuthConfigStatus(str, Enum): AUTH_DISABLED = "AUTH_DISABLED" +class TokenEndpointAuthMethod(str, Enum, metaclass=utils.OpenEnumMeta): + r"""The OAuth 2.0 token endpoint authentication method (RFC 7591). Determines how the client authenticates when exchanging an authorization code for a token. Values use lowercase to match the OAuth 2.0 wire format (RFC 7591 Section 2).""" + + # Send client_id and client_secret as form fields in the token request body. + CLIENT_SECRET_POST = "client_secret_post" + # Send client_id and client_secret via the HTTP Basic Authorization header. + CLIENT_SECRET_BASIC = "client_secret_basic" + # Public client - omit the client secret and authenticate with the PKCE code_verifier only. + NONE = "none" + # Authenticate with a JWT client assertion signed by the client's private key (RFC 7523 Section 2.2 / OIDC Core Section 9). Requires a key pair pre-registered with the authorization server. + PRIVATE_KEY_JWT = "private_key_jwt" + + +class AuthHeaderType(str, Enum, metaclass=utils.OpenEnumMeta): + r"""Defines the header structure for sending the API key or token to the server. Defaults to AUTHORIZATION_BEARER. Select the specific header format the server expects for transmitting the key.""" + + # Sends \"Authorization: Bearer \". + AUTHORIZATION_BEARER = "AUTHORIZATION_BEARER" + # Sends \"Authorization: Token \". + AUTHORIZATION_TOKEN = "AUTHORIZATION_TOKEN" + # Sends \"Authorization: ApiKey \". + AUTHORIZATION_API_KEY = "AUTHORIZATION_API_KEY" + # Sends \"X-API-Key: \". No Authorization header is sent. + X_API_KEY = "X_API_KEY" + + class AuthConfigTypedDict(TypedDict): r"""Config for tool's authentication method.""" @@ -69,6 +96,12 @@ class AuthConfigTypedDict(TypedDict): r"""A list of strings denoting the different audience which can access the tool.""" authorization_url: NotRequired[str] r"""The OAuth provider's endpoint, where access tokens are requested.""" + resource: NotRequired[str] + r"""The OAuth 2.0 Resource Indicator (RFC 8707) for the protected resource. Discovered from Protected Resource Metadata (RFC 9728) during DCR. Included in authorization and token exchange requests when present.""" + token_endpoint_auth_method: NotRequired[TokenEndpointAuthMethod] + r"""The OAuth 2.0 token endpoint authentication method (RFC 7591). Determines how the client authenticates when exchanging an authorization code for a token. Values use lowercase to match the OAuth 2.0 wire format (RFC 7591 Section 2).""" + auth_header_type: NotRequired[AuthHeaderType] + r"""Defines the header structure for sending the API key or token to the server. Defaults to AUTHORIZATION_BEARER. Select the specific header format the server expects for transmitting the key.""" last_authorized_at: NotRequired[datetime] r"""The time the tool was last authorized in ISO format (ISO 8601).""" @@ -111,11 +144,67 @@ class AuthConfig(BaseModel): authorization_url: Optional[str] = None r"""The OAuth provider's endpoint, where access tokens are requested.""" + resource: Optional[str] = None + r"""The OAuth 2.0 Resource Indicator (RFC 8707) for the protected resource. Discovered from Protected Resource Metadata (RFC 9728) during DCR. Included in authorization and token exchange requests when present.""" + + token_endpoint_auth_method: Optional[TokenEndpointAuthMethod] = None + r"""The OAuth 2.0 token endpoint authentication method (RFC 7591). Determines how the client authenticates when exchanging an authorization code for a token. Values use lowercase to match the OAuth 2.0 wire format (RFC 7591 Section 2).""" + + auth_header_type: Annotated[ + Optional[AuthHeaderType], pydantic.Field(alias="authHeaderType") + ] = None + r"""Defines the header structure for sending the API key or token to the server. Defaults to AUTHORIZATION_BEARER. Select the specific header format the server expects for transmitting the key.""" + last_authorized_at: Annotated[ Optional[datetime], pydantic.Field(alias="lastAuthorizedAt") ] = None r"""The time the tool was last authorized in ISO format (ISO 8601).""" + @field_serializer("type") + def serialize_type(self, value): + if isinstance(value, str): + try: + return models.AuthConfigType(value) + except ValueError: + return value + return value + + @field_serializer("grant_type") + def serialize_grant_type(self, value): + if isinstance(value, str): + try: + return models.GrantType(value) + except ValueError: + return value + return value + + @field_serializer("status") + def serialize_status(self, value): + if isinstance(value, str): + try: + return models.AuthConfigStatus(value) + except ValueError: + return value + return value + + @field_serializer("token_endpoint_auth_method") + def serialize_token_endpoint_auth_method(self, value): + if isinstance(value, str): + try: + return models.TokenEndpointAuthMethod(value) + except ValueError: + return value + return value + + @field_serializer("auth_header_type") + def serialize_auth_header_type(self, value): + if isinstance(value, str): + try: + return models.AuthHeaderType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -129,6 +218,9 @@ def serialize_model(self, handler): "scopes", "audiences", "authorization_url", + "resource", + "token_endpoint_auth_method", + "authHeaderType", "lastAuthorizedAt", ] ) @@ -137,10 +229,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + AuthConfig.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/authcontext.py b/src/glean/api_client/models/authcontext.py new file mode 100644 index 00000000..a184a4fc --- /dev/null +++ b/src/glean/api_client/models/authcontext.py @@ -0,0 +1,44 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel, UNSET_SENTINEL +import pydantic +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class AuthContextTypedDict(TypedDict): + r"""Context for authentication responses, containing identifiers for the entity being authenticated.""" + + server_id: NotRequired[str] + r"""ID of the MCP server (populated when toolType is MCP).""" + + +class AuthContext(BaseModel): + r"""Context for authentication responses, containing identifiers for the entity being authenticated.""" + + server_id: Annotated[Optional[str], pydantic.Field(alias="serverId")] = None + r"""ID of the MCP server (populated when toolType is MCP).""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["serverId"]) + 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: + AuthContext.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/authorizeactionpackop.py b/src/glean/api_client/models/authorizeactionpackop.py new file mode 100644 index 00000000..fb2d3205 --- /dev/null +++ b/src/glean/api_client/models/authorizeactionpackop.py @@ -0,0 +1,31 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .authorizeactionpackrequest import ( + AuthorizeActionPackRequest, + AuthorizeActionPackRequestTypedDict, +) +from glean.api_client.types import BaseModel +from glean.api_client.utils import FieldMetadata, PathParamMetadata, RequestMetadata +import pydantic +from typing_extensions import Annotated, TypedDict + + +class AuthorizeActionPackRequestRequestTypedDict(TypedDict): + action_pack_id: str + r"""ID of the action pack to query or authorize.""" + authorize_action_pack_request: AuthorizeActionPackRequestTypedDict + + +class AuthorizeActionPackRequestRequest(BaseModel): + action_pack_id: Annotated[ + str, + pydantic.Field(alias="actionPackId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""ID of the action pack to query or authorize.""" + + authorize_action_pack_request: Annotated[ + AuthorizeActionPackRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] diff --git a/src/glean/api_client/models/authorizeactionpackrequest.py b/src/glean/api_client/models/authorizeactionpackrequest.py new file mode 100644 index 00000000..92a3a3f5 --- /dev/null +++ b/src/glean/api_client/models/authorizeactionpackrequest.py @@ -0,0 +1,28 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel +import pydantic +from typing_extensions import Annotated, TypedDict + + +class AuthorizeActionPackRequestTypedDict(TypedDict): + return_url: str + r"""URL on the customer's domain to redirect the end user's browser back to after the third-party OAuth + callback completes. Must be present in the tenant's return URL allowlist. + + """ + + +class AuthorizeActionPackRequest(BaseModel): + return_url: Annotated[str, pydantic.Field(alias="returnUrl")] + r"""URL on the customer's domain to redirect the end user's browser back to after the third-party OAuth + callback completes. Must be present in the tenant's return URL allowlist. + + """ + + +try: + AuthorizeActionPackRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/authorizeactionpackresponse.py b/src/glean/api_client/models/authorizeactionpackresponse.py new file mode 100644 index 00000000..7d8a75da --- /dev/null +++ b/src/glean/api_client/models/authorizeactionpackresponse.py @@ -0,0 +1,28 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel +import pydantic +from typing_extensions import Annotated, TypedDict + + +class AuthorizeActionPackResponseTypedDict(TypedDict): + redirect_url: str + r"""URL that the customer UI should navigate the end user to in order to begin the third-party OAuth flow. + After the user consents, control returns to `returnUrl` from the request. + + """ + + +class AuthorizeActionPackResponse(BaseModel): + redirect_url: Annotated[str, pydantic.Field(alias="redirectUrl")] + r"""URL that the customer UI should navigate the end user to in order to begin the third-party OAuth flow. + After the user consents, control returns to `returnUrl` from the request. + + """ + + +try: + AuthorizeActionPackResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/authorizetoolserverop.py b/src/glean/api_client/models/authorizetoolserverop.py new file mode 100644 index 00000000..9bca9ad4 --- /dev/null +++ b/src/glean/api_client/models/authorizetoolserverop.py @@ -0,0 +1,31 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .authorizetoolserverrequest import ( + AuthorizeToolServerRequest, + AuthorizeToolServerRequestTypedDict, +) +from glean.api_client.types import BaseModel +from glean.api_client.utils import FieldMetadata, PathParamMetadata, RequestMetadata +import pydantic +from typing_extensions import Annotated, TypedDict + + +class AuthorizeToolServerRequestRequestTypedDict(TypedDict): + server_id: str + r"""Unique identifier of the tool server.""" + authorize_tool_server_request: AuthorizeToolServerRequestTypedDict + + +class AuthorizeToolServerRequestRequest(BaseModel): + server_id: Annotated[ + str, + pydantic.Field(alias="serverId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""Unique identifier of the tool server.""" + + authorize_tool_server_request: Annotated[ + AuthorizeToolServerRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] diff --git a/src/glean/api_client/models/authorizetoolserverrequest.py b/src/glean/api_client/models/authorizetoolserverrequest.py new file mode 100644 index 00000000..fda6a51b --- /dev/null +++ b/src/glean/api_client/models/authorizetoolserverrequest.py @@ -0,0 +1,28 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel +import pydantic +from typing_extensions import Annotated, TypedDict + + +class AuthorizeToolServerRequestTypedDict(TypedDict): + return_url: str + r"""URL to redirect the end user's browser back to after the OAuth flow completes. + Must be present in the tenant's configured return URL allowlist. + + """ + + +class AuthorizeToolServerRequest(BaseModel): + return_url: Annotated[str, pydantic.Field(alias="returnUrl")] + r"""URL to redirect the end user's browser back to after the OAuth flow completes. + Must be present in the tenant's configured return URL allowlist. + + """ + + +try: + AuthorizeToolServerRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/authorizetoolserverresponse.py b/src/glean/api_client/models/authorizetoolserverresponse.py new file mode 100644 index 00000000..c5e52da0 --- /dev/null +++ b/src/glean/api_client/models/authorizetoolserverresponse.py @@ -0,0 +1,28 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel +import pydantic +from typing_extensions import Annotated, TypedDict + + +class AuthorizeToolServerResponseTypedDict(TypedDict): + authorization_url: str + r"""URL that the client should navigate the end user to in order to begin the OAuth flow. + After the user consents, control returns to `returnUrl` from the request. + + """ + + +class AuthorizeToolServerResponse(BaseModel): + authorization_url: Annotated[str, pydantic.Field(alias="authorizationUrl")] + r"""URL that the client should navigate the end user to in order to begin the OAuth flow. + After the user consents, control returns to `returnUrl` from the request. + + """ + + +try: + AuthorizeToolServerResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/authstatus.py b/src/glean/api_client/models/authstatus.py new file mode 100644 index 00000000..ea66e454 --- /dev/null +++ b/src/glean/api_client/models/authstatus.py @@ -0,0 +1,15 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +from glean.api_client import utils + + +class AuthStatus(str, Enum, metaclass=utils.OpenEnumMeta): + r"""The per-user authorization status for a datasource.""" + + DISABLED = "DISABLED" + AWAITING_AUTH = "AWAITING_AUTH" + AUTHORIZED = "AUTHORIZED" + STALE_OAUTH = "STALE_OAUTH" + SEG_MIGRATION = "SEG_MIGRATION" diff --git a/src/glean/api_client/models/authtoken.py b/src/glean/api_client/models/authtoken.py index e04713a6..7551c7f6 100644 --- a/src/glean/api_client/models/authtoken.py +++ b/src/glean/api_client/models/authtoken.py @@ -42,10 +42,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + AuthToken.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/autocompleteop.py b/src/glean/api_client/models/autocompleteop.py new file mode 100644 index 00000000..97d2bf4e --- /dev/null +++ b/src/glean/api_client/models/autocompleteop.py @@ -0,0 +1,46 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .autocompleterequest import AutocompleteRequest, AutocompleteRequestTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class AutocompleteRequestRequestTypedDict(TypedDict): + autocomplete_request: AutocompleteRequestTypedDict + r"""Autocomplete request""" + locale: NotRequired[str] + r"""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`.""" + + +class AutocompleteRequestRequest(BaseModel): + autocomplete_request: Annotated[ + AutocompleteRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""Autocomplete request""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""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`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/autocompleterequest.py b/src/glean/api_client/models/autocompleterequest.py index c0f830e0..c57ae464 100644 --- a/src/glean/api_client/models/autocompleterequest.py +++ b/src/glean/api_client/models/autocompleterequest.py @@ -102,10 +102,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + AutocompleteRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/autocompleteresponse.py b/src/glean/api_client/models/autocompleteresponse.py index bef3b582..cca14924 100644 --- a/src/glean/api_client/models/autocompleteresponse.py +++ b/src/glean/api_client/models/autocompleteresponse.py @@ -76,10 +76,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + AutocompleteResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/autocompleteresult.py b/src/glean/api_client/models/autocompleteresult.py index a087620c..7b4d8010 100644 --- a/src/glean/api_client/models/autocompleteresult.py +++ b/src/glean/api_client/models/autocompleteresult.py @@ -7,14 +7,15 @@ from .structuredresult import StructuredResult, StructuredResultTypedDict from .textrange import TextRange, TextRangeTypedDict from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import List, Optional from typing_extensions import Annotated, NotRequired, TypedDict -class AutocompleteResultResultType(str, Enum): +class AutocompleteResultResultType(str, Enum, metaclass=utils.OpenEnumMeta): ADDITIONAL_DOCUMENT = "ADDITIONAL_DOCUMENT" APP = "APP" BROWSER_HISTORY = "BROWSER_HISTORY" @@ -88,6 +89,15 @@ class AutocompleteResult(BaseModel): ranges: Optional[List[TextRange]] = None r"""Subsections of the result string to which some special formatting should be applied (eg. bold)""" + @field_serializer("result_type") + def serialize_result_type(self, value): + if isinstance(value, str): + try: + return models.AutocompleteResultResultType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -109,10 +119,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + AutocompleteResult.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/autocompleteresultgroup.py b/src/glean/api_client/models/autocompleteresultgroup.py index 54aaacb4..09788d2b 100644 --- a/src/glean/api_client/models/autocompleteresultgroup.py +++ b/src/glean/api_client/models/autocompleteresultgroup.py @@ -39,10 +39,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + AutocompleteResultGroup.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/badge.py b/src/glean/api_client/models/badge.py index fd75015c..d5675152 100644 --- a/src/glean/api_client/models/badge.py +++ b/src/glean/api_client/models/badge.py @@ -47,10 +47,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + Badge.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/bulkindexdocumentsrequest.py b/src/glean/api_client/models/bulkindexdocumentsrequest.py index b564922a..db14fe54 100644 --- a/src/glean/api_client/models/bulkindexdocumentsrequest.py +++ b/src/glean/api_client/models/bulkindexdocumentsrequest.py @@ -71,10 +71,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + BulkIndexDocumentsRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/bulkindexemployeesrequest.py b/src/glean/api_client/models/bulkindexemployeesrequest.py index 8704cbf5..43014e31 100644 --- a/src/glean/api_client/models/bulkindexemployeesrequest.py +++ b/src/glean/api_client/models/bulkindexemployeesrequest.py @@ -69,10 +69,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + BulkIndexEmployeesRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/bulkindexgroupsrequest.py b/src/glean/api_client/models/bulkindexgroupsrequest.py index 4d26f984..99f12d8b 100644 --- a/src/glean/api_client/models/bulkindexgroupsrequest.py +++ b/src/glean/api_client/models/bulkindexgroupsrequest.py @@ -74,10 +74,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + BulkIndexGroupsRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/bulkindexmembershipsrequest.py b/src/glean/api_client/models/bulkindexmembershipsrequest.py index 681da415..81740610 100644 --- a/src/glean/api_client/models/bulkindexmembershipsrequest.py +++ b/src/glean/api_client/models/bulkindexmembershipsrequest.py @@ -67,10 +67,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + BulkIndexMembershipsRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/bulkindexshortcutsrequest.py b/src/glean/api_client/models/bulkindexshortcutsrequest.py index b1d9aa0c..3aae4c03 100644 --- a/src/glean/api_client/models/bulkindexshortcutsrequest.py +++ b/src/glean/api_client/models/bulkindexshortcutsrequest.py @@ -52,10 +52,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + BulkIndexShortcutsRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/bulkindexteamsrequest.py b/src/glean/api_client/models/bulkindexteamsrequest.py index efff9808..0fd38bfa 100644 --- a/src/glean/api_client/models/bulkindexteamsrequest.py +++ b/src/glean/api_client/models/bulkindexteamsrequest.py @@ -52,10 +52,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + BulkIndexTeamsRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/bulkindexusersrequest.py b/src/glean/api_client/models/bulkindexusersrequest.py index 3c68490a..bfbff92f 100644 --- a/src/glean/api_client/models/bulkindexusersrequest.py +++ b/src/glean/api_client/models/bulkindexusersrequest.py @@ -74,10 +74,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + BulkIndexUsersRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/bulkuploadhistoryevent.py b/src/glean/api_client/models/bulkuploadhistoryevent.py index 650cc89d..b1daac94 100644 --- a/src/glean/api_client/models/bulkuploadhistoryevent.py +++ b/src/glean/api_client/models/bulkuploadhistoryevent.py @@ -2,21 +2,22 @@ from __future__ import annotations from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict -class BulkUploadHistoryEventStatus(str, Enum): +class BulkUploadHistoryEventStatus(str, Enum, metaclass=utils.OpenEnumMeta): r"""The status of the upload, an enum of ACTIVE, SUCCESSFUL""" ACTIVE = "ACTIVE" SUCCESSFUL = "SUCCESSFUL" -class ProcessingState(str, Enum): +class ProcessingState(str, Enum, metaclass=utils.OpenEnumMeta): r"""The current state of the upload, an enum of UNAVAILABLE, UPLOAD STARTED, UPLOAD IN PROGRESS, UPLOAD COMPLETED, DELETION PAUSED, INDEXING COMPLETED""" UNAVAILABLE = "UNAVAILABLE" @@ -62,6 +63,24 @@ class BulkUploadHistoryEvent(BaseModel): ] = None r"""The current state of the upload, an enum of UNAVAILABLE, UPLOAD STARTED, UPLOAD IN PROGRESS, UPLOAD COMPLETED, DELETION PAUSED, INDEXING COMPLETED""" + @field_serializer("status") + def serialize_status(self, value): + if isinstance(value, str): + try: + return models.BulkUploadHistoryEventStatus(value) + except ValueError: + return value + return value + + @field_serializer("processing_state") + def serialize_processing_state(self, value): + if isinstance(value, str): + try: + return models.ProcessingState(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -72,10 +91,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + BulkUploadHistoryEvent.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/calendarattendee.py b/src/glean/api_client/models/calendarattendee.py index fedb2bb8..bc67f962 100644 --- a/src/glean/api_client/models/calendarattendee.py +++ b/src/glean/api_client/models/calendarattendee.py @@ -2,9 +2,10 @@ from __future__ import annotations from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import List, Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -12,7 +13,7 @@ from .person import Person, PersonTypedDict -class ResponseStatus(str, Enum): +class ResponseStatus(str, Enum, metaclass=utils.OpenEnumMeta): ACCEPTED = "ACCEPTED" DECLINED = "DECLINED" NO_RESPONSE = "NO_RESPONSE" @@ -48,6 +49,15 @@ class CalendarAttendee(BaseModel): Optional[ResponseStatus], pydantic.Field(alias="responseStatus") ] = None + @field_serializer("response_status") + def serialize_response_status(self, value): + if isinstance(value, str): + try: + return models.ResponseStatus(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -58,10 +68,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + CalendarAttendee.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/calendarattendees.py b/src/glean/api_client/models/calendarattendees.py index 2bef5de8..40d5ce80 100644 --- a/src/glean/api_client/models/calendarattendees.py +++ b/src/glean/api_client/models/calendarattendees.py @@ -70,10 +70,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + CalendarAttendees.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/calendarevent.py b/src/glean/api_client/models/calendarevent.py index ab061ff1..212954dc 100644 --- a/src/glean/api_client/models/calendarevent.py +++ b/src/glean/api_client/models/calendarevent.py @@ -2,19 +2,27 @@ from __future__ import annotations from .calendarattendees import CalendarAttendees, CalendarAttendeesTypedDict +from .calendarroombookingstatus import CalendarRoomBookingStatus from .conferencedata import ConferenceData, ConferenceDataTypedDict from .eventclassification import EventClassification, EventClassificationTypedDict from .generatedattachment import GeneratedAttachment, GeneratedAttachmentTypedDict from .timeinterval import TimeInterval, TimeIntervalTypedDict from enum import Enum -from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client import models, utils +from glean.api_client.types import ( + BaseModel, + Nullable, + OptionalNullable, + UNSET, + UNSET_SENTINEL, +) import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import List, Optional from typing_extensions import Annotated, NotRequired, TypedDict -class CalendarEventEventType(str, Enum): +class CalendarEventEventType(str, Enum, metaclass=utils.OpenEnumMeta): r"""The nature of the event, for example \"out of office\".""" DEFAULT = "DEFAULT" @@ -32,6 +40,12 @@ class CalendarEventTypedDict(TypedDict): event_type: NotRequired[CalendarEventEventType] r"""The nature of the event, for example \"out of office\".""" attendees: NotRequired[CalendarAttendeesTypedDict] + is_organizer: NotRequired[Nullable[bool]] + r"""Whether the requesting user is the organizer of this event.""" + room_booking_status: NotRequired[CalendarRoomBookingStatus] + r"""The current booking status of the room resource associated with an event.""" + room_name: NotRequired[str] + r"""The display name of the room resource associated with this event.""" location: NotRequired[str] r"""The location that this event is taking place at.""" conference_data: NotRequired[ConferenceDataTypedDict] @@ -65,6 +79,19 @@ class CalendarEvent(BaseModel): attendees: Optional[CalendarAttendees] = None + is_organizer: Annotated[ + OptionalNullable[bool], pydantic.Field(alias="isOrganizer") + ] = UNSET + r"""Whether the requesting user is the organizer of this event.""" + + room_booking_status: Annotated[ + Optional[CalendarRoomBookingStatus], pydantic.Field(alias="roomBookingStatus") + ] = None + r"""The current booking status of the room resource associated with an event.""" + + room_name: Annotated[Optional[str], pydantic.Field(alias="roomName")] = None + r"""The display name of the room resource associated with this event.""" + location: Optional[str] = None r"""The location that this event is taking place at.""" @@ -95,6 +122,24 @@ class CalendarEvent(BaseModel): pydantic.Field(alias="generatedAttachments"), ] = None + @field_serializer("event_type") + def serialize_event_type(self, value): + if isinstance(value, str): + try: + return models.CalendarEventEventType(value) + except ValueError: + return value + return value + + @field_serializer("room_booking_status") + def serialize_room_booking_status(self, value): + if isinstance(value, str): + try: + return models.CalendarRoomBookingStatus(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -102,6 +147,9 @@ def serialize_model(self, handler): "time", "eventType", "attendees", + "isOrganizer", + "roomBookingStatus", + "roomName", "location", "conferenceData", "description", @@ -112,15 +160,30 @@ def serialize_model(self, handler): "generatedAttachments", ] ) + nullable_fields = set(["isOrganizer"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) if val != UNSET_SENTINEL: - if val is not None or k not in optional_fields: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): m[k] = val return m + + +try: + CalendarEvent.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/calendarroombookingstatus.py b/src/glean/api_client/models/calendarroombookingstatus.py new file mode 100644 index 00000000..908bd784 --- /dev/null +++ b/src/glean/api_client/models/calendarroombookingstatus.py @@ -0,0 +1,14 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +from glean.api_client import utils + + +class CalendarRoomBookingStatus(str, Enum, metaclass=utils.OpenEnumMeta): + r"""The current booking status of the room resource associated with an event.""" + + NONE = "NONE" + ACCEPTED = "ACCEPTED" + DECLINED = "DECLINED" + PENDING = "PENDING" diff --git a/src/glean/api_client/models/canonicalizingregextype.py b/src/glean/api_client/models/canonicalizingregextype.py index f4087d71..33218a64 100644 --- a/src/glean/api_client/models/canonicalizingregextype.py +++ b/src/glean/api_client/models/canonicalizingregextype.py @@ -34,10 +34,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + CanonicalizingRegexType.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/channelinviteinfo.py b/src/glean/api_client/models/channelinviteinfo.py index f74f629f..a97c2ccd 100644 --- a/src/glean/api_client/models/channelinviteinfo.py +++ b/src/glean/api_client/models/channelinviteinfo.py @@ -3,9 +3,10 @@ from __future__ import annotations from .communicationchannel import CommunicationChannel from datetime import datetime +from glean.api_client import models from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -48,6 +49,15 @@ class ChannelInviteInfo(BaseModel): ] = None r"""The time this person was reminded in ISO format (ISO 8601) if a reminder was sent.""" + @field_serializer("channel") + def serialize_channel(self, value): + if isinstance(value, str): + try: + return models.CommunicationChannel(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -58,10 +68,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + ChannelInviteInfo.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/chat.py b/src/glean/api_client/models/chat.py index 23f6f2ad..2c89193d 100644 --- a/src/glean/api_client/models/chat.py +++ b/src/glean/api_client/models/chat.py @@ -98,10 +98,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + Chat.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/chatfile.py b/src/glean/api_client/models/chatfile.py index c8522186..cf7a5a7a 100644 --- a/src/glean/api_client/models/chatfile.py +++ b/src/glean/api_client/models/chatfile.py @@ -44,7 +44,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/chatfilefailurereason.py b/src/glean/api_client/models/chatfilefailurereason.py index fdae3190..cb81e15e 100644 --- a/src/glean/api_client/models/chatfilefailurereason.py +++ b/src/glean/api_client/models/chatfilefailurereason.py @@ -2,9 +2,10 @@ from __future__ import annotations from enum import Enum +from glean.api_client import utils -class ChatFileFailureReason(str, Enum): +class ChatFileFailureReason(str, Enum, metaclass=utils.OpenEnumMeta): r"""Reason for failed status.""" PARSE_FAILED = "PARSE_FAILED" diff --git a/src/glean/api_client/models/chatfilemetadata.py b/src/glean/api_client/models/chatfilemetadata.py index 48eea598..b4cb6dc4 100644 --- a/src/glean/api_client/models/chatfilemetadata.py +++ b/src/glean/api_client/models/chatfilemetadata.py @@ -3,9 +3,10 @@ from __future__ import annotations from .chatfilefailurereason import ChatFileFailureReason from .chatfilestatus import ChatFileStatus +from glean.api_client import models from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -47,6 +48,24 @@ class ChatFileMetadata(BaseModel): mime_type: Annotated[Optional[str], pydantic.Field(alias="mimeType")] = None r"""MIME type of the file.""" + @field_serializer("status") + def serialize_status(self, value): + if isinstance(value, str): + try: + return models.ChatFileStatus(value) + except ValueError: + return value + return value + + @field_serializer("failure_reason") + def serialize_failure_reason(self, value): + if isinstance(value, str): + try: + return models.ChatFileFailureReason(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -57,10 +76,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + ChatFileMetadata.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/chatfilestatus.py b/src/glean/api_client/models/chatfilestatus.py index c9a17724..8ae7bacc 100644 --- a/src/glean/api_client/models/chatfilestatus.py +++ b/src/glean/api_client/models/chatfilestatus.py @@ -2,12 +2,14 @@ from __future__ import annotations from enum import Enum +from glean.api_client import utils -class ChatFileStatus(str, Enum): +class ChatFileStatus(str, Enum, metaclass=utils.OpenEnumMeta): r"""Current status of the file.""" PROCESSING = "PROCESSING" PROCESSED = "PROCESSED" + PARTIALLY_PROCESSED = "PARTIALLY_PROCESSED" FAILED = "FAILED" DELETED = "DELETED" diff --git a/src/glean/api_client/models/chatmessage.py b/src/glean/api_client/models/chatmessage.py index 5a5f17c7..5c636cbb 100644 --- a/src/glean/api_client/models/chatmessage.py +++ b/src/glean/api_client/models/chatmessage.py @@ -5,19 +5,20 @@ from .chatmessagecitation import ChatMessageCitation, ChatMessageCitationTypedDict from .chatmessagefragment import ChatMessageFragment, ChatMessageFragmentTypedDict from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import List, Optional from typing_extensions import Annotated, NotRequired, TypedDict -class Author(str, Enum): +class Author(str, Enum, metaclass=utils.OpenEnumMeta): USER = "USER" GLEAN_AI = "GLEAN_AI" -class MessageType(str, Enum): +class MessageType(str, Enum, metaclass=utils.OpenEnumMeta): r"""Semantically groups content of a certain type. It can be used for purposes such as differential UI treatment. USER authored messages should be of type CONTENT and do not need `messageType` specified.""" # An intermediate state message for progress updates. @@ -26,6 +27,18 @@ class MessageType(str, Enum): CONTENT = "CONTENT" # A message providing context in addition to the user query. CONTEXT = "CONTEXT" + # Control signal for message streaming. + CONTROL = "CONTROL" + # Control signal indicating the start of a message stream. + CONTROL_START = "CONTROL_START" + # Control signal indicating the end of a message stream. + CONTROL_FINISH = "CONTROL_FINISH" + # Control signal indicating the message stream was cancelled. + CONTROL_CANCEL = "CONTROL_CANCEL" + # Indicates the message streaming needed to be retried. + CONTROL_RETRY = "CONTROL_RETRY" + # Fallback control signal for unrecognized control types. + CONTROL_UNKNOWN = "CONTROL_UNKNOWN" # A debug message. Strictly used internally. DEBUG = "DEBUG" # A debug message to be used while debugging Action creation. @@ -47,7 +60,7 @@ class ChatMessageTypedDict(TypedDict): r"""Describes the agent that executes the request.""" author: NotRequired[Author] citations: NotRequired[List[ChatMessageCitationTypedDict]] - r"""A list of Citations that were used to generate the response.""" + r"""Deprecated: Use inline citations via ChatMessageFragment.citation instead. For detailed reference information, use ChatMessageCitation.referenceRanges. This field is still populated for backward compatibility.""" uploaded_file_ids: NotRequired[List[str]] r"""IDs of files uploaded in the message that are referenced to generate the answer.""" fragments: NotRequired[List[ChatMessageFragmentTypedDict]] @@ -74,8 +87,13 @@ class ChatMessage(BaseModel): author: Optional[Author] = Author.USER - citations: Optional[List[ChatMessageCitation]] = None - r"""A list of Citations that were used to generate the response.""" + citations: Annotated[ + Optional[List[ChatMessageCitation]], + pydantic.Field( + deprecated="warning: ** DEPRECATED ** - Deprecated on 2026-02-06, removal scheduled for 2026-10-15: Use inline citations via ChatMessageFragment.citation and ChatMessageCitation.referenceRanges instead. This field is still populated for backward compatibility.." + ), + ] = None + r"""Deprecated: Use inline citations via ChatMessageFragment.citation instead. For detailed reference information, use ChatMessageCitation.referenceRanges. This field is still populated for backward compatibility.""" uploaded_file_ids: Annotated[ Optional[List[str]], pydantic.Field(alias="uploadedFileIds") @@ -110,6 +128,24 @@ class ChatMessage(BaseModel): ] = None r"""Signals there are additional response fragments incoming.""" + @field_serializer("author") + def serialize_author(self, value): + if isinstance(value, str): + try: + return models.Author(value) + except ValueError: + return value + return value + + @field_serializer("message_type") + def serialize_message_type(self, value): + if isinstance(value, str): + try: + return models.MessageType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -131,10 +167,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + ChatMessage.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/chatmessagecitation.py b/src/glean/api_client/models/chatmessagecitation.py index 8d5683ac..15fd3786 100644 --- a/src/glean/api_client/models/chatmessagecitation.py +++ b/src/glean/api_client/models/chatmessagecitation.py @@ -2,6 +2,8 @@ from __future__ import annotations from .chatfile import ChatFile, ChatFileTypedDict +from .chatskill import ChatSkill, ChatSkillTypedDict +from .customentity import CustomEntity, CustomEntityTypedDict from .document import Document, DocumentTypedDict from .person import Person, PersonTypedDict from .referencerange import ReferenceRange, ReferenceRangeTypedDict @@ -21,6 +23,9 @@ class ChatMessageCitationTypedDict(TypedDict): source_file: NotRequired[ChatFileTypedDict] r"""Structure for file uploaded by a user for Chat.""" source_person: NotRequired[PersonTypedDict] + source_custom_entity: NotRequired[CustomEntityTypedDict] + source_skill: NotRequired[ChatSkillTypedDict] + r"""A skill cited by Assistant.""" reference_ranges: NotRequired[List[ReferenceRangeTypedDict]] r"""Each reference range and its corresponding snippets""" @@ -46,6 +51,15 @@ class ChatMessageCitation(BaseModel): None ) + source_custom_entity: Annotated[ + Optional[CustomEntity], pydantic.Field(alias="sourceCustomEntity") + ] = None + + source_skill: Annotated[ + Optional[ChatSkill], pydantic.Field(alias="sourceSkill") + ] = None + r"""A skill cited by Assistant.""" + reference_ranges: Annotated[ Optional[List[ReferenceRange]], pydantic.Field(alias="referenceRanges") ] = None @@ -59,6 +73,8 @@ def serialize_model(self, handler): "sourceDocument", "sourceFile", "sourcePerson", + "sourceCustomEntity", + "sourceSkill", "referenceRanges", ] ) @@ -67,10 +83,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + ChatMessageCitation.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/chatmessagefragment.py b/src/glean/api_client/models/chatmessagefragment.py index a4d1d3e0..a8d3093b 100644 --- a/src/glean/api_client/models/chatmessagefragment.py +++ b/src/glean/api_client/models/chatmessagefragment.py @@ -4,6 +4,8 @@ from .chatfile import ChatFile, ChatFileTypedDict from .chatmessagecitation import ChatMessageCitation, ChatMessageCitationTypedDict from .querysuggestion import QuerySuggestion, QuerySuggestionTypedDict +from .servertoolrequest import ServerToolRequest, ServerToolRequestTypedDict +from .servertoolresponse import ServerToolResponse, ServerToolResponseTypedDict from .structuredresult import StructuredResult, StructuredResultTypedDict from .toolinfo import ToolInfo, ToolInfoTypedDict from glean.api_client.types import BaseModel, UNSET_SENTINEL @@ -27,6 +29,23 @@ class ChatMessageFragmentTypedDict(TypedDict): action: NotRequired[ToolInfoTypedDict] citation: NotRequired[ChatMessageCitationTypedDict] r"""Information about the source for a ChatMessage.""" + server_tool_request: NotRequired[ServerToolRequestTypedDict] + server_tool_response: NotRequired[ServerToolResponseTypedDict] + r"""Response to a server tool request. The applicable fields depend on requestType: + + For EXECUTION requests: + - isGranted: whether tool execution is approved + - reason: optional explanation + + For AUTHENTICATION_SUGGESTION requests: + - isGranted: whether auth completed successfully (true=connected, false=skipped) + - authContext: contains serverId or actionPackId for identifying the authenticated entity + - reason: optional explanation for skip + + For VOTE_SUGGESTION requests: + - voted: whether the user voted for this tool + + """ class ChatMessageFragment(BaseModel): @@ -56,6 +75,29 @@ class ChatMessageFragment(BaseModel): citation: Optional[ChatMessageCitation] = None r"""Information about the source for a ChatMessage.""" + server_tool_request: Annotated[ + Optional[ServerToolRequest], pydantic.Field(alias="serverToolRequest") + ] = None + + server_tool_response: Annotated[ + Optional[ServerToolResponse], pydantic.Field(alias="serverToolResponse") + ] = None + r"""Response to a server tool request. The applicable fields depend on requestType: + + For EXECUTION requests: + - isGranted: whether tool execution is approved + - reason: optional explanation + + For AUTHENTICATION_SUGGESTION requests: + - isGranted: whether auth completed successfully (true=connected, false=skipped) + - authContext: contains serverId or actionPackId for identifying the authenticated entity + - reason: optional explanation for skip + + For VOTE_SUGGESTION requests: + - voted: whether the user voted for this tool + + """ + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -67,6 +109,8 @@ def serialize_model(self, handler): "file", "action", "citation", + "serverToolRequest", + "serverToolResponse", ] ) serialized = handler(self) @@ -74,10 +118,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + ChatMessageFragment.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/chatmetadata.py b/src/glean/api_client/models/chatmetadata.py index 3a2d4c6b..81530650 100644 --- a/src/glean/api_client/models/chatmetadata.py +++ b/src/glean/api_client/models/chatmetadata.py @@ -81,10 +81,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + ChatMetadata.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/chatmetadataresult.py b/src/glean/api_client/models/chatmetadataresult.py index d362afe4..53e0ef97 100644 --- a/src/glean/api_client/models/chatmetadataresult.py +++ b/src/glean/api_client/models/chatmetadataresult.py @@ -33,10 +33,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + ChatMetadataResult.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/chatop.py b/src/glean/api_client/models/chatop.py index 1fc60c24..d14b8817 100644 --- a/src/glean/api_client/models/chatop.py +++ b/src/glean/api_client/models/chatop.py @@ -13,6 +13,8 @@ class ChatRequestRequestTypedDict(TypedDict): chat_request: ChatRequestTypedDict r"""Includes chat history for Glean AI to respond to.""" + locale: NotRequired[str] + r"""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: 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.""" @@ -24,6 +26,12 @@ class ChatRequestRequest(BaseModel): ] r"""Includes chat history for Glean AI to respond to.""" + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""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: Annotated[ Optional[int], pydantic.Field(alias="timezoneOffset"), @@ -33,13 +41,13 @@ class ChatRequestRequest(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = set(["timezoneOffset"]) + optional_fields = set(["locale", "timezoneOffset"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/chatrequest.py b/src/glean/api_client/models/chatrequest.py index f73edc1b..ca0d3695 100644 --- a/src/glean/api_client/models/chatrequest.py +++ b/src/glean/api_client/models/chatrequest.py @@ -101,10 +101,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + ChatRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/chatresponse.py b/src/glean/api_client/models/chatresponse.py index 4186e765..aa3afabf 100644 --- a/src/glean/api_client/models/chatresponse.py +++ b/src/glean/api_client/models/chatresponse.py @@ -2,6 +2,7 @@ from __future__ import annotations from .chatmessage import ChatMessage, ChatMessageTypedDict +from .chatmetadata import ChatMetadata, ChatMetadataTypedDict from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic from pydantic import model_serializer @@ -15,6 +16,8 @@ class ChatResponseTypedDict(TypedDict): messages: NotRequired[List[ChatMessageTypedDict]] chat_id: NotRequired[str] r"""The id of the associated Chat the messages belong to, if one exists.""" + chat: NotRequired[ChatMetadataTypedDict] + r"""Metadata of a Chat a user had with Glean Assistant. This contains no actual conversational content.""" follow_up_prompts: NotRequired[List[str]] r"""Follow-up prompts for the user to potentially use""" backend_time_millis: NotRequired[int] @@ -31,6 +34,9 @@ class ChatResponse(BaseModel): chat_id: Annotated[Optional[str], pydantic.Field(alias="chatId")] = None r"""The id of the associated Chat the messages belong to, if one exists.""" + chat: Optional[ChatMetadata] = None + r"""Metadata of a Chat a user had with Glean Assistant. This contains no actual conversational content.""" + follow_up_prompts: Annotated[ Optional[List[str]], pydantic.Field(alias="followUpPrompts") ] = None @@ -52,6 +58,7 @@ def serialize_model(self, handler): [ "messages", "chatId", + "chat", "followUpPrompts", "backendTimeMillis", "chatSessionTrackingToken", @@ -62,10 +69,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + ChatResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/chatrestrictionfilters.py b/src/glean/api_client/models/chatrestrictionfilters.py index d3245357..51db943b 100644 --- a/src/glean/api_client/models/chatrestrictionfilters.py +++ b/src/glean/api_client/models/chatrestrictionfilters.py @@ -40,10 +40,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + ChatRestrictionFilters.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/chatresult.py b/src/glean/api_client/models/chatresult.py index 686f7d69..8058b2bb 100644 --- a/src/glean/api_client/models/chatresult.py +++ b/src/glean/api_client/models/chatresult.py @@ -33,10 +33,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + ChatResult.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/chatskill.py b/src/glean/api_client/models/chatskill.py new file mode 100644 index 00000000..b6327b42 --- /dev/null +++ b/src/glean/api_client/models/chatskill.py @@ -0,0 +1,47 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer +from typing import Optional +from typing_extensions import NotRequired, TypedDict + + +class ChatSkillTypedDict(TypedDict): + r"""A skill cited by Assistant.""" + + id: str + r"""Artifact ID of the skill.""" + name: NotRequired[str] + r"""Name of the skill.""" + url: NotRequired[str] + r"""URL for viewing the skill.""" + + +class ChatSkill(BaseModel): + r"""A skill cited by Assistant.""" + + id: str + r"""Artifact ID of the skill.""" + + name: Optional[str] = None + r"""Name of the skill.""" + + url: Optional[str] = None + r"""URL for viewing the skill.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["name", "url"]) + 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/chatstreamop.py b/src/glean/api_client/models/chatstreamop.py index 71a17b37..6ce3ce9b 100644 --- a/src/glean/api_client/models/chatstreamop.py +++ b/src/glean/api_client/models/chatstreamop.py @@ -39,7 +39,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/chatsuggestion.py b/src/glean/api_client/models/chatsuggestion.py index 11bec4d5..8d24fdad 100644 --- a/src/glean/api_client/models/chatsuggestion.py +++ b/src/glean/api_client/models/chatsuggestion.py @@ -2,37 +2,56 @@ from __future__ import annotations from glean.api_client.types import BaseModel, UNSET_SENTINEL +import pydantic from pydantic import model_serializer -from typing import Optional -from typing_extensions import NotRequired, TypedDict +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict class ChatSuggestionTypedDict(TypedDict): query: NotRequired[str] r"""The actionable chat query to run when the user selects this suggestion.""" + cta: NotRequired[str] + r"""Button text to show for the suggestion action.""" feature: NotRequired[str] r"""Targeted Glean Chat feature for the suggestion.""" + source_document_ids: NotRequired[List[str]] + r"""Document IDs that grounded the suggestion.""" class ChatSuggestion(BaseModel): query: Optional[str] = None r"""The actionable chat query to run when the user selects this suggestion.""" + cta: Optional[str] = None + r"""Button text to show for the suggestion action.""" + feature: Optional[str] = None r"""Targeted Glean Chat feature for the suggestion.""" + source_document_ids: Annotated[ + Optional[List[str]], pydantic.Field(alias="sourceDocumentIds") + ] = None + r"""Document IDs that grounded the suggestion.""" + @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = set(["query", "feature"]) + optional_fields = set(["query", "cta", "feature", "sourceDocumentIds"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + ChatSuggestion.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/chatzerostatesuggestionoptions.py b/src/glean/api_client/models/chatzerostatesuggestionoptions.py index 951d6c47..75527af1 100644 --- a/src/glean/api_client/models/chatzerostatesuggestionoptions.py +++ b/src/glean/api_client/models/chatzerostatesuggestionoptions.py @@ -27,10 +27,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + ChatZeroStateSuggestionOptions.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/checkdatasourceauthresponse.py b/src/glean/api_client/models/checkdatasourceauthresponse.py new file mode 100644 index 00000000..23a67c29 --- /dev/null +++ b/src/glean/api_client/models/checkdatasourceauthresponse.py @@ -0,0 +1,34 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .unauthorizeddatasourceinstance import ( + UnauthorizedDatasourceInstance, + UnauthorizedDatasourceInstanceTypedDict, +) +from glean.api_client.types import BaseModel +import pydantic +from typing import List +from typing_extensions import Annotated, TypedDict + + +class CheckDatasourceAuthResponseTypedDict(TypedDict): + unauthorized_datasource_instances: List[UnauthorizedDatasourceInstanceTypedDict] + r"""Datasource instances that require per-user OAuth authorization. Empty when all datasources are authorized. + + """ + + +class CheckDatasourceAuthResponse(BaseModel): + unauthorized_datasource_instances: Annotated[ + List[UnauthorizedDatasourceInstance], + pydantic.Field(alias="unauthorizedDatasourceInstances"), + ] + r"""Datasource instances that require per-user OAuth authorization. Empty when all datasources are authorized. + + """ + + +try: + CheckDatasourceAuthResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/checkdocumentaccessrequest.py b/src/glean/api_client/models/checkdocumentaccessrequest.py index fca1be2f..e5985de8 100644 --- a/src/glean/api_client/models/checkdocumentaccessrequest.py +++ b/src/glean/api_client/models/checkdocumentaccessrequest.py @@ -33,3 +33,9 @@ class CheckDocumentAccessRequest(BaseModel): user_email: Annotated[str, pydantic.Field(alias="userEmail")] r"""Email of user to check access for.""" + + +try: + CheckDocumentAccessRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/checkdocumentaccessresponse.py b/src/glean/api_client/models/checkdocumentaccessresponse.py index 9d0522ea..373b9388 100644 --- a/src/glean/api_client/models/checkdocumentaccessresponse.py +++ b/src/glean/api_client/models/checkdocumentaccessresponse.py @@ -29,10 +29,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + CheckDocumentAccessResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/clustergroup.py b/src/glean/api_client/models/clustergroup.py index 7ff2c426..9805a2fa 100644 --- a/src/glean/api_client/models/clustergroup.py +++ b/src/glean/api_client/models/clustergroup.py @@ -2,9 +2,10 @@ from __future__ import annotations from .clustertypeenum import ClusterTypeEnum +from glean.api_client import models from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import List, Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -35,6 +36,15 @@ class ClusterGroup(BaseModel): ] = None r"""The reason for inclusion of clusteredResults.""" + @field_serializer("cluster_type") + def serialize_cluster_type(self, value): + if isinstance(value, str): + try: + return models.ClusterTypeEnum(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["clusteredResults", "clusterType"]) @@ -43,10 +53,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + ClusterGroup.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/clustertypeenum.py b/src/glean/api_client/models/clustertypeenum.py index 3e83e2ef..d599d8ac 100644 --- a/src/glean/api_client/models/clustertypeenum.py +++ b/src/glean/api_client/models/clustertypeenum.py @@ -2,9 +2,10 @@ from __future__ import annotations from enum import Enum +from glean.api_client import utils -class ClusterTypeEnum(str, Enum): +class ClusterTypeEnum(str, Enum, metaclass=utils.OpenEnumMeta): r"""The reason for inclusion of clusteredResults.""" SIMILAR = "SIMILAR" diff --git a/src/glean/api_client/models/code.py b/src/glean/api_client/models/code.py index c0711ce3..140e792f 100644 --- a/src/glean/api_client/models/code.py +++ b/src/glean/api_client/models/code.py @@ -42,10 +42,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + Code.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/codeline.py b/src/glean/api_client/models/codeline.py index 9e89c9f0..70e471cc 100644 --- a/src/glean/api_client/models/codeline.py +++ b/src/glean/api_client/models/codeline.py @@ -34,10 +34,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + CodeLine.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/collection.py b/src/glean/api_client/models/collection.py index a9855a35..6bb4995e 100644 --- a/src/glean/api_client/models/collection.py +++ b/src/glean/api_client/models/collection.py @@ -6,6 +6,7 @@ CollectionPinnedMetadataTypedDict, ) from .facetfilter import FacetFilter, FacetFilterTypedDict +from .favoriteinfo import FavoriteInfo, FavoriteInfoTypedDict from .objectpermissions import ObjectPermissions, ObjectPermissionsTypedDict from .thumbnail import Thumbnail, ThumbnailTypedDict from datetime import datetime @@ -47,6 +48,8 @@ class CollectionTypedDict(TypedDict): allowed_datasource: NotRequired[str] r"""The datasource type this Collection can hold.""" permissions: NotRequired[ObjectPermissionsTypedDict] + tracking_token: NotRequired[str] + r"""An opaque token that represents this particular UGC. To be used for `/feedback` reporting.""" create_time: NotRequired[datetime] update_time: NotRequired[datetime] creator: NotRequired["PersonTypedDict"] @@ -64,6 +67,7 @@ class CollectionTypedDict(TypedDict): r"""The children Collections of this Collection.""" roles: NotRequired[List["UserRoleSpecificationTypedDict"]] r"""A list of user roles for the Collection.""" + favorite_info: NotRequired[FavoriteInfoTypedDict] class Collection(BaseModel): @@ -109,6 +113,11 @@ class Collection(BaseModel): permissions: Optional[ObjectPermissions] = None + tracking_token: Annotated[Optional[str], pydantic.Field(alias="trackingToken")] = ( + None + ) + r"""An opaque token that represents this particular UGC. To be used for `/feedback` reporting.""" + create_time: Annotated[Optional[datetime], pydantic.Field(alias="createTime")] = ( None ) @@ -143,6 +152,10 @@ class Collection(BaseModel): roles: Optional[List["UserRoleSpecification"]] = None r"""A list of user roles for the Collection.""" + favorite_info: Annotated[ + Optional[FavoriteInfo], pydantic.Field(alias="favoriteInfo") + ] = None + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -156,6 +169,7 @@ def serialize_model(self, handler): "thumbnail", "allowedDatasource", "permissions", + "trackingToken", "createTime", "updateTime", "creator", @@ -167,6 +181,7 @@ def serialize_model(self, handler): "shortcuts", "children", "roles", + "favoriteInfo", ] ) serialized = handler(self) @@ -174,10 +189,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + Collection.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/collectionerror.py b/src/glean/api_client/models/collectionerror.py index d1c742d3..408d04c7 100644 --- a/src/glean/api_client/models/collectionerror.py +++ b/src/glean/api_client/models/collectionerror.py @@ -2,12 +2,14 @@ from __future__ import annotations from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel import pydantic +from pydantic import field_serializer from typing_extensions import Annotated, TypedDict -class CollectionErrorErrorCode(str, Enum): +class CollectionErrorErrorCode(str, Enum, metaclass=utils.OpenEnumMeta): NAME_EXISTS = "NAME_EXISTS" NOT_FOUND = "NOT_FOUND" COLLECTION_PINNED = "COLLECTION_PINNED" @@ -15,6 +17,7 @@ class CollectionErrorErrorCode(str, Enum): HEIGHT_VIOLATION = "HEIGHT_VIOLATION" WIDTH_VIOLATION = "WIDTH_VIOLATION" NO_PERMISSIONS = "NO_PERMISSIONS" + CORRUPT_ITEM = "CORRUPT_ITEM" class CollectionErrorTypedDict(TypedDict): @@ -23,3 +26,18 @@ class CollectionErrorTypedDict(TypedDict): class CollectionError(BaseModel): error_code: Annotated[CollectionErrorErrorCode, pydantic.Field(alias="errorCode")] + + @field_serializer("error_code") + def serialize_error_code(self, value): + if isinstance(value, str): + try: + return models.CollectionErrorErrorCode(value) + except ValueError: + return value + return value + + +try: + CollectionError.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/collectionitem.py b/src/glean/api_client/models/collectionitem.py index 04a8b19e..0cbe6492 100644 --- a/src/glean/api_client/models/collectionitem.py +++ b/src/glean/api_client/models/collectionitem.py @@ -3,9 +3,10 @@ from __future__ import annotations from datetime import datetime from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -16,7 +17,7 @@ from .shortcut import Shortcut, ShortcutTypedDict -class CollectionItemItemType(str, Enum): +class CollectionItemItemType(str, Enum, metaclass=utils.OpenEnumMeta): DOCUMENT = "DOCUMENT" TEXT = "TEXT" URL = "URL" @@ -82,6 +83,15 @@ class CollectionItem(BaseModel): collection: Optional["Collection"] = None + @field_serializer("item_type") + def serialize_item_type(self, value): + if isinstance(value, str): + try: + return models.CollectionItemItemType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -104,10 +114,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + CollectionItem.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/collectionitemdescriptor.py b/src/glean/api_client/models/collectionitemdescriptor.py index 8095fab4..6642f487 100644 --- a/src/glean/api_client/models/collectionitemdescriptor.py +++ b/src/glean/api_client/models/collectionitemdescriptor.py @@ -74,10 +74,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + CollectionItemDescriptor.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/collectionpinnablecategories.py b/src/glean/api_client/models/collectionpinnablecategories.py index d28cd94a..55c467b9 100644 --- a/src/glean/api_client/models/collectionpinnablecategories.py +++ b/src/glean/api_client/models/collectionpinnablecategories.py @@ -2,9 +2,10 @@ from __future__ import annotations from enum import Enum +from glean.api_client import utils -class CollectionPinnableCategories(str, Enum): +class CollectionPinnableCategories(str, Enum, metaclass=utils.OpenEnumMeta): r"""Categories a Collection can be pinned to.""" COMPANY_RESOURCE = "COMPANY_RESOURCE" diff --git a/src/glean/api_client/models/collectionpinnabletargets.py b/src/glean/api_client/models/collectionpinnabletargets.py index eac2d5e7..c440d473 100644 --- a/src/glean/api_client/models/collectionpinnabletargets.py +++ b/src/glean/api_client/models/collectionpinnabletargets.py @@ -2,9 +2,10 @@ from __future__ import annotations from enum import Enum +from glean.api_client import utils -class CollectionPinnableTargets(str, Enum): +class CollectionPinnableTargets(str, Enum, metaclass=utils.OpenEnumMeta): r"""What targets can a Collection be pinned to.""" RESOURCE_CARD = "RESOURCE_CARD" diff --git a/src/glean/api_client/models/collectionpinnedmetadata.py b/src/glean/api_client/models/collectionpinnedmetadata.py index 736ed853..2e54e6a4 100644 --- a/src/glean/api_client/models/collectionpinnedmetadata.py +++ b/src/glean/api_client/models/collectionpinnedmetadata.py @@ -36,10 +36,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + CollectionPinnedMetadata.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/collectionpintarget.py b/src/glean/api_client/models/collectionpintarget.py index 173bcf4f..cd3f16f2 100644 --- a/src/glean/api_client/models/collectionpintarget.py +++ b/src/glean/api_client/models/collectionpintarget.py @@ -3,8 +3,9 @@ from __future__ import annotations from .collectionpinnablecategories import CollectionPinnableCategories from .collectionpinnabletargets import CollectionPinnableTargets +from glean.api_client import models from glean.api_client.types import BaseModel, UNSET_SENTINEL -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -28,6 +29,24 @@ class CollectionPinTarget(BaseModel): target: Optional[CollectionPinnableTargets] = None r"""What targets can a Collection be pinned to.""" + @field_serializer("category") + def serialize_category(self, value): + if isinstance(value, str): + try: + return models.CollectionPinnableCategories(value) + except ValueError: + return value + return value + + @field_serializer("target") + def serialize_target(self, value): + if isinstance(value, str): + try: + return models.CollectionPinnableTargets(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["value", "target"]) @@ -36,7 +55,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/commentdefinition.py b/src/glean/api_client/models/commentdefinition.py index 4baafdd6..121b9722 100644 --- a/src/glean/api_client/models/commentdefinition.py +++ b/src/glean/api_client/models/commentdefinition.py @@ -63,10 +63,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + CommentDefinition.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/communicationchannel.py b/src/glean/api_client/models/communicationchannel.py index e315cc1d..36d9d830 100644 --- a/src/glean/api_client/models/communicationchannel.py +++ b/src/glean/api_client/models/communicationchannel.py @@ -2,8 +2,9 @@ from __future__ import annotations from enum import Enum +from glean.api_client import utils -class CommunicationChannel(str, Enum): +class CommunicationChannel(str, Enum, metaclass=utils.OpenEnumMeta): COMMUNICATION_CHANNEL_EMAIL = "COMMUNICATION_CHANNEL_EMAIL" COMMUNICATION_CHANNEL_SLACK = "COMMUNICATION_CHANNEL_SLACK" diff --git a/src/glean/api_client/models/company.py b/src/glean/api_client/models/company.py index 32fdb01c..acd9da9d 100644 --- a/src/glean/api_client/models/company.py +++ b/src/glean/api_client/models/company.py @@ -107,10 +107,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + Company.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/conferencedata.py b/src/glean/api_client/models/conferencedata.py index a890a8d1..a9f6b4b4 100644 --- a/src/glean/api_client/models/conferencedata.py +++ b/src/glean/api_client/models/conferencedata.py @@ -2,18 +2,19 @@ from __future__ import annotations from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict -class Provider(str, Enum): +class Provider(str, Enum, metaclass=utils.OpenEnumMeta): ZOOM = "ZOOM" HANGOUTS = "HANGOUTS" -class ConferenceDataSource(str, Enum): +class ConferenceDataSource(str, Enum, metaclass=utils.OpenEnumMeta): NATIVE_CONFERENCE = "NATIVE_CONFERENCE" LOCATION = "LOCATION" DESCRIPTION = "DESCRIPTION" @@ -34,6 +35,24 @@ class ConferenceData(BaseModel): source: Optional[ConferenceDataSource] = None + @field_serializer("provider") + def serialize_provider(self, value): + if isinstance(value, str): + try: + return models.Provider(value) + except ValueError: + return value + return value + + @field_serializer("source") + def serialize_source(self, value): + if isinstance(value, str): + try: + return models.ConferenceDataSource(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["source"]) @@ -42,7 +61,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/configurationvalue.py b/src/glean/api_client/models/configurationvalue.py new file mode 100644 index 00000000..c7458c5d --- /dev/null +++ b/src/glean/api_client/models/configurationvalue.py @@ -0,0 +1,49 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel, UNSET_SENTINEL +import pydantic +from pydantic import model_serializer +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class ConfigurationValueTypedDict(TypedDict): + r"""A single configuration value, either a scalar or a list""" + + value: NotRequired[str] + r"""The configuration value as a string. Only one of value or valueList should be populated.""" + value_list: NotRequired[List[str]] + r"""The configuration value as a list of strings. Only one of value or valueList should be populated.""" + + +class ConfigurationValue(BaseModel): + r"""A single configuration value, either a scalar or a list""" + + value: Optional[str] = None + r"""The configuration value as a string. Only one of value or valueList should be populated.""" + + value_list: Annotated[Optional[List[str]], pydantic.Field(alias="valueList")] = None + r"""The configuration value as a list of strings. Only one of value or valueList should be populated.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["value", "valueList"]) + 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: + ConfigurationValue.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/connectortype.py b/src/glean/api_client/models/connectortype.py index 8d612d97..8e99dab8 100644 --- a/src/glean/api_client/models/connectortype.py +++ b/src/glean/api_client/models/connectortype.py @@ -2,9 +2,10 @@ from __future__ import annotations from enum import Enum +from glean.api_client import utils -class ConnectorType(str, Enum): +class ConnectorType(str, Enum, metaclass=utils.OpenEnumMeta): r"""The source from which document content was pulled, e.g. an API crawl or browser history""" API_CRAWL = "API_CRAWL" diff --git a/src/glean/api_client/models/contentdefinition.py b/src/glean/api_client/models/contentdefinition.py index 95031ace..03e7f7a2 100644 --- a/src/glean/api_client/models/contentdefinition.py +++ b/src/glean/api_client/models/contentdefinition.py @@ -39,10 +39,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + ContentDefinition.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/contentinsightsresponse.py b/src/glean/api_client/models/contentinsightsresponse.py deleted file mode 100644 index b96b7701..00000000 --- a/src/glean/api_client/models/contentinsightsresponse.py +++ /dev/null @@ -1,71 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from .documentinsight import DocumentInsight, DocumentInsightTypedDict -from glean.api_client.types import BaseModel, UNSET_SENTINEL -import pydantic -from pydantic import model_serializer -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class ContentInsightsResponseTypedDict(TypedDict): - last_log_timestamp: NotRequired[int] - r"""Unix timestamp of the last activity processed to make the response (in seconds since epoch UTC).""" - document_insights: NotRequired[List[DocumentInsightTypedDict]] - r"""Insights for documents.""" - departments: NotRequired[List[str]] - r"""list of departments applicable for contents tab.""" - min_department_size_threshold: NotRequired[int] - r"""Min threshold in size of departments while populating results, otherwise 0.""" - min_visitor_threshold: NotRequired[int] - r"""Minimum number of visitors to a document required to be included in insights.""" - - -class ContentInsightsResponse(BaseModel): - last_log_timestamp: Annotated[ - Optional[int], pydantic.Field(alias="lastLogTimestamp") - ] = None - r"""Unix timestamp of the last activity processed to make the response (in seconds since epoch UTC).""" - - document_insights: Annotated[ - Optional[List[DocumentInsight]], pydantic.Field(alias="documentInsights") - ] = None - r"""Insights for documents.""" - - departments: Optional[List[str]] = None - r"""list of departments applicable for contents tab.""" - - min_department_size_threshold: Annotated[ - Optional[int], pydantic.Field(alias="minDepartmentSizeThreshold") - ] = None - r"""Min threshold in size of departments while populating results, otherwise 0.""" - - min_visitor_threshold: Annotated[ - Optional[int], pydantic.Field(alias="minVisitorThreshold") - ] = None - r"""Minimum number of visitors to a document required to be included in insights.""" - - @model_serializer(mode="wrap") - def serialize_model(self, handler): - optional_fields = set( - [ - "lastLogTimestamp", - "documentInsights", - "departments", - "minDepartmentSizeThreshold", - "minVisitorThreshold", - ] - ) - serialized = handler(self) - m = {} - - for n, f in type(self).model_fields.items(): - k = f.alias or n - val = serialized.get(k) - - if val != UNSET_SENTINEL: - if val is not None or k not in optional_fields: - m[k] = val - - return m diff --git a/src/glean/api_client/models/countinfo.py b/src/glean/api_client/models/countinfo.py index 2d24b6f2..83d1aa3b 100644 --- a/src/glean/api_client/models/countinfo.py +++ b/src/glean/api_client/models/countinfo.py @@ -33,7 +33,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/createagentop.py b/src/glean/api_client/models/createagentop.py new file mode 100644 index 00000000..4ed4192d --- /dev/null +++ b/src/glean/api_client/models/createagentop.py @@ -0,0 +1,54 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .createworkflowrequest import CreateWorkflowRequest, CreateWorkflowRequestTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +import pydantic +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class CreateAgentRequestTypedDict(TypedDict): + create_workflow_request: CreateWorkflowRequestTypedDict + locale: NotRequired[str] + r"""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: 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.""" + + +class CreateAgentRequest(BaseModel): + create_workflow_request: Annotated[ + CreateWorkflowRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""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: Annotated[ + Optional[int], + pydantic.Field(alias="timezoneOffset"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale", "timezoneOffset"]) + 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/createannouncementop.py b/src/glean/api_client/models/createannouncementop.py new file mode 100644 index 00000000..f07a4fec --- /dev/null +++ b/src/glean/api_client/models/createannouncementop.py @@ -0,0 +1,49 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .createannouncementrequest import ( + CreateAnnouncementRequest, + CreateAnnouncementRequestTypedDict, +) +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class CreateannouncementRequestRequestTypedDict(TypedDict): + create_announcement_request: CreateAnnouncementRequestTypedDict + r"""Announcement content""" + locale: NotRequired[str] + r"""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`.""" + + +class CreateannouncementRequestRequest(BaseModel): + create_announcement_request: Annotated[ + CreateAnnouncementRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""Announcement content""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""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`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/createannouncementrequest.py b/src/glean/api_client/models/createannouncementrequest.py index ed562986..b7cbb6c5 100644 --- a/src/glean/api_client/models/createannouncementrequest.py +++ b/src/glean/api_client/models/createannouncementrequest.py @@ -127,10 +127,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + CreateAnnouncementRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/createanswerop.py b/src/glean/api_client/models/createanswerop.py new file mode 100644 index 00000000..6e7cc763 --- /dev/null +++ b/src/glean/api_client/models/createanswerop.py @@ -0,0 +1,46 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .createanswerrequest import CreateAnswerRequest, CreateAnswerRequestTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class CreateanswerRequestRequestTypedDict(TypedDict): + create_answer_request: CreateAnswerRequestTypedDict + r"""CreateAnswer request""" + locale: NotRequired[str] + r"""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`.""" + + +class CreateanswerRequestRequest(BaseModel): + create_answer_request: Annotated[ + CreateAnswerRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""CreateAnswer request""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""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`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/createauthtokenresponse.py b/src/glean/api_client/models/createauthtokenresponse.py index 50e696ac..df588893 100644 --- a/src/glean/api_client/models/createauthtokenresponse.py +++ b/src/glean/api_client/models/createauthtokenresponse.py @@ -19,3 +19,9 @@ class CreateAuthTokenResponse(BaseModel): expiration_time: Annotated[int, pydantic.Field(alias="expirationTime")] r"""Unix timestamp for when this token expires (in seconds since epoch UTC).""" + + +try: + CreateAuthTokenResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/createcollectionop.py b/src/glean/api_client/models/createcollectionop.py index 2c29395d..3b504b1b 100644 --- a/src/glean/api_client/models/createcollectionop.py +++ b/src/glean/api_client/models/createcollectionop.py @@ -3,10 +3,52 @@ from __future__ import annotations from .collection import Collection, CollectionTypedDict from .collectionerror import CollectionError, CollectionErrorTypedDict +from .createcollectionrequest import ( + CreateCollectionRequest, + CreateCollectionRequestTypedDict, +) from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata from pydantic import model_serializer from typing import Optional, Union -from typing_extensions import NotRequired, TypeAliasType, TypedDict +from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict + + +class CreatecollectionRequestRequestTypedDict(TypedDict): + create_collection_request: CreateCollectionRequestTypedDict + r"""Collection content plus any additional metadata for the request.""" + locale: NotRequired[str] + r"""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`.""" + + +class CreatecollectionRequestRequest(BaseModel): + create_collection_request: Annotated[ + CreateCollectionRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""Collection content plus any additional metadata for the request.""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""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`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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 class ResponseBody2TypedDict(TypedDict): @@ -27,7 +69,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -54,7 +96,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/createcollectionrequest.py b/src/glean/api_client/models/createcollectionrequest.py index 9efa3523..8ed97b03 100644 --- a/src/glean/api_client/models/createcollectionrequest.py +++ b/src/glean/api_client/models/createcollectionrequest.py @@ -99,10 +99,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + CreateCollectionRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/createdlpreportrequest.py b/src/glean/api_client/models/createdlpreportrequest.py index 27c17390..9de15343 100644 --- a/src/glean/api_client/models/createdlpreportrequest.py +++ b/src/glean/api_client/models/createdlpreportrequest.py @@ -3,9 +3,10 @@ from __future__ import annotations from .dlpconfig import DlpConfig, DlpConfigTypedDict from .dlpfrequency import DlpFrequency +from glean.api_client import models from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -36,6 +37,15 @@ class CreateDlpReportRequest(BaseModel): ) r"""Controls whether the policy should hide documents with violations.""" + @field_serializer("frequency") + def serialize_frequency(self, value): + if isinstance(value, str): + try: + return models.DlpFrequency(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["name", "config", "frequency", "autoHideDocs"]) @@ -44,10 +54,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + CreateDlpReportRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/createdlpreportresponse.py b/src/glean/api_client/models/createdlpreportresponse.py index 7c8ceccb..2fecf5af 100644 --- a/src/glean/api_client/models/createdlpreportresponse.py +++ b/src/glean/api_client/models/createdlpreportresponse.py @@ -25,7 +25,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/createshortcutop.py b/src/glean/api_client/models/createshortcutop.py new file mode 100644 index 00000000..cd9cab87 --- /dev/null +++ b/src/glean/api_client/models/createshortcutop.py @@ -0,0 +1,46 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .createshortcutrequest import CreateShortcutRequest, CreateShortcutRequestTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class CreateshortcutRequestRequestTypedDict(TypedDict): + create_shortcut_request: CreateShortcutRequestTypedDict + r"""CreateShortcut request""" + locale: NotRequired[str] + r"""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`.""" + + +class CreateshortcutRequestRequest(BaseModel): + create_shortcut_request: Annotated[ + CreateShortcutRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""CreateShortcut request""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""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`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/createshortcutresponse.py b/src/glean/api_client/models/createshortcutresponse.py index 5e0188c1..7fd2e6eb 100644 --- a/src/glean/api_client/models/createshortcutresponse.py +++ b/src/glean/api_client/models/createshortcutresponse.py @@ -27,7 +27,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/createworkflowrequest.py b/src/glean/api_client/models/createworkflowrequest.py new file mode 100644 index 00000000..206d00f3 --- /dev/null +++ b/src/glean/api_client/models/createworkflowrequest.py @@ -0,0 +1,52 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel, UNSET_SENTINEL +import pydantic +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class CreateWorkflowRequestTypedDict(TypedDict): + name: NotRequired[str] + r"""The name of the workflow.""" + transient: NotRequired[bool] + r"""Used to create a transient workflow.""" + parent_workflow_id: NotRequired[str] + r"""id of the parent workflow for transient workflows""" + + +class CreateWorkflowRequest(BaseModel): + name: Optional[str] = None + r"""The name of the workflow.""" + + transient: Optional[bool] = None + r"""Used to create a transient workflow.""" + + parent_workflow_id: Annotated[ + Optional[str], pydantic.Field(alias="parentWorkflowId") + ] = None + r"""id of the parent workflow for transient workflows""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["name", "transient", "parentWorkflowId"]) + 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: + CreateWorkflowRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/currentactiveusers.py b/src/glean/api_client/models/currentactiveusers.py index 786d6e90..1236b653 100644 --- a/src/glean/api_client/models/currentactiveusers.py +++ b/src/glean/api_client/models/currentactiveusers.py @@ -10,21 +10,21 @@ class CurrentActiveUsersTypedDict(TypedDict): monthly_active_users: NotRequired[int] - r"""Number of current Monthly Active Users, in the specified departments.""" + r"""Number of current Monthly Active Users.""" weekly_active_users: NotRequired[int] - r"""Number of current Weekly Active Users, in the specified departments.""" + r"""Number of current Weekly Active Users.""" class CurrentActiveUsers(BaseModel): monthly_active_users: Annotated[ Optional[int], pydantic.Field(alias="monthlyActiveUsers") ] = None - r"""Number of current Monthly Active Users, in the specified departments.""" + r"""Number of current Monthly Active Users.""" weekly_active_users: Annotated[ Optional[int], pydantic.Field(alias="weeklyActiveUsers") ] = None - r"""Number of current Weekly Active Users, in the specified departments.""" + r"""Number of current Weekly Active Users.""" @model_serializer(mode="wrap") def serialize_model(self, handler): @@ -34,10 +34,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + CurrentActiveUsers.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/customdatasourceconfig.py b/src/glean/api_client/models/customdatasourceconfig.py index b094b05e..0b728d6f 100644 --- a/src/glean/api_client/models/customdatasourceconfig.py +++ b/src/glean/api_client/models/customdatasourceconfig.py @@ -8,14 +8,15 @@ from .objectdefinition import ObjectDefinition, ObjectDefinitionTypedDict from .quicklink import Quicklink, QuicklinkTypedDict from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import List, Optional from typing_extensions import Annotated, NotRequired, TypedDict -class DatasourceCategory(str, Enum): +class DatasourceCategory(str, Enum, metaclass=utils.OpenEnumMeta): r"""The type of this datasource. It is an important signal for relevance and must be specified and cannot be UNCATEGORIZED. Please refer to [this](https://developers.glean.com/docs/indexing_api_datasource_category/) for more details.""" UNCATEGORIZED = "UNCATEGORIZED" @@ -36,16 +37,18 @@ class DatasourceCategory(str, Enum): ENTITY = "ENTITY" CALENDAR = "CALENDAR" AGENTS = "AGENTS" + AI_CONVERSATION = "AI_CONVERSATION" + AI_ARTIFACT = "AI_ARTIFACT" -class HideBuiltInFacet(str, Enum): +class HideBuiltInFacet(str, Enum, metaclass=utils.OpenEnumMeta): TYPE = "TYPE" TAG = "TAG" AUTHOR = "AUTHOR" OWNER = "OWNER" -class CustomDatasourceConfigConnectorType(str, Enum): +class CustomDatasourceConfigConnectorType(str, Enum, metaclass=utils.OpenEnumMeta): r"""The source from which document content was pulled, e.g. an API crawl or browser history""" API_CRAWL = "API_CRAWL" @@ -238,6 +241,24 @@ class CustomDatasourceConfig(BaseModel): ] = False r"""True if this datasource will be used for testing purpose only. Documents from such a datasource wouldn't have any effect on search rankings.""" + @field_serializer("datasource_category") + def serialize_datasource_category(self, value): + if isinstance(value, str): + try: + return models.DatasourceCategory(value) + except ValueError: + return value + return value + + @field_serializer("connector_type") + def serialize_connector_type(self, value): + if isinstance(value, str): + try: + return models.CustomDatasourceConfigConnectorType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -275,10 +296,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + CustomDatasourceConfig.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/customdatavalue.py b/src/glean/api_client/models/customdatavalue.py index 1b799395..a07d2e81 100644 --- a/src/glean/api_client/models/customdatavalue.py +++ b/src/glean/api_client/models/customdatavalue.py @@ -49,10 +49,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + CustomDataValue.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/customentity.py b/src/glean/api_client/models/customentity.py index f9c5518b..6cb844cc 100644 --- a/src/glean/api_client/models/customentity.py +++ b/src/glean/api_client/models/customentity.py @@ -69,10 +69,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + CustomEntity.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/customentitymetadata.py b/src/glean/api_client/models/customentitymetadata.py index 083656f8..45958c27 100644 --- a/src/glean/api_client/models/customentitymetadata.py +++ b/src/glean/api_client/models/customentitymetadata.py @@ -28,10 +28,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + CustomEntityMetadata.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/customer.py b/src/glean/api_client/models/customer.py index 59b0782a..7154cf22 100644 --- a/src/glean/api_client/models/customer.py +++ b/src/glean/api_client/models/customer.py @@ -89,10 +89,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + Customer.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/customermetadata.py b/src/glean/api_client/models/customermetadata.py index f23fdb92..35adf587 100644 --- a/src/glean/api_client/models/customermetadata.py +++ b/src/glean/api_client/models/customermetadata.py @@ -33,10 +33,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + CustomerMetadata.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/customfielddata.py b/src/glean/api_client/models/customfielddata.py index 4fa86992..5e85ebbf 100644 --- a/src/glean/api_client/models/customfielddata.py +++ b/src/glean/api_client/models/customfielddata.py @@ -35,7 +35,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/customfieldvaluehyperlink.py b/src/glean/api_client/models/customfieldvaluehyperlink.py index 55228126..44931d12 100644 --- a/src/glean/api_client/models/customfieldvaluehyperlink.py +++ b/src/glean/api_client/models/customfieldvaluehyperlink.py @@ -30,10 +30,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + CustomFieldValueHyperlink.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/customfieldvalueperson.py b/src/glean/api_client/models/customfieldvalueperson.py index 09dc8c55..cb264f2b 100644 --- a/src/glean/api_client/models/customfieldvalueperson.py +++ b/src/glean/api_client/models/customfieldvalueperson.py @@ -25,7 +25,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/customfieldvaluestr.py b/src/glean/api_client/models/customfieldvaluestr.py index cae51a79..68f0fa1e 100644 --- a/src/glean/api_client/models/customfieldvaluestr.py +++ b/src/glean/api_client/models/customfieldvaluestr.py @@ -25,10 +25,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + CustomFieldValueStr.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/custommetadatapropertydefinition.py b/src/glean/api_client/models/custommetadatapropertydefinition.py new file mode 100644 index 00000000..26d09515 --- /dev/null +++ b/src/glean/api_client/models/custommetadatapropertydefinition.py @@ -0,0 +1,81 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +from glean.api_client import models, utils +from glean.api_client.types import BaseModel, UNSET_SENTINEL +import pydantic +from pydantic import field_serializer, model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class CustomMetadataPropertyDefinitionPropertyType( + str, Enum, metaclass=utils.OpenEnumMeta +): + r"""The type of metadata key. This governs the search and faceting behavior.""" + + TEXT = "TEXT" + PICKLIST = "PICKLIST" + TEXTLIST = "TEXTLIST" + MULTIPICKLIST = "MULTIPICKLIST" + + +class CustomMetadataPropertyDefinitionTypedDict(TypedDict): + r"""The definition for a key within a Custom Metadata schema. Only the fields applicable to Custom Metadata are exposed.""" + + name: str + r"""The name of the metadata key.""" + property_type: CustomMetadataPropertyDefinitionPropertyType + r"""The type of metadata key. This governs the search and faceting behavior.""" + skip_indexing: NotRequired[bool] + r"""If true then the property will not be indexed for retrieval and ranking.""" + + +class CustomMetadataPropertyDefinition(BaseModel): + r"""The definition for a key within a Custom Metadata schema. Only the fields applicable to Custom Metadata are exposed.""" + + name: str + r"""The name of the metadata key.""" + + property_type: Annotated[ + CustomMetadataPropertyDefinitionPropertyType, + pydantic.Field(alias="propertyType"), + ] + r"""The type of metadata key. This governs the search and faceting behavior.""" + + skip_indexing: Annotated[Optional[bool], pydantic.Field(alias="skipIndexing")] = ( + None + ) + r"""If true then the property will not be indexed for retrieval and ranking.""" + + @field_serializer("property_type") + def serialize_property_type(self, value): + if isinstance(value, str): + try: + return models.CustomMetadataPropertyDefinitionPropertyType(value) + except ValueError: + return value + return value + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["skipIndexing"]) + 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: + CustomMetadataPropertyDefinition.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/custommetadataputrequest.py b/src/glean/api_client/models/custommetadataputrequest.py new file mode 100644 index 00000000..aaa5152c --- /dev/null +++ b/src/glean/api_client/models/custommetadataputrequest.py @@ -0,0 +1,30 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .customproperty import CustomProperty, CustomPropertyTypedDict +from glean.api_client.types import BaseModel +import pydantic +from typing import List +from typing_extensions import Annotated, TypedDict + + +class CustomMetadataPutRequestTypedDict(TypedDict): + r"""Request body for adding or updating custom metadata on a document""" + + custom_metadata: List[CustomPropertyTypedDict] + r"""Array of custom metadata key-value pairs""" + + +class CustomMetadataPutRequest(BaseModel): + r"""Request body for adding or updating custom metadata on a document""" + + custom_metadata: Annotated[ + List[CustomProperty], pydantic.Field(alias="customMetadata") + ] + r"""Array of custom metadata key-value pairs""" + + +try: + CustomMetadataPutRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/custommetadataschema.py b/src/glean/api_client/models/custommetadataschema.py new file mode 100644 index 00000000..13576c2b --- /dev/null +++ b/src/glean/api_client/models/custommetadataschema.py @@ -0,0 +1,33 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .custommetadatapropertydefinition import ( + CustomMetadataPropertyDefinition, + CustomMetadataPropertyDefinitionTypedDict, +) +from glean.api_client.types import BaseModel +import pydantic +from typing import List +from typing_extensions import Annotated, TypedDict + + +class CustomMetadataSchemaTypedDict(TypedDict): + r"""Schema for custom metadata containing metadata key definitions""" + + metadata_keys: List[CustomMetadataPropertyDefinitionTypedDict] + r"""Array of metadata key definitions""" + + +class CustomMetadataSchema(BaseModel): + r"""Schema for custom metadata containing metadata key definitions""" + + metadata_keys: Annotated[ + List[CustomMetadataPropertyDefinition], pydantic.Field(alias="metadataKeys") + ] + r"""Array of metadata key definitions""" + + +try: + CustomMetadataSchema.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/customproperty.py b/src/glean/api_client/models/customproperty.py index 27b23f79..74cc710e 100644 --- a/src/glean/api_client/models/customproperty.py +++ b/src/glean/api_client/models/customproperty.py @@ -12,7 +12,7 @@ class CustomPropertyTypedDict(TypedDict): name: NotRequired[str] value: NotRequired[Any] - r"""Must either be a string or an array of strings. An integer, boolean, etc. is not valid. When OpenAPI Generator supports `oneOf`, we can semantically enforce this.""" + r"""Must be a string, a number (for INT properties), or an array of strings. A boolean is not valid. When OpenAPI Generator supports `oneOf`, we can semantically enforce this.""" class CustomProperty(BaseModel): @@ -21,7 +21,7 @@ class CustomProperty(BaseModel): name: Optional[str] = None value: Optional[Any] = None - r"""Must either be a string or an array of strings. An integer, boolean, etc. is not valid. When OpenAPI Generator supports `oneOf`, we can semantically enforce this.""" + r"""Must be a string, a number (for INT properties), or an array of strings. A boolean is not valid. When OpenAPI Generator supports `oneOf`, we can semantically enforce this.""" @model_serializer(mode="wrap") def serialize_model(self, handler): @@ -31,7 +31,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/customsensitiveexpression.py b/src/glean/api_client/models/customsensitiveexpression.py index 8cdf8021..4d525872 100644 --- a/src/glean/api_client/models/customsensitiveexpression.py +++ b/src/glean/api_client/models/customsensitiveexpression.py @@ -36,10 +36,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + CustomSensitiveExpression.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/customsensitiverule.py b/src/glean/api_client/models/customsensitiverule.py index 65ccb9c2..c767e33d 100644 --- a/src/glean/api_client/models/customsensitiverule.py +++ b/src/glean/api_client/models/customsensitiverule.py @@ -3,14 +3,15 @@ from __future__ import annotations from .customsensitiveruletype import CustomSensitiveRuleType from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict -class CustomSensitiveRuleLikelihoodThreshold(str, Enum): +class CustomSensitiveRuleLikelihoodThreshold(str, Enum, metaclass=utils.OpenEnumMeta): r"""Likelihood threshold for BUILT_IN infotypes (e.g., LIKELY, VERY_LIKELY). Only applicable for BUILT_IN type.""" LIKELY = "LIKELY" @@ -47,6 +48,24 @@ class CustomSensitiveRule(BaseModel): ] = None r"""Likelihood threshold for BUILT_IN infotypes (e.g., LIKELY, VERY_LIKELY). Only applicable for BUILT_IN type.""" + @field_serializer("type") + def serialize_type(self, value): + if isinstance(value, str): + try: + return models.CustomSensitiveRuleType(value) + except ValueError: + return value + return value + + @field_serializer("likelihood_threshold") + def serialize_likelihood_threshold(self, value): + if isinstance(value, str): + try: + return models.CustomSensitiveRuleLikelihoodThreshold(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["id", "value", "type", "likelihoodThreshold"]) @@ -55,10 +74,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + CustomSensitiveRule.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/customsensitiveruletype.py b/src/glean/api_client/models/customsensitiveruletype.py index be887e84..b273ac98 100644 --- a/src/glean/api_client/models/customsensitiveruletype.py +++ b/src/glean/api_client/models/customsensitiveruletype.py @@ -2,9 +2,10 @@ from __future__ import annotations from enum import Enum +from glean.api_client import utils -class CustomSensitiveRuleType(str, Enum): +class CustomSensitiveRuleType(str, Enum, metaclass=utils.OpenEnumMeta): r"""Type of the custom sensitive rule.""" REGEX = "REGEX" diff --git a/src/glean/api_client/models/datasourcebulkmembershipdefinition.py b/src/glean/api_client/models/datasourcebulkmembershipdefinition.py index abbd2d04..31e0065c 100644 --- a/src/glean/api_client/models/datasourcebulkmembershipdefinition.py +++ b/src/glean/api_client/models/datasourcebulkmembershipdefinition.py @@ -38,10 +38,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + DatasourceBulkMembershipDefinition.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/datasourceconfigurationresponse.py b/src/glean/api_client/models/datasourceconfigurationresponse.py new file mode 100644 index 00000000..15b227d9 --- /dev/null +++ b/src/glean/api_client/models/datasourceconfigurationresponse.py @@ -0,0 +1,23 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .datasourceinstanceconfiguration import ( + DatasourceInstanceConfiguration, + DatasourceInstanceConfigurationTypedDict, +) +from glean.api_client.types import BaseModel +from typing_extensions import TypedDict + + +class DatasourceConfigurationResponseTypedDict(TypedDict): + r"""The greenlisted configuration values for a datasource instance. Only keys that are exposed via the public API greenlist are included.""" + + configuration: DatasourceInstanceConfigurationTypedDict + r"""Configuration for a datasource instance""" + + +class DatasourceConfigurationResponse(BaseModel): + r"""The greenlisted configuration values for a datasource instance. Only keys that are exposed via the public API greenlist are included.""" + + configuration: DatasourceInstanceConfiguration + r"""Configuration for a datasource instance""" diff --git a/src/glean/api_client/models/datasourcecredentialstatus.py b/src/glean/api_client/models/datasourcecredentialstatus.py new file mode 100644 index 00000000..aa0eff70 --- /dev/null +++ b/src/glean/api_client/models/datasourcecredentialstatus.py @@ -0,0 +1,15 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +from glean.api_client import utils + + +class DatasourceCredentialStatus(str, Enum, metaclass=utils.OpenEnumMeta): + r"""Lifecycle state of the credentials installed for a datasource instance. Mirrors the internal admin Status enum so the handler can surface the same health signals already tracked today. EXPIRING_SOON is represented as VALID_WITH_WARNINGS (with detail in `message`); EXPIRED is surfaced as INVALID plus a non-null `expiresAt` in the past.""" + + VALID = "VALID" + VALID_WITH_WARNINGS = "VALID_WITH_WARNINGS" + VALIDATING = "VALIDATING" + INVALID = "INVALID" + MISSING = "MISSING" diff --git a/src/glean/api_client/models/datasourcecredentialstatusresponse.py b/src/glean/api_client/models/datasourcecredentialstatusresponse.py new file mode 100644 index 00000000..150f1a48 --- /dev/null +++ b/src/glean/api_client/models/datasourcecredentialstatusresponse.py @@ -0,0 +1,81 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .datasourcecredentialstatus import DatasourceCredentialStatus +from datetime import datetime +from glean.api_client import models +from glean.api_client.types import BaseModel, UNSET_SENTINEL +import pydantic +from pydantic import field_serializer, model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class DatasourceCredentialStatusResponseTypedDict(TypedDict): + r"""Status of the credentials currently installed for a datasource instance.""" + + status: DatasourceCredentialStatus + r"""Lifecycle state of the credentials installed for a datasource instance. Mirrors the internal admin Status enum so the handler can surface the same health signals already tracked today. EXPIRING_SOON is represented as VALID_WITH_WARNINGS (with detail in `message`); EXPIRED is surfaced as INVALID plus a non-null `expiresAt` in the past. + + """ + last_rotated_at: NotRequired[datetime] + r"""When the credentials were last rotated. Omitted when not known.""" + expires_at: NotRequired[datetime] + r"""When the active credentials expire. Omitted when not known or not applicable to this credential type. + + """ + message: NotRequired[str] + r"""Optional human-readable detail about the current credential status.""" + + +class DatasourceCredentialStatusResponse(BaseModel): + r"""Status of the credentials currently installed for a datasource instance.""" + + status: DatasourceCredentialStatus + r"""Lifecycle state of the credentials installed for a datasource instance. Mirrors the internal admin Status enum so the handler can surface the same health signals already tracked today. EXPIRING_SOON is represented as VALID_WITH_WARNINGS (with detail in `message`); EXPIRED is surfaced as INVALID plus a non-null `expiresAt` in the past. + + """ + + last_rotated_at: Annotated[ + Optional[datetime], pydantic.Field(alias="lastRotatedAt") + ] = None + r"""When the credentials were last rotated. Omitted when not known.""" + + expires_at: Annotated[Optional[datetime], pydantic.Field(alias="expiresAt")] = None + r"""When the active credentials expire. Omitted when not known or not applicable to this credential type. + + """ + + message: Optional[str] = None + r"""Optional human-readable detail about the current credential status.""" + + @field_serializer("status") + def serialize_status(self, value): + if isinstance(value, str): + try: + return models.DatasourceCredentialStatus(value) + except ValueError: + return value + return value + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["lastRotatedAt", "expiresAt", "message"]) + 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: + DatasourceCredentialStatusResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/datasourceinstanceconfiguration.py b/src/glean/api_client/models/datasourceinstanceconfiguration.py new file mode 100644 index 00000000..de6cd8aa --- /dev/null +++ b/src/glean/api_client/models/datasourceinstanceconfiguration.py @@ -0,0 +1,21 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .configurationvalue import ConfigurationValue, ConfigurationValueTypedDict +from glean.api_client.types import BaseModel +from typing import Dict +from typing_extensions import TypedDict + + +class DatasourceInstanceConfigurationTypedDict(TypedDict): + r"""Configuration for a datasource instance""" + + values: Dict[str, ConfigurationValueTypedDict] + r"""A map from configuration key names to their values""" + + +class DatasourceInstanceConfiguration(BaseModel): + r"""Configuration for a datasource instance""" + + values: Dict[str, ConfigurationValue] + r"""A map from configuration key names to their values""" diff --git a/src/glean/api_client/models/datasourcemembershipdefinition.py b/src/glean/api_client/models/datasourcemembershipdefinition.py index 1926decb..4243bb1b 100644 --- a/src/glean/api_client/models/datasourcemembershipdefinition.py +++ b/src/glean/api_client/models/datasourcemembershipdefinition.py @@ -43,10 +43,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + DatasourceMembershipDefinition.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/datasourceobjecttypedocumentcountentry.py b/src/glean/api_client/models/datasourceobjecttypedocumentcountentry.py index 9f32ff17..306d5d5b 100644 --- a/src/glean/api_client/models/datasourceobjecttypedocumentcountentry.py +++ b/src/glean/api_client/models/datasourceobjecttypedocumentcountentry.py @@ -30,10 +30,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + DatasourceObjectTypeDocumentCountEntry.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/datasourceprofile.py b/src/glean/api_client/models/datasourceprofile.py index 7afeb8f9..4a54a6d3 100644 --- a/src/glean/api_client/models/datasourceprofile.py +++ b/src/glean/api_client/models/datasourceprofile.py @@ -49,10 +49,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + DatasourceProfile.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/datasourceuserdefinition.py b/src/glean/api_client/models/datasourceuserdefinition.py index a542e899..af754d51 100644 --- a/src/glean/api_client/models/datasourceuserdefinition.py +++ b/src/glean/api_client/models/datasourceuserdefinition.py @@ -40,10 +40,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + DatasourceUserDefinition.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/debugdatasourcestatusidentityresponsecomponent.py b/src/glean/api_client/models/debugdatasourcestatusidentityresponsecomponent.py index ae25799e..a027cc7e 100644 --- a/src/glean/api_client/models/debugdatasourcestatusidentityresponsecomponent.py +++ b/src/glean/api_client/models/debugdatasourcestatusidentityresponsecomponent.py @@ -29,7 +29,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -61,10 +61,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + DebugDatasourceStatusIdentityResponseComponent.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/debugdatasourcestatusresponse.py b/src/glean/api_client/models/debugdatasourcestatusresponse.py index 59087c91..b77b3855 100644 --- a/src/glean/api_client/models/debugdatasourcestatusresponse.py +++ b/src/glean/api_client/models/debugdatasourcestatusresponse.py @@ -18,9 +18,10 @@ ProcessingHistoryEventTypedDict, ) from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import List, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -51,7 +52,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -91,7 +92,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -129,7 +130,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -138,7 +139,7 @@ def serialize_model(self, handler): return m -class DatasourceVisibility(str, Enum): +class DatasourceVisibility(str, Enum, metaclass=utils.OpenEnumMeta): r"""The visibility of the datasource, an enum of VISIBLE_TO_ALL, VISIBLE_TO_TEST_GROUP, NOT_VISIBLE""" ENABLED_FOR_ALL = "ENABLED_FOR_ALL" @@ -167,6 +168,15 @@ class DebugDatasourceStatusResponse(BaseModel): ] = None r"""The visibility of the datasource, an enum of VISIBLE_TO_ALL, VISIBLE_TO_TEST_GROUP, NOT_VISIBLE""" + @field_serializer("datasource_visibility") + def serialize_datasource_visibility(self, value): + if isinstance(value, str): + try: + return models.DatasourceVisibility(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["documents", "identity", "datasourceVisibility"]) @@ -175,10 +185,24 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + Documents.model_rebuild() +except NameError: + pass +try: + Identity.model_rebuild() +except NameError: + pass +try: + DebugDatasourceStatusResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/debugdocumentlifecyclerequest.py b/src/glean/api_client/models/debugdocumentlifecyclerequest.py new file mode 100644 index 00000000..97b74290 --- /dev/null +++ b/src/glean/api_client/models/debugdocumentlifecyclerequest.py @@ -0,0 +1,59 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel, UNSET_SENTINEL +import pydantic +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class DebugDocumentLifecycleRequestTypedDict(TypedDict): + r"""Describes the request body of the /debug/{datasource}/document/events API call.""" + + object_type: str + r"""Object type of the document to get lifecycle events for.""" + doc_id: str + r"""Glean Document ID within the datasource to get lifecycle events for.""" + start_date: NotRequired[str] + r"""The start date for events to be fetched. Cannot be more than 30 days (default 7 days) in the past.""" + max_events: NotRequired[int] + r"""Max number of events to be fetched. Cannot be more than 100 (default 20).""" + + +class DebugDocumentLifecycleRequest(BaseModel): + r"""Describes the request body of the /debug/{datasource}/document/events API call.""" + + object_type: Annotated[str, pydantic.Field(alias="objectType")] + r"""Object type of the document to get lifecycle events for.""" + + doc_id: Annotated[str, pydantic.Field(alias="docId")] + r"""Glean Document ID within the datasource to get lifecycle events for.""" + + start_date: Annotated[Optional[str], pydantic.Field(alias="startDate")] = None + r"""The start date for events to be fetched. Cannot be more than 30 days (default 7 days) in the past.""" + + max_events: Annotated[Optional[int], pydantic.Field(alias="maxEvents")] = None + r"""Max number of events to be fetched. Cannot be more than 100 (default 20).""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["startDate", "maxEvents"]) + 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: + DebugDocumentLifecycleRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/debugdocumentlifecycleresponse.py b/src/glean/api_client/models/debugdocumentlifecycleresponse.py new file mode 100644 index 00000000..5e6ded73 --- /dev/null +++ b/src/glean/api_client/models/debugdocumentlifecycleresponse.py @@ -0,0 +1,47 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .lifecycleevent import LifeCycleEvent, LifeCycleEventTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +import pydantic +from pydantic import model_serializer +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class DebugDocumentLifecycleResponseTypedDict(TypedDict): + r"""Describes the response body of the /debug/{datasource}/document/events API call""" + + life_cycle_events: NotRequired[List[LifeCycleEventTypedDict]] + r"""List of lifecycle events corresponding to the document""" + + +class DebugDocumentLifecycleResponse(BaseModel): + r"""Describes the response body of the /debug/{datasource}/document/events API call""" + + life_cycle_events: Annotated[ + Optional[List[LifeCycleEvent]], pydantic.Field(alias="lifeCycleEvents") + ] = None + r"""List of lifecycle events corresponding to the document""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["lifeCycleEvents"]) + 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: + DebugDocumentLifecycleResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/debugdocumentrequest.py b/src/glean/api_client/models/debugdocumentrequest.py index 981a5987..dc89fa28 100644 --- a/src/glean/api_client/models/debugdocumentrequest.py +++ b/src/glean/api_client/models/debugdocumentrequest.py @@ -23,3 +23,9 @@ class DebugDocumentRequest(BaseModel): doc_id: Annotated[str, pydantic.Field(alias="docId")] r"""Glean Document ID within the datasource to get the status for.""" + + +try: + DebugDocumentRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/debugdocumentresponse.py b/src/glean/api_client/models/debugdocumentresponse.py index 68ef57df..3efc18aa 100644 --- a/src/glean/api_client/models/debugdocumentresponse.py +++ b/src/glean/api_client/models/debugdocumentresponse.py @@ -45,10 +45,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + DebugDocumentResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/debugdocumentsrequest.py b/src/glean/api_client/models/debugdocumentsrequest.py index d69a6bac..dbef6d98 100644 --- a/src/glean/api_client/models/debugdocumentsrequest.py +++ b/src/glean/api_client/models/debugdocumentsrequest.py @@ -22,3 +22,9 @@ class DebugDocumentsRequest(BaseModel): List[DebugDocumentRequest], pydantic.Field(alias="debugDocuments") ] r"""Documents to fetch debug information for""" + + +try: + DebugDocumentsRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/debugdocumentsresponse.py b/src/glean/api_client/models/debugdocumentsresponse.py index c56329bc..54513fca 100644 --- a/src/glean/api_client/models/debugdocumentsresponse.py +++ b/src/glean/api_client/models/debugdocumentsresponse.py @@ -36,10 +36,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + DebugDocumentsResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/debugdocumentsresponseitem.py b/src/glean/api_client/models/debugdocumentsresponseitem.py index 1aca00ae..63165771 100644 --- a/src/glean/api_client/models/debugdocumentsresponseitem.py +++ b/src/glean/api_client/models/debugdocumentsresponseitem.py @@ -42,10 +42,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + DebugDocumentsResponseItem.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/debuguserresponse.py b/src/glean/api_client/models/debuguserresponse.py index a1ec97ce..43e28fa9 100644 --- a/src/glean/api_client/models/debuguserresponse.py +++ b/src/glean/api_client/models/debuguserresponse.py @@ -42,10 +42,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + DebugUserResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/delete_rest_api_index_custom_metadata_schema_groupname_op.py b/src/glean/api_client/models/delete_rest_api_index_custom_metadata_schema_groupname_op.py new file mode 100644 index 00000000..ca9f8dc1 --- /dev/null +++ b/src/glean/api_client/models/delete_rest_api_index_custom_metadata_schema_groupname_op.py @@ -0,0 +1,26 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel +from glean.api_client.utils import FieldMetadata, PathParamMetadata +import pydantic +from typing_extensions import Annotated, TypedDict + + +DELETE_REST_API_INDEX_CUSTOM_METADATA_SCHEMA_GROUP_NAME_OP_SERVERS = [ + "https://{instance}-be.glean.com", +] + + +class DeleteRestAPIIndexCustomMetadataSchemaGroupNameRequestTypedDict(TypedDict): + group_name: str + r"""Name of the metadata group schema""" + + +class DeleteRestAPIIndexCustomMetadataSchemaGroupNameRequest(BaseModel): + group_name: Annotated[ + str, + pydantic.Field(alias="groupName"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""Name of the metadata group schema""" diff --git a/src/glean/api_client/models/delete_rest_api_index_document_docid_custom_metadata_groupname_op.py b/src/glean/api_client/models/delete_rest_api_index_document_docid_custom_metadata_groupname_op.py new file mode 100644 index 00000000..74b5dd9e --- /dev/null +++ b/src/glean/api_client/models/delete_rest_api_index_document_docid_custom_metadata_groupname_op.py @@ -0,0 +1,35 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel +from glean.api_client.utils import FieldMetadata, PathParamMetadata +import pydantic +from typing_extensions import Annotated, TypedDict + + +DELETE_REST_API_INDEX_DOCUMENT_DOC_ID_CUSTOM_METADATA_GROUP_NAME_OP_SERVERS = [ + "https://{instance}-be.glean.com", +] + + +class DeleteRestAPIIndexDocumentDocIDCustomMetadataGroupNameRequestTypedDict(TypedDict): + doc_id: str + r"""Unique Glean identifier of the document""" + group_name: str + r"""Name of the metadata group as specified while adding schema""" + + +class DeleteRestAPIIndexDocumentDocIDCustomMetadataGroupNameRequest(BaseModel): + doc_id: Annotated[ + str, + pydantic.Field(alias="docId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""Unique Glean identifier of the document""" + + group_name: Annotated[ + str, + pydantic.Field(alias="groupName"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""Name of the metadata group as specified while adding schema""" diff --git a/src/glean/api_client/models/deleteallchatsop.py b/src/glean/api_client/models/deleteallchatsop.py index 34bb7be3..cac2a62d 100644 --- a/src/glean/api_client/models/deleteallchatsop.py +++ b/src/glean/api_client/models/deleteallchatsop.py @@ -10,11 +10,19 @@ class DeleteallchatsRequestTypedDict(TypedDict): + locale: NotRequired[str] + r"""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: 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.""" class DeleteallchatsRequest(BaseModel): + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""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: Annotated[ Optional[int], pydantic.Field(alias="timezoneOffset"), @@ -24,13 +32,13 @@ class DeleteallchatsRequest(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = set(["timezoneOffset"]) + optional_fields = set(["locale", "timezoneOffset"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/deleteannouncementop.py b/src/glean/api_client/models/deleteannouncementop.py new file mode 100644 index 00000000..c7b39677 --- /dev/null +++ b/src/glean/api_client/models/deleteannouncementop.py @@ -0,0 +1,49 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .deleteannouncementrequest import ( + DeleteAnnouncementRequest, + DeleteAnnouncementRequestTypedDict, +) +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class DeleteannouncementRequestRequestTypedDict(TypedDict): + delete_announcement_request: DeleteAnnouncementRequestTypedDict + r"""Delete announcement request""" + locale: NotRequired[str] + r"""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`.""" + + +class DeleteannouncementRequestRequest(BaseModel): + delete_announcement_request: Annotated[ + DeleteAnnouncementRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""Delete announcement request""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""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`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/deleteanswerop.py b/src/glean/api_client/models/deleteanswerop.py new file mode 100644 index 00000000..af7a16d7 --- /dev/null +++ b/src/glean/api_client/models/deleteanswerop.py @@ -0,0 +1,46 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .deleteanswerrequest import DeleteAnswerRequest, DeleteAnswerRequestTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class DeleteanswerRequestRequestTypedDict(TypedDict): + delete_answer_request: DeleteAnswerRequestTypedDict + r"""DeleteAnswer request""" + locale: NotRequired[str] + r"""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`.""" + + +class DeleteanswerRequestRequest(BaseModel): + delete_answer_request: Annotated[ + DeleteAnswerRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""DeleteAnswer request""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""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`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/deleteanswerrequest.py b/src/glean/api_client/models/deleteanswerrequest.py index 2f5efe22..5c83ec3e 100644 --- a/src/glean/api_client/models/deleteanswerrequest.py +++ b/src/glean/api_client/models/deleteanswerrequest.py @@ -30,10 +30,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + DeleteAnswerRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/deletechatfilesop.py b/src/glean/api_client/models/deletechatfilesop.py index ca1a1f9c..01f8e688 100644 --- a/src/glean/api_client/models/deletechatfilesop.py +++ b/src/glean/api_client/models/deletechatfilesop.py @@ -15,6 +15,8 @@ class DeletechatfilesRequestRequestTypedDict(TypedDict): delete_chat_files_request: DeleteChatFilesRequestTypedDict + locale: NotRequired[str] + r"""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: 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.""" @@ -25,6 +27,12 @@ class DeletechatfilesRequestRequest(BaseModel): FieldMetadata(request=RequestMetadata(media_type="application/json")), ] + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""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: Annotated[ Optional[int], pydantic.Field(alias="timezoneOffset"), @@ -34,13 +42,13 @@ class DeletechatfilesRequestRequest(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = set(["timezoneOffset"]) + optional_fields = set(["locale", "timezoneOffset"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/deletechatfilesrequest.py b/src/glean/api_client/models/deletechatfilesrequest.py index fc8ea162..a6c201fa 100644 --- a/src/glean/api_client/models/deletechatfilesrequest.py +++ b/src/glean/api_client/models/deletechatfilesrequest.py @@ -15,3 +15,9 @@ class DeleteChatFilesRequestTypedDict(TypedDict): class DeleteChatFilesRequest(BaseModel): file_ids: Annotated[List[str], pydantic.Field(alias="fileIds")] r"""IDs of files to delete.""" + + +try: + DeleteChatFilesRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/deletechatsop.py b/src/glean/api_client/models/deletechatsop.py index a3230e01..fc7d3083 100644 --- a/src/glean/api_client/models/deletechatsop.py +++ b/src/glean/api_client/models/deletechatsop.py @@ -12,6 +12,8 @@ class DeletechatsRequestRequestTypedDict(TypedDict): delete_chats_request: DeleteChatsRequestTypedDict + locale: NotRequired[str] + r"""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: 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.""" @@ -22,6 +24,12 @@ class DeletechatsRequestRequest(BaseModel): FieldMetadata(request=RequestMetadata(media_type="application/json")), ] + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""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: Annotated[ Optional[int], pydantic.Field(alias="timezoneOffset"), @@ -31,13 +39,13 @@ class DeletechatsRequestRequest(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = set(["timezoneOffset"]) + optional_fields = set(["locale", "timezoneOffset"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/deletecollectionitemop.py b/src/glean/api_client/models/deletecollectionitemop.py new file mode 100644 index 00000000..10966910 --- /dev/null +++ b/src/glean/api_client/models/deletecollectionitemop.py @@ -0,0 +1,49 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .deletecollectionitemrequest import ( + DeleteCollectionItemRequest, + DeleteCollectionItemRequestTypedDict, +) +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class DeletecollectionitemRequestRequestTypedDict(TypedDict): + delete_collection_item_request: DeleteCollectionItemRequestTypedDict + r"""Data describing the delete operation.""" + locale: NotRequired[str] + r"""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`.""" + + +class DeletecollectionitemRequestRequest(BaseModel): + delete_collection_item_request: Annotated[ + DeleteCollectionItemRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""Data describing the delete operation.""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""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`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/deletecollectionitemrequest.py b/src/glean/api_client/models/deletecollectionitemrequest.py index d15e5f15..ac801e8c 100644 --- a/src/glean/api_client/models/deletecollectionitemrequest.py +++ b/src/glean/api_client/models/deletecollectionitemrequest.py @@ -35,10 +35,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + DeleteCollectionItemRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/deletecollectionitemresponse.py b/src/glean/api_client/models/deletecollectionitemresponse.py index 05b69dfa..eb2315c4 100644 --- a/src/glean/api_client/models/deletecollectionitemresponse.py +++ b/src/glean/api_client/models/deletecollectionitemresponse.py @@ -23,7 +23,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/deletecollectionop.py b/src/glean/api_client/models/deletecollectionop.py new file mode 100644 index 00000000..8721ecb5 --- /dev/null +++ b/src/glean/api_client/models/deletecollectionop.py @@ -0,0 +1,49 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .deletecollectionrequest import ( + DeleteCollectionRequest, + DeleteCollectionRequestTypedDict, +) +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class DeletecollectionRequestRequestTypedDict(TypedDict): + delete_collection_request: DeleteCollectionRequestTypedDict + r"""DeleteCollection request""" + locale: NotRequired[str] + r"""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`.""" + + +class DeletecollectionRequestRequest(BaseModel): + delete_collection_request: Annotated[ + DeleteCollectionRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""DeleteCollection request""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""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`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/deletecollectionrequest.py b/src/glean/api_client/models/deletecollectionrequest.py index e68cd69e..cf68ff3b 100644 --- a/src/glean/api_client/models/deletecollectionrequest.py +++ b/src/glean/api_client/models/deletecollectionrequest.py @@ -32,10 +32,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + DeleteCollectionRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/deletedocumentrequest.py b/src/glean/api_client/models/deletedocumentrequest.py index 411c1411..3fb67bc9 100644 --- a/src/glean/api_client/models/deletedocumentrequest.py +++ b/src/glean/api_client/models/deletedocumentrequest.py @@ -44,10 +44,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + DeleteDocumentRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/deleteemployeerequest.py b/src/glean/api_client/models/deleteemployeerequest.py index ba420af1..b413b516 100644 --- a/src/glean/api_client/models/deleteemployeerequest.py +++ b/src/glean/api_client/models/deleteemployeerequest.py @@ -34,10 +34,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + DeleteEmployeeRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/deletegrouprequest.py b/src/glean/api_client/models/deletegrouprequest.py index d70f6c91..651551f3 100644 --- a/src/glean/api_client/models/deletegrouprequest.py +++ b/src/glean/api_client/models/deletegrouprequest.py @@ -39,10 +39,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + DeleteGroupRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/deletemembershiprequest.py b/src/glean/api_client/models/deletemembershiprequest.py index 4d7397b8..60f59a29 100644 --- a/src/glean/api_client/models/deletemembershiprequest.py +++ b/src/glean/api_client/models/deletemembershiprequest.py @@ -42,7 +42,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/deleteshortcutop.py b/src/glean/api_client/models/deleteshortcutop.py new file mode 100644 index 00000000..5862db47 --- /dev/null +++ b/src/glean/api_client/models/deleteshortcutop.py @@ -0,0 +1,46 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .deleteshortcutrequest import DeleteShortcutRequest, DeleteShortcutRequestTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class DeleteshortcutRequestRequestTypedDict(TypedDict): + delete_shortcut_request: DeleteShortcutRequestTypedDict + r"""DeleteShortcut request""" + locale: NotRequired[str] + r"""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`.""" + + +class DeleteshortcutRequestRequest(BaseModel): + delete_shortcut_request: Annotated[ + DeleteShortcutRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""DeleteShortcut request""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""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`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/deleteuserrequest.py b/src/glean/api_client/models/deleteuserrequest.py index 4ed4035e..a8dd578b 100644 --- a/src/glean/api_client/models/deleteuserrequest.py +++ b/src/glean/api_client/models/deleteuserrequest.py @@ -38,7 +38,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/digest.py b/src/glean/api_client/models/digest.py index b7ee377c..432716a8 100644 --- a/src/glean/api_client/models/digest.py +++ b/src/glean/api_client/models/digest.py @@ -47,10 +47,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + Digest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/digestsection.py b/src/glean/api_client/models/digestsection.py index 13069a13..17ac661e 100644 --- a/src/glean/api_client/models/digestsection.py +++ b/src/glean/api_client/models/digestsection.py @@ -3,9 +3,10 @@ from __future__ import annotations from .digestupdate import DigestUpdate, DigestUpdateTypedDict from .sectiontype import SectionType +from glean.api_client import models from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import List, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -60,6 +61,15 @@ class DigestSection(BaseModel): url: Optional[str] = None r"""Optional URL for the digest section. Should be populated only if the section is a CHANNEL type section.""" + @field_serializer("type") + def serialize_type(self, value): + if isinstance(value, str): + try: + return models.SectionType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -70,10 +80,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + DigestSection.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/digestupdate.py b/src/glean/api_client/models/digestupdate.py index caba0d3b..be822894 100644 --- a/src/glean/api_client/models/digestupdate.py +++ b/src/glean/api_client/models/digestupdate.py @@ -2,8 +2,9 @@ from __future__ import annotations from .updatetype import UpdateType +from glean.api_client import models from glean.api_client.types import BaseModel, UNSET_SENTINEL -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import List, Optional from typing_extensions import NotRequired, TypedDict @@ -42,6 +43,15 @@ class DigestUpdate(BaseModel): type: Optional[UpdateType] = None r"""Optional type classification for the update.""" + @field_serializer("type") + def serialize_type(self, value): + if isinstance(value, str): + try: + return models.UpdateType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["urls", "url", "title", "datasource", "summary", "type"]) @@ -50,7 +60,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/disambiguation.py b/src/glean/api_client/models/disambiguation.py index e4bf574e..68a5514f 100644 --- a/src/glean/api_client/models/disambiguation.py +++ b/src/glean/api_client/models/disambiguation.py @@ -2,8 +2,9 @@ from __future__ import annotations from .entitytype import EntityType +from glean.api_client import models from glean.api_client.types import BaseModel, UNSET_SENTINEL -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -31,6 +32,15 @@ class Disambiguation(BaseModel): type: Optional[EntityType] = None r"""The type of entity.""" + @field_serializer("type") + def serialize_type(self, value): + if isinstance(value, str): + try: + return models.EntityType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["name", "id", "type"]) @@ -39,7 +49,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/displayablelistitemuiconfig.py b/src/glean/api_client/models/displayablelistitemuiconfig.py index 0a70f09e..3e0031b7 100644 --- a/src/glean/api_client/models/displayablelistitemuiconfig.py +++ b/src/glean/api_client/models/displayablelistitemuiconfig.py @@ -31,10 +31,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + DisplayableListItemUIConfig.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/dlpconfig.py b/src/glean/api_client/models/dlpconfig.py index 51a14b40..5b570053 100644 --- a/src/glean/api_client/models/dlpconfig.py +++ b/src/glean/api_client/models/dlpconfig.py @@ -47,7 +47,7 @@ class DlpConfigTypedDict(TypedDict): auto_hide_docs: NotRequired[bool] r"""auto hide documents with findings in the report""" allowlist_options: NotRequired[AllowlistOptionsTypedDict] - r"""Terms that are allow-listed during the scans. If any finding picked up by a rule exactly matches a term in the allow-list, it will not be counted as a violation.""" + r"""Terms and regexes that are allow-listed during the scans. If any finding picked up by a rule exactly matches a term, or matches a regex, in the allow-list, it will not be counted as a violation.""" class DlpConfig(BaseModel): @@ -59,7 +59,7 @@ class DlpConfig(BaseModel): sensitive_info_types: Annotated[ Optional[List[SensitiveInfoType]], pydantic.Field( - deprecated="warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible.", + deprecated="warning: ** DEPRECATED ** - Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use sensitiveContentOptions instead.", alias="sensitiveInfoTypes", ), ] = None @@ -73,7 +73,7 @@ class DlpConfig(BaseModel): external_sharing_options: Annotated[ Optional[ExternalSharingOptions], pydantic.Field( - deprecated="warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible.", + deprecated="warning: ** DEPRECATED ** - Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use broadSharingOptions instead.", alias="externalSharingOptions", ), ] = None @@ -111,7 +111,7 @@ class DlpConfig(BaseModel): allowlist_options: Annotated[ Optional[AllowlistOptions], pydantic.Field(alias="allowlistOptions") ] = None - r"""Terms that are allow-listed during the scans. If any finding picked up by a rule exactly matches a term in the allow-list, it will not be counted as a violation.""" + r"""Terms and regexes that are allow-listed during the scans. If any finding picked up by a rule exactly matches a term, or matches a regex, in the allow-list, it will not be counted as a violation.""" @model_serializer(mode="wrap") def serialize_model(self, handler): @@ -137,10 +137,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + DlpConfig.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/dlpexportfindingsrequest.py b/src/glean/api_client/models/dlpexportfindingsrequest.py index be0f4013..44fedb77 100644 --- a/src/glean/api_client/models/dlpexportfindingsrequest.py +++ b/src/glean/api_client/models/dlpexportfindingsrequest.py @@ -2,6 +2,7 @@ from __future__ import annotations from .dlpfindingfilter import DlpFindingFilter, DlpFindingFilterTypedDict +from .dlpissuefilter import DlpIssueFilter, DlpIssueFilterTypedDict from enum import Enum from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic @@ -10,11 +11,12 @@ from typing_extensions import Annotated, NotRequired, TypedDict -class ExportType(str, Enum): +class DlpExportFindingsRequestExportType(str, Enum): r"""The type of export to perform""" FINDINGS = "FINDINGS" DOCUMENTS = "DOCUMENTS" + ISSUES = "ISSUES" class FieldScope(str, Enum): @@ -26,9 +28,11 @@ class FieldScope(str, Enum): class DlpExportFindingsRequestTypedDict(TypedDict): - export_type: NotRequired[ExportType] + export_type: NotRequired[DlpExportFindingsRequestExportType] r"""The type of export to perform""" filter_: NotRequired[DlpFindingFilterTypedDict] + issue_filter: NotRequired[DlpIssueFilterTypedDict] + r"""Filter for DLP issues. Includes document-level filters and issue-specific filters.""" file_name: NotRequired[str] r"""The name of the file to export the findings to""" field_scope: NotRequired[FieldScope] @@ -38,15 +42,20 @@ class DlpExportFindingsRequestTypedDict(TypedDict): class DlpExportFindingsRequest(BaseModel): - export_type: Annotated[Optional[ExportType], pydantic.Field(alias="exportType")] = ( - None - ) + export_type: Annotated[ + Optional[DlpExportFindingsRequestExportType], pydantic.Field(alias="exportType") + ] = None r"""The type of export to perform""" filter_: Annotated[Optional[DlpFindingFilter], pydantic.Field(alias="filter")] = ( None ) + issue_filter: Annotated[ + Optional[DlpIssueFilter], pydantic.Field(alias="issueFilter") + ] = None + r"""Filter for DLP issues. Includes document-level filters and issue-specific filters.""" + file_name: Annotated[Optional[str], pydantic.Field(alias="fileName")] = None r"""The name of the file to export the findings to""" @@ -63,17 +72,30 @@ class DlpExportFindingsRequest(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( - ["exportType", "filter", "fileName", "fieldScope", "fieldsToExclude"] + [ + "exportType", + "filter", + "issueFilter", + "fileName", + "fieldScope", + "fieldsToExclude", + ] ) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + DlpExportFindingsRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/dlpfindingfilter.py b/src/glean/api_client/models/dlpfindingfilter.py index dec1509d..960d3753 100644 --- a/src/glean/api_client/models/dlpfindingfilter.py +++ b/src/glean/api_client/models/dlpfindingfilter.py @@ -1,11 +1,13 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations +from .dlpissuestatus import DlpIssueStatus from .dlpseverity import DlpSeverity from .timerangefilter import TimeRangeFilter, TimeRangeFilterTypedDict +from glean.api_client import models from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import List, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -18,8 +20,9 @@ class DlpFindingFilterTypedDict(TypedDict): visibility: NotRequired[str] document_ids: NotRequired[List[str]] severity: NotRequired[DlpSeverity] - r"""Severity levels for DLP findings and analyses.""" + r"""Severity levels for DLP findings and analyses. FALSE_POSITIVE ranks below LOW and marks analyses that concluded every flagged entity is a detector false positive.""" document_severity: NotRequired[List[DlpSeverity]] + statuses: NotRequired[List[DlpIssueStatus]] time_range: NotRequired[TimeRangeFilterTypedDict] archived: NotRequired[bool] @@ -40,18 +43,29 @@ class DlpFindingFilter(BaseModel): ] = None severity: Optional[DlpSeverity] = None - r"""Severity levels for DLP findings and analyses.""" + r"""Severity levels for DLP findings and analyses. FALSE_POSITIVE ranks below LOW and marks analyses that concluded every flagged entity is a detector false positive.""" document_severity: Annotated[ Optional[List[DlpSeverity]], pydantic.Field(alias="documentSeverity") ] = None + statuses: Optional[List[DlpIssueStatus]] = None + time_range: Annotated[ Optional[TimeRangeFilter], pydantic.Field(alias="timeRange") ] = None archived: Optional[bool] = None + @field_serializer("severity") + def serialize_severity(self, value): + if isinstance(value, str): + try: + return models.DlpSeverity(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -64,6 +78,7 @@ def serialize_model(self, handler): "documentIds", "severity", "documentSeverity", + "statuses", "timeRange", "archived", ] @@ -73,10 +88,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + DlpFindingFilter.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/dlpfrequency.py b/src/glean/api_client/models/dlpfrequency.py index a7da3a83..334f894f 100644 --- a/src/glean/api_client/models/dlpfrequency.py +++ b/src/glean/api_client/models/dlpfrequency.py @@ -2,9 +2,10 @@ from __future__ import annotations from enum import Enum +from glean.api_client import utils -class DlpFrequency(str, Enum): +class DlpFrequency(str, Enum, metaclass=utils.OpenEnumMeta): r"""Interval between scans. DAILY is deprecated.""" ONCE = "ONCE" diff --git a/src/glean/api_client/models/dlpissuefilter.py b/src/glean/api_client/models/dlpissuefilter.py new file mode 100644 index 00000000..b3f50e5f --- /dev/null +++ b/src/glean/api_client/models/dlpissuefilter.py @@ -0,0 +1,156 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .dlpissuestatus import DlpIssueStatus +from .dlpseverity import DlpSeverity +from .timerangefilter import TimeRangeFilter, TimeRangeFilterTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +import pydantic +from pydantic import model_serializer +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class DlpIssueFilterTypedDict(TypedDict): + r"""Filter for DLP issues. Includes document-level filters and issue-specific filters.""" + + search_text: NotRequired[str] + r"""Text to search for in issue fields.""" + statuses: NotRequired[List[DlpIssueStatus]] + r"""Filter by one or more issue statuses.""" + assignee_id: NotRequired[str] + r"""Filter by a single assignee user ID. Deprecated; use assigneeIds.""" + assignee_ids: NotRequired[List[str]] + r"""Filter by one or more assignee user IDs. Use the sentinel value \"UNASSIGNED\" to match issues with no assignee.""" + info_type: NotRequired[str] + r"""Filter by a single built-in info type. Deprecated; use infoTypes.""" + info_types: NotRequired[List[str]] + r"""Filter by one or more built-in info types.""" + regex_id: NotRequired[str] + r"""Filter by a single regex rule ID. Deprecated; use regexIds.""" + regex_ids: NotRequired[List[str]] + r"""Filter by one or more regex rule IDs.""" + report_ids: NotRequired[List[str]] + r"""Filter by one or more report/policy IDs.""" + doc_id: NotRequired[str] + datasource: NotRequired[str] + r"""Filter by a single datasource. Deprecated; use datasources.""" + datasources: NotRequired[List[str]] + r"""Filter by one or more datasources.""" + visibility: NotRequired[str] + severities: NotRequired[List[DlpSeverity]] + r"""Filter by one or more severity levels.""" + time_range: NotRequired[TimeRangeFilterTypedDict] + + +class DlpIssueFilter(BaseModel): + r"""Filter for DLP issues. Includes document-level filters and issue-specific filters.""" + + search_text: Annotated[Optional[str], pydantic.Field(alias="searchText")] = None + r"""Text to search for in issue fields.""" + + statuses: Optional[List[DlpIssueStatus]] = None + r"""Filter by one or more issue statuses.""" + + assignee_id: Annotated[ + Optional[str], + pydantic.Field( + deprecated="warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible.", + alias="assigneeId", + ), + ] = None + r"""Filter by a single assignee user ID. Deprecated; use assigneeIds.""" + + assignee_ids: Annotated[ + Optional[List[str]], pydantic.Field(alias="assigneeIds") + ] = None + r"""Filter by one or more assignee user IDs. Use the sentinel value \"UNASSIGNED\" to match issues with no assignee.""" + + info_type: Annotated[ + Optional[str], + pydantic.Field( + deprecated="warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible.", + alias="infoType", + ), + ] = None + r"""Filter by a single built-in info type. Deprecated; use infoTypes.""" + + info_types: Annotated[Optional[List[str]], pydantic.Field(alias="infoTypes")] = None + r"""Filter by one or more built-in info types.""" + + regex_id: Annotated[ + Optional[str], + pydantic.Field( + deprecated="warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible.", + alias="regexId", + ), + ] = None + r"""Filter by a single regex rule ID. Deprecated; use regexIds.""" + + regex_ids: Annotated[Optional[List[str]], pydantic.Field(alias="regexIds")] = None + r"""Filter by one or more regex rule IDs.""" + + report_ids: Annotated[Optional[List[str]], pydantic.Field(alias="reportIds")] = None + r"""Filter by one or more report/policy IDs.""" + + doc_id: Annotated[Optional[str], pydantic.Field(alias="docId")] = None + + datasource: Annotated[ + Optional[str], + pydantic.Field( + deprecated="warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible." + ), + ] = None + r"""Filter by a single datasource. Deprecated; use datasources.""" + + datasources: Optional[List[str]] = None + r"""Filter by one or more datasources.""" + + visibility: Optional[str] = None + + severities: Optional[List[DlpSeverity]] = None + r"""Filter by one or more severity levels.""" + + time_range: Annotated[ + Optional[TimeRangeFilter], pydantic.Field(alias="timeRange") + ] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "searchText", + "statuses", + "assigneeId", + "assigneeIds", + "infoType", + "infoTypes", + "regexId", + "regexIds", + "reportIds", + "docId", + "datasource", + "datasources", + "visibility", + "severities", + "timeRange", + ] + ) + 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: + DlpIssueFilter.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/dlpissuestatus.py b/src/glean/api_client/models/dlpissuestatus.py new file mode 100644 index 00000000..ee6c7d53 --- /dev/null +++ b/src/glean/api_client/models/dlpissuestatus.py @@ -0,0 +1,14 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +from glean.api_client import utils + + +class DlpIssueStatus(str, Enum, metaclass=utils.OpenEnumMeta): + r"""Status of a DLP issue.""" + + OPEN = "OPEN" + CLOSED = "CLOSED" + IN_PROGRESS = "IN_PROGRESS" + RESOLVED = "RESOLVED" diff --git a/src/glean/api_client/models/dlpperson.py b/src/glean/api_client/models/dlpperson.py index 5b62c1dc..ee020352 100644 --- a/src/glean/api_client/models/dlpperson.py +++ b/src/glean/api_client/models/dlpperson.py @@ -38,10 +38,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + DlpPerson.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/dlppersonmetadata.py b/src/glean/api_client/models/dlppersonmetadata.py index 32fdeb76..b3d764a6 100644 --- a/src/glean/api_client/models/dlppersonmetadata.py +++ b/src/glean/api_client/models/dlppersonmetadata.py @@ -30,10 +30,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + DlpPersonMetadata.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/dlpreport.py b/src/glean/api_client/models/dlpreport.py index 10c1ef8b..ff433f12 100644 --- a/src/glean/api_client/models/dlpreport.py +++ b/src/glean/api_client/models/dlpreport.py @@ -6,14 +6,15 @@ from .dlpperson import DlpPerson, DlpPersonTypedDict from .dlpreportstatus import DlpReportStatus from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict -class LastScanStatus(str, Enum): +class LastScanStatus(str, Enum, metaclass=utils.OpenEnumMeta): PENDING = "PENDING" SUCCESS = "SUCCESS" FAILURE = "FAILURE" @@ -92,6 +93,33 @@ class DlpReport(BaseModel): updated_by: Annotated[Optional[DlpPerson], pydantic.Field(alias="updatedBy")] = None r"""Details about the person who created this report/policy.""" + @field_serializer("frequency") + def serialize_frequency(self, value): + if isinstance(value, str): + try: + return models.DlpFrequency(value) + except ValueError: + return value + return value + + @field_serializer("status") + def serialize_status(self, value): + if isinstance(value, str): + try: + return models.DlpReportStatus(value) + except ValueError: + return value + return value + + @field_serializer("last_scan_status") + def serialize_last_scan_status(self, value): + if isinstance(value, str): + try: + return models.LastScanStatus(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -115,10 +143,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + DlpReport.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/dlpreportstatus.py b/src/glean/api_client/models/dlpreportstatus.py index 89f5b52f..c7768ce7 100644 --- a/src/glean/api_client/models/dlpreportstatus.py +++ b/src/glean/api_client/models/dlpreportstatus.py @@ -2,9 +2,10 @@ from __future__ import annotations from enum import Enum +from glean.api_client import utils -class DlpReportStatus(str, Enum): +class DlpReportStatus(str, Enum, metaclass=utils.OpenEnumMeta): r"""The status of the policy/report. Only ACTIVE status will be picked for scans.""" ACTIVE = "ACTIVE" diff --git a/src/glean/api_client/models/dlpseverity.py b/src/glean/api_client/models/dlpseverity.py index 625f32b8..8f08fc8b 100644 --- a/src/glean/api_client/models/dlpseverity.py +++ b/src/glean/api_client/models/dlpseverity.py @@ -2,12 +2,14 @@ from __future__ import annotations from enum import Enum +from glean.api_client import utils -class DlpSeverity(str, Enum): - r"""Severity levels for DLP findings and analyses.""" +class DlpSeverity(str, Enum, metaclass=utils.OpenEnumMeta): + r"""Severity levels for DLP findings and analyses. FALSE_POSITIVE ranks below LOW and marks analyses that concluded every flagged entity is a detector false positive.""" UNSPECIFIED = "UNSPECIFIED" LOW = "LOW" MEDIUM = "MEDIUM" HIGH = "HIGH" + FALSE_POSITIVE = "FALSE_POSITIVE" diff --git a/src/glean/api_client/models/dlpsimpleresult.py b/src/glean/api_client/models/dlpsimpleresult.py index 83e95325..212efae1 100644 --- a/src/glean/api_client/models/dlpsimpleresult.py +++ b/src/glean/api_client/models/dlpsimpleresult.py @@ -2,8 +2,9 @@ from __future__ import annotations from enum import Enum +from glean.api_client import utils -class DlpSimpleResult(str, Enum): +class DlpSimpleResult(str, Enum, metaclass=utils.OpenEnumMeta): SUCCESS = "SUCCESS" FAILURE = "FAILURE" diff --git a/src/glean/api_client/models/document.py b/src/glean/api_client/models/document.py index 493d7b15..cb56b4f3 100644 --- a/src/glean/api_client/models/document.py +++ b/src/glean/api_client/models/document.py @@ -4,9 +4,10 @@ from .connectortype import ConnectorType from .documentcontent import DocumentContent, DocumentContentTypedDict from .documentsection import DocumentSection, DocumentSectionTypedDict +from glean.api_client import models from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import List, Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -71,6 +72,15 @@ class Document(BaseModel): sections: Optional[List[DocumentSection]] = None r"""A list of content sub-sections in the document, e.g. text blocks with different headings in a Drive doc or Confluence page.""" + @field_serializer("connector_type") + def serialize_connector_type(self, value): + if isinstance(value, str): + try: + return models.ConnectorType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -93,10 +103,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + Document.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/documentcontent.py b/src/glean/api_client/models/documentcontent.py index 2bd1025f..7a6ea0bf 100644 --- a/src/glean/api_client/models/documentcontent.py +++ b/src/glean/api_client/models/documentcontent.py @@ -27,10 +27,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + DocumentContent.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/documentdefinition.py b/src/glean/api_client/models/documentdefinition.py index f81d6f45..1fa367c9 100644 --- a/src/glean/api_client/models/documentdefinition.py +++ b/src/glean/api_client/models/documentdefinition.py @@ -70,6 +70,8 @@ class DocumentDefinitionTypedDict(TypedDict): status: NotRequired[str] additional_urls: NotRequired[List[str]] r"""Additional variations of the URL that this document points to.""" + native_app_url: NotRequired[str] + r"""A deep link, if available, into the datasource's native application for the user's platform (e.g. slack://channel/message).""" comments: NotRequired[List[CommentDefinitionTypedDict]] r"""Comments associated with the document.""" custom_properties: NotRequired[List[CustomPropertyTypedDict]] @@ -152,6 +154,11 @@ class DocumentDefinition(BaseModel): ] = None r"""Additional variations of the URL that this document points to.""" + native_app_url: Annotated[Optional[str], pydantic.Field(alias="nativeAppUrl")] = ( + None + ) + r"""A deep link, if available, into the datasource's native application for the user's platform (e.g. slack://channel/message).""" + comments: Optional[List[CommentDefinition]] = None r"""Comments associated with the document.""" @@ -184,6 +191,7 @@ def serialize_model(self, handler): "interactions", "status", "additionalUrls", + "nativeAppUrl", "comments", "customProperties", ] @@ -193,10 +201,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + DocumentDefinition.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/documentinsight.py b/src/glean/api_client/models/documentinsight.py deleted file mode 100644 index ae5980b5..00000000 --- a/src/glean/api_client/models/documentinsight.py +++ /dev/null @@ -1,42 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from .countinfo import CountInfo, CountInfoTypedDict -from .document import Document, DocumentTypedDict -from glean.api_client.types import BaseModel, UNSET_SENTINEL -import pydantic -from pydantic import model_serializer -from typing import Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class DocumentInsightTypedDict(TypedDict): - document: DocumentTypedDict - view_count: NotRequired[CountInfoTypedDict] - visitor_count: NotRequired[CountInfoTypedDict] - - -class DocumentInsight(BaseModel): - document: Document - - view_count: Annotated[Optional[CountInfo], pydantic.Field(alias="viewCount")] = None - - visitor_count: Annotated[ - Optional[CountInfo], pydantic.Field(alias="visitorCount") - ] = None - - @model_serializer(mode="wrap") - def serialize_model(self, handler): - optional_fields = set(["viewCount", "visitorCount"]) - serialized = handler(self) - m = {} - - for n, f in type(self).model_fields.items(): - k = f.alias or n - val = serialized.get(k) - - if val != UNSET_SENTINEL: - if val is not None or k not in optional_fields: - m[k] = val - - return m diff --git a/src/glean/api_client/models/documentinteractions.py b/src/glean/api_client/models/documentinteractions.py index 159a5dfa..84214adb 100644 --- a/src/glean/api_client/models/documentinteractions.py +++ b/src/glean/api_client/models/documentinteractions.py @@ -36,7 +36,7 @@ class DocumentInteractions(BaseModel): reactions: Annotated[ Optional[List[str]], pydantic.Field( - deprecated="warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible." + deprecated="warning: ** DEPRECATED ** - Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use reacts instead." ), ] = None r"""To be deprecated in favor of reacts. A (potentially non-exhaustive) list of reactions for the document.""" @@ -67,10 +67,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + DocumentInteractions.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/documentinteractionsdefinition.py b/src/glean/api_client/models/documentinteractionsdefinition.py index 3b020730..2dd25c44 100644 --- a/src/glean/api_client/models/documentinteractionsdefinition.py +++ b/src/glean/api_client/models/documentinteractionsdefinition.py @@ -33,10 +33,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + DocumentInteractionsDefinition.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/documentmetadata.py b/src/glean/api_client/models/documentmetadata.py index 66aed0ca..4f50069b 100644 --- a/src/glean/api_client/models/documentmetadata.py +++ b/src/glean/api_client/models/documentmetadata.py @@ -9,9 +9,10 @@ from .thumbnail import Thumbnail, ThumbnailTypedDict from .viewerinfo import ViewerInfo, ViewerInfoTypedDict from datetime import datetime +from glean.api_client import models from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Dict, List, Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -228,6 +229,15 @@ class DocumentMetadata(BaseModel): ancestors: Optional[List["Document"]] = None r"""A list of documents that are ancestors of this document in the hierarchy of the document's datasource, for example parent folders or containers. Ancestors can be of different types and some may not be indexed. Higher level ancestors appear earlier in the list.""" + @field_serializer("visibility") + def serialize_visibility(self, value): + if isinstance(value, str): + try: + return models.DocumentVisibility(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -279,10 +289,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + DocumentMetadata.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/documentpermissionsdefinition.py b/src/glean/api_client/models/documentpermissionsdefinition.py index fca5d62c..fd87de54 100644 --- a/src/glean/api_client/models/documentpermissionsdefinition.py +++ b/src/glean/api_client/models/documentpermissionsdefinition.py @@ -78,10 +78,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + DocumentPermissionsDefinition.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/documentsection.py b/src/glean/api_client/models/documentsection.py index 2a001296..6825bbb0 100644 --- a/src/glean/api_client/models/documentsection.py +++ b/src/glean/api_client/models/documentsection.py @@ -29,7 +29,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/documentspec_union.py b/src/glean/api_client/models/documentspec_union.py index 0e8c5d62..82e3e535 100644 --- a/src/glean/api_client/models/documentspec_union.py +++ b/src/glean/api_client/models/documentspec_union.py @@ -2,18 +2,20 @@ from __future__ import annotations from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional, Union from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict -class DocumentSpecUgcType2(str, Enum): +class DocumentSpecUgcType2(str, Enum, metaclass=utils.OpenEnumMeta): r"""The type of the user generated content (UGC datasource).""" ANNOUNCEMENTS = "ANNOUNCEMENTS" ANSWERS = "ANSWERS" + ARTIFACTS = "ARTIFACTS" COLLECTIONS = "COLLECTIONS" SHORTCUTS = "SHORTCUTS" CHATS = "CHATS" @@ -38,6 +40,15 @@ class DocumentSpec4(BaseModel): doc_type: Annotated[Optional[str], pydantic.Field(alias="docType")] = None r"""The specific type of the user generated content type.""" + @field_serializer("ugc_type") + def serialize_ugc_type(self, value): + if isinstance(value, str): + try: + return models.DocumentSpecUgcType2(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["docType"]) @@ -46,7 +57,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -55,7 +66,7 @@ def serialize_model(self, handler): return m -class DocumentSpecUgcType1(str, Enum): +class DocumentSpecUgcType1(str, Enum, metaclass=utils.OpenEnumMeta): r"""The type of the user generated content (UGC datasource).""" ANNOUNCEMENTS = "ANNOUNCEMENTS" @@ -84,6 +95,15 @@ class DocumentSpec3(BaseModel): doc_type: Annotated[Optional[str], pydantic.Field(alias="docType")] = None r"""The specific type of the user generated content type.""" + @field_serializer("ugc_type") + def serialize_ugc_type(self, value): + if isinstance(value, str): + try: + return models.DocumentSpecUgcType1(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["docType"]) @@ -92,7 +112,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -136,3 +156,13 @@ class DocumentSpec1(BaseModel): "DocumentSpecUnion", Union[DocumentSpec1, DocumentSpec2, DocumentSpec3, DocumentSpec4], ) + + +try: + DocumentSpec4.model_rebuild() +except NameError: + pass +try: + DocumentSpec3.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/documentstatusresponse.py b/src/glean/api_client/models/documentstatusresponse.py index 4b29a000..41cc9ad2 100644 --- a/src/glean/api_client/models/documentstatusresponse.py +++ b/src/glean/api_client/models/documentstatusresponse.py @@ -65,10 +65,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + DocumentStatusResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/documentvisibility.py b/src/glean/api_client/models/documentvisibility.py index fb5813a9..59bfc052 100644 --- a/src/glean/api_client/models/documentvisibility.py +++ b/src/glean/api_client/models/documentvisibility.py @@ -2,9 +2,10 @@ from __future__ import annotations from enum import Enum +from glean.api_client import utils -class DocumentVisibility(str, Enum): +class DocumentVisibility(str, Enum, metaclass=utils.OpenEnumMeta): r"""The level of visibility of the document as understood by our system.""" # Only one person is able to see the document. diff --git a/src/glean/api_client/models/documentvisibilityoverride.py b/src/glean/api_client/models/documentvisibilityoverride.py index 29600f75..e5d6ad03 100644 --- a/src/glean/api_client/models/documentvisibilityoverride.py +++ b/src/glean/api_client/models/documentvisibilityoverride.py @@ -2,14 +2,15 @@ from __future__ import annotations from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict -class DocumentVisibilityOverrideOverride(str, Enum): +class DocumentVisibilityOverrideOverride(str, Enum, metaclass=utils.OpenEnumMeta): r"""The visibility-override state of the document.""" NONE = "NONE" @@ -30,6 +31,15 @@ class DocumentVisibilityOverride(BaseModel): override: Optional[DocumentVisibilityOverrideOverride] = None r"""The visibility-override state of the document.""" + @field_serializer("override") + def serialize_override(self, value): + if isinstance(value, str): + try: + return models.DocumentVisibilityOverrideOverride(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["docId", "override"]) @@ -38,10 +48,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + DocumentVisibilityOverride.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/documentvisibilityupdateresult.py b/src/glean/api_client/models/documentvisibilityupdateresult.py index d3332d95..c48a36b1 100644 --- a/src/glean/api_client/models/documentvisibilityupdateresult.py +++ b/src/glean/api_client/models/documentvisibilityupdateresult.py @@ -2,14 +2,15 @@ from __future__ import annotations from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict -class DocumentVisibilityUpdateResultOverride(str, Enum): +class DocumentVisibilityUpdateResultOverride(str, Enum, metaclass=utils.OpenEnumMeta): r"""The visibility-override state of the document.""" NONE = "NONE" @@ -35,6 +36,15 @@ class DocumentVisibilityUpdateResult(BaseModel): success: Optional[bool] = None r"""Whether this document was successfully set to its desired visibility state.""" + @field_serializer("override") + def serialize_override(self, value): + if isinstance(value, str): + try: + return models.DocumentVisibilityUpdateResultOverride(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["docId", "override", "success"]) @@ -43,10 +53,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + DocumentVisibilityUpdateResult.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/editagentop.py b/src/glean/api_client/models/editagentop.py new file mode 100644 index 00000000..5d66503e --- /dev/null +++ b/src/glean/api_client/models/editagentop.py @@ -0,0 +1,66 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .editworkflowrequest import EditWorkflowRequest, EditWorkflowRequestTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import ( + FieldMetadata, + PathParamMetadata, + QueryParamMetadata, + RequestMetadata, +) +import pydantic +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class EditAgentRequestTypedDict(TypedDict): + agent_id: str + r"""The ID of the agent.""" + edit_workflow_request: EditWorkflowRequestTypedDict + locale: NotRequired[str] + r"""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: 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.""" + + +class EditAgentRequest(BaseModel): + agent_id: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""The ID of the agent.""" + + edit_workflow_request: Annotated[ + EditWorkflowRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""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: Annotated[ + Optional[int], + pydantic.Field(alias="timezoneOffset"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale", "timezoneOffset"]) + 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/editanswerop.py b/src/glean/api_client/models/editanswerop.py new file mode 100644 index 00000000..8aef450a --- /dev/null +++ b/src/glean/api_client/models/editanswerop.py @@ -0,0 +1,46 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .editanswerrequest import EditAnswerRequest, EditAnswerRequestTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class EditanswerRequestRequestTypedDict(TypedDict): + edit_answer_request: EditAnswerRequestTypedDict + r"""EditAnswer request""" + locale: NotRequired[str] + r"""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`.""" + + +class EditanswerRequestRequest(BaseModel): + edit_answer_request: Annotated[ + EditAnswerRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""EditAnswer request""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""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`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/editanswerrequest.py b/src/glean/api_client/models/editanswerrequest.py index 607ce8f4..42fbf75e 100644 --- a/src/glean/api_client/models/editanswerrequest.py +++ b/src/glean/api_client/models/editanswerrequest.py @@ -70,7 +70,7 @@ class EditAnswerRequest(BaseModel): board_id: Annotated[ Optional[int], pydantic.Field( - deprecated="warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible.", + deprecated="warning: ** DEPRECATED ** - Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Answer Boards no longer supported.", alias="boardId", ), ] = None @@ -142,10 +142,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + EditAnswerRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/editcollectionitemop.py b/src/glean/api_client/models/editcollectionitemop.py new file mode 100644 index 00000000..ec47c585 --- /dev/null +++ b/src/glean/api_client/models/editcollectionitemop.py @@ -0,0 +1,49 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .editcollectionitemrequest import ( + EditCollectionItemRequest, + EditCollectionItemRequestTypedDict, +) +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class EditcollectionitemRequestRequestTypedDict(TypedDict): + edit_collection_item_request: EditCollectionItemRequestTypedDict + r"""Edit Collection Items request""" + locale: NotRequired[str] + r"""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`.""" + + +class EditcollectionitemRequestRequest(BaseModel): + edit_collection_item_request: Annotated[ + EditCollectionItemRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""Edit Collection Items request""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""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`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/editcollectionitemrequest.py b/src/glean/api_client/models/editcollectionitemrequest.py index 28799150..d263fa2e 100644 --- a/src/glean/api_client/models/editcollectionitemrequest.py +++ b/src/glean/api_client/models/editcollectionitemrequest.py @@ -45,10 +45,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + EditCollectionItemRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/editcollectionitemresponse.py b/src/glean/api_client/models/editcollectionitemresponse.py index 447740a0..0803aa97 100644 --- a/src/glean/api_client/models/editcollectionitemresponse.py +++ b/src/glean/api_client/models/editcollectionitemresponse.py @@ -23,7 +23,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/editcollectionop.py b/src/glean/api_client/models/editcollectionop.py new file mode 100644 index 00000000..89876fc8 --- /dev/null +++ b/src/glean/api_client/models/editcollectionop.py @@ -0,0 +1,46 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .editcollectionrequest import EditCollectionRequest, EditCollectionRequestTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class EditcollectionRequestRequestTypedDict(TypedDict): + edit_collection_request: EditCollectionRequestTypedDict + r"""Collection content plus any additional metadata for the request.""" + locale: NotRequired[str] + r"""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`.""" + + +class EditcollectionRequestRequest(BaseModel): + edit_collection_request: Annotated[ + EditCollectionRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""Collection content plus any additional metadata for the request.""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""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`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/editcollectionrequest.py b/src/glean/api_client/models/editcollectionrequest.py index c2495b01..7a4edd70 100644 --- a/src/glean/api_client/models/editcollectionrequest.py +++ b/src/glean/api_client/models/editcollectionrequest.py @@ -96,10 +96,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + EditCollectionRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/editcollectionresponse.py b/src/glean/api_client/models/editcollectionresponse.py index 23cc370a..cf72a321 100644 --- a/src/glean/api_client/models/editcollectionresponse.py +++ b/src/glean/api_client/models/editcollectionresponse.py @@ -9,20 +9,22 @@ CollectionPinnedMetadataTypedDict, ) from .facetfilter import FacetFilter, FacetFilterTypedDict +from .favoriteinfo import FavoriteInfo, FavoriteInfoTypedDict from .objectpermissions import ObjectPermissions, ObjectPermissionsTypedDict from .person import Person, PersonTypedDict from .thumbnail import Thumbnail, ThumbnailTypedDict from .userrolespecification import UserRoleSpecification, UserRoleSpecificationTypedDict from datetime import datetime from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import List, Optional from typing_extensions import Annotated, NotRequired, TypedDict -class EditCollectionResponseErrorCode(str, Enum): +class EditCollectionResponseErrorCode(str, Enum, metaclass=utils.OpenEnumMeta): NAME_EXISTS = "NAME_EXISTS" NOT_FOUND = "NOT_FOUND" COLLECTION_PINNED = "COLLECTION_PINNED" @@ -30,6 +32,7 @@ class EditCollectionResponseErrorCode(str, Enum): HEIGHT_VIOLATION = "HEIGHT_VIOLATION" WIDTH_VIOLATION = "WIDTH_VIOLATION" NO_PERMISSIONS = "NO_PERMISSIONS" + CORRUPT_ITEM = "CORRUPT_ITEM" class EditCollectionResponseTypedDict(TypedDict): @@ -56,6 +59,8 @@ class EditCollectionResponseTypedDict(TypedDict): allowed_datasource: NotRequired[str] r"""The datasource type this Collection can hold.""" permissions: NotRequired[ObjectPermissionsTypedDict] + tracking_token: NotRequired[str] + r"""An opaque token that represents this particular UGC. To be used for `/feedback` reporting.""" create_time: NotRequired[datetime] update_time: NotRequired[datetime] creator: NotRequired[PersonTypedDict] @@ -73,6 +78,7 @@ class EditCollectionResponseTypedDict(TypedDict): r"""The children Collections of this Collection.""" roles: NotRequired[List[UserRoleSpecificationTypedDict]] r"""A list of user roles for the Collection.""" + favorite_info: NotRequired[FavoriteInfoTypedDict] collection: NotRequired[CollectionTypedDict] error: NotRequired[CollectionErrorTypedDict] @@ -124,6 +130,11 @@ class EditCollectionResponse(BaseModel): permissions: Optional[ObjectPermissions] = None + tracking_token: Annotated[Optional[str], pydantic.Field(alias="trackingToken")] = ( + None + ) + r"""An opaque token that represents this particular UGC. To be used for `/feedback` reporting.""" + create_time: Annotated[Optional[datetime], pydantic.Field(alias="createTime")] = ( None ) @@ -158,10 +169,23 @@ class EditCollectionResponse(BaseModel): roles: Optional[List[UserRoleSpecification]] = None r"""A list of user roles for the Collection.""" + favorite_info: Annotated[ + Optional[FavoriteInfo], pydantic.Field(alias="favoriteInfo") + ] = None + collection: Optional[Collection] = None error: Optional[CollectionError] = None + @field_serializer("error_code") + def serialize_error_code(self, value): + if isinstance(value, str): + try: + return models.EditCollectionResponseErrorCode(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -175,6 +199,7 @@ def serialize_model(self, handler): "thumbnail", "allowedDatasource", "permissions", + "trackingToken", "createTime", "updateTime", "creator", @@ -186,6 +211,7 @@ def serialize_model(self, handler): "shortcuts", "children", "roles", + "favoriteInfo", "collection", "error", ] @@ -195,10 +221,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + EditCollectionResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/editpinop.py b/src/glean/api_client/models/editpinop.py new file mode 100644 index 00000000..608f79b9 --- /dev/null +++ b/src/glean/api_client/models/editpinop.py @@ -0,0 +1,46 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .editpinrequest import EditPinRequest, EditPinRequestTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class EditpinRequestRequestTypedDict(TypedDict): + edit_pin_request: EditPinRequestTypedDict + r"""Edit pins request""" + locale: NotRequired[str] + r"""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`.""" + + +class EditpinRequestRequest(BaseModel): + edit_pin_request: Annotated[ + EditPinRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""Edit pins request""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""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`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/editpinrequest.py b/src/glean/api_client/models/editpinrequest.py index 4cfdc918..d19c91a1 100644 --- a/src/glean/api_client/models/editpinrequest.py +++ b/src/glean/api_client/models/editpinrequest.py @@ -38,10 +38,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + EditPinRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/editworkflowrequest.py b/src/glean/api_client/models/editworkflowrequest.py new file mode 100644 index 00000000..5d3ba4f1 --- /dev/null +++ b/src/glean/api_client/models/editworkflowrequest.py @@ -0,0 +1,38 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer +from typing import Optional +from typing_extensions import NotRequired, TypedDict + + +class EditWorkflowRequestTypedDict(TypedDict): + name: NotRequired[str] + r"""The name of the workflow.""" + id: NotRequired[str] + r"""The workflow ID we want to update.""" + + +class EditWorkflowRequest(BaseModel): + name: Optional[str] = None + r"""The name of the workflow.""" + + id: Optional[str] = None + r"""The workflow ID we want to update.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["name", "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 diff --git a/src/glean/api_client/models/employeeinfodefinition.py b/src/glean/api_client/models/employeeinfodefinition.py index a713eb7d..0dff10f0 100644 --- a/src/glean/api_client/models/employeeinfodefinition.py +++ b/src/glean/api_client/models/employeeinfodefinition.py @@ -123,7 +123,7 @@ class EmployeeInfoDefinition(BaseModel): location: Annotated[ Optional[str], pydantic.Field( - deprecated="warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible." + deprecated="warning: ** DEPRECATED ** - Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Field is deprecated." ), ] = None r"""The employee's location (city/office name etc).""" @@ -234,10 +234,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + EmployeeInfoDefinition.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/employeeteaminfo.py b/src/glean/api_client/models/employeeteaminfo.py index 1505b40d..91d78b8d 100644 --- a/src/glean/api_client/models/employeeteaminfo.py +++ b/src/glean/api_client/models/employeeteaminfo.py @@ -38,7 +38,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/entitiessortorder.py b/src/glean/api_client/models/entitiessortorder.py index 76d80c68..f3e5ae63 100644 --- a/src/glean/api_client/models/entitiessortorder.py +++ b/src/glean/api_client/models/entitiessortorder.py @@ -2,9 +2,10 @@ from __future__ import annotations from enum import Enum +from glean.api_client import utils -class EntitiesSortOrder(str, Enum): +class EntitiesSortOrder(str, Enum, metaclass=utils.OpenEnumMeta): r"""Different ways of sorting entities""" ENTITY_NAME = "ENTITY_NAME" diff --git a/src/glean/api_client/models/entitytype.py b/src/glean/api_client/models/entitytype.py index 43e53859..af479617 100644 --- a/src/glean/api_client/models/entitytype.py +++ b/src/glean/api_client/models/entitytype.py @@ -2,9 +2,10 @@ from __future__ import annotations from enum import Enum +from glean.api_client import utils -class EntityType(str, Enum): +class EntityType(str, Enum, metaclass=utils.OpenEnumMeta): r"""The type of entity.""" PERSON = "PERSON" diff --git a/src/glean/api_client/models/errormessage.py b/src/glean/api_client/models/errormessage.py index 40e0e61c..5979617b 100644 --- a/src/glean/api_client/models/errormessage.py +++ b/src/glean/api_client/models/errormessage.py @@ -28,10 +28,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + ErrorMessage.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/eventclassification.py b/src/glean/api_client/models/eventclassification.py index 2a2dc56b..7ed6e3fc 100644 --- a/src/glean/api_client/models/eventclassification.py +++ b/src/glean/api_client/models/eventclassification.py @@ -33,7 +33,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/eventstrategyname.py b/src/glean/api_client/models/eventstrategyname.py index 5ede7c8c..2fc0a34f 100644 --- a/src/glean/api_client/models/eventstrategyname.py +++ b/src/glean/api_client/models/eventstrategyname.py @@ -2,9 +2,10 @@ from __future__ import annotations from enum import Enum +from glean.api_client import utils -class EventStrategyName(str, Enum): +class EventStrategyName(str, Enum, metaclass=utils.OpenEnumMeta): r"""The name of method used to surface relevant data for a given calendar event.""" CUSTOMER_CARD = "customerCard" diff --git a/src/glean/api_client/models/exportinfo.py b/src/glean/api_client/models/exportinfo.py index 18f72850..859689a2 100644 --- a/src/glean/api_client/models/exportinfo.py +++ b/src/glean/api_client/models/exportinfo.py @@ -2,16 +2,26 @@ from __future__ import annotations from .dlpfindingfilter import DlpFindingFilter, DlpFindingFilterTypedDict +from .dlpissuefilter import DlpIssueFilter, DlpIssueFilterTypedDict from .dlpperson import DlpPerson, DlpPersonTypedDict from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict -class ExportInfoStatus(str, Enum): +class ExportInfoExportType(str, Enum, metaclass=utils.OpenEnumMeta): + r"""The type of export to perform""" + + FINDINGS = "FINDINGS" + DOCUMENTS = "DOCUMENTS" + ISSUES = "ISSUES" + + +class ExportInfoStatus(str, Enum, metaclass=utils.OpenEnumMeta): r"""The status of the export""" PENDING = "PENDING" @@ -30,7 +40,11 @@ class ExportInfoTypedDict(TypedDict): r"""The ID of the export""" file_name: NotRequired[str] r"""The name of the file to export the findings to""" + export_type: NotRequired[ExportInfoExportType] + r"""The type of export to perform""" filter_: NotRequired[DlpFindingFilterTypedDict] + issue_filter: NotRequired[DlpIssueFilterTypedDict] + r"""Filter for DLP issues. Includes document-level filters and issue-specific filters.""" status: NotRequired[ExportInfoStatus] r"""The status of the export""" export_size: NotRequired[int] @@ -53,16 +67,44 @@ class ExportInfo(BaseModel): file_name: Annotated[Optional[str], pydantic.Field(alias="fileName")] = None r"""The name of the file to export the findings to""" + export_type: Annotated[ + Optional[ExportInfoExportType], pydantic.Field(alias="exportType") + ] = None + r"""The type of export to perform""" + filter_: Annotated[Optional[DlpFindingFilter], pydantic.Field(alias="filter")] = ( None ) + issue_filter: Annotated[ + Optional[DlpIssueFilter], pydantic.Field(alias="issueFilter") + ] = None + r"""Filter for DLP issues. Includes document-level filters and issue-specific filters.""" + status: Optional[ExportInfoStatus] = None r"""The status of the export""" export_size: Annotated[Optional[int], pydantic.Field(alias="exportSize")] = None r"""The size of the exported file in bytes""" + @field_serializer("export_type") + def serialize_export_type(self, value): + if isinstance(value, str): + try: + return models.ExportInfoExportType(value) + except ValueError: + return value + return value + + @field_serializer("status") + def serialize_status(self, value): + if isinstance(value, str): + try: + return models.ExportInfoStatus(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -72,7 +114,9 @@ def serialize_model(self, handler): "endTime", "exportId", "fileName", + "exportType", "filter", + "issueFilter", "status", "exportSize", ] @@ -82,10 +126,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + ExportInfo.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/externalsharingoptions.py b/src/glean/api_client/models/externalsharingoptions.py index a3e22fcb..0a42520d 100644 --- a/src/glean/api_client/models/externalsharingoptions.py +++ b/src/glean/api_client/models/externalsharingoptions.py @@ -9,7 +9,7 @@ @deprecated( - "warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible." + "warning: ** DEPRECATED ** - Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use broadSharingOptions instead." ) class ExternalSharingOptionsTypedDict(TypedDict): r"""Controls how \"shared\" a document must be to get picked for scans.""" @@ -32,7 +32,7 @@ class ExternalSharingOptionsTypedDict(TypedDict): @deprecated( - "warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible." + "warning: ** DEPRECATED ** - Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use broadSharingOptions instead." ) class ExternalSharingOptions(BaseModel): r"""Controls how \"shared\" a document must be to get picked for scans.""" @@ -40,7 +40,7 @@ class ExternalSharingOptions(BaseModel): enabled: Annotated[ Optional[bool], pydantic.Field( - deprecated="warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible." + deprecated="warning: ** DEPRECATED ** - Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Field is deprecated." ), ] = None @@ -55,7 +55,7 @@ class ExternalSharingOptions(BaseModel): anyone_with_link_enabled: Annotated[ Optional[bool], pydantic.Field( - deprecated="warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible.", + deprecated="warning: ** DEPRECATED ** - Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Field is deprecated.", alias="anyoneWithLinkEnabled", ), ] = None @@ -102,10 +102,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + ExternalSharingOptions.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/externalshortcut.py b/src/glean/api_client/models/externalshortcut.py index a006b8d1..33344b41 100644 --- a/src/glean/api_client/models/externalshortcut.py +++ b/src/glean/api_client/models/externalshortcut.py @@ -87,10 +87,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + ExternalShortcut.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/extractedqna.py b/src/glean/api_client/models/extractedqna.py index b083623b..6a255674 100644 --- a/src/glean/api_client/models/extractedqna.py +++ b/src/glean/api_client/models/extractedqna.py @@ -38,10 +38,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + ExtractedQnA.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/facetbucket.py b/src/glean/api_client/models/facetbucket.py index 262dc80f..f8d356f7 100644 --- a/src/glean/api_client/models/facetbucket.py +++ b/src/glean/api_client/models/facetbucket.py @@ -38,7 +38,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/facetbucketfilter.py b/src/glean/api_client/models/facetbucketfilter.py index 771de454..19df5a17 100644 --- a/src/glean/api_client/models/facetbucketfilter.py +++ b/src/glean/api_client/models/facetbucketfilter.py @@ -29,7 +29,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/facetfilter.py b/src/glean/api_client/models/facetfilter.py index 8c2aeb7d..d882c35b 100644 --- a/src/glean/api_client/models/facetfilter.py +++ b/src/glean/api_client/models/facetfilter.py @@ -34,10 +34,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + FacetFilter.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/facetfilterset.py b/src/glean/api_client/models/facetfilterset.py index 660a4cfd..b1f689e7 100644 --- a/src/glean/api_client/models/facetfilterset.py +++ b/src/glean/api_client/models/facetfilterset.py @@ -27,7 +27,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/facetfiltervalue.py b/src/glean/api_client/models/facetfiltervalue.py index b1f4c89e..3df02196 100644 --- a/src/glean/api_client/models/facetfiltervalue.py +++ b/src/glean/api_client/models/facetfiltervalue.py @@ -2,14 +2,15 @@ from __future__ import annotations from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict -class RelationType(str, Enum): +class RelationType(str, Enum, metaclass=utils.OpenEnumMeta): # The value is equal to the specified value. EQUALS = "EQUALS" # The value is equal to the specified ID. @@ -39,12 +40,21 @@ class FacetFilterValue(BaseModel): is_negated: Annotated[ Optional[bool], pydantic.Field( - deprecated="warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible.", + deprecated="warning: ** DEPRECATED ** - Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use relationType instead.", alias="isNegated", ), ] = None r"""DEPRECATED - please use relationType instead""" + @field_serializer("relation_type") + def serialize_relation_type(self, value): + if isinstance(value, str): + try: + return models.RelationType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["value", "relationType", "isNegated"]) @@ -53,10 +63,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + FacetFilterValue.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/facetresult.py b/src/glean/api_client/models/facetresult.py index 7f92de54..6cea2b89 100644 --- a/src/glean/api_client/models/facetresult.py +++ b/src/glean/api_client/models/facetresult.py @@ -50,10 +50,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + FacetResult.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/facetvalue.py b/src/glean/api_client/models/facetvalue.py index 4e427406..fdf378c8 100644 --- a/src/glean/api_client/models/facetvalue.py +++ b/src/glean/api_client/models/facetvalue.py @@ -43,10 +43,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + FacetValue.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/favoriteinfo.py b/src/glean/api_client/models/favoriteinfo.py index df6efe65..17359e01 100644 --- a/src/glean/api_client/models/favoriteinfo.py +++ b/src/glean/api_client/models/favoriteinfo.py @@ -2,9 +2,10 @@ from __future__ import annotations from .ugctype import UgcType +from glean.api_client import models from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -33,6 +34,15 @@ class FavoriteInfo(BaseModel): ] = None r"""If the requesting user has favorited this object.""" + @field_serializer("ugc_type") + def serialize_ugc_type(self, value): + if isinstance(value, str): + try: + return models.UgcType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["ugcType", "id", "count", "favoritedByUser"]) @@ -41,10 +51,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + FavoriteInfo.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/feedback.py b/src/glean/api_client/models/feedback.py index faaeefd6..1dfc5693 100644 --- a/src/glean/api_client/models/feedback.py +++ b/src/glean/api_client/models/feedback.py @@ -24,6 +24,8 @@ class FeedbackCategory(str, Enum): r"""The feature category to which the feedback applies. These should be broad product areas such as Announcements, Answers, Search, etc. rather than specific components or UI treatments within those areas.""" ANNOUNCEMENT = "ANNOUNCEMENT" + ANSWERS = "ANSWERS" + ARTIFACTS = "ARTIFACTS" AUTOCOMPLETE = "AUTOCOMPLETE" COLLECTIONS = "COLLECTIONS" FEED = "FEED" @@ -37,7 +39,7 @@ class FeedbackCategory(str, Enum): PROMPTS = "PROMPTS" -class Event(str, Enum): +class FeedbackEvent(str, Enum): r"""The action the user took within a Glean client with respect to the object referred to by the given `trackingToken`.""" # The object's primary link was clicked with the intent to view its full representation. Depending on the object type, this may imply an external navigation or navigating to a new page or view within the Glean app. @@ -68,6 +70,8 @@ class Event(str, Enum): MANUAL_FEEDBACK = "MANUAL_FEEDBACK" # The user submitted comparative feedback for multiple side-by-side implementations. MANUAL_FEEDBACK_SIDE_BY_SIDE = "MANUAL_FEEDBACK_SIDE_BY_SIDE" + # The user submitted feedback about time saved by an agent or workflow. + FEEDBACK_TIME_SAVED = "FEEDBACK_TIME_SAVED" # The user explicitly marked the content as read. MARK_AS_READ = "MARK_AS_READ" # The user attempted to send a message using their default messaing app. @@ -111,7 +115,7 @@ class FeedbackChannel(str, Enum): class FeedbackTypedDict(TypedDict): tracking_tokens: List[str] r"""A list of server-generated trackingTokens to which this event applies.""" - event: Event + event: FeedbackEvent r"""The action the user took within a Glean client with respect to the object referred to by the given `trackingToken`.""" id: NotRequired[str] r"""Universally unique identifier of the event. To allow for reliable retransmission, only the earliest received event of a given UUID is considered valid by the server and subsequent are ignored.""" @@ -152,7 +156,7 @@ class Feedback(BaseModel): tracking_tokens: Annotated[List[str], pydantic.Field(alias="trackingTokens")] r"""A list of server-generated trackingTokens to which this event applies.""" - event: Event + event: FeedbackEvent r"""The action the user took within a Glean client with respect to the object referred to by the given `trackingToken`.""" id: Optional[str] = None @@ -250,10 +254,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + Feedback.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/feedbackchatexchange.py b/src/glean/api_client/models/feedbackchatexchange.py index e89bdd57..291794c5 100644 --- a/src/glean/api_client/models/feedbackchatexchange.py +++ b/src/glean/api_client/models/feedbackchatexchange.py @@ -26,7 +26,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -86,10 +86,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + FeedbackChatExchange.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/feedbackop.py b/src/glean/api_client/models/feedbackop.py index 43338d24..44041cb3 100644 --- a/src/glean/api_client/models/feedbackop.py +++ b/src/glean/api_client/models/feedbackop.py @@ -37,7 +37,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/feedentry.py b/src/glean/api_client/models/feedentry.py index dc49f9c3..56a778d2 100644 --- a/src/glean/api_client/models/feedentry.py +++ b/src/glean/api_client/models/feedentry.py @@ -20,9 +20,10 @@ from .useractivity import UserActivity, UserActivityTypedDict from .workflowresult import WorkflowResult, WorkflowResultTypedDict from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import List, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -57,7 +58,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -66,7 +67,7 @@ def serialize_model(self, handler): return m -class JustificationType(str, Enum): +class JustificationType(str, Enum, metaclass=utils.OpenEnumMeta): r"""Type of the justification.""" FREQUENTLY_ACCESSED = "FREQUENTLY_ACCESSED" @@ -103,6 +104,33 @@ class JustificationType(str, Enum): ZERO_STATE_AGENT_SUGGESTION = "ZERO_STATE_AGENT_SUGGESTION" PERSONALIZED_CHAT_SUGGESTION = "PERSONALIZED_CHAT_SUGGESTION" DAILY_DIGEST = "DAILY_DIGEST" + PODCAST = "PODCAST" + TASK = "TASK" + PLAN_MY_DAY = "PLAN_MY_DAY" + END_MY_DAY = "END_MY_DAY" + STARTER_KIT_EXTENSION = "STARTER_KIT_EXTENSION" + STARTER_KIT_ORG_CHART = "STARTER_KIT_ORG_CHART" + STARTER_KIT_ADD_DOC = "STARTER_KIT_ADD_DOC" + MEETING_RECAP = "MEETING_RECAP" + MEETING_ROOM = "MEETING_ROOM" + MEETING_PREP_AUTOMATION = "MEETING_PREP_AUTOMATION" + ACTIVE_DISCUSSION = "ACTIVE_DISCUSSION" + MID_DAY_CATCH_UP = "MID_DAY_CATCH_UP" + QUERY_SUGGESTION = "QUERY_SUGGESTION" + COWORK_CUJ_PROMO = "COWORK_CUJ_PROMO" + CARD_STACK_PROMO = "CARD_STACK_PROMO" + WEEKLY_MEETINGS = "WEEKLY_MEETINGS" + FOLLOW_UP = "FOLLOW_UP" + MILESTONE_TIMELINE_CHECK = "MILESTONE_TIMELINE_CHECK" + PROJECT_DISCUSSION_DIGEST = "PROJECT_DISCUSSION_DIGEST" + PROJECT_FOCUS_BLOCK = "PROJECT_FOCUS_BLOCK" + PROJECT_NEXT_STEP = "PROJECT_NEXT_STEP" + DEMO_CARD = "DEMO_CARD" + RESOLVE_MEETING_CONFLICT = "RESOLVE_MEETING_CONFLICT" + OOO_PLANNER = "OOO_PLANNER" + OOO_CATCH_UP = "OOO_CATCH_UP" + ADMIN_HEALTH_CENTER = "ADMIN_HEALTH_CENTER" + KNOWLEDGE_GAP = "KNOWLEDGE_GAP" class FeedEntryTypedDict(TypedDict): @@ -201,6 +229,15 @@ class FeedEntry(BaseModel): Optional[CountInfo], pydantic.Field(alias="documentVisitorCount") ] = None + @field_serializer("justification_type") + def serialize_justification_type(self, value): + if isinstance(value, str): + try: + return models.JustificationType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -233,10 +270,20 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + UIConfig.model_rebuild() +except NameError: + pass +try: + FeedEntry.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/feedop.py b/src/glean/api_client/models/feedop.py new file mode 100644 index 00000000..f3962628 --- /dev/null +++ b/src/glean/api_client/models/feedop.py @@ -0,0 +1,46 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .feedrequest import FeedRequest, FeedRequestTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class FeedRequestRequestTypedDict(TypedDict): + feed_request: FeedRequestTypedDict + r"""Includes request params, client data and more for making user's feed.""" + locale: NotRequired[str] + r"""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`.""" + + +class FeedRequestRequest(BaseModel): + feed_request: Annotated[ + FeedRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""Includes request params, client data and more for making user's feed.""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""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`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/feedrequest.py b/src/glean/api_client/models/feedrequest.py index ac2cf205..10c493bb 100644 --- a/src/glean/api_client/models/feedrequest.py +++ b/src/glean/api_client/models/feedrequest.py @@ -37,6 +37,28 @@ class FeedRequestCategory(str, Enum): ZERO_STATE_WORKFLOW_SUGGESTION = "ZERO_STATE_WORKFLOW_SUGGESTION" PERSONALIZED_CHAT_SUGGESTION = "PERSONALIZED_CHAT_SUGGESTION" DAILY_DIGEST = "DAILY_DIGEST" + PODCAST = "PODCAST" + TASK = "TASK" + PLAN_MY_DAY = "PLAN_MY_DAY" + END_MY_DAY = "END_MY_DAY" + STARTER_KIT = "STARTER_KIT" + MEETING_PREP_AUTOMATION = "MEETING_PREP_AUTOMATION" + MID_DAY_CATCH_UP = "MID_DAY_CATCH_UP" + QUERY_SUGGESTION = "QUERY_SUGGESTION" + COWORK_CUJ_PROMO = "COWORK_CUJ_PROMO" + CARD_STACK_PROMO = "CARD_STACK_PROMO" + WEEKLY_MEETINGS = "WEEKLY_MEETINGS" + FOLLOW_UP = "FOLLOW_UP" + MILESTONE_TIMELINE_CHECK = "MILESTONE_TIMELINE_CHECK" + PROJECT_DISCUSSION_DIGEST = "PROJECT_DISCUSSION_DIGEST" + PROJECT_FOCUS_BLOCK = "PROJECT_FOCUS_BLOCK" + PROJECT_NEXT_STEP = "PROJECT_NEXT_STEP" + DEMO_CARD = "DEMO_CARD" + RESOLVE_MEETING_CONFLICT = "RESOLVE_MEETING_CONFLICT" + OOO_PLANNER = "OOO_PLANNER" + OOO_CATCH_UP = "OOO_CATCH_UP" + ADMIN_HEALTH_CENTER = "ADMIN_HEALTH_CENTER" + KNOWLEDGE_GAP = "KNOWLEDGE_GAP" class FeedRequestTypedDict(TypedDict): @@ -75,10 +97,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + FeedRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/feedrequestoptions.py b/src/glean/api_client/models/feedrequestoptions.py index 7125ec44..b0d65380 100644 --- a/src/glean/api_client/models/feedrequestoptions.py +++ b/src/glean/api_client/models/feedrequestoptions.py @@ -27,7 +27,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -90,10 +90,20 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + CategoryToResultSize.model_rebuild() +except NameError: + pass +try: + FeedRequestOptions.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/feedresponse.py b/src/glean/api_client/models/feedresponse.py index 2a46e2b5..683438c8 100644 --- a/src/glean/api_client/models/feedresponse.py +++ b/src/glean/api_client/models/feedresponse.py @@ -66,10 +66,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + FeedResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/feedresult.py b/src/glean/api_client/models/feedresult.py index 35ae7568..6646f94d 100644 --- a/src/glean/api_client/models/feedresult.py +++ b/src/glean/api_client/models/feedresult.py @@ -3,14 +3,15 @@ from __future__ import annotations from .feedentry import FeedEntry, FeedEntryTypedDict from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import List, Optional from typing_extensions import Annotated, NotRequired, TypedDict -class FeedResultCategory(str, Enum): +class FeedResultCategory(str, Enum, metaclass=utils.OpenEnumMeta): r"""Category of the result, one of the requested categories in incoming request.""" DOCUMENT_SUGGESTION = "DOCUMENT_SUGGESTION" @@ -38,6 +39,36 @@ class FeedResultCategory(str, Enum): ZERO_STATE_WORKFLOW_SUGGESTION = "ZERO_STATE_WORKFLOW_SUGGESTION" PERSONALIZED_CHAT_SUGGESTION = "PERSONALIZED_CHAT_SUGGESTION" DAILY_DIGEST = "DAILY_DIGEST" + PODCAST = "PODCAST" + TASK = "TASK" + PLAN_MY_DAY = "PLAN_MY_DAY" + END_MY_DAY = "END_MY_DAY" + STARTER_KIT = "STARTER_KIT" + MEETING_PREP_AUTOMATION = "MEETING_PREP_AUTOMATION" + MID_DAY_CATCH_UP = "MID_DAY_CATCH_UP" + QUERY_SUGGESTION = "QUERY_SUGGESTION" + COWORK_CUJ_PROMO = "COWORK_CUJ_PROMO" + CARD_STACK_PROMO = "CARD_STACK_PROMO" + WEEKLY_MEETINGS = "WEEKLY_MEETINGS" + FOLLOW_UP = "FOLLOW_UP" + MILESTONE_TIMELINE_CHECK = "MILESTONE_TIMELINE_CHECK" + PROJECT_DISCUSSION_DIGEST = "PROJECT_DISCUSSION_DIGEST" + PROJECT_FOCUS_BLOCK = "PROJECT_FOCUS_BLOCK" + PROJECT_NEXT_STEP = "PROJECT_NEXT_STEP" + DEMO_CARD = "DEMO_CARD" + RESOLVE_MEETING_CONFLICT = "RESOLVE_MEETING_CONFLICT" + OOO_PLANNER = "OOO_PLANNER" + OOO_CATCH_UP = "OOO_CATCH_UP" + ADMIN_HEALTH_CENTER = "ADMIN_HEALTH_CENTER" + KNOWLEDGE_GAP = "KNOWLEDGE_GAP" + + +class PlacementReason(str, Enum, metaclass=utils.OpenEnumMeta): + r"""Placement source for ranked feed results. ORGANIC means the card was emitted by normal feed ranking. PROMO means the card was inserted by the homepage cards promo framework. PINNED means the card was moved to the head of the ranked stack (e.g. knowledge-gap pilot cards).""" + + ORGANIC = "ORGANIC" + PROMO = "PROMO" + PINNED = "PINNED" class FeedResultTypedDict(TypedDict): @@ -48,6 +79,8 @@ class FeedResultTypedDict(TypedDict): r"""Secondary entries for the result e.g. suggested docs for the calendar, carousel.""" rank: NotRequired[int] r"""Rank of the result. Rank is suggested by server. Client side rank may differ.""" + placement_reason: NotRequired[PlacementReason] + r"""Placement source for ranked feed results. ORGANIC means the card was emitted by normal feed ranking. PROMO means the card was inserted by the homepage cards promo framework. PINNED means the card was moved to the head of the ranked stack (e.g. knowledge-gap pilot cards).""" class FeedResult(BaseModel): @@ -64,18 +97,47 @@ class FeedResult(BaseModel): rank: Optional[int] = None r"""Rank of the result. Rank is suggested by server. Client side rank may differ.""" + placement_reason: Annotated[ + Optional[PlacementReason], pydantic.Field(alias="placementReason") + ] = None + r"""Placement source for ranked feed results. ORGANIC means the card was emitted by normal feed ranking. PROMO means the card was inserted by the homepage cards promo framework. PINNED means the card was moved to the head of the ranked stack (e.g. knowledge-gap pilot cards).""" + + @field_serializer("category") + def serialize_category(self, value): + if isinstance(value, str): + try: + return models.FeedResultCategory(value) + except ValueError: + return value + return value + + @field_serializer("placement_reason") + def serialize_placement_reason(self, value): + if isinstance(value, str): + try: + return models.PlacementReason(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = set(["secondaryEntries", "rank"]) + optional_fields = set(["secondaryEntries", "rank", "placementReason"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + FeedResult.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/followupaction.py b/src/glean/api_client/models/followupaction.py index 65cfd1f6..5a446215 100644 --- a/src/glean/api_client/models/followupaction.py +++ b/src/glean/api_client/models/followupaction.py @@ -75,10 +75,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + FollowupAction.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/generatedattachment.py b/src/glean/api_client/models/generatedattachment.py index 2cb5458c..f431eede 100644 --- a/src/glean/api_client/models/generatedattachment.py +++ b/src/glean/api_client/models/generatedattachment.py @@ -10,9 +10,10 @@ ) from .person import Person, PersonTypedDict from .structuredlink import StructuredLink, StructuredLinkTypedDict +from glean.api_client import models from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import List, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -51,6 +52,15 @@ class GeneratedAttachment(BaseModel): content: Optional[List[GeneratedAttachmentContent]] = None + @field_serializer("strategy_name") + def serialize_strategy_name(self, value): + if isinstance(value, str): + try: + return models.EventStrategyName(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -68,10 +78,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + GeneratedAttachment.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/generatedattachmentcontent.py b/src/glean/api_client/models/generatedattachmentcontent.py index 7e723c3a..cc022b56 100644 --- a/src/glean/api_client/models/generatedattachmentcontent.py +++ b/src/glean/api_client/models/generatedattachmentcontent.py @@ -36,10 +36,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + GeneratedAttachmentContent.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/generatedqna.py b/src/glean/api_client/models/generatedqna.py index fba05b9b..f1fbf635 100644 --- a/src/glean/api_client/models/generatedqna.py +++ b/src/glean/api_client/models/generatedqna.py @@ -3,9 +3,10 @@ from __future__ import annotations from .followupaction import FollowupAction, FollowupActionTypedDict from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import List, Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -13,7 +14,7 @@ from .textrange import TextRange, TextRangeTypedDict -class GeneratedQnaStatus(str, Enum): +class GeneratedQnaStatus(str, Enum, metaclass=utils.OpenEnumMeta): r"""Status of backend generating the answer""" COMPUTING = "COMPUTING" @@ -76,6 +77,15 @@ class GeneratedQna(BaseModel): ) r"""An opaque token that represents this particular result in this particular query. To be used for /feedback reporting.""" + @field_serializer("status") + def serialize_status(self, value): + if isinstance(value, str): + try: + return models.GeneratedQnaStatus(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -95,10 +105,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + GeneratedQna.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/get_rest_api_index_custom_metadata_schema_groupname_op.py b/src/glean/api_client/models/get_rest_api_index_custom_metadata_schema_groupname_op.py new file mode 100644 index 00000000..af2ec64b --- /dev/null +++ b/src/glean/api_client/models/get_rest_api_index_custom_metadata_schema_groupname_op.py @@ -0,0 +1,26 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel +from glean.api_client.utils import FieldMetadata, PathParamMetadata +import pydantic +from typing_extensions import Annotated, TypedDict + + +GET_REST_API_INDEX_CUSTOM_METADATA_SCHEMA_GROUP_NAME_OP_SERVERS = [ + "https://{instance}-be.glean.com", +] + + +class GetRestAPIIndexCustomMetadataSchemaGroupNameRequestTypedDict(TypedDict): + group_name: str + r"""Name of the metadata group schema""" + + +class GetRestAPIIndexCustomMetadataSchemaGroupNameRequest(BaseModel): + group_name: Annotated[ + str, + pydantic.Field(alias="groupName"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""Name of the metadata group schema""" diff --git a/src/glean/api_client/models/get_rest_api_v1_tools_listop.py b/src/glean/api_client/models/get_rest_api_v1_tools_listop.py index abdaafee..b5265a60 100644 --- a/src/glean/api_client/models/get_rest_api_v1_tools_listop.py +++ b/src/glean/api_client/models/get_rest_api_v1_tools_listop.py @@ -30,7 +30,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/getactionpackauthstatusop.py b/src/glean/api_client/models/getactionpackauthstatusop.py new file mode 100644 index 00000000..596234ea --- /dev/null +++ b/src/glean/api_client/models/getactionpackauthstatusop.py @@ -0,0 +1,21 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel +from glean.api_client.utils import FieldMetadata, PathParamMetadata +import pydantic +from typing_extensions import Annotated, TypedDict + + +class GetActionPackAuthStatusRequestTypedDict(TypedDict): + action_pack_id: str + r"""ID of the action pack to query or authorize.""" + + +class GetActionPackAuthStatusRequest(BaseModel): + action_pack_id: Annotated[ + str, + pydantic.Field(alias="actionPackId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""ID of the action pack to query or authorize.""" diff --git a/src/glean/api_client/models/getagentop.py b/src/glean/api_client/models/getagentop.py index fe5de6e2..9cb38383 100644 --- a/src/glean/api_client/models/getagentop.py +++ b/src/glean/api_client/models/getagentop.py @@ -12,6 +12,8 @@ class GetAgentRequestTypedDict(TypedDict): agent_id: str r"""The ID of the agent.""" + locale: NotRequired[str] + r"""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: 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.""" @@ -22,6 +24,12 @@ class GetAgentRequest(BaseModel): ] r"""The ID of the agent.""" + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""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: Annotated[ Optional[int], pydantic.Field(alias="timezoneOffset"), @@ -31,13 +39,13 @@ class GetAgentRequest(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = set(["timezoneOffset"]) + optional_fields = set(["locale", "timezoneOffset"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/getagentschemasop.py b/src/glean/api_client/models/getagentschemasop.py index 17537af7..c381cdae 100644 --- a/src/glean/api_client/models/getagentschemasop.py +++ b/src/glean/api_client/models/getagentschemasop.py @@ -12,6 +12,8 @@ class GetAgentSchemasRequestTypedDict(TypedDict): agent_id: str r"""The ID of the agent.""" + locale: NotRequired[str] + r"""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: 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.""" @@ -22,6 +24,12 @@ class GetAgentSchemasRequest(BaseModel): ] r"""The ID of the agent.""" + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""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: Annotated[ Optional[int], pydantic.Field(alias="timezoneOffset"), @@ -31,13 +39,13 @@ class GetAgentSchemasRequest(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = set(["timezoneOffset"]) + optional_fields = set(["locale", "timezoneOffset"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/getanswererror.py b/src/glean/api_client/models/getanswererror.py index c95c45ab..102fadd9 100644 --- a/src/glean/api_client/models/getanswererror.py +++ b/src/glean/api_client/models/getanswererror.py @@ -3,14 +3,15 @@ from __future__ import annotations from .person import Person, PersonTypedDict from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict -class GetAnswerErrorErrorType(str, Enum): +class GetAnswerErrorErrorType(str, Enum, metaclass=utils.OpenEnumMeta): NO_PERMISSION = "NO_PERMISSION" INVALID_ID = "INVALID_ID" @@ -29,6 +30,15 @@ class GetAnswerError(BaseModel): None ) + @field_serializer("error_type") + def serialize_error_type(self, value): + if isinstance(value, str): + try: + return models.GetAnswerErrorErrorType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["errorType", "answerAuthor"]) @@ -37,10 +47,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + GetAnswerError.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/getanswerop.py b/src/glean/api_client/models/getanswerop.py new file mode 100644 index 00000000..3a649778 --- /dev/null +++ b/src/glean/api_client/models/getanswerop.py @@ -0,0 +1,46 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .getanswerrequest import GetAnswerRequest, GetAnswerRequestTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetanswerRequestRequestTypedDict(TypedDict): + get_answer_request: GetAnswerRequestTypedDict + r"""GetAnswer request""" + locale: NotRequired[str] + r"""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`.""" + + +class GetanswerRequestRequest(BaseModel): + get_answer_request: Annotated[ + GetAnswerRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""GetAnswer request""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""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`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/getanswerrequest.py b/src/glean/api_client/models/getanswerrequest.py index af67e965..5a1648a1 100644 --- a/src/glean/api_client/models/getanswerrequest.py +++ b/src/glean/api_client/models/getanswerrequest.py @@ -30,10 +30,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + GetAnswerRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/getanswerresponse.py b/src/glean/api_client/models/getanswerresponse.py index 8c01ba88..6bb54cef 100644 --- a/src/glean/api_client/models/getanswerresponse.py +++ b/src/glean/api_client/models/getanswerresponse.py @@ -30,10 +30,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + GetAnswerResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/getchatapplicationop.py b/src/glean/api_client/models/getchatapplicationop.py index 08af3716..8431fc2e 100644 --- a/src/glean/api_client/models/getchatapplicationop.py +++ b/src/glean/api_client/models/getchatapplicationop.py @@ -15,6 +15,8 @@ class GetchatapplicationRequestRequestTypedDict(TypedDict): get_chat_application_request: GetChatApplicationRequestTypedDict + locale: NotRequired[str] + r"""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: 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.""" @@ -25,6 +27,12 @@ class GetchatapplicationRequestRequest(BaseModel): FieldMetadata(request=RequestMetadata(media_type="application/json")), ] + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""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: Annotated[ Optional[int], pydantic.Field(alias="timezoneOffset"), @@ -34,13 +42,13 @@ class GetchatapplicationRequestRequest(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = set(["timezoneOffset"]) + optional_fields = set(["locale", "timezoneOffset"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/getchatapplicationresponse.py b/src/glean/api_client/models/getchatapplicationresponse.py index c2b617f8..c4b38871 100644 --- a/src/glean/api_client/models/getchatapplicationresponse.py +++ b/src/glean/api_client/models/getchatapplicationresponse.py @@ -22,7 +22,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/getchatfileop.py b/src/glean/api_client/models/getchatfileop.py new file mode 100644 index 00000000..60bbf327 --- /dev/null +++ b/src/glean/api_client/models/getchatfileop.py @@ -0,0 +1,51 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, PathParamMetadata, QueryParamMetadata +import pydantic +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetChatFileRequestTypedDict(TypedDict): + file_id: str + r"""Identifier of the chat file to download.""" + preview: NotRequired[bool] + r"""When true and the file is a PDF, the response is served inline (Content-Disposition: inline) instead of as an attachment. + + """ + + +class GetChatFileRequest(BaseModel): + file_id: Annotated[ + str, + pydantic.Field(alias="fileId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""Identifier of the chat file to download.""" + + preview: Annotated[ + Optional[bool], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""When true and the file is a PDF, the response is served inline (Content-Disposition: inline) instead of as an attachment. + + """ + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["preview"]) + 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/getchatfilesop.py b/src/glean/api_client/models/getchatfilesop.py index 709997e2..d0ba2bef 100644 --- a/src/glean/api_client/models/getchatfilesop.py +++ b/src/glean/api_client/models/getchatfilesop.py @@ -12,6 +12,8 @@ class GetchatfilesRequestRequestTypedDict(TypedDict): get_chat_files_request: GetChatFilesRequestTypedDict + locale: NotRequired[str] + r"""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: 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.""" @@ -22,6 +24,12 @@ class GetchatfilesRequestRequest(BaseModel): FieldMetadata(request=RequestMetadata(media_type="application/json")), ] + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""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: Annotated[ Optional[int], pydantic.Field(alias="timezoneOffset"), @@ -31,13 +39,13 @@ class GetchatfilesRequestRequest(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = set(["timezoneOffset"]) + optional_fields = set(["locale", "timezoneOffset"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/getchatfilesrequest.py b/src/glean/api_client/models/getchatfilesrequest.py index 86c92b64..d29ef1be 100644 --- a/src/glean/api_client/models/getchatfilesrequest.py +++ b/src/glean/api_client/models/getchatfilesrequest.py @@ -15,3 +15,9 @@ class GetChatFilesRequestTypedDict(TypedDict): class GetChatFilesRequest(BaseModel): file_ids: Annotated[List[str], pydantic.Field(alias="fileIds")] r"""IDs of files to fetch.""" + + +try: + GetChatFilesRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/getchatfilesresponse.py b/src/glean/api_client/models/getchatfilesresponse.py index 626f22cd..c3d8e2e9 100644 --- a/src/glean/api_client/models/getchatfilesresponse.py +++ b/src/glean/api_client/models/getchatfilesresponse.py @@ -25,7 +25,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/getchatop.py b/src/glean/api_client/models/getchatop.py index a233f708..c4155fe3 100644 --- a/src/glean/api_client/models/getchatop.py +++ b/src/glean/api_client/models/getchatop.py @@ -12,6 +12,8 @@ class GetchatRequestRequestTypedDict(TypedDict): get_chat_request: GetChatRequestTypedDict + locale: NotRequired[str] + r"""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: 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.""" @@ -22,6 +24,12 @@ class GetchatRequestRequest(BaseModel): FieldMetadata(request=RequestMetadata(media_type="application/json")), ] + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""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: Annotated[ Optional[int], pydantic.Field(alias="timezoneOffset"), @@ -31,13 +39,13 @@ class GetchatRequestRequest(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = set(["timezoneOffset"]) + optional_fields = set(["locale", "timezoneOffset"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/getchatresponse.py b/src/glean/api_client/models/getchatresponse.py index 88effaa3..7dfadab7 100644 --- a/src/glean/api_client/models/getchatresponse.py +++ b/src/glean/api_client/models/getchatresponse.py @@ -26,10 +26,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + GetChatResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/getcollectionop.py b/src/glean/api_client/models/getcollectionop.py new file mode 100644 index 00000000..92fdcda5 --- /dev/null +++ b/src/glean/api_client/models/getcollectionop.py @@ -0,0 +1,46 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .getcollectionrequest import GetCollectionRequest, GetCollectionRequestTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetcollectionRequestRequestTypedDict(TypedDict): + get_collection_request: GetCollectionRequestTypedDict + r"""GetCollection request""" + locale: NotRequired[str] + r"""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`.""" + + +class GetcollectionRequestRequest(BaseModel): + get_collection_request: Annotated[ + GetCollectionRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""GetCollection request""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""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`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/getcollectionrequest.py b/src/glean/api_client/models/getcollectionrequest.py index 1ddbe284..36d10443 100644 --- a/src/glean/api_client/models/getcollectionrequest.py +++ b/src/glean/api_client/models/getcollectionrequest.py @@ -44,10 +44,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + GetCollectionRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/getcollectionresponse.py b/src/glean/api_client/models/getcollectionresponse.py index 0eb2a92c..10123b3a 100644 --- a/src/glean/api_client/models/getcollectionresponse.py +++ b/src/glean/api_client/models/getcollectionresponse.py @@ -13,9 +13,9 @@ class GetCollectionResponseTypedDict(TypedDict): collection: NotRequired[CollectionTypedDict] root_collection: NotRequired[CollectionTypedDict] - tracking_token: NotRequired[str] - r"""An opaque token that represents this particular Collection. To be used for `/feedback` reporting.""" error: NotRequired[CollectionErrorTypedDict] + tracking_token: NotRequired[str] + r"""Use `collection.trackingToken` instead.""" class GetCollectionResponse(BaseModel): @@ -25,27 +25,37 @@ class GetCollectionResponse(BaseModel): Optional[Collection], pydantic.Field(alias="rootCollection") ] = None - tracking_token: Annotated[Optional[str], pydantic.Field(alias="trackingToken")] = ( - None - ) - r"""An opaque token that represents this particular Collection. To be used for `/feedback` reporting.""" - error: Optional[CollectionError] = None + tracking_token: Annotated[ + Optional[str], + pydantic.Field( + deprecated="warning: ** DEPRECATED ** - Deprecated on 2026-05-07, removal scheduled for 2027-01-15: Use `collection.trackingToken` instead..", + alias="trackingToken", + ), + ] = None + r"""Use `collection.trackingToken` instead.""" + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( - ["collection", "rootCollection", "trackingToken", "error"] + ["collection", "rootCollection", "error", "trackingToken"] ) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + GetCollectionResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/getdatasourcecredentialstatusop.py b/src/glean/api_client/models/getdatasourcecredentialstatusop.py new file mode 100644 index 00000000..d693ed54 --- /dev/null +++ b/src/glean/api_client/models/getdatasourcecredentialstatusop.py @@ -0,0 +1,21 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel +from glean.api_client.utils import FieldMetadata, PathParamMetadata +import pydantic +from typing_extensions import Annotated, TypedDict + + +class GetDatasourceCredentialStatusRequestTypedDict(TypedDict): + datasource_instance_id: str + r"""The full datasource instance identifier (e.g. o365sharepoint_abc123)""" + + +class GetDatasourceCredentialStatusRequest(BaseModel): + datasource_instance_id: Annotated[ + str, + pydantic.Field(alias="datasourceInstanceId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The full datasource instance identifier (e.g. o365sharepoint_abc123)""" diff --git a/src/glean/api_client/models/getdatasourceinstanceconfigurationop.py b/src/glean/api_client/models/getdatasourceinstanceconfigurationop.py new file mode 100644 index 00000000..25a21bd1 --- /dev/null +++ b/src/glean/api_client/models/getdatasourceinstanceconfigurationop.py @@ -0,0 +1,30 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel +from glean.api_client.utils import FieldMetadata, PathParamMetadata +import pydantic +from typing_extensions import Annotated, TypedDict + + +class GetDatasourceInstanceConfigurationRequestTypedDict(TypedDict): + datasource_id: str + r"""The datasource type identifier (e.g. o365sharepoint)""" + instance_id: str + r"""The datasource instance identifier""" + + +class GetDatasourceInstanceConfigurationRequest(BaseModel): + datasource_id: Annotated[ + str, + pydantic.Field(alias="datasourceId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The datasource type identifier (e.g. o365sharepoint)""" + + instance_id: Annotated[ + str, + pydantic.Field(alias="instanceId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The datasource instance identifier""" diff --git a/src/glean/api_client/models/getdlpreportresponse.py b/src/glean/api_client/models/getdlpreportresponse.py index 6b2c3478..7af2ec3d 100644 --- a/src/glean/api_client/models/getdlpreportresponse.py +++ b/src/glean/api_client/models/getdlpreportresponse.py @@ -25,7 +25,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/getdocpermissionsop.py b/src/glean/api_client/models/getdocpermissionsop.py new file mode 100644 index 00000000..bc562e41 --- /dev/null +++ b/src/glean/api_client/models/getdocpermissionsop.py @@ -0,0 +1,49 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .getdocpermissionsrequest import ( + GetDocPermissionsRequest, + GetDocPermissionsRequestTypedDict, +) +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetdocpermissionsRequestRequestTypedDict(TypedDict): + get_doc_permissions_request: GetDocPermissionsRequestTypedDict + r"""Document permissions request""" + locale: NotRequired[str] + r"""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`.""" + + +class GetdocpermissionsRequestRequest(BaseModel): + get_doc_permissions_request: Annotated[ + GetDocPermissionsRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""Document permissions request""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""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`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/getdocpermissionsrequest.py b/src/glean/api_client/models/getdocpermissionsrequest.py index 6c2088c7..4c4a4e5b 100644 --- a/src/glean/api_client/models/getdocpermissionsrequest.py +++ b/src/glean/api_client/models/getdocpermissionsrequest.py @@ -25,10 +25,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + GetDocPermissionsRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/getdocpermissionsresponse.py b/src/glean/api_client/models/getdocpermissionsresponse.py index ea7a3e38..061e8975 100644 --- a/src/glean/api_client/models/getdocpermissionsresponse.py +++ b/src/glean/api_client/models/getdocpermissionsresponse.py @@ -27,10 +27,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + GetDocPermissionsResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/getdocumentcountresponse.py b/src/glean/api_client/models/getdocumentcountresponse.py index 9c084ea9..c3400b20 100644 --- a/src/glean/api_client/models/getdocumentcountresponse.py +++ b/src/glean/api_client/models/getdocumentcountresponse.py @@ -31,10 +31,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + GetDocumentCountResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/getdocumentsbyfacetsop.py b/src/glean/api_client/models/getdocumentsbyfacetsop.py new file mode 100644 index 00000000..a6bd1531 --- /dev/null +++ b/src/glean/api_client/models/getdocumentsbyfacetsop.py @@ -0,0 +1,49 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .getdocumentsbyfacetsrequest import ( + GetDocumentsByFacetsRequest, + GetDocumentsByFacetsRequestTypedDict, +) +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetdocumentsbyfacetsRequestRequestTypedDict(TypedDict): + locale: NotRequired[str] + r"""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`.""" + get_documents_by_facets_request: NotRequired[GetDocumentsByFacetsRequestTypedDict] + r"""Information about facet conditions for documents to be retrieved.""" + + +class GetdocumentsbyfacetsRequestRequest(BaseModel): + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""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`.""" + + get_documents_by_facets_request: Annotated[ + Optional[GetDocumentsByFacetsRequest], + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] = None + r"""Information about facet conditions for documents to be retrieved.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale", "GetDocumentsByFacetsRequest"]) + 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/getdocumentsbyfacetsrequest.py b/src/glean/api_client/models/getdocumentsbyfacetsrequest.py index acd7f01b..fe741831 100644 --- a/src/glean/api_client/models/getdocumentsbyfacetsrequest.py +++ b/src/glean/api_client/models/getdocumentsbyfacetsrequest.py @@ -38,10 +38,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + GetDocumentsByFacetsRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/getdocumentsbyfacetsresponse.py b/src/glean/api_client/models/getdocumentsbyfacetsresponse.py index 5d8d080e..e7e0337a 100644 --- a/src/glean/api_client/models/getdocumentsbyfacetsresponse.py +++ b/src/glean/api_client/models/getdocumentsbyfacetsresponse.py @@ -38,10 +38,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + GetDocumentsByFacetsResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/getdocumentsop.py b/src/glean/api_client/models/getdocumentsop.py new file mode 100644 index 00000000..fd29b3ef --- /dev/null +++ b/src/glean/api_client/models/getdocumentsop.py @@ -0,0 +1,46 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .getdocumentsrequest import GetDocumentsRequest, GetDocumentsRequestTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetdocumentsRequestRequestTypedDict(TypedDict): + locale: NotRequired[str] + r"""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`.""" + get_documents_request: NotRequired[GetDocumentsRequestTypedDict] + r"""Information about documents requested.""" + + +class GetdocumentsRequestRequest(BaseModel): + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""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`.""" + + get_documents_request: Annotated[ + Optional[GetDocumentsRequest], + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] = None + r"""Information about documents requested.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale", "GetDocumentsRequest"]) + 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/getdocumentsrequest.py b/src/glean/api_client/models/getdocumentsrequest.py index c7682b86..8e64be35 100644 --- a/src/glean/api_client/models/getdocumentsrequest.py +++ b/src/glean/api_client/models/getdocumentsrequest.py @@ -45,10 +45,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + GetDocumentsRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/getdocumentsresponse.py b/src/glean/api_client/models/getdocumentsresponse.py index 5c9db4d4..6448b888 100644 --- a/src/glean/api_client/models/getdocumentsresponse.py +++ b/src/glean/api_client/models/getdocumentsresponse.py @@ -25,7 +25,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/getdocumentstatusrequest.py b/src/glean/api_client/models/getdocumentstatusrequest.py index 47266d92..1a4b391e 100644 --- a/src/glean/api_client/models/getdocumentstatusrequest.py +++ b/src/glean/api_client/models/getdocumentstatusrequest.py @@ -28,3 +28,9 @@ class GetDocumentStatusRequest(BaseModel): doc_id: Annotated[str, pydantic.Field(alias="docId")] r"""Glean Document ID within the datasource to get the status for.""" + + +try: + GetDocumentStatusRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/getdocumentstatusresponse.py b/src/glean/api_client/models/getdocumentstatusresponse.py index 0d0bfde7..5bd4fd92 100644 --- a/src/glean/api_client/models/getdocumentstatusresponse.py +++ b/src/glean/api_client/models/getdocumentstatusresponse.py @@ -52,10 +52,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + GetDocumentStatusResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/getdocumentvisibilityoverridesresponse.py b/src/glean/api_client/models/getdocumentvisibilityoverridesresponse.py index 0cceecba..cd81ecd7 100644 --- a/src/glean/api_client/models/getdocumentvisibilityoverridesresponse.py +++ b/src/glean/api_client/models/getdocumentvisibilityoverridesresponse.py @@ -30,10 +30,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + GetDocumentVisibilityOverridesResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/getdocvisibilityop.py b/src/glean/api_client/models/getdocvisibilityop.py index 682cb48f..198ee640 100644 --- a/src/glean/api_client/models/getdocvisibilityop.py +++ b/src/glean/api_client/models/getdocvisibilityop.py @@ -30,7 +30,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/getpersonphotoop.py b/src/glean/api_client/models/getpersonphotoop.py new file mode 100644 index 00000000..7d3d9948 --- /dev/null +++ b/src/glean/api_client/models/getpersonphotoop.py @@ -0,0 +1,70 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, PathParamMetadata, QueryParamMetadata +import httpx +from pydantic import model_serializer +from typing import Dict, List, Optional, Union +from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict + + +class GetPersonPhotoRequestTypedDict(TypedDict): + person_id: str + r"""The obfuscated ID of the person whose photo to retrieve.""" + ds: NotRequired[str] + r"""Optional datasource override for crawled photos (e.g. AZURE, GDRIVE, OKTA). When omitted, the datasource is derived from the person's stored photo URL or the deployment's primary person datasource. + + """ + + +class GetPersonPhotoRequest(BaseModel): + person_id: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""The obfuscated ID of the person whose photo to retrieve.""" + + ds: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Optional datasource override for crawled photos (e.g. AZURE, GDRIVE, OKTA). When omitted, the datasource is derived from the person's stored photo URL or the deployment's primary person datasource. + + """ + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["ds"]) + 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 + + +GetPersonPhotoResponseResultTypedDict = TypeAliasType( + "GetPersonPhotoResponseResultTypedDict", Union[httpx.Response, httpx.Response] +) + + +GetPersonPhotoResponseResult = TypeAliasType( + "GetPersonPhotoResponseResult", Union[httpx.Response, httpx.Response] +) + + +class GetPersonPhotoResponseTypedDict(TypedDict): + headers: Dict[str, List[str]] + result: GetPersonPhotoResponseResultTypedDict + + +class GetPersonPhotoResponse(BaseModel): + headers: Dict[str, List[str]] + + result: GetPersonPhotoResponseResult diff --git a/src/glean/api_client/models/getpinop.py b/src/glean/api_client/models/getpinop.py new file mode 100644 index 00000000..7c1467b4 --- /dev/null +++ b/src/glean/api_client/models/getpinop.py @@ -0,0 +1,46 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .getpinrequest import GetPinRequest, GetPinRequestTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetpinRequestRequestTypedDict(TypedDict): + get_pin_request: GetPinRequestTypedDict + r"""Get pin request""" + locale: NotRequired[str] + r"""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`.""" + + +class GetpinRequestRequest(BaseModel): + get_pin_request: Annotated[ + GetPinRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""Get pin request""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""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`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/getpinrequest.py b/src/glean/api_client/models/getpinrequest.py index 758669c9..c11fbc5c 100644 --- a/src/glean/api_client/models/getpinrequest.py +++ b/src/glean/api_client/models/getpinrequest.py @@ -24,7 +24,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/getpinresponse.py b/src/glean/api_client/models/getpinresponse.py index bc1e6e9d..a4562931 100644 --- a/src/glean/api_client/models/getpinresponse.py +++ b/src/glean/api_client/models/getpinresponse.py @@ -23,7 +23,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/getpolicyop.py b/src/glean/api_client/models/getpolicyop.py index 22ff00bb..95b3502e 100644 --- a/src/glean/api_client/models/getpolicyop.py +++ b/src/glean/api_client/models/getpolicyop.py @@ -35,7 +35,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/getshortcutop.py b/src/glean/api_client/models/getshortcutop.py new file mode 100644 index 00000000..3ca7f668 --- /dev/null +++ b/src/glean/api_client/models/getshortcutop.py @@ -0,0 +1,46 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .getshortcutrequest import GetShortcutRequest, GetShortcutRequestTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetshortcutRequestRequestTypedDict(TypedDict): + get_shortcut_request: GetShortcutRequestTypedDict + r"""GetShortcut request""" + locale: NotRequired[str] + r"""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`.""" + + +class GetshortcutRequestRequest(BaseModel): + get_shortcut_request: Annotated[ + GetShortcutRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""GetShortcut request""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""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`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/getshortcutrequest_union.py b/src/glean/api_client/models/getshortcutrequest.py similarity index 60% rename from src/glean/api_client/models/getshortcutrequest_union.py rename to src/glean/api_client/models/getshortcutrequest.py index 6f031d6d..6efe832b 100644 --- a/src/glean/api_client/models/getshortcutrequest_union.py +++ b/src/glean/api_client/models/getshortcutrequest.py @@ -10,22 +10,22 @@ from typing_extensions import TypeAliasType, TypedDict -class GetShortcutRequestTypedDict(TypedDict): +class GetShortcutRequest1TypedDict(TypedDict): alias: str r"""The alias for the shortcut, including any arguments for variable shortcuts.""" -class GetShortcutRequest(BaseModel): +class GetShortcutRequest1(BaseModel): alias: str r"""The alias for the shortcut, including any arguments for variable shortcuts.""" -GetShortcutRequestUnionTypedDict = TypeAliasType( - "GetShortcutRequestUnionTypedDict", - Union[UserGeneratedContentIDTypedDict, GetShortcutRequestTypedDict], +GetShortcutRequestTypedDict = TypeAliasType( + "GetShortcutRequestTypedDict", + Union[UserGeneratedContentIDTypedDict, GetShortcutRequest1TypedDict], ) -GetShortcutRequestUnion = TypeAliasType( - "GetShortcutRequestUnion", Union[UserGeneratedContentID, GetShortcutRequest] +GetShortcutRequest = TypeAliasType( + "GetShortcutRequest", Union[UserGeneratedContentID, GetShortcutRequest1] ) diff --git a/src/glean/api_client/models/getshortcutresponse.py b/src/glean/api_client/models/getshortcutresponse.py index 865ad042..b20fa741 100644 --- a/src/glean/api_client/models/getshortcutresponse.py +++ b/src/glean/api_client/models/getshortcutresponse.py @@ -27,7 +27,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/gettoolserverauthstatusop.py b/src/glean/api_client/models/gettoolserverauthstatusop.py new file mode 100644 index 00000000..91b8c13d --- /dev/null +++ b/src/glean/api_client/models/gettoolserverauthstatusop.py @@ -0,0 +1,21 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel +from glean.api_client.utils import FieldMetadata, PathParamMetadata +import pydantic +from typing_extensions import Annotated, TypedDict + + +class GetToolServerAuthStatusRequestTypedDict(TypedDict): + server_id: str + r"""Unique identifier of the tool server.""" + + +class GetToolServerAuthStatusRequest(BaseModel): + server_id: Annotated[ + str, + pydantic.Field(alias="serverId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""Unique identifier of the tool server.""" diff --git a/src/glean/api_client/models/gettoolservertoolsop.py b/src/glean/api_client/models/gettoolservertoolsop.py new file mode 100644 index 00000000..afb417b0 --- /dev/null +++ b/src/glean/api_client/models/gettoolservertoolsop.py @@ -0,0 +1,31 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel +from glean.api_client.utils import FieldMetadata, PathParamMetadata, QueryParamMetadata +import pydantic +from typing import List +from typing_extensions import Annotated, TypedDict + + +class GetToolServerToolsRequestTypedDict(TypedDict): + server_id: str + r"""Unique identifier of the tool server.""" + tool_names: List[str] + r"""Tool names to look up on this server. Maximum 100.""" + + +class GetToolServerToolsRequest(BaseModel): + server_id: Annotated[ + str, + pydantic.Field(alias="serverId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""Unique identifier of the tool server.""" + + tool_names: Annotated[ + List[str], + pydantic.Field(alias="toolNames"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=False)), + ] + r"""Tool names to look up on this server. Maximum 100.""" diff --git a/src/glean/api_client/models/getusercountresponse.py b/src/glean/api_client/models/getusercountresponse.py index 1d880a81..9a042fa5 100644 --- a/src/glean/api_client/models/getusercountresponse.py +++ b/src/glean/api_client/models/getusercountresponse.py @@ -29,10 +29,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + GetUserCountResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/gleanassistinsightsresponse.py b/src/glean/api_client/models/gleanassistinsightsresponse.py index 9bd86581..e6c29553 100644 --- a/src/glean/api_client/models/gleanassistinsightsresponse.py +++ b/src/glean/api_client/models/gleanassistinsightsresponse.py @@ -62,10 +62,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + GleanAssistInsightsResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/gleandataerror.py b/src/glean/api_client/models/gleandataerror.py index 49567e8d..7672589b 100644 --- a/src/glean/api_client/models/gleandataerror.py +++ b/src/glean/api_client/models/gleandataerror.py @@ -21,6 +21,8 @@ class GleanDataErrorTypedDict(TypedDict): invalid_operators: NotRequired[List[InvalidOperatorValueErrorTypedDict]] r"""Indicates results could not be fetched due to invalid operators in the query.""" error_messages: NotRequired[List[ErrorMessageTypedDict]] + federated_search_rate_limit_error: NotRequired[bool] + r"""Indicates the federated search results could not be fetched due to rate limiting.""" class GleanDataError(BaseModel): @@ -44,20 +46,37 @@ class GleanDataError(BaseModel): Optional[List[ErrorMessage]], pydantic.Field(alias="errorMessages") ] = None + federated_search_rate_limit_error: Annotated[ + Optional[bool], pydantic.Field(alias="federatedSearchRateLimitError") + ] = None + r"""Indicates the federated search results could not be fetched due to rate limiting.""" + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( - ["badGmailToken", "badOutlookToken", "invalidOperators", "errorMessages"] + [ + "badGmailToken", + "badOutlookToken", + "invalidOperators", + "errorMessages", + "federatedSearchRateLimitError", + ] ) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + GleanDataError.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/grantpermission.py b/src/glean/api_client/models/grantpermission.py index f2c051cf..a1bb6806 100644 --- a/src/glean/api_client/models/grantpermission.py +++ b/src/glean/api_client/models/grantpermission.py @@ -2,9 +2,10 @@ from __future__ import annotations from .scopetype import ScopeType +from glean.api_client import models from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -22,6 +23,15 @@ class GrantPermission(BaseModel): scope_type: Annotated[Optional[ScopeType], pydantic.Field(alias="scopeType")] = None r"""Describes the scope for a ReadPermission, WritePermission, or GrantPermission object""" + @field_serializer("scope_type") + def serialize_scope_type(self, value): + if isinstance(value, str): + try: + return models.ScopeType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["scopeType"]) @@ -30,10 +40,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + GrantPermission.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/group.py b/src/glean/api_client/models/group.py index 23a09b46..f1b4a7e9 100644 --- a/src/glean/api_client/models/group.py +++ b/src/glean/api_client/models/group.py @@ -2,9 +2,10 @@ from __future__ import annotations from .grouptype import GroupType +from glean.api_client import models from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -42,6 +43,15 @@ class Group(BaseModel): ] = None r"""identifier for greenlist provisioning, aka sciokey""" + @field_serializer("type") + def serialize_type(self, value): + if isinstance(value, str): + try: + return models.GroupType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["name", "datasourceInstance", "provisioningId"]) @@ -50,10 +60,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + Group.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/grouptype.py b/src/glean/api_client/models/grouptype.py index 30e949fe..88a980fb 100644 --- a/src/glean/api_client/models/grouptype.py +++ b/src/glean/api_client/models/grouptype.py @@ -2,9 +2,10 @@ from __future__ import annotations from enum import Enum +from glean.api_client import utils -class GroupType(str, Enum): +class GroupType(str, Enum, metaclass=utils.OpenEnumMeta): r"""The type of user group""" DEPARTMENT = "DEPARTMENT" @@ -15,3 +16,5 @@ class GroupType(str, Enum): LOCATION = "LOCATION" REGION = "REGION" EXTERNAL_GROUP = "EXTERNAL_GROUP" + # Refers to any viewers of the Collection. + COLLECTION_AUDIENCE = "COLLECTION_AUDIENCE" diff --git a/src/glean/api_client/models/hotword.py b/src/glean/api_client/models/hotword.py index 2f606c02..51dcb030 100644 --- a/src/glean/api_client/models/hotword.py +++ b/src/glean/api_client/models/hotword.py @@ -26,7 +26,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/hotwordproximity.py b/src/glean/api_client/models/hotwordproximity.py index 158b63d4..ebc0ed38 100644 --- a/src/glean/api_client/models/hotwordproximity.py +++ b/src/glean/api_client/models/hotwordproximity.py @@ -26,10 +26,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + HotwordProximity.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/iconconfig.py b/src/glean/api_client/models/iconconfig.py index 079ce64d..b7109f6b 100644 --- a/src/glean/api_client/models/iconconfig.py +++ b/src/glean/api_client/models/iconconfig.py @@ -2,14 +2,15 @@ from __future__ import annotations from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict -class IconType(str, Enum): +class IconType(str, Enum, metaclass=utils.OpenEnumMeta): COLLECTION = "COLLECTION" CUSTOM = "CUSTOM" DATASOURCE = "DATASOURCE" @@ -67,6 +68,15 @@ class IconConfig(BaseModel): url: Optional[str] = None r"""The URL to an image to be displayed if applicable, e.g. the URL for `iconType.URL` icons.""" + @field_serializer("icon_type") + def serialize_icon_type(self, value): + if isinstance(value, str): + try: + return models.IconType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -86,10 +96,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + IconConfig.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/importagentop.py b/src/glean/api_client/models/importagentop.py new file mode 100644 index 00000000..d30f537e --- /dev/null +++ b/src/glean/api_client/models/importagentop.py @@ -0,0 +1,66 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .importagentrequest import ImportAgentRequest, ImportAgentRequestTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import ( + FieldMetadata, + PathParamMetadata, + QueryParamMetadata, + RequestMetadata, +) +import pydantic +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class ImportAgentRequestRequestTypedDict(TypedDict): + agent_id: str + r"""The ID of the agent to create or update.""" + import_agent_request: ImportAgentRequestTypedDict + locale: NotRequired[str] + r"""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: 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.""" + + +class ImportAgentRequestRequest(BaseModel): + agent_id: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""The ID of the agent to create or update.""" + + import_agent_request: Annotated[ + ImportAgentRequest, + FieldMetadata(request=RequestMetadata(media_type="multipart/form-data")), + ] + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""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: Annotated[ + Optional[int], + pydantic.Field(alias="timezoneOffset"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale", "timezoneOffset"]) + 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/importagentrequest.py b/src/glean/api_client/models/importagentrequest.py new file mode 100644 index 00000000..92ac1ff0 --- /dev/null +++ b/src/glean/api_client/models/importagentrequest.py @@ -0,0 +1,134 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .importagentsyncmode import ImportAgentSyncMode +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, MultipartFormMetadata +import io +import pydantic +from pydantic import model_serializer +from typing import IO, Optional, Union +from typing_extensions import Annotated, NotRequired, TypedDict + + +class BundleTypedDict(TypedDict): + file_name: str + content: Union[bytes, IO[bytes], io.IOBase] + content_type: NotRequired[str] + + +class Bundle(BaseModel): + file_name: Annotated[ + str, pydantic.Field(alias="fileName"), FieldMetadata(multipart=True) + ] + + content: Annotated[ + Union[bytes, IO[bytes], io.IOBase], + pydantic.Field(alias=""), + FieldMetadata(multipart=MultipartFormMetadata(content=True)), + ] + + content_type: Annotated[ + Optional[str], + pydantic.Field(alias="Content-Type"), + FieldMetadata(multipart=True), + ] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["contentType"]) + 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 + + +class ImportAgentRequestTypedDict(TypedDict): + bundle: BundleTypedDict + r"""Zip of the agent folder (spec.yaml, instructions.md, skills/, subagents/) with symlinks dereferenced. + + """ + git_commit_sha: NotRequired[str] + r"""Optional Git commit SHA to associate with this import.""" + git_author_id: NotRequired[str] + r"""Optional VCS commit author ID to associate with this import.""" + commit_message: NotRequired[str] + r"""Optional commit message for the imported version.""" + sync_mode: NotRequired[ImportAgentSyncMode] + r"""Whether the imported version is staged (saved without updating the live version) or published directly to the live version. + + """ + is_draft: NotRequired[bool] + r"""When true, validates and stores a draft preview without publishing (used for PR preview links). Takes precedence over `syncMode`: when `isDraft` is true, `syncMode` is ignored. + + """ + + +class ImportAgentRequest(BaseModel): + bundle: Annotated[Bundle, FieldMetadata(multipart=MultipartFormMetadata(file=True))] + r"""Zip of the agent folder (spec.yaml, instructions.md, skills/, subagents/) with symlinks dereferenced. + + """ + + git_commit_sha: Annotated[ + Optional[str], + pydantic.Field(alias="gitCommitSha"), + FieldMetadata(multipart=True), + ] = None + r"""Optional Git commit SHA to associate with this import.""" + + git_author_id: Annotated[ + Optional[str], + pydantic.Field(alias="gitAuthorId"), + FieldMetadata(multipart=True), + ] = None + r"""Optional VCS commit author ID to associate with this import.""" + + commit_message: Annotated[ + Optional[str], + pydantic.Field(alias="commitMessage"), + FieldMetadata(multipart=True), + ] = None + r"""Optional commit message for the imported version.""" + + sync_mode: Annotated[ + Optional[ImportAgentSyncMode], + pydantic.Field(alias="syncMode"), + FieldMetadata(multipart=True), + ] = None + r"""Whether the imported version is staged (saved without updating the live version) or published directly to the live version. + + """ + + is_draft: Annotated[ + Optional[bool], pydantic.Field(alias="isDraft"), FieldMetadata(multipart=True) + ] = None + r"""When true, validates and stores a draft preview without publishing (used for PR preview links). Takes precedence over `syncMode`: when `isDraft` is true, `syncMode` is ignored. + + """ + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + ["gitCommitSha", "gitAuthorId", "commitMessage", "syncMode", "isDraft"] + ) + 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/importagentresponse.py b/src/glean/api_client/models/importagentresponse.py new file mode 100644 index 00000000..19b134ef --- /dev/null +++ b/src/glean/api_client/models/importagentresponse.py @@ -0,0 +1,57 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .importagentstatus import ImportAgentStatus +from .workflowresult import WorkflowResult, WorkflowResultTypedDict +from glean.api_client import models +from glean.api_client.types import BaseModel, UNSET_SENTINEL +import pydantic +from pydantic import field_serializer, model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class ImportAgentResponseTypedDict(TypedDict): + workflow_result: NotRequired[WorkflowResultTypedDict] + status: NotRequired[ImportAgentStatus] + r"""Outcome of the import for the target agent.""" + + +class ImportAgentResponse(BaseModel): + workflow_result: Annotated[ + Optional[WorkflowResult], pydantic.Field(alias="workflowResult") + ] = None + + status: Optional[ImportAgentStatus] = None + r"""Outcome of the import for the target agent.""" + + @field_serializer("status") + def serialize_status(self, value): + if isinstance(value, str): + try: + return models.ImportAgentStatus(value) + except ValueError: + return value + return value + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["workflowResult", "status"]) + 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: + ImportAgentResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/importagentstatus.py b/src/glean/api_client/models/importagentstatus.py new file mode 100644 index 00000000..fb11e89e --- /dev/null +++ b/src/glean/api_client/models/importagentstatus.py @@ -0,0 +1,13 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +from glean.api_client import utils + + +class ImportAgentStatus(str, Enum, metaclass=utils.OpenEnumMeta): + r"""Outcome of the import for the target agent.""" + + CREATED = "CREATED" + UPDATED = "UPDATED" + DRAFT_PREVIEW = "DRAFT_PREVIEW" diff --git a/src/glean/api_client/models/importagentsyncmode.py b/src/glean/api_client/models/importagentsyncmode.py new file mode 100644 index 00000000..3f93c95c --- /dev/null +++ b/src/glean/api_client/models/importagentsyncmode.py @@ -0,0 +1,11 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum + + +class ImportAgentSyncMode(str, Enum): + r"""Whether the imported version is staged (saved without updating the live version) or published directly to the live version.""" + + STAGED = "STAGED" + PUBLISHED = "PUBLISHED" diff --git a/src/glean/api_client/models/indexdocumentrequest.py b/src/glean/api_client/models/indexdocumentrequest.py index 6e9ba14c..e49af0a9 100644 --- a/src/glean/api_client/models/indexdocumentrequest.py +++ b/src/glean/api_client/models/indexdocumentrequest.py @@ -34,7 +34,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/indexdocumentsrequest.py b/src/glean/api_client/models/indexdocumentsrequest.py index c5380d64..df0dc41e 100644 --- a/src/glean/api_client/models/indexdocumentsrequest.py +++ b/src/glean/api_client/models/indexdocumentsrequest.py @@ -40,10 +40,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + IndexDocumentsRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/indexemployeerequest.py b/src/glean/api_client/models/indexemployeerequest.py index b058f473..c37c66ac 100644 --- a/src/glean/api_client/models/indexemployeerequest.py +++ b/src/glean/api_client/models/indexemployeerequest.py @@ -37,7 +37,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/indexgrouprequest.py b/src/glean/api_client/models/indexgrouprequest.py index 06043c30..f0b242fd 100644 --- a/src/glean/api_client/models/indexgrouprequest.py +++ b/src/glean/api_client/models/indexgrouprequest.py @@ -42,7 +42,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/indexingshortcut.py b/src/glean/api_client/models/indexingshortcut.py index 2e605990..82edda46 100644 --- a/src/glean/api_client/models/indexingshortcut.py +++ b/src/glean/api_client/models/indexingshortcut.py @@ -74,10 +74,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + IndexingShortcut.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/indexmembershiprequest.py b/src/glean/api_client/models/indexmembershiprequest.py index e6acb4c6..471ea84b 100644 --- a/src/glean/api_client/models/indexmembershiprequest.py +++ b/src/glean/api_client/models/indexmembershiprequest.py @@ -42,7 +42,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/indexstatus.py b/src/glean/api_client/models/indexstatus.py index 91740638..51863783 100644 --- a/src/glean/api_client/models/indexstatus.py +++ b/src/glean/api_client/models/indexstatus.py @@ -35,10 +35,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + IndexStatus.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/indexteamrequest.py b/src/glean/api_client/models/indexteamrequest.py index 2f0be026..e524f951 100644 --- a/src/glean/api_client/models/indexteamrequest.py +++ b/src/glean/api_client/models/indexteamrequest.py @@ -34,7 +34,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/indexuserrequest.py b/src/glean/api_client/models/indexuserrequest.py index 21e0654e..7acd43d1 100644 --- a/src/glean/api_client/models/indexuserrequest.py +++ b/src/glean/api_client/models/indexuserrequest.py @@ -42,7 +42,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/inputoptions.py b/src/glean/api_client/models/inputoptions.py index 4b14eb02..63d2569b 100644 --- a/src/glean/api_client/models/inputoptions.py +++ b/src/glean/api_client/models/inputoptions.py @@ -3,21 +3,22 @@ from __future__ import annotations from .timerange import TimeRange, TimeRangeTypedDict from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import List, Optional from typing_extensions import Annotated, NotRequired, TypedDict -class DatasourcesType(str, Enum): +class DatasourcesType(str, Enum, metaclass=utils.OpenEnumMeta): r"""The types of datasource for which to run the report/policy.""" ALL = "ALL" CUSTOM = "CUSTOM" -class InputOptionsTimePeriodType(str, Enum): +class InputOptionsTimePeriodType(str, Enum, metaclass=utils.OpenEnumMeta): r"""Type of time period for which to run the report/policy. PAST_DAY is deprecated.""" ALL_TIME = "ALL_TIME" @@ -41,6 +42,8 @@ class InputOptionsTypedDict(TypedDict): time_period_type: NotRequired[InputOptionsTimePeriodType] r"""Type of time period for which to run the report/policy. PAST_DAY is deprecated.""" custom_time_range: NotRequired[TimeRangeTypedDict] + subset_doc_ids_to_scan: NotRequired[List[str]] + r"""Subset of document IDs to scan. If empty, all documents matching other scope criteria will be scanned.""" class InputOptions(BaseModel): @@ -49,7 +52,7 @@ class InputOptions(BaseModel): url_greenlist: Annotated[ Optional[List[str]], pydantic.Field( - deprecated="warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible.", + deprecated="warning: ** DEPRECATED ** - Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Field is deprecated.", alias="urlGreenlist", ), ] = None @@ -63,7 +66,7 @@ class InputOptions(BaseModel): datasources: Annotated[ Optional[List[str]], pydantic.Field( - deprecated="warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible." + deprecated="warning: ** DEPRECATED ** - Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use datasourceInstances instead." ), ] = None r"""List of datasources to consider for report. DEPRECATED - use datasourceInstances instead.""" @@ -82,6 +85,29 @@ class InputOptions(BaseModel): Optional[TimeRange], pydantic.Field(alias="customTimeRange") ] = None + subset_doc_ids_to_scan: Annotated[ + Optional[List[str]], pydantic.Field(alias="subsetDocIdsToScan") + ] = None + r"""Subset of document IDs to scan. If empty, all documents matching other scope criteria will be scanned.""" + + @field_serializer("datasources_type") + def serialize_datasources_type(self, value): + if isinstance(value, str): + try: + return models.DatasourcesType(value) + except ValueError: + return value + return value + + @field_serializer("time_period_type") + def serialize_time_period_type(self, value): + if isinstance(value, str): + try: + return models.InputOptionsTimePeriodType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -92,6 +118,7 @@ def serialize_model(self, handler): "datasourceInstances", "timePeriodType", "customTimeRange", + "subsetDocIdsToScan", ] ) serialized = handler(self) @@ -99,10 +126,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + InputOptions.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/insightsagentsrequestoptions.py b/src/glean/api_client/models/insightsagentsrequestoptions.py deleted file mode 100644 index 9df6e9f7..00000000 --- a/src/glean/api_client/models/insightsagentsrequestoptions.py +++ /dev/null @@ -1,34 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from glean.api_client.types import BaseModel, UNSET_SENTINEL -import pydantic -from pydantic import model_serializer -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class InsightsAgentsRequestOptionsTypedDict(TypedDict): - agent_ids: NotRequired[List[str]] - r"""IDs of the Agents for which Insights should be returned. An empty array signifies all.""" - - -class InsightsAgentsRequestOptions(BaseModel): - agent_ids: Annotated[Optional[List[str]], pydantic.Field(alias="agentIds")] = None - r"""IDs of the Agents for which Insights should be returned. An empty array signifies all.""" - - @model_serializer(mode="wrap") - def serialize_model(self, handler): - optional_fields = set(["agentIds"]) - serialized = handler(self) - m = {} - - for n, f in type(self).model_fields.items(): - k = f.alias or n - val = serialized.get(k) - - if val != UNSET_SENTINEL: - if val is not None or k not in optional_fields: - m[k] = val - - return m diff --git a/src/glean/api_client/models/insightsaiapprequestoptions.py b/src/glean/api_client/models/insightsaiapprequestoptions.py deleted file mode 100644 index e1bdb0b2..00000000 --- a/src/glean/api_client/models/insightsaiapprequestoptions.py +++ /dev/null @@ -1,34 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from glean.api_client.types import BaseModel, UNSET_SENTINEL -import pydantic -from pydantic import model_serializer -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class InsightsAiAppRequestOptionsTypedDict(TypedDict): - ai_app_ids: NotRequired[List[str]] - r"""IDs of the AI Apps for which Insights should be returned. An empty array signifies all.""" - - -class InsightsAiAppRequestOptions(BaseModel): - ai_app_ids: Annotated[Optional[List[str]], pydantic.Field(alias="aiAppIds")] = None - r"""IDs of the AI Apps for which Insights should be returned. An empty array signifies all.""" - - @model_serializer(mode="wrap") - def serialize_model(self, handler): - optional_fields = set(["aiAppIds"]) - serialized = handler(self) - m = {} - - for n, f in type(self).model_fields.items(): - k = f.alias or n - val = serialized.get(k) - - if val != UNSET_SENTINEL: - if val is not None or k not in optional_fields: - m[k] = val - - return m diff --git a/src/glean/api_client/models/insightsassistantrequest.py b/src/glean/api_client/models/insightsassistantrequest.py index bfc05573..806dc671 100644 --- a/src/glean/api_client/models/insightsassistantrequest.py +++ b/src/glean/api_client/models/insightsassistantrequest.py @@ -12,6 +12,8 @@ class InsightsAssistantRequestTypedDict(TypedDict): departments: NotRequired[List[str]] r"""Departments for which Insights are requested.""" + manager_emails: NotRequired[List[str]] + r"""Manager emails whose teams should be filtered for. Empty array means no filtering.""" day_range: NotRequired[PeriodTypedDict] @@ -19,20 +21,31 @@ class InsightsAssistantRequest(BaseModel): departments: Optional[List[str]] = None r"""Departments for which Insights are requested.""" + manager_emails: Annotated[ + Optional[List[str]], pydantic.Field(alias="managerEmails") + ] = None + r"""Manager emails whose teams should be filtered for. Empty array means no filtering.""" + day_range: Annotated[Optional[Period], pydantic.Field(alias="dayRange")] = None @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = set(["departments", "dayRange"]) + optional_fields = set(["departments", "managerEmails", "dayRange"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + InsightsAssistantRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/insightschatsummary.py b/src/glean/api_client/models/insightschatsummary.py index 60f6ef3d..44b76c5a 100644 --- a/src/glean/api_client/models/insightschatsummary.py +++ b/src/glean/api_client/models/insightschatsummary.py @@ -10,9 +10,9 @@ class InsightsChatSummaryTypedDict(TypedDict): monthly_active_users: NotRequired[int] - r"""Number of current Monthly Active Users, in the specified departments.""" + r"""Number of current Monthly Active Users.""" weekly_active_users: NotRequired[int] - r"""Number of current Weekly Active Users, in the specified departments.""" + r"""Number of current Weekly Active Users.""" num_chats: NotRequired[int] r"""Total number of chats by users over the specified time period.""" num_chat_users: NotRequired[int] @@ -23,12 +23,12 @@ class InsightsChatSummary(BaseModel): monthly_active_users: Annotated[ Optional[int], pydantic.Field(alias="monthlyActiveUsers") ] = None - r"""Number of current Monthly Active Users, in the specified departments.""" + r"""Number of current Monthly Active Users.""" weekly_active_users: Annotated[ Optional[int], pydantic.Field(alias="weeklyActiveUsers") ] = None - r"""Number of current Weekly Active Users, in the specified departments.""" + r"""Number of current Weekly Active Users.""" num_chats: Annotated[Optional[int], pydantic.Field(alias="numChats")] = None r"""Total number of chats by users over the specified time period.""" @@ -48,10 +48,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + InsightsChatSummary.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/insightsop.py b/src/glean/api_client/models/insightsop.py new file mode 100644 index 00000000..c0de2bef --- /dev/null +++ b/src/glean/api_client/models/insightsop.py @@ -0,0 +1,46 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .insightsrequest import InsightsRequest, InsightsRequestTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class InsightsRequestRequestTypedDict(TypedDict): + insights_request: InsightsRequestTypedDict + r"""Includes request parameters for insights requests.""" + locale: NotRequired[str] + r"""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`.""" + + +class InsightsRequestRequest(BaseModel): + insights_request: Annotated[ + InsightsRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""Includes request parameters for insights requests.""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""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`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/insightsoverviewrequest.py b/src/glean/api_client/models/insightsoverviewrequest.py index 5598c8ce..eda4a606 100644 --- a/src/glean/api_client/models/insightsoverviewrequest.py +++ b/src/glean/api_client/models/insightsoverviewrequest.py @@ -12,6 +12,8 @@ class InsightsOverviewRequestTypedDict(TypedDict): departments: NotRequired[List[str]] r"""Departments for which Insights are requested.""" + manager_emails: NotRequired[List[str]] + r"""Manager emails whose teams should be filtered for. Empty array means no filtering.""" day_range: NotRequired[PeriodTypedDict] @@ -19,20 +21,31 @@ class InsightsOverviewRequest(BaseModel): departments: Optional[List[str]] = None r"""Departments for which Insights are requested.""" + manager_emails: Annotated[ + Optional[List[str]], pydantic.Field(alias="managerEmails") + ] = None + r"""Manager emails whose teams should be filtered for. Empty array means no filtering.""" + day_range: Annotated[Optional[Period], pydantic.Field(alias="dayRange")] = None @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = set(["departments", "dayRange"]) + optional_fields = set(["departments", "managerEmails", "dayRange"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + InsightsOverviewRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/insightsoverviewresponse.py b/src/glean/api_client/models/insightsoverviewresponse.py index dea1bde5..27313ce1 100644 --- a/src/glean/api_client/models/insightsoverviewresponse.py +++ b/src/glean/api_client/models/insightsoverviewresponse.py @@ -15,9 +15,9 @@ class InsightsOverviewResponseTypedDict(TypedDict): monthly_active_users: NotRequired[int] - r"""Number of current Monthly Active Users, in the specified departments.""" + r"""Number of current Monthly Active Users.""" weekly_active_users: NotRequired[int] - r"""Number of current Weekly Active Users, in the specified departments.""" + r"""Number of current Weekly Active Users.""" departments: NotRequired[List[str]] r"""Department name(s).""" employee_count: NotRequired[int] @@ -26,6 +26,10 @@ class InsightsOverviewResponseTypedDict(TypedDict): r"""Number of current signed up employees in the specified departments, according to the Org Chart.""" search_summary: NotRequired[InsightsSearchSummaryTypedDict] chat_summary: NotRequired[InsightsChatSummaryTypedDict] + search_active_users: NotRequired[CurrentActiveUsersTypedDict] + assistant_active_users: NotRequired[CurrentActiveUsersTypedDict] + agents_active_users: NotRequired[CurrentActiveUsersTypedDict] + mcp_active_users: NotRequired[CurrentActiveUsersTypedDict] extension_summary: NotRequired[CurrentActiveUsersTypedDict] ugc_summary: NotRequired[CurrentActiveUsersTypedDict] last_updated_ts: NotRequired[int] @@ -44,9 +48,13 @@ class InsightsOverviewResponseTypedDict(TypedDict): agents_monthly_active_user_timeseries: NotRequired[LabeledCountInfoTypedDict] agents_weekly_active_user_timeseries: NotRequired[LabeledCountInfoTypedDict] agents_daily_active_user_timeseries: NotRequired[LabeledCountInfoTypedDict] + mcp_monthly_active_user_timeseries: NotRequired[LabeledCountInfoTypedDict] + mcp_weekly_active_user_timeseries: NotRequired[LabeledCountInfoTypedDict] + mcp_daily_active_user_timeseries: NotRequired[LabeledCountInfoTypedDict] searches_timeseries: NotRequired[LabeledCountInfoTypedDict] assistant_interactions_timeseries: NotRequired[LabeledCountInfoTypedDict] agent_runs_timeseries: NotRequired[LabeledCountInfoTypedDict] + mcp_calls_timeseries: NotRequired[LabeledCountInfoTypedDict] search_datasource_counts: NotRequired[Dict[str, int]] r"""Counts of search result clicks, by datasource, over the specified time period in the specified departments.""" chat_datasource_counts: NotRequired[Dict[str, int]] @@ -59,12 +67,12 @@ class InsightsOverviewResponse(BaseModel): monthly_active_users: Annotated[ Optional[int], pydantic.Field(alias="monthlyActiveUsers") ] = None - r"""Number of current Monthly Active Users, in the specified departments.""" + r"""Number of current Monthly Active Users.""" weekly_active_users: Annotated[ Optional[int], pydantic.Field(alias="weeklyActiveUsers") ] = None - r"""Number of current Weekly Active Users, in the specified departments.""" + r"""Number of current Weekly Active Users.""" departments: Optional[List[str]] = None r"""Department name(s).""" @@ -85,6 +93,22 @@ class InsightsOverviewResponse(BaseModel): Optional[InsightsChatSummary], pydantic.Field(alias="chatSummary") ] = None + search_active_users: Annotated[ + Optional[CurrentActiveUsers], pydantic.Field(alias="searchActiveUsers") + ] = None + + assistant_active_users: Annotated[ + Optional[CurrentActiveUsers], pydantic.Field(alias="assistantActiveUsers") + ] = None + + agents_active_users: Annotated[ + Optional[CurrentActiveUsers], pydantic.Field(alias="agentsActiveUsers") + ] = None + + mcp_active_users: Annotated[ + Optional[CurrentActiveUsers], pydantic.Field(alias="mcpActiveUsers") + ] = None + extension_summary: Annotated[ Optional[CurrentActiveUsers], pydantic.Field(alias="extensionSummary") ] = None @@ -99,7 +123,11 @@ class InsightsOverviewResponse(BaseModel): r"""Unix timestamp of the last update for the insights data in the response.""" search_session_satisfaction: Annotated[ - Optional[float], pydantic.Field(alias="searchSessionSatisfaction") + Optional[float], + pydantic.Field( + deprecated="warning: ** DEPRECATED ** - Deprecated on 2026-05-13, removal scheduled for 2027-01-15: This property is no longer supported. Please contact Support for alternatives..", + alias="searchSessionSatisfaction", + ), ] = None r"""Search session satisfaction rate, over the specified time period in the specified departments.""" @@ -160,6 +188,20 @@ class InsightsOverviewResponse(BaseModel): pydantic.Field(alias="agentsDailyActiveUserTimeseries"), ] = None + mcp_monthly_active_user_timeseries: Annotated[ + Optional[LabeledCountInfo], + pydantic.Field(alias="mcpMonthlyActiveUserTimeseries"), + ] = None + + mcp_weekly_active_user_timeseries: Annotated[ + Optional[LabeledCountInfo], + pydantic.Field(alias="mcpWeeklyActiveUserTimeseries"), + ] = None + + mcp_daily_active_user_timeseries: Annotated[ + Optional[LabeledCountInfo], pydantic.Field(alias="mcpDailyActiveUserTimeseries") + ] = None + searches_timeseries: Annotated[ Optional[LabeledCountInfo], pydantic.Field(alias="searchesTimeseries") ] = None @@ -173,6 +215,10 @@ class InsightsOverviewResponse(BaseModel): Optional[LabeledCountInfo], pydantic.Field(alias="agentRunsTimeseries") ] = None + mcp_calls_timeseries: Annotated[ + Optional[LabeledCountInfo], pydantic.Field(alias="mcpCallsTimeseries") + ] = None + search_datasource_counts: Annotated[ Optional[Dict[str, int]], pydantic.Field(alias="searchDatasourceCounts") ] = None @@ -199,6 +245,10 @@ def serialize_model(self, handler): "totalSignups", "searchSummary", "chatSummary", + "searchActiveUsers", + "assistantActiveUsers", + "agentsActiveUsers", + "mcpActiveUsers", "extensionSummary", "ugcSummary", "lastUpdatedTs", @@ -215,9 +265,13 @@ def serialize_model(self, handler): "agentsMonthlyActiveUserTimeseries", "agentsWeeklyActiveUserTimeseries", "agentsDailyActiveUserTimeseries", + "mcpMonthlyActiveUserTimeseries", + "mcpWeeklyActiveUserTimeseries", + "mcpDailyActiveUserTimeseries", "searchesTimeseries", "assistantInteractionsTimeseries", "agentRunsTimeseries", + "mcpCallsTimeseries", "searchDatasourceCounts", "chatDatasourceCounts", "perUserInsights", @@ -228,10 +282,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + InsightsOverviewResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/insightsrequest.py b/src/glean/api_client/models/insightsrequest.py index 6b0d940c..8ec76f9c 100644 --- a/src/glean/api_client/models/insightsrequest.py +++ b/src/glean/api_client/models/insightsrequest.py @@ -5,14 +5,6 @@ AgentsInsightsV2Request, AgentsInsightsV2RequestTypedDict, ) -from .insightsagentsrequestoptions import ( - InsightsAgentsRequestOptions, - InsightsAgentsRequestOptionsTypedDict, -) -from .insightsaiapprequestoptions import ( - InsightsAiAppRequestOptions, - InsightsAiAppRequestOptionsTypedDict, -) from .insightsassistantrequest import ( InsightsAssistantRequest, InsightsAssistantRequestTypedDict, @@ -21,54 +13,26 @@ InsightsOverviewRequest, InsightsOverviewRequestTypedDict, ) -from .period import Period, PeriodTypedDict -from enum import Enum +from .mcpbreakdowninsightsrequest import ( + McpBreakdownInsightsRequest, + McpBreakdownInsightsRequestTypedDict, +) +from .mcpinsightsrequest import McpInsightsRequest, McpInsightsRequestTypedDict from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic from pydantic import model_serializer -from typing import List, Optional +from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict -class InsightsRequestCategory(str, Enum): - AGENTS = "AGENTS" - AGENT_USERS = "AGENT_USERS" - TOP_AGENTS = "TOP_AGENTS" - AGENTS_USAGE_BY_DEPARTMENT = "AGENTS_USAGE_BY_DEPARTMENT" - AI = "AI" - AI_APPS = "AI_APPS" - ANNOUNCEMENTS = "ANNOUNCEMENTS" - ANSWERS = "ANSWERS" - COLLECTIONS = "COLLECTIONS" - CONTENT = "CONTENT" - GLEAN_ASSIST = "GLEAN_ASSIST" - QUERIES = "QUERIES" - SHORTCUTS = "SHORTCUTS" - USERS = "USERS" - - -class AssistantActivityType(str, Enum): - GLEAN_CHAT = "GLEAN_CHAT" - AI_SUMMARY = "AI_SUMMARY" - AI_ANSWER = "AI_ANSWER" - GLEANBOT_RESPONSE = "GLEANBOT_RESPONSE" - - class InsightsRequestTypedDict(TypedDict): overview_request: NotRequired[InsightsOverviewRequestTypedDict] assistant_request: NotRequired[InsightsAssistantRequestTypedDict] agents_request: NotRequired[AgentsInsightsV2RequestTypedDict] + mcp_request: NotRequired[McpInsightsRequestTypedDict] + mcp_breakdown_request: NotRequired[McpBreakdownInsightsRequestTypedDict] disable_per_user_insights: NotRequired[bool] r"""If true, suppresses the generation of per-user Insights in the response. Default is false.""" - categories: NotRequired[List[InsightsRequestCategory]] - r"""Categories of data requested. Request can include single or multiple types.""" - departments: NotRequired[List[str]] - r"""Departments that the data is requested for. If this is empty, corresponds to whole company.""" - day_range: NotRequired[PeriodTypedDict] - ai_app_request_options: NotRequired[InsightsAiAppRequestOptionsTypedDict] - agents_request_options: NotRequired[InsightsAgentsRequestOptionsTypedDict] - assistant_activity_types: NotRequired[List[AssistantActivityType]] - r"""Types of activity that should count in the definition of an Assistant Active User. Affects only insights for AI category.""" class InsightsRequest(BaseModel): @@ -84,47 +48,19 @@ class InsightsRequest(BaseModel): Optional[AgentsInsightsV2Request], pydantic.Field(alias="agentsRequest") ] = None - disable_per_user_insights: Annotated[ - Optional[bool], pydantic.Field(alias="disablePerUserInsights") - ] = None - r"""If true, suppresses the generation of per-user Insights in the response. Default is false.""" - - categories: Annotated[ - Optional[List[InsightsRequestCategory]], - pydantic.Field( - deprecated="warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible." - ), - ] = None - r"""Categories of data requested. Request can include single or multiple types.""" - - departments: Annotated[ - Optional[List[str]], - pydantic.Field( - deprecated="warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible." - ), - ] = None - r"""Departments that the data is requested for. If this is empty, corresponds to whole company.""" - - day_range: Annotated[Optional[Period], pydantic.Field(alias="dayRange")] = None - - ai_app_request_options: Annotated[ - Optional[InsightsAiAppRequestOptions], - pydantic.Field(alias="aiAppRequestOptions"), + mcp_request: Annotated[ + Optional[McpInsightsRequest], pydantic.Field(alias="mcpRequest") ] = None - agents_request_options: Annotated[ - Optional[InsightsAgentsRequestOptions], - pydantic.Field(alias="agentsRequestOptions"), + mcp_breakdown_request: Annotated[ + Optional[McpBreakdownInsightsRequest], + pydantic.Field(alias="mcpBreakdownRequest"), ] = None - assistant_activity_types: Annotated[ - Optional[List[AssistantActivityType]], - pydantic.Field( - deprecated="warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible.", - alias="assistantActivityTypes", - ), + disable_per_user_insights: Annotated[ + Optional[bool], pydantic.Field(alias="disablePerUserInsights") ] = None - r"""Types of activity that should count in the definition of an Assistant Active User. Affects only insights for AI category.""" + r"""If true, suppresses the generation of per-user Insights in the response. Default is false.""" @model_serializer(mode="wrap") def serialize_model(self, handler): @@ -133,13 +69,9 @@ def serialize_model(self, handler): "overviewRequest", "assistantRequest", "agentsRequest", + "mcpRequest", + "mcpBreakdownRequest", "disablePerUserInsights", - "categories", - "departments", - "dayRange", - "aiAppRequestOptions", - "agentsRequestOptions", - "assistantActivityTypes", ] ) serialized = handler(self) @@ -147,10 +79,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + InsightsRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/insightsresponse.py b/src/glean/api_client/models/insightsresponse.py index fe2ea34b..aa95f0f4 100644 --- a/src/glean/api_client/models/insightsresponse.py +++ b/src/glean/api_client/models/insightsresponse.py @@ -5,19 +5,10 @@ AgentsInsightsV2Response, AgentsInsightsV2ResponseTypedDict, ) -from .aiappsinsightsresponse import ( - AiAppsInsightsResponse, - AiAppsInsightsResponseTypedDict, -) -from .aiinsightsresponse import AiInsightsResponse, AiInsightsResponseTypedDict from .assistantinsightsresponse import ( AssistantInsightsResponse, AssistantInsightsResponseTypedDict, ) -from .contentinsightsresponse import ( - ContentInsightsResponse, - ContentInsightsResponseTypedDict, -) from .gleanassistinsightsresponse import ( GleanAssistInsightsResponse, GleanAssistInsightsResponseTypedDict, @@ -26,86 +17,32 @@ InsightsOverviewResponse, InsightsOverviewResponseTypedDict, ) -from .labeledcountinfo import LabeledCountInfo, LabeledCountInfoTypedDict -from .queryinsightsresponse import QueryInsightsResponse, QueryInsightsResponseTypedDict -from .shortcutinsightsresponse import ( - ShortcutInsightsResponse, - ShortcutInsightsResponseTypedDict, +from .mcpbreakdowninsightsresponse import ( + McpBreakdownInsightsResponse, + McpBreakdownInsightsResponseTypedDict, ) -from .userinsightsresponse import UserInsightsResponse, UserInsightsResponseTypedDict +from .mcpinsightsresponse import McpInsightsResponse, McpInsightsResponseTypedDict from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic from pydantic import model_serializer -from typing import List, Optional +from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict class InsightsResponseTypedDict(TypedDict): - timeseries: NotRequired[List[LabeledCountInfoTypedDict]] - r"""List of timeseries to make charts (if applicable).""" - users: NotRequired[UserInsightsResponseTypedDict] - content: NotRequired[ContentInsightsResponseTypedDict] - queries: NotRequired[QueryInsightsResponseTypedDict] - collections: NotRequired[ContentInsightsResponseTypedDict] - collections_v2: NotRequired[ContentInsightsResponseTypedDict] - shortcuts: NotRequired[ShortcutInsightsResponseTypedDict] - announcements: NotRequired[ContentInsightsResponseTypedDict] - answers: NotRequired[ContentInsightsResponseTypedDict] - ai: NotRequired[AiInsightsResponseTypedDict] - ai_apps: NotRequired[AiAppsInsightsResponseTypedDict] glean_assist: NotRequired[GleanAssistInsightsResponseTypedDict] - departments: NotRequired[List[str]] - r"""list of all departments.""" overview_response: NotRequired[InsightsOverviewResponseTypedDict] assistant_response: NotRequired[AssistantInsightsResponseTypedDict] agents_response: NotRequired[AgentsInsightsV2ResponseTypedDict] + mcp_response: NotRequired[McpInsightsResponseTypedDict] + mcp_breakdown_response: NotRequired[McpBreakdownInsightsResponseTypedDict] class InsightsResponse(BaseModel): - timeseries: Annotated[ - Optional[List[LabeledCountInfo]], - pydantic.Field( - deprecated="warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible." - ), - ] = None - r"""List of timeseries to make charts (if applicable).""" - - users: Optional[UserInsightsResponse] = None - - content: Optional[ContentInsightsResponse] = None - - queries: Optional[QueryInsightsResponse] = None - - collections: Optional[ContentInsightsResponse] = None - - collections_v2: Annotated[ - Optional[ContentInsightsResponse], pydantic.Field(alias="collectionsV2") - ] = None - - shortcuts: Optional[ShortcutInsightsResponse] = None - - announcements: Optional[ContentInsightsResponse] = None - - answers: Optional[ContentInsightsResponse] = None - - ai: Optional[AiInsightsResponse] = None - - ai_apps: Annotated[ - Optional[AiAppsInsightsResponse], pydantic.Field(alias="aiApps") - ] = None - glean_assist: Annotated[ Optional[GleanAssistInsightsResponse], pydantic.Field(alias="gleanAssist") ] = None - departments: Annotated[ - Optional[List[str]], - pydantic.Field( - deprecated="warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible." - ), - ] = None - r"""list of all departments.""" - overview_response: Annotated[ Optional[InsightsOverviewResponse], pydantic.Field(alias="overviewResponse") ] = None @@ -118,26 +55,25 @@ class InsightsResponse(BaseModel): Optional[AgentsInsightsV2Response], pydantic.Field(alias="agentsResponse") ] = None + mcp_response: Annotated[ + Optional[McpInsightsResponse], pydantic.Field(alias="mcpResponse") + ] = None + + mcp_breakdown_response: Annotated[ + Optional[McpBreakdownInsightsResponse], + pydantic.Field(alias="mcpBreakdownResponse"), + ] = None + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( [ - "timeseries", - "users", - "content", - "queries", - "collections", - "collectionsV2", - "shortcuts", - "announcements", - "answers", - "ai", - "aiApps", "gleanAssist", - "departments", "overviewResponse", "assistantResponse", "agentsResponse", + "mcpResponse", + "mcpBreakdownResponse", ] ) serialized = handler(self) @@ -145,10 +81,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + InsightsResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/insightssearchsummary.py b/src/glean/api_client/models/insightssearchsummary.py index 7d44c439..481ba43c 100644 --- a/src/glean/api_client/models/insightssearchsummary.py +++ b/src/glean/api_client/models/insightssearchsummary.py @@ -10,9 +10,9 @@ class InsightsSearchSummaryTypedDict(TypedDict): monthly_active_users: NotRequired[int] - r"""Number of current Monthly Active Users, in the specified departments.""" + r"""Number of current Monthly Active Users.""" weekly_active_users: NotRequired[int] - r"""Number of current Weekly Active Users, in the specified departments.""" + r"""Number of current Weekly Active Users.""" num_searches: NotRequired[int] r"""Total number of searches by users over the specified time period.""" num_search_users: NotRequired[int] @@ -23,12 +23,12 @@ class InsightsSearchSummary(BaseModel): monthly_active_users: Annotated[ Optional[int], pydantic.Field(alias="monthlyActiveUsers") ] = None - r"""Number of current Monthly Active Users, in the specified departments.""" + r"""Number of current Monthly Active Users.""" weekly_active_users: Annotated[ Optional[int], pydantic.Field(alias="weeklyActiveUsers") ] = None - r"""Number of current Weekly Active Users, in the specified departments.""" + r"""Number of current Weekly Active Users.""" num_searches: Annotated[Optional[int], pydantic.Field(alias="numSearches")] = None r"""Total number of searches by users over the specified time period.""" @@ -48,10 +48,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + InsightsSearchSummary.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/invalidoperatorvalueerror.py b/src/glean/api_client/models/invalidoperatorvalueerror.py index 4ed84420..e9e0ee2b 100644 --- a/src/glean/api_client/models/invalidoperatorvalueerror.py +++ b/src/glean/api_client/models/invalidoperatorvalueerror.py @@ -29,7 +29,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/inviteinfo.py b/src/glean/api_client/models/inviteinfo.py index 4b77213c..34094c53 100644 --- a/src/glean/api_client/models/inviteinfo.py +++ b/src/glean/api_client/models/inviteinfo.py @@ -43,7 +43,7 @@ class InviteInfo(BaseModel): invite_time: Annotated[ Optional[datetime], pydantic.Field( - deprecated="warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible.", + deprecated="warning: ** DEPRECATED ** - Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use ChannelInviteInfo instead.", alias="inviteTime", ), ] = None @@ -52,7 +52,7 @@ class InviteInfo(BaseModel): reminder_time: Annotated[ Optional[datetime], pydantic.Field( - deprecated="warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible.", + deprecated="warning: ** DEPRECATED ** - Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use ChannelInviteInfo instead.", alias="reminderTime", ), ] = None @@ -68,10 +68,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + InviteInfo.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/labeledcountinfo.py b/src/glean/api_client/models/labeledcountinfo.py index ea1325bc..c123fd88 100644 --- a/src/glean/api_client/models/labeledcountinfo.py +++ b/src/glean/api_client/models/labeledcountinfo.py @@ -33,10 +33,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + LabeledCountInfo.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/lifecycleevent.py b/src/glean/api_client/models/lifecycleevent.py new file mode 100644 index 00000000..d30704e6 --- /dev/null +++ b/src/glean/api_client/models/lifecycleevent.py @@ -0,0 +1,58 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +from glean.api_client import models, utils +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import field_serializer, model_serializer +from typing import Optional +from typing_extensions import NotRequired, TypedDict + + +class LifeCycleEventEvent(str, Enum, metaclass=utils.OpenEnumMeta): + r"""Type of event""" + + UPLOADED = "UPLOADED" + INDEXED = "INDEXED" + DELETION_REQUESTED = "DELETION_REQUESTED" + DELETED = "DELETED" + + +class LifeCycleEventTypedDict(TypedDict): + event: NotRequired[LifeCycleEventEvent] + r"""Type of event""" + timestamp: NotRequired[str] + r"""Timestamp of the event""" + + +class LifeCycleEvent(BaseModel): + event: Optional[LifeCycleEventEvent] = None + r"""Type of event""" + + timestamp: Optional[str] = None + r"""Timestamp of the event""" + + @field_serializer("event") + def serialize_event(self, value): + if isinstance(value, str): + try: + return models.LifeCycleEventEvent(value) + except ValueError: + return value + return value + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["event", "timestamp"]) + 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/listanswersop.py b/src/glean/api_client/models/listanswersop.py new file mode 100644 index 00000000..eb99f446 --- /dev/null +++ b/src/glean/api_client/models/listanswersop.py @@ -0,0 +1,46 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .listanswersrequest import ListAnswersRequest, ListAnswersRequestTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class ListanswersRequestRequestTypedDict(TypedDict): + list_answers_request: ListAnswersRequestTypedDict + r"""ListAnswers request""" + locale: NotRequired[str] + r"""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`.""" + + +class ListanswersRequestRequest(BaseModel): + list_answers_request: Annotated[ + ListAnswersRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""ListAnswers request""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""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`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/listanswersrequest.py b/src/glean/api_client/models/listanswersrequest.py index a5479c89..6868a538 100644 --- a/src/glean/api_client/models/listanswersrequest.py +++ b/src/glean/api_client/models/listanswersrequest.py @@ -25,10 +25,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + ListAnswersRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/listanswersresponse.py b/src/glean/api_client/models/listanswersresponse.py index 6afb7851..e92608b1 100644 --- a/src/glean/api_client/models/listanswersresponse.py +++ b/src/glean/api_client/models/listanswersresponse.py @@ -16,3 +16,9 @@ class ListAnswersResponseTypedDict(TypedDict): class ListAnswersResponse(BaseModel): answer_results: Annotated[List[AnswerResult], pydantic.Field(alias="answerResults")] r"""List of answers with tracking tokens.""" + + +try: + ListAnswersResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/listchatsop.py b/src/glean/api_client/models/listchatsop.py index 44da8712..cdd71758 100644 --- a/src/glean/api_client/models/listchatsop.py +++ b/src/glean/api_client/models/listchatsop.py @@ -10,11 +10,19 @@ class ListchatsRequestTypedDict(TypedDict): + locale: NotRequired[str] + r"""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: 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.""" class ListchatsRequest(BaseModel): + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""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: Annotated[ Optional[int], pydantic.Field(alias="timezoneOffset"), @@ -24,13 +32,13 @@ class ListchatsRequest(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = set(["timezoneOffset"]) + optional_fields = set(["locale", "timezoneOffset"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/listchatsresponse.py b/src/glean/api_client/models/listchatsresponse.py index e10bf1f1..4c33ac6b 100644 --- a/src/glean/api_client/models/listchatsresponse.py +++ b/src/glean/api_client/models/listchatsresponse.py @@ -11,6 +11,8 @@ class ListChatsResponseTypedDict(TypedDict): chat_results: NotRequired[List[ChatMetadataResultTypedDict]] + cursor: NotRequired[str] + r"""An opaque cursor for fetching the next page of results. If empty, there are no more results.""" class ListChatsResponse(BaseModel): @@ -18,18 +20,27 @@ class ListChatsResponse(BaseModel): Optional[List[ChatMetadataResult]], pydantic.Field(alias="chatResults") ] = None + cursor: Optional[str] = None + r"""An opaque cursor for fetching the next page of results. If empty, there are no more results.""" + @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = set(["chatResults"]) + optional_fields = set(["chatResults", "cursor"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + ListChatsResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/listcollectionsop.py b/src/glean/api_client/models/listcollectionsop.py new file mode 100644 index 00000000..ad00f15c --- /dev/null +++ b/src/glean/api_client/models/listcollectionsop.py @@ -0,0 +1,49 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .listcollectionsrequest import ( + ListCollectionsRequest, + ListCollectionsRequestTypedDict, +) +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class ListcollectionsRequestRequestTypedDict(TypedDict): + list_collections_request: ListCollectionsRequestTypedDict + r"""ListCollections request""" + locale: NotRequired[str] + r"""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`.""" + + +class ListcollectionsRequestRequest(BaseModel): + list_collections_request: Annotated[ + ListCollectionsRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""ListCollections request""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""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`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/listcollectionsrequest.py b/src/glean/api_client/models/listcollectionsrequest.py index c3b4c836..88e267e2 100644 --- a/src/glean/api_client/models/listcollectionsrequest.py +++ b/src/glean/api_client/models/listcollectionsrequest.py @@ -45,10 +45,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + ListCollectionsRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/listdlpfindingsexportsresponse.py b/src/glean/api_client/models/listdlpfindingsexportsresponse.py index c1d089b0..4920345f 100644 --- a/src/glean/api_client/models/listdlpfindingsexportsresponse.py +++ b/src/glean/api_client/models/listdlpfindingsexportsresponse.py @@ -23,7 +23,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/listdlpreportsresponse.py b/src/glean/api_client/models/listdlpreportsresponse.py index 67cf8242..df22a92d 100644 --- a/src/glean/api_client/models/listdlpreportsresponse.py +++ b/src/glean/api_client/models/listdlpreportsresponse.py @@ -23,7 +23,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/listentitiesop.py b/src/glean/api_client/models/listentitiesop.py new file mode 100644 index 00000000..c64939c3 --- /dev/null +++ b/src/glean/api_client/models/listentitiesop.py @@ -0,0 +1,46 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .listentitiesrequest import ListEntitiesRequest, ListEntitiesRequestTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class ListentitiesRequestRequestTypedDict(TypedDict): + list_entities_request: ListEntitiesRequestTypedDict + r"""List people request""" + locale: NotRequired[str] + r"""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`.""" + + +class ListentitiesRequestRequest(BaseModel): + list_entities_request: Annotated[ + ListEntitiesRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""List people request""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""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`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/listentitiesrequest.py b/src/glean/api_client/models/listentitiesrequest.py index e73d1c3d..74911f03 100644 --- a/src/glean/api_client/models/listentitiesrequest.py +++ b/src/glean/api_client/models/listentitiesrequest.py @@ -29,7 +29,7 @@ class ListEntitiesRequestIncludeField(str, Enum): UNPROCESSED_TEAMS = "UNPROCESSED_TEAMS" -class RequestType(str, Enum): +class ListEntitiesRequestRequestType(str, Enum): r"""The type of request being made.""" # Used by default for all requests and satisfies all standard use cases for list requests. Limited to 10000 entities. @@ -55,7 +55,7 @@ class ListEntitiesRequestTypedDict(TypedDict): r"""Pagination cursor. A previously received opaque token representing the position in the overall results at which to start.""" source: NotRequired[str] r"""A string denoting the search surface from which the endpoint is called.""" - request_type: NotRequired[RequestType] + request_type: NotRequired[ListEntitiesRequestRequestType] r"""The type of request being made.""" @@ -93,8 +93,8 @@ class ListEntitiesRequest(BaseModel): r"""A string denoting the search surface from which the endpoint is called.""" request_type: Annotated[ - Optional[RequestType], pydantic.Field(alias="requestType") - ] = RequestType.STANDARD + Optional[ListEntitiesRequestRequestType], pydantic.Field(alias="requestType") + ] = ListEntitiesRequestRequestType.STANDARD r"""The type of request being made.""" @model_serializer(mode="wrap") @@ -118,10 +118,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + ListEntitiesRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/listentitiesresponse.py b/src/glean/api_client/models/listentitiesresponse.py index 60103f2b..6f8be48a 100644 --- a/src/glean/api_client/models/listentitiesresponse.py +++ b/src/glean/api_client/models/listentitiesresponse.py @@ -86,10 +86,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + ListEntitiesResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/listpinsop.py b/src/glean/api_client/models/listpinsop.py index c31a5c29..147e4bd9 100644 --- a/src/glean/api_client/models/listpinsop.py +++ b/src/glean/api_client/models/listpinsop.py @@ -1,13 +1,53 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from glean.api_client.types import BaseModel -from typing_extensions import TypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class ListpinsRequestBodyTypedDict(TypedDict): + r"""List pins request""" + + +class ListpinsRequestBody(BaseModel): + r"""List pins request""" class ListpinsRequestTypedDict(TypedDict): + request_body: ListpinsRequestBodyTypedDict r"""List pins request""" + locale: NotRequired[str] + r"""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`.""" class ListpinsRequest(BaseModel): + request_body: Annotated[ + ListpinsRequestBody, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] r"""List pins request""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""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`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/listpoliciesop.py b/src/glean/api_client/models/listpoliciesop.py index 02965a79..d0b1cc73 100644 --- a/src/glean/api_client/models/listpoliciesop.py +++ b/src/glean/api_client/models/listpoliciesop.py @@ -38,7 +38,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/listshortcutsop.py b/src/glean/api_client/models/listshortcutsop.py new file mode 100644 index 00000000..8b99ab97 --- /dev/null +++ b/src/glean/api_client/models/listshortcutsop.py @@ -0,0 +1,49 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .listshortcutspaginatedrequest import ( + ListShortcutsPaginatedRequest, + ListShortcutsPaginatedRequestTypedDict, +) +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class ListshortcutsRequestTypedDict(TypedDict): + list_shortcuts_paginated_request: ListShortcutsPaginatedRequestTypedDict + r"""Filters, sorters, paging params required for pagination""" + locale: NotRequired[str] + r"""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`.""" + + +class ListshortcutsRequest(BaseModel): + list_shortcuts_paginated_request: Annotated[ + ListShortcutsPaginatedRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""Filters, sorters, paging params required for pagination""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""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`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/listshortcutspaginatedrequest.py b/src/glean/api_client/models/listshortcutspaginatedrequest.py index 15ef2264..30b1e2d7 100644 --- a/src/glean/api_client/models/listshortcutspaginatedrequest.py +++ b/src/glean/api_client/models/listshortcutspaginatedrequest.py @@ -57,10 +57,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + ListShortcutsPaginatedRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/listshortcutspaginatedresponse.py b/src/glean/api_client/models/listshortcutspaginatedresponse.py index da0fd32a..d8359a2f 100644 --- a/src/glean/api_client/models/listshortcutspaginatedresponse.py +++ b/src/glean/api_client/models/listshortcutspaginatedresponse.py @@ -39,10 +39,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + ListShortcutsPaginatedResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/listverificationsop.py b/src/glean/api_client/models/listverificationsop.py index f42c46a3..16e9645a 100644 --- a/src/glean/api_client/models/listverificationsop.py +++ b/src/glean/api_client/models/listverificationsop.py @@ -11,6 +11,8 @@ class ListverificationsRequestTypedDict(TypedDict): count: NotRequired[int] r"""Maximum number of documents to return""" + locale: NotRequired[str] + r"""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`.""" class ListverificationsRequest(BaseModel): @@ -20,15 +22,21 @@ class ListverificationsRequest(BaseModel): ] = None r"""Maximum number of documents to return""" + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""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`.""" + @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = set(["count"]) + optional_fields = set(["count", "locale"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/manualfeedbackinfo.py b/src/glean/api_client/models/manualfeedbackinfo.py index 0c367d00..5d4bb515 100644 --- a/src/glean/api_client/models/manualfeedbackinfo.py +++ b/src/glean/api_client/models/manualfeedbackinfo.py @@ -38,6 +38,10 @@ class ManualFeedbackInfoSource(str, Enum): class Issue(str, Enum): + AGENT_CANVAS_FAILED = "AGENT_CANVAS_FAILED" + AGENT_CLARIFYING_QUESTIONS = "AGENT_CLARIFYING_QUESTIONS" + AGENT_INTERMEDIATE_STEPS_FAILED = "AGENT_INTERMEDIATE_STEPS_FAILED" + AGENT_TOOL_CALL_FAILED = "AGENT_TOOL_CALL_FAILED" INACCURATE_RESPONSE = "INACCURATE_RESPONSE" INCOMPLETE_OR_NO_ANSWER = "INCOMPLETE_OR_NO_ANSWER" INCORRECT_CITATION = "INCORRECT_CITATION" @@ -49,6 +53,8 @@ class Issue(str, Enum): RESULTS_HELPFUL = "RESULTS_HELPFUL" RESULTS_POOR_ORDER = "RESULTS_POOR_ORDER" TOO_MUCH_ONE_KIND = "TOO_MUCH_ONE_KIND" + NOT_A_QUESTION = "NOT_A_QUESTION" + UNSURE_IF_CORRECT = "UNSURE_IF_CORRECT" class ManualFeedbackInfoVote(str, Enum): @@ -195,10 +201,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + ManualFeedbackInfo.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/manualfeedbacksidebysideinfo.py b/src/glean/api_client/models/manualfeedbacksidebysideinfo.py index 8b915ed7..f0f51104 100644 --- a/src/glean/api_client/models/manualfeedbacksidebysideinfo.py +++ b/src/glean/api_client/models/manualfeedbacksidebysideinfo.py @@ -96,10 +96,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + ManualFeedbackSideBySideInfo.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/mcpbreakdowninsightsrequest.py b/src/glean/api_client/models/mcpbreakdowninsightsrequest.py new file mode 100644 index 00000000..2893dadf --- /dev/null +++ b/src/glean/api_client/models/mcpbreakdowninsightsrequest.py @@ -0,0 +1,103 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .period import Period, PeriodTypedDict +from enum import Enum +from glean.api_client.types import BaseModel, UNSET_SENTINEL +import pydantic +from pydantic import model_serializer +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class BreakdownType(str, Enum): + r"""Type of breakdown to return.""" + + USERS = "USERS" + HOST_APPLICATIONS = "HOST_APPLICATIONS" + TOOLS = "TOOLS" + SERVERS = "SERVERS" + + +class McpBreakdownInsightsRequestTypedDict(TypedDict): + departments: NotRequired[List[str]] + r"""Departments for which Insights are requested.""" + manager_ids: NotRequired[List[str]] + r"""Manager user IDs whose teams should be filtered for. Empty array means no filtering.""" + manager_emails: NotRequired[List[str]] + r"""Manager emails whose teams should be filtered for. Empty array means no filtering.""" + day_range: NotRequired[PeriodTypedDict] + breakdown_type: NotRequired[BreakdownType] + r"""Type of breakdown to return.""" + host_applications: NotRequired[List[str]] + r"""Host applications to filter by. Empty array means all host applications.""" + tools: NotRequired[List[str]] + r"""MCP tools to filter by. Empty array means all tools.""" + servers: NotRequired[List[str]] + r"""MCP servers to filter by. Empty array means all servers.""" + + +class McpBreakdownInsightsRequest(BaseModel): + departments: Optional[List[str]] = None + r"""Departments for which Insights are requested.""" + + manager_ids: Annotated[Optional[List[str]], pydantic.Field(alias="managerIds")] = ( + None + ) + r"""Manager user IDs whose teams should be filtered for. Empty array means no filtering.""" + + manager_emails: Annotated[ + Optional[List[str]], pydantic.Field(alias="managerEmails") + ] = None + r"""Manager emails whose teams should be filtered for. Empty array means no filtering.""" + + day_range: Annotated[Optional[Period], pydantic.Field(alias="dayRange")] = None + + breakdown_type: Annotated[ + Optional[BreakdownType], pydantic.Field(alias="breakdownType") + ] = None + r"""Type of breakdown to return.""" + + host_applications: Annotated[ + Optional[List[str]], pydantic.Field(alias="hostApplications") + ] = None + r"""Host applications to filter by. Empty array means all host applications.""" + + tools: Optional[List[str]] = None + r"""MCP tools to filter by. Empty array means all tools.""" + + servers: Optional[List[str]] = None + r"""MCP servers to filter by. Empty array means all servers.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "departments", + "managerIds", + "managerEmails", + "dayRange", + "breakdownType", + "hostApplications", + "tools", + "servers", + ] + ) + 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: + McpBreakdownInsightsRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/mcpbreakdowninsightsresponse.py b/src/glean/api_client/models/mcpbreakdowninsightsresponse.py new file mode 100644 index 00000000..5afd6a5c --- /dev/null +++ b/src/glean/api_client/models/mcpbreakdowninsightsresponse.py @@ -0,0 +1,70 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .mcphostapplicationbreakdown import ( + McpHostApplicationBreakdown, + McpHostApplicationBreakdownTypedDict, +) +from .mcpserverbreakdown import McpServerBreakdown, McpServerBreakdownTypedDict +from .mcptoolbreakdown import McpToolBreakdown, McpToolBreakdownTypedDict +from .mcpuserbreakdown import McpUserBreakdown, McpUserBreakdownTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +import pydantic +from pydantic import model_serializer +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class McpBreakdownInsightsResponseTypedDict(TypedDict): + users_breakdown: NotRequired[List[McpUserBreakdownTypedDict]] + host_applications_breakdown: NotRequired[List[McpHostApplicationBreakdownTypedDict]] + tools_breakdown: NotRequired[List[McpToolBreakdownTypedDict]] + servers_breakdown: NotRequired[List[McpServerBreakdownTypedDict]] + + +class McpBreakdownInsightsResponse(BaseModel): + users_breakdown: Annotated[ + Optional[List[McpUserBreakdown]], pydantic.Field(alias="usersBreakdown") + ] = None + + host_applications_breakdown: Annotated[ + Optional[List[McpHostApplicationBreakdown]], + pydantic.Field(alias="hostApplicationsBreakdown"), + ] = None + + tools_breakdown: Annotated[ + Optional[List[McpToolBreakdown]], pydantic.Field(alias="toolsBreakdown") + ] = None + + servers_breakdown: Annotated[ + Optional[List[McpServerBreakdown]], pydantic.Field(alias="serversBreakdown") + ] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "usersBreakdown", + "hostApplicationsBreakdown", + "toolsBreakdown", + "serversBreakdown", + ] + ) + 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: + McpBreakdownInsightsResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/mcphostapplicationbreakdown.py b/src/glean/api_client/models/mcphostapplicationbreakdown.py new file mode 100644 index 00000000..687302ac --- /dev/null +++ b/src/glean/api_client/models/mcphostapplicationbreakdown.py @@ -0,0 +1,52 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel, UNSET_SENTINEL +import pydantic +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class McpHostApplicationBreakdownTypedDict(TypedDict): + host_application: NotRequired[str] + r"""Host application name.""" + total_calls: NotRequired[int] + r"""Total number of MCP calls made from this host application in the specified time period.""" + active_users: NotRequired[int] + r"""Total number of active users from this host application in the specified time period.""" + + +class McpHostApplicationBreakdown(BaseModel): + host_application: Annotated[ + Optional[str], pydantic.Field(alias="hostApplication") + ] = None + r"""Host application name.""" + + total_calls: Annotated[Optional[int], pydantic.Field(alias="totalCalls")] = None + r"""Total number of MCP calls made from this host application in the specified time period.""" + + active_users: Annotated[Optional[int], pydantic.Field(alias="activeUsers")] = None + r"""Total number of active users from this host application in the specified time period.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["hostApplication", "totalCalls", "activeUsers"]) + 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: + McpHostApplicationBreakdown.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/mcpinsightsrequest.py b/src/glean/api_client/models/mcpinsightsrequest.py new file mode 100644 index 00000000..270fed0d --- /dev/null +++ b/src/glean/api_client/models/mcpinsightsrequest.py @@ -0,0 +1,60 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .period import Period, PeriodTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +import pydantic +from pydantic import model_serializer +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class McpInsightsRequestTypedDict(TypedDict): + departments: NotRequired[List[str]] + r"""Departments for which Insights are requested.""" + manager_ids: NotRequired[List[str]] + r"""Manager user IDs whose teams should be filtered for. Empty array means no filtering.""" + manager_emails: NotRequired[List[str]] + r"""Manager emails whose teams should be filtered for. Empty array means no filtering.""" + day_range: NotRequired[PeriodTypedDict] + + +class McpInsightsRequest(BaseModel): + departments: Optional[List[str]] = None + r"""Departments for which Insights are requested.""" + + manager_ids: Annotated[Optional[List[str]], pydantic.Field(alias="managerIds")] = ( + None + ) + r"""Manager user IDs whose teams should be filtered for. Empty array means no filtering.""" + + manager_emails: Annotated[ + Optional[List[str]], pydantic.Field(alias="managerEmails") + ] = None + r"""Manager emails whose teams should be filtered for. Empty array means no filtering.""" + + day_range: Annotated[Optional[Period], pydantic.Field(alias="dayRange")] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + ["departments", "managerIds", "managerEmails", "dayRange"] + ) + 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: + McpInsightsRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/mcpinsightsresponse.py b/src/glean/api_client/models/mcpinsightsresponse.py new file mode 100644 index 00000000..e4dd8004 --- /dev/null +++ b/src/glean/api_client/models/mcpinsightsresponse.py @@ -0,0 +1,97 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .labeledcountinfo import LabeledCountInfo, LabeledCountInfoTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +import pydantic +from pydantic import model_serializer +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class McpInsightsResponseTypedDict(TypedDict): + monthly_active_users: NotRequired[int] + r"""Number of current Monthly Active Users.""" + weekly_active_users: NotRequired[int] + r"""Number of current Weekly Active Users.""" + daily_active_users: NotRequired[int] + r"""Number of current Daily Active Users.""" + monthly_active_user_timeseries: NotRequired[LabeledCountInfoTypedDict] + weekly_active_user_timeseries: NotRequired[LabeledCountInfoTypedDict] + daily_active_user_timeseries: NotRequired[LabeledCountInfoTypedDict] + overall_daily_active_user_timeseries: NotRequired[LabeledCountInfoTypedDict] + top_host_applications_active_user_timeseries: NotRequired[ + List[LabeledCountInfoTypedDict] + ] + + +class McpInsightsResponse(BaseModel): + monthly_active_users: Annotated[ + Optional[int], pydantic.Field(alias="monthlyActiveUsers") + ] = None + r"""Number of current Monthly Active Users.""" + + weekly_active_users: Annotated[ + Optional[int], pydantic.Field(alias="weeklyActiveUsers") + ] = None + r"""Number of current Weekly Active Users.""" + + daily_active_users: Annotated[ + Optional[int], pydantic.Field(alias="dailyActiveUsers") + ] = None + r"""Number of current Daily Active Users.""" + + monthly_active_user_timeseries: Annotated[ + Optional[LabeledCountInfo], pydantic.Field(alias="monthlyActiveUserTimeseries") + ] = None + + weekly_active_user_timeseries: Annotated[ + Optional[LabeledCountInfo], pydantic.Field(alias="weeklyActiveUserTimeseries") + ] = None + + daily_active_user_timeseries: Annotated[ + Optional[LabeledCountInfo], pydantic.Field(alias="dailyActiveUserTimeseries") + ] = None + + overall_daily_active_user_timeseries: Annotated[ + Optional[LabeledCountInfo], + pydantic.Field(alias="overallDailyActiveUserTimeseries"), + ] = None + + top_host_applications_active_user_timeseries: Annotated[ + Optional[List[LabeledCountInfo]], + pydantic.Field(alias="topHostApplicationsActiveUserTimeseries"), + ] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "monthlyActiveUsers", + "weeklyActiveUsers", + "dailyActiveUsers", + "monthlyActiveUserTimeseries", + "weeklyActiveUserTimeseries", + "dailyActiveUserTimeseries", + "overallDailyActiveUserTimeseries", + "topHostApplicationsActiveUserTimeseries", + ] + ) + 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: + McpInsightsResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/mcpserverbreakdown.py b/src/glean/api_client/models/mcpserverbreakdown.py new file mode 100644 index 00000000..aad32563 --- /dev/null +++ b/src/glean/api_client/models/mcpserverbreakdown.py @@ -0,0 +1,59 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel, UNSET_SENTINEL +import pydantic +from pydantic import model_serializer +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class McpServerBreakdownTypedDict(TypedDict): + server: NotRequired[str] + r"""MCP server name.""" + total_calls: NotRequired[int] + r"""Total number of MCP calls for this server in the specified time period.""" + active_users: NotRequired[int] + r"""Total number of active users for this server in the specified time period.""" + host_applications: NotRequired[List[str]] + r"""Host applications using this server in the specified time period.""" + + +class McpServerBreakdown(BaseModel): + server: Optional[str] = None + r"""MCP server name.""" + + total_calls: Annotated[Optional[int], pydantic.Field(alias="totalCalls")] = None + r"""Total number of MCP calls for this server in the specified time period.""" + + active_users: Annotated[Optional[int], pydantic.Field(alias="activeUsers")] = None + r"""Total number of active users for this server in the specified time period.""" + + host_applications: Annotated[ + Optional[List[str]], pydantic.Field(alias="hostApplications") + ] = None + r"""Host applications using this server in the specified time period.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + ["server", "totalCalls", "activeUsers", "hostApplications"] + ) + 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: + McpServerBreakdown.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/mcptoolbreakdown.py b/src/glean/api_client/models/mcptoolbreakdown.py new file mode 100644 index 00000000..5fcb1924 --- /dev/null +++ b/src/glean/api_client/models/mcptoolbreakdown.py @@ -0,0 +1,57 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel, UNSET_SENTINEL +import pydantic +from pydantic import model_serializer +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class McpToolBreakdownTypedDict(TypedDict): + tool: NotRequired[str] + r"""MCP tool name.""" + total_calls: NotRequired[int] + r"""Total number of MCP calls for this tool in the specified time period.""" + active_users: NotRequired[int] + r"""Total number of active users for this tool in the specified time period.""" + host_applications: NotRequired[List[str]] + r"""Host applications using this tool in the specified time period.""" + + +class McpToolBreakdown(BaseModel): + tool: Optional[str] = None + r"""MCP tool name.""" + + total_calls: Annotated[Optional[int], pydantic.Field(alias="totalCalls")] = None + r"""Total number of MCP calls for this tool in the specified time period.""" + + active_users: Annotated[Optional[int], pydantic.Field(alias="activeUsers")] = None + r"""Total number of active users for this tool in the specified time period.""" + + host_applications: Annotated[ + Optional[List[str]], pydantic.Field(alias="hostApplications") + ] = None + r"""Host applications using this tool in the specified time period.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["tool", "totalCalls", "activeUsers", "hostApplications"]) + 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: + McpToolBreakdown.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/mcpuserbreakdown.py b/src/glean/api_client/models/mcpuserbreakdown.py new file mode 100644 index 00000000..ec4587ff --- /dev/null +++ b/src/glean/api_client/models/mcpuserbreakdown.py @@ -0,0 +1,63 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .person import Person, PersonTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +import pydantic +from pydantic import model_serializer +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class McpUserBreakdownTypedDict(TypedDict): + person: NotRequired[PersonTypedDict] + total_calls: NotRequired[int] + r"""Total number of MCP calls made by this user in the specified time period.""" + host_applications: NotRequired[List[str]] + r"""Host applications used by this user in the specified time period.""" + tools: NotRequired[List[str]] + r"""MCP tools used by this user in the specified time period.""" + servers: NotRequired[List[str]] + r"""MCP servers used by this user in the specified time period.""" + + +class McpUserBreakdown(BaseModel): + person: Optional[Person] = None + + total_calls: Annotated[Optional[int], pydantic.Field(alias="totalCalls")] = None + r"""Total number of MCP calls made by this user in the specified time period.""" + + host_applications: Annotated[ + Optional[List[str]], pydantic.Field(alias="hostApplications") + ] = None + r"""Host applications used by this user in the specified time period.""" + + tools: Optional[List[str]] = None + r"""MCP tools used by this user in the specified time period.""" + + servers: Optional[List[str]] = None + r"""MCP servers used by this user in the specified time period.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + ["person", "totalCalls", "hostApplications", "tools", "servers"] + ) + 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: + McpUserBreakdown.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/meeting.py b/src/glean/api_client/models/meeting.py index 6652f767..c3c75325 100644 --- a/src/glean/api_client/models/meeting.py +++ b/src/glean/api_client/models/meeting.py @@ -91,10 +91,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + Meeting.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/message.py b/src/glean/api_client/models/message.py index e23c15b2..9af1fc14 100644 --- a/src/glean/api_client/models/message.py +++ b/src/glean/api_client/models/message.py @@ -41,7 +41,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/messagesop.py b/src/glean/api_client/models/messagesop.py new file mode 100644 index 00000000..8e1735a0 --- /dev/null +++ b/src/glean/api_client/models/messagesop.py @@ -0,0 +1,46 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .messagesrequest import MessagesRequest, MessagesRequestTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class MessagesRequestRequestTypedDict(TypedDict): + messages_request: MessagesRequestTypedDict + r"""Includes request params such as the id for channel/message and direction.""" + locale: NotRequired[str] + r"""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`.""" + + +class MessagesRequestRequest(BaseModel): + messages_request: Annotated[ + MessagesRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""Includes request params such as the id for channel/message and direction.""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""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`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/messagesrequest.py b/src/glean/api_client/models/messagesrequest.py index d308cf7a..2076bc4f 100644 --- a/src/glean/api_client/models/messagesrequest.py +++ b/src/glean/api_client/models/messagesrequest.py @@ -100,10 +100,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + MessagesRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/messagesresponse.py b/src/glean/api_client/models/messagesresponse.py index 70385ece..d68228bc 100644 --- a/src/glean/api_client/models/messagesresponse.py +++ b/src/glean/api_client/models/messagesresponse.py @@ -37,10 +37,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + MessagesResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/objectdefinition.py b/src/glean/api_client/models/objectdefinition.py index 32a2e714..65f80f05 100644 --- a/src/glean/api_client/models/objectdefinition.py +++ b/src/glean/api_client/models/objectdefinition.py @@ -4,14 +4,15 @@ from .propertydefinition import PropertyDefinition, PropertyDefinitionTypedDict from .propertygroup import PropertyGroup, PropertyGroupTypedDict from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import List, Optional from typing_extensions import Annotated, NotRequired, TypedDict -class DocCategory(str, Enum): +class DocCategory(str, Enum, metaclass=utils.OpenEnumMeta): r"""The document category of this object type.""" UNCATEGORIZED = "UNCATEGORIZED" @@ -32,6 +33,8 @@ class DocCategory(str, Enum): ENTITY = "ENTITY" CALENDAR = "CALENDAR" AGENTS = "AGENTS" + AI_CONVERSATION = "AI_CONVERSATION" + AI_ARTIFACT = "AI_ARTIFACT" class ObjectDefinitionTypedDict(TypedDict): @@ -76,6 +79,15 @@ class ObjectDefinition(BaseModel): summarizable: Optional[bool] = None r"""Whether or not the object is summarizable""" + @field_serializer("doc_category") + def serialize_doc_category(self, value): + if isinstance(value, str): + try: + return models.DocCategory(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -93,10 +105,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + ObjectDefinition.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/objectpermissions.py b/src/glean/api_client/models/objectpermissions.py index 5515fd87..efe9cecc 100644 --- a/src/glean/api_client/models/objectpermissions.py +++ b/src/glean/api_client/models/objectpermissions.py @@ -25,7 +25,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/operatormetadata.py b/src/glean/api_client/models/operatormetadata.py index 15308072..09ba687a 100644 --- a/src/glean/api_client/models/operatormetadata.py +++ b/src/glean/api_client/models/operatormetadata.py @@ -3,14 +3,15 @@ from __future__ import annotations from .operatorscope import OperatorScope, OperatorScopeTypedDict from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import List, Optional from typing_extensions import Annotated, NotRequired, TypedDict -class OperatorType(str, Enum): +class OperatorType(str, Enum, metaclass=utils.OpenEnumMeta): TEXT = "TEXT" DOUBLE = "DOUBLE" DATE = "DATE" @@ -50,6 +51,15 @@ class OperatorMetadata(BaseModel): display_value: Annotated[Optional[str], pydantic.Field(alias="displayValue")] = None r"""Human readable value of the operator that can be shown to the user. Only applies when result is an operator value.""" + @field_serializer("operator_type") + def serialize_operator_type(self, value): + if isinstance(value, str): + try: + return models.OperatorType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -60,10 +70,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + OperatorMetadata.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/operatorscope.py b/src/glean/api_client/models/operatorscope.py index 054d2005..ebb5f578 100644 --- a/src/glean/api_client/models/operatorscope.py +++ b/src/glean/api_client/models/operatorscope.py @@ -26,10 +26,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + OperatorScope.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/peopleop.py b/src/glean/api_client/models/peopleop.py new file mode 100644 index 00000000..ab286401 --- /dev/null +++ b/src/glean/api_client/models/peopleop.py @@ -0,0 +1,46 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .peoplerequest import PeopleRequest, PeopleRequestTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class PeopleRequestRequestTypedDict(TypedDict): + people_request: PeopleRequestTypedDict + r"""People request""" + locale: NotRequired[str] + r"""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`.""" + + +class PeopleRequestRequest(BaseModel): + people_request: Annotated[ + PeopleRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""People request""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""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`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/peoplerequest.py b/src/glean/api_client/models/peoplerequest.py index 03d510fd..520c04d8 100644 --- a/src/glean/api_client/models/peoplerequest.py +++ b/src/glean/api_client/models/peoplerequest.py @@ -86,10 +86,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + PeopleRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/peopleresponse.py b/src/glean/api_client/models/peopleresponse.py index 27a8ebfc..d882d545 100644 --- a/src/glean/api_client/models/peopleresponse.py +++ b/src/glean/api_client/models/peopleresponse.py @@ -39,10 +39,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + PeopleResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/peragentinsight.py b/src/glean/api_client/models/peragentinsight.py index 85823366..6b711e39 100644 --- a/src/glean/api_client/models/peragentinsight.py +++ b/src/glean/api_client/models/peragentinsight.py @@ -2,6 +2,7 @@ from __future__ import annotations from .iconconfig import IconConfig, IconConfigTypedDict +from .person import Person, PersonTypedDict from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic from pydantic import model_serializer @@ -26,6 +27,7 @@ class PerAgentInsightTypedDict(TypedDict): r"""Total number of upvotes for this agent over the specified time period.""" downvote_count: NotRequired[int] r"""Total number of downvotes for this agent over the specified time period.""" + owner: NotRequired[PersonTypedDict] class PerAgentInsight(BaseModel): @@ -55,6 +57,8 @@ class PerAgentInsight(BaseModel): ) r"""Total number of downvotes for this agent over the specified time period.""" + owner: Optional[Person] = None + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -67,6 +71,7 @@ def serialize_model(self, handler): "runCount", "upvoteCount", "downvoteCount", + "owner", ] ) serialized = handler(self) @@ -74,10 +79,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + PerAgentInsight.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/period.py b/src/glean/api_client/models/period.py index 0ce1cba3..5e03da4d 100644 --- a/src/glean/api_client/models/period.py +++ b/src/glean/api_client/models/period.py @@ -49,10 +49,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + Period.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/permissions.py b/src/glean/api_client/models/permissions.py index f2b2be6b..51f12fd4 100644 --- a/src/glean/api_client/models/permissions.py +++ b/src/glean/api_client/models/permissions.py @@ -86,10 +86,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + Permissions.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/permissionsgroupintersectiondefinition.py b/src/glean/api_client/models/permissionsgroupintersectiondefinition.py index ef8f9d8c..52b20386 100644 --- a/src/glean/api_client/models/permissionsgroupintersectiondefinition.py +++ b/src/glean/api_client/models/permissionsgroupintersectiondefinition.py @@ -29,10 +29,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + PermissionsGroupIntersectionDefinition.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/person.py b/src/glean/api_client/models/person.py index 3bca06b6..24355a99 100644 --- a/src/glean/api_client/models/person.py +++ b/src/glean/api_client/models/person.py @@ -44,10 +44,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + Person.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/persondistance.py b/src/glean/api_client/models/persondistance.py index 8a4af8da..e9511127 100644 --- a/src/glean/api_client/models/persondistance.py +++ b/src/glean/api_client/models/persondistance.py @@ -24,3 +24,9 @@ class PersonDistance(BaseModel): distance: float r"""Distance to person, refer to PeopleDistance pipeline on interpretation of the value.""" + + +try: + PersonDistance.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/personmetadata.py b/src/glean/api_client/models/personmetadata.py index 1983eaf4..5290ba80 100644 --- a/src/glean/api_client/models/personmetadata.py +++ b/src/glean/api_client/models/personmetadata.py @@ -11,9 +11,10 @@ from .structuredlocation import StructuredLocation, StructuredLocationTypedDict from datetime import date, datetime from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Dict, List, Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -24,7 +25,7 @@ from .querysuggestionlist import QuerySuggestionList, QuerySuggestionListTypedDict -class PersonMetadataType(str, Enum): +class PersonMetadataType(str, Enum, metaclass=utils.OpenEnumMeta): # The person is a current full-time employee of the company. FULL_TIME = "FULL_TIME" # The person is a current contractor of the company. @@ -47,6 +48,8 @@ class PersonMetadataTypedDict(TypedDict): r"""Typically the highest level organizational unit; generally applies to bigger companies with multiple distinct businesses.""" department: NotRequired[str] r"""An organizational unit where everyone has a similar task, e.g. `Engineering`.""" + job_function: NotRequired[str] + r"""Normalized job-function category assigned by Entity Builder from the source department and, when available, job title. Unlike `department`, which preserves the company-specific organizational unit, this field groups departments into configured categories such as `Engineering`, `Sales`, or `IT`; it may be `Unknown` when the mapping is inconclusive.""" teams: NotRequired[List[PersonTeamTypedDict]] r"""Info about the employee's team(s).""" department_count: NotRequired[int] @@ -144,6 +147,9 @@ class PersonMetadata(BaseModel): department: Optional[str] = None r"""An organizational unit where everyone has a similar task, e.g. `Engineering`.""" + job_function: Annotated[Optional[str], pydantic.Field(alias="jobFunction")] = None + r"""Normalized job-function category assigned by Entity Builder from the source department and, when available, job title. Unlike `department`, which preserves the company-specific organizational unit, this field groups departments into configured categories such as `Engineering`, `Sales`, or `IT`; it may be `Unknown` when the mapping is inconclusive.""" + teams: Optional[List[PersonTeam]] = None r"""Info about the employee's team(s).""" @@ -300,6 +306,15 @@ class PersonMetadata(BaseModel): is_org_root: Annotated[Optional[bool], pydantic.Field(alias="isOrgRoot")] = None r"""Whether this person is a \"root\" node in their organization's hierarchy.""" + @field_serializer("type") + def serialize_type(self, value): + if isinstance(value, str): + try: + return models.PersonMetadataType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -310,6 +325,7 @@ def serialize_model(self, handler): "title", "businessUnit", "department", + "jobFunction", "teams", "departmentCount", "email", @@ -356,10 +372,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + PersonMetadata.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/personobject.py b/src/glean/api_client/models/personobject.py index af5a7318..ab476930 100644 --- a/src/glean/api_client/models/personobject.py +++ b/src/glean/api_client/models/personobject.py @@ -19,3 +19,9 @@ class PersonObject(BaseModel): obfuscated_id: Annotated[str, pydantic.Field(alias="obfuscatedId")] r"""An opaque identifier that can be used to request metadata for a Person.""" + + +try: + PersonObject.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/personteam.py b/src/glean/api_client/models/personteam.py index 424b77bc..f0b080d9 100644 --- a/src/glean/api_client/models/personteam.py +++ b/src/glean/api_client/models/personteam.py @@ -3,14 +3,15 @@ from __future__ import annotations from datetime import datetime from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict -class PersonTeamRelationship(str, Enum): +class PersonTeamRelationship(str, Enum, metaclass=utils.OpenEnumMeta): r"""The team member's relationship to the team. This defaults to MEMBER if not set.""" MEMBER = "MEMBER" @@ -53,6 +54,15 @@ class PersonTeam(BaseModel): join_date: Annotated[Optional[datetime], pydantic.Field(alias="joinDate")] = None r"""The team member's start date""" + @field_serializer("relationship") + def serialize_relationship(self, value): + if isinstance(value, str): + try: + return models.PersonTeamRelationship(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -63,10 +73,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + PersonTeam.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/persontoteamrelationship.py b/src/glean/api_client/models/persontoteamrelationship.py index 80b2e76c..e2f30552 100644 --- a/src/glean/api_client/models/persontoteamrelationship.py +++ b/src/glean/api_client/models/persontoteamrelationship.py @@ -3,9 +3,10 @@ from __future__ import annotations from datetime import datetime from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -13,7 +14,7 @@ from .person import Person, PersonTypedDict -class PersonToTeamRelationshipRelationship(str, Enum): +class PersonToTeamRelationshipRelationship(str, Enum, metaclass=utils.OpenEnumMeta): r"""The team member's relationship to the team. This defaults to MEMBER if not set.""" MEMBER = "MEMBER" @@ -53,6 +54,15 @@ class PersonToTeamRelationship(BaseModel): join_date: Annotated[Optional[datetime], pydantic.Field(alias="joinDate")] = None r"""The team member's start date""" + @field_serializer("relationship") + def serialize_relationship(self, value): + if isinstance(value, str): + try: + return models.PersonToTeamRelationshipRelationship(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["relationship", "customRelationshipStr", "joinDate"]) @@ -61,10 +71,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + PersonToTeamRelationship.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/peruserassistantinsight.py b/src/glean/api_client/models/peruserassistantinsight.py index db382a33..a24e6f5d 100644 --- a/src/glean/api_client/models/peruserassistantinsight.py +++ b/src/glean/api_client/models/peruserassistantinsight.py @@ -68,10 +68,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + PerUserAssistantInsight.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/peruserinsight.py b/src/glean/api_client/models/peruserinsight.py index dd799c08..37af149f 100644 --- a/src/glean/api_client/models/peruserinsight.py +++ b/src/glean/api_client/models/peruserinsight.py @@ -27,6 +27,8 @@ class PerUserInsightTypedDict(TypedDict): r"""Total number of AI Answers interacted with by this user over the specified time period.""" num_agent_runs: NotRequired[int] r"""Total number of agent runs for this user over the specified time period.""" + num_mcp_calls: NotRequired[int] + r"""Total number of MCP calls for this user over the specified time period.""" class PerUserInsight(BaseModel): @@ -68,6 +70,9 @@ class PerUserInsight(BaseModel): ) r"""Total number of agent runs for this user over the specified time period.""" + num_mcp_calls: Annotated[Optional[int], pydantic.Field(alias="numMcpCalls")] = None + r"""Total number of MCP calls for this user over the specified time period.""" + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -81,6 +86,7 @@ def serialize_model(self, handler): "numSummarizations", "numAiAnswers", "numAgentRuns", + "numMcpCalls", ] ) serialized = handler(self) @@ -88,10 +94,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + PerUserInsight.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/pindocument.py b/src/glean/api_client/models/pindocument.py index c7d9416a..7373e05b 100644 --- a/src/glean/api_client/models/pindocument.py +++ b/src/glean/api_client/models/pindocument.py @@ -2,6 +2,7 @@ from __future__ import annotations from .facetfilter import FacetFilter, FacetFilterTypedDict +from .favoriteinfo import FavoriteInfo, FavoriteInfoTypedDict from datetime import datetime from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic @@ -26,6 +27,7 @@ class PinDocumentTypedDict(TypedDict): updated_by: NotRequired["PersonTypedDict"] create_time: NotRequired[datetime] update_time: NotRequired[datetime] + favorite_info: NotRequired[FavoriteInfoTypedDict] class PinDocument(BaseModel): @@ -55,6 +57,10 @@ class PinDocument(BaseModel): None ) + favorite_info: Annotated[ + Optional[FavoriteInfo], pydantic.Field(alias="favoriteInfo") + ] = None + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -66,6 +72,7 @@ def serialize_model(self, handler): "updatedBy", "createTime", "updateTime", + "favoriteInfo", ] ) serialized = handler(self) @@ -73,10 +80,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + PinDocument.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/pinop.py b/src/glean/api_client/models/pinop.py new file mode 100644 index 00000000..fb63cdf7 --- /dev/null +++ b/src/glean/api_client/models/pinop.py @@ -0,0 +1,46 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .pinrequest import PinRequest, PinRequestTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class PinRequestRequestTypedDict(TypedDict): + pin_request: PinRequestTypedDict + r"""Details about the document and query for the pin.""" + locale: NotRequired[str] + r"""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`.""" + + +class PinRequestRequest(BaseModel): + pin_request: Annotated[ + PinRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""Details about the document and query for the pin.""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""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`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/pinrequest.py b/src/glean/api_client/models/pinrequest.py index 9222f826..1e291af2 100644 --- a/src/glean/api_client/models/pinrequest.py +++ b/src/glean/api_client/models/pinrequest.py @@ -38,10 +38,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + PinRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/platform_agents_create_runop.py b/src/glean/api_client/models/platform_agents_create_runop.py new file mode 100644 index 00000000..e99e8d10 --- /dev/null +++ b/src/glean/api_client/models/platform_agents_create_runop.py @@ -0,0 +1,44 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformagentruncreaterequest import ( + PlatformAgentRunCreateRequest, + PlatformAgentRunCreateRequestTypedDict, +) +from .platformagentrunwaitresponse import ( + PlatformAgentRunWaitResponse, + PlatformAgentRunWaitResponseTypedDict, +) +from glean.api_client.types import BaseModel +from glean.api_client.utils import FieldMetadata, PathParamMetadata, RequestMetadata +from typing import Union +from typing_extensions import Annotated, TypeAliasType, TypedDict + + +class PlatformAgentsCreateRunRequestTypedDict(TypedDict): + agent_id: str + r"""ID of the agent to run.""" + platform_agent_run_create_request: PlatformAgentRunCreateRequestTypedDict + + +class PlatformAgentsCreateRunRequest(BaseModel): + agent_id: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""ID of the agent to run.""" + + platform_agent_run_create_request: Annotated[ + PlatformAgentRunCreateRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + + +PlatformAgentsCreateRunResponseTypedDict = TypeAliasType( + "PlatformAgentsCreateRunResponseTypedDict", + Union[PlatformAgentRunWaitResponseTypedDict, str], +) + + +PlatformAgentsCreateRunResponse = TypeAliasType( + "PlatformAgentsCreateRunResponse", Union[PlatformAgentRunWaitResponse, str] +) diff --git a/src/glean/api_client/models/platform_agents_get_schemasop.py b/src/glean/api_client/models/platform_agents_get_schemasop.py new file mode 100644 index 00000000..dbe9a036 --- /dev/null +++ b/src/glean/api_client/models/platform_agents_get_schemasop.py @@ -0,0 +1,44 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, PathParamMetadata, QueryParamMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class PlatformAgentsGetSchemasRequestTypedDict(TypedDict): + agent_id: str + r"""ID of the agent whose schemas should be retrieved.""" + include_tools: NotRequired[bool] + r"""Whether to include tool metadata in the response.""" + + +class PlatformAgentsGetSchemasRequest(BaseModel): + agent_id: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""ID of the agent whose schemas should be retrieved.""" + + include_tools: Annotated[ + Optional[bool], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = False + r"""Whether to include tool metadata in the response.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["include_tools"]) + 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/platform_agents_getop.py b/src/glean/api_client/models/platform_agents_getop.py new file mode 100644 index 00000000..880c65c1 --- /dev/null +++ b/src/glean/api_client/models/platform_agents_getop.py @@ -0,0 +1,18 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel +from glean.api_client.utils import FieldMetadata, PathParamMetadata +from typing_extensions import Annotated, TypedDict + + +class PlatformAgentsGetRequestTypedDict(TypedDict): + agent_id: str + r"""ID of the agent to retrieve.""" + + +class PlatformAgentsGetRequest(BaseModel): + agent_id: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""ID of the agent to retrieve.""" diff --git a/src/glean/api_client/models/platform_chat_createop.py b/src/glean/api_client/models/platform_chat_createop.py new file mode 100644 index 00000000..03ee7209 --- /dev/null +++ b/src/glean/api_client/models/platform_chat_createop.py @@ -0,0 +1,20 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformchatcompletedresponse import ( + PlatformChatCompletedResponse, + PlatformChatCompletedResponseTypedDict, +) +from typing import Union +from typing_extensions import TypeAliasType + + +PlatformChatCreateResponseTypedDict = TypeAliasType( + "PlatformChatCreateResponseTypedDict", + Union[PlatformChatCompletedResponseTypedDict, str], +) + + +PlatformChatCreateResponse = TypeAliasType( + "PlatformChatCreateResponse", Union[PlatformChatCompletedResponse, str] +) diff --git a/src/glean/api_client/models/platform_search_filtersop.py b/src/glean/api_client/models/platform_search_filtersop.py new file mode 100644 index 00000000..2120898e --- /dev/null +++ b/src/glean/api_client/models/platform_search_filtersop.py @@ -0,0 +1,68 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformsearchfiltersresponse import ( + PlatformSearchFiltersResponse, + PlatformSearchFiltersResponseTypedDict, +) +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata +from pydantic import model_serializer +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class PlatformSearchFiltersRequestTypedDict(TypedDict): + datasources: NotRequired[List[str]] + r"""Restrict metadata to one or more datasource identifiers as returned by this endpoint (for example, `jira`). With a nonblank `query`, exactly one datasource is required. Unknown or inaccessible identifiers return `invalid_datasource`. + + """ + query: NotRequired[str] + r"""Optional search query that requests suggested filter values for the selected datasource. Must be nonblank when present. Triggers a search for facet values only; does not return documents. + + """ + + +class PlatformSearchFiltersRequest(BaseModel): + datasources: Annotated[ + Optional[List[str]], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Restrict metadata to one or more datasource identifiers as returned by this endpoint (for example, `jira`). With a nonblank `query`, exactly one datasource is required. Unknown or inaccessible identifiers return `invalid_datasource`. + + """ + + query: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Optional search query that requests suggested filter values for the selected datasource. Must be nonblank when present. Triggers a search for facet values only; does not return documents. + + """ + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["datasources", "query"]) + 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 + + +class PlatformSearchFiltersResponseResponseTypedDict(TypedDict): + headers: Dict[str, List[str]] + result: PlatformSearchFiltersResponseTypedDict + + +class PlatformSearchFiltersResponseResponse(BaseModel): + headers: Dict[str, List[str]] + + result: PlatformSearchFiltersResponse diff --git a/src/glean/api_client/models/platform_skills_create_versionop.py b/src/glean/api_client/models/platform_skills_create_versionop.py new file mode 100644 index 00000000..456c48f4 --- /dev/null +++ b/src/glean/api_client/models/platform_skills_create_versionop.py @@ -0,0 +1,28 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformskillversioncreaterequest import ( + PlatformSkillVersionCreateRequest, + PlatformSkillVersionCreateRequestTypedDict, +) +from glean.api_client.types import BaseModel +from glean.api_client.utils import FieldMetadata, PathParamMetadata, RequestMetadata +from typing_extensions import Annotated, TypedDict + + +class PlatformSkillsCreateVersionRequestTypedDict(TypedDict): + skill_id: str + r"""Glean skill ID.""" + platform_skill_version_create_request: PlatformSkillVersionCreateRequestTypedDict + + +class PlatformSkillsCreateVersionRequest(BaseModel): + skill_id: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""Glean skill ID.""" + + platform_skill_version_create_request: Annotated[ + PlatformSkillVersionCreateRequest, + FieldMetadata(request=RequestMetadata(media_type="multipart/form-data")), + ] diff --git a/src/glean/api_client/models/platform_skills_deleteop.py b/src/glean/api_client/models/platform_skills_deleteop.py new file mode 100644 index 00000000..de20ef64 --- /dev/null +++ b/src/glean/api_client/models/platform_skills_deleteop.py @@ -0,0 +1,18 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel +from glean.api_client.utils import FieldMetadata, PathParamMetadata +from typing_extensions import Annotated, TypedDict + + +class PlatformSkillsDeleteRequestTypedDict(TypedDict): + skill_id: str + r"""Glean skill ID.""" + + +class PlatformSkillsDeleteRequest(BaseModel): + skill_id: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""Glean skill ID.""" diff --git a/src/glean/api_client/models/platform_skills_get_contentop.py b/src/glean/api_client/models/platform_skills_get_contentop.py new file mode 100644 index 00000000..0ab5f56c --- /dev/null +++ b/src/glean/api_client/models/platform_skills_get_contentop.py @@ -0,0 +1,31 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel +from glean.api_client.utils import FieldMetadata, PathParamMetadata +import httpx +from typing import Dict, List +from typing_extensions import Annotated, TypedDict + + +class PlatformSkillsGetContentRequestTypedDict(TypedDict): + skill_id: str + r"""Glean skill ID.""" + + +class PlatformSkillsGetContentRequest(BaseModel): + skill_id: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""Glean skill ID.""" + + +class PlatformSkillsGetContentResponseTypedDict(TypedDict): + headers: Dict[str, List[str]] + result: httpx.Response + + +class PlatformSkillsGetContentResponse(BaseModel): + headers: Dict[str, List[str]] + + result: httpx.Response diff --git a/src/glean/api_client/models/platform_skills_get_version_contentop.py b/src/glean/api_client/models/platform_skills_get_version_contentop.py new file mode 100644 index 00000000..b572c850 --- /dev/null +++ b/src/glean/api_client/models/platform_skills_get_version_contentop.py @@ -0,0 +1,38 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel +from glean.api_client.utils import FieldMetadata, PathParamMetadata +import httpx +from typing import Dict, List +from typing_extensions import Annotated, TypedDict + + +class PlatformSkillsGetVersionContentRequestTypedDict(TypedDict): + skill_id: str + r"""Glean skill ID.""" + version: int + r"""Major version number.""" + + +class PlatformSkillsGetVersionContentRequest(BaseModel): + skill_id: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""Glean skill ID.""" + + version: Annotated[ + int, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""Major version number.""" + + +class PlatformSkillsGetVersionContentResponseTypedDict(TypedDict): + headers: Dict[str, List[str]] + result: httpx.Response + + +class PlatformSkillsGetVersionContentResponse(BaseModel): + headers: Dict[str, List[str]] + + result: httpx.Response diff --git a/src/glean/api_client/models/platform_skills_get_versionop.py b/src/glean/api_client/models/platform_skills_get_versionop.py new file mode 100644 index 00000000..44312a98 --- /dev/null +++ b/src/glean/api_client/models/platform_skills_get_versionop.py @@ -0,0 +1,25 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel +from glean.api_client.utils import FieldMetadata, PathParamMetadata +from typing_extensions import Annotated, TypedDict + + +class PlatformSkillsGetVersionRequestTypedDict(TypedDict): + skill_id: str + r"""Glean skill ID.""" + version: int + r"""Major version number.""" + + +class PlatformSkillsGetVersionRequest(BaseModel): + skill_id: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""Glean skill ID.""" + + version: Annotated[ + int, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""Major version number.""" diff --git a/src/glean/api_client/models/platform_skills_getop.py b/src/glean/api_client/models/platform_skills_getop.py new file mode 100644 index 00000000..fc64256b --- /dev/null +++ b/src/glean/api_client/models/platform_skills_getop.py @@ -0,0 +1,18 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel +from glean.api_client.utils import FieldMetadata, PathParamMetadata +from typing_extensions import Annotated, TypedDict + + +class PlatformSkillsGetRequestTypedDict(TypedDict): + skill_id: str + r"""Glean skill ID.""" + + +class PlatformSkillsGetRequest(BaseModel): + skill_id: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""Glean skill ID.""" diff --git a/src/glean/api_client/models/platform_skills_list_versionsop.py b/src/glean/api_client/models/platform_skills_list_versionsop.py new file mode 100644 index 00000000..145d396d --- /dev/null +++ b/src/glean/api_client/models/platform_skills_list_versionsop.py @@ -0,0 +1,52 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, PathParamMetadata, QueryParamMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class PlatformSkillsListVersionsRequestTypedDict(TypedDict): + skill_id: str + r"""Glean skill ID.""" + page_size: NotRequired[int] + r"""Maximum number of versions to return.""" + cursor: NotRequired[str] + r"""Opaque pagination cursor from a previous response.""" + + +class PlatformSkillsListVersionsRequest(BaseModel): + skill_id: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""Glean skill ID.""" + + page_size: Annotated[ + Optional[int], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Maximum number of versions to return.""" + + cursor: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Opaque pagination cursor from a previous response.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["page_size", "cursor"]) + 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/platform_skills_listop.py b/src/glean/api_client/models/platform_skills_listop.py new file mode 100644 index 00000000..3f774193 --- /dev/null +++ b/src/glean/api_client/models/platform_skills_listop.py @@ -0,0 +1,45 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class PlatformSkillsListRequestTypedDict(TypedDict): + page_size: NotRequired[int] + r"""Maximum number of skills to return.""" + cursor: NotRequired[str] + r"""Opaque pagination cursor from a previous response.""" + + +class PlatformSkillsListRequest(BaseModel): + page_size: Annotated[ + Optional[int], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Maximum number of skills to return.""" + + cursor: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Opaque pagination cursor from a previous response.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["page_size", "cursor"]) + 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/platform_skills_preview_sourceop.py b/src/glean/api_client/models/platform_skills_preview_sourceop.py new file mode 100644 index 00000000..30dcdd72 --- /dev/null +++ b/src/glean/api_client/models/platform_skills_preview_sourceop.py @@ -0,0 +1,21 @@ +"""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 + + +PlatformSkillsPreviewSourceResponseTypedDict = TypeAliasType( + "PlatformSkillsPreviewSourceResponseTypedDict", + Union[PlatformSkillSourcePreviewResponseTypedDict, str], +) + + +PlatformSkillsPreviewSourceResponse = TypeAliasType( + "PlatformSkillsPreviewSourceResponse", + Union[PlatformSkillSourcePreviewResponse, str], +) diff --git a/src/glean/api_client/models/platform_skills_syncop.py b/src/glean/api_client/models/platform_skills_syncop.py new file mode 100644 index 00000000..9bb229b4 --- /dev/null +++ b/src/glean/api_client/models/platform_skills_syncop.py @@ -0,0 +1,18 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel +from glean.api_client.utils import FieldMetadata, PathParamMetadata +from typing_extensions import Annotated, TypedDict + + +class PlatformSkillsSyncRequestTypedDict(TypedDict): + skill_id: str + r"""ID of the GitHub-imported skill to sync.""" + + +class PlatformSkillsSyncRequest(BaseModel): + skill_id: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""ID of the GitHub-imported skill to sync.""" diff --git a/src/glean/api_client/models/platform_skills_updateop.py b/src/glean/api_client/models/platform_skills_updateop.py new file mode 100644 index 00000000..42e0aca1 --- /dev/null +++ b/src/glean/api_client/models/platform_skills_updateop.py @@ -0,0 +1,28 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformskillupdaterequest import ( + PlatformSkillUpdateRequest, + PlatformSkillUpdateRequestTypedDict, +) +from glean.api_client.types import BaseModel +from glean.api_client.utils import FieldMetadata, PathParamMetadata, RequestMetadata +from typing_extensions import Annotated, TypedDict + + +class PlatformSkillsUpdateRequestTypedDict(TypedDict): + skill_id: str + r"""Glean skill ID.""" + platform_skill_update_request: PlatformSkillUpdateRequestTypedDict + + +class PlatformSkillsUpdateRequest(BaseModel): + skill_id: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""Glean skill ID.""" + + platform_skill_update_request: Annotated[ + PlatformSkillUpdateRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] diff --git a/src/glean/api_client/models/platform_trigger_presets_events_searchop.py b/src/glean/api_client/models/platform_trigger_presets_events_searchop.py new file mode 100644 index 00000000..79b57ae0 --- /dev/null +++ b/src/glean/api_client/models/platform_trigger_presets_events_searchop.py @@ -0,0 +1,48 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformtriggerpreseteventsearchrequest import ( + PlatformTriggerPresetEventSearchRequest, + PlatformTriggerPresetEventSearchRequestTypedDict, +) +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, PathParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class PlatformTriggerPresetsEventsSearchRequestTypedDict(TypedDict): + preset_id: str + r"""ID of the preset to preview.""" + platform_trigger_preset_event_search_request: NotRequired[ + PlatformTriggerPresetEventSearchRequestTypedDict + ] + + +class PlatformTriggerPresetsEventsSearchRequest(BaseModel): + preset_id: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""ID of the preset to preview.""" + + platform_trigger_preset_event_search_request: Annotated[ + Optional[PlatformTriggerPresetEventSearchRequest], + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["PlatformTriggerPresetEventSearchRequest"]) + 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/platform_trigger_presets_getop.py b/src/glean/api_client/models/platform_trigger_presets_getop.py new file mode 100644 index 00000000..3003dbdf --- /dev/null +++ b/src/glean/api_client/models/platform_trigger_presets_getop.py @@ -0,0 +1,18 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel +from glean.api_client.utils import FieldMetadata, PathParamMetadata +from typing_extensions import Annotated, TypedDict + + +class PlatformTriggerPresetsGetRequestTypedDict(TypedDict): + preset_id: str + r"""ID of the preset to retrieve.""" + + +class PlatformTriggerPresetsGetRequest(BaseModel): + preset_id: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""ID of the preset to retrieve.""" diff --git a/src/glean/api_client/models/platform_trigger_presets_input_values_listop.py b/src/glean/api_client/models/platform_trigger_presets_input_values_listop.py new file mode 100644 index 00000000..6579af39 --- /dev/null +++ b/src/glean/api_client/models/platform_trigger_presets_input_values_listop.py @@ -0,0 +1,55 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, PathParamMetadata, QueryParamMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class PlatformTriggerPresetsInputValuesListRequestTypedDict(TypedDict): + preset_id: str + r"""ID of the preset the input belongs to.""" + field: str + r"""Field identifier of the input whose values to list.""" + query: NotRequired[str] + r"""Prefix filter over the input's option values, for typeahead. Matching is on the option value, not its display name. + + """ + + +class PlatformTriggerPresetsInputValuesListRequest(BaseModel): + preset_id: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""ID of the preset the input belongs to.""" + + field: Annotated[ + str, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) + ] + r"""Field identifier of the input whose values to list.""" + + query: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Prefix filter over the input's option values, for typeahead. Matching is on the option value, not its display name. + + """ + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["query"]) + 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/platform_trigger_presets_listop.py b/src/glean/api_client/models/platform_trigger_presets_listop.py new file mode 100644 index 00000000..5b040fdc --- /dev/null +++ b/src/glean/api_client/models/platform_trigger_presets_listop.py @@ -0,0 +1,53 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class PlatformTriggerPresetsListRequestTypedDict(TypedDict): + datasource: NotRequired[str] + r"""Restrict results to presets for a single datasource (e.g. github).""" + page_size: NotRequired[int] + r"""Maximum number of presets to return.""" + cursor: NotRequired[str] + r"""Opaque pagination cursor from a previous response.""" + + +class PlatformTriggerPresetsListRequest(BaseModel): + datasource: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Restrict results to presets for a single datasource (e.g. github).""" + + page_size: Annotated[ + Optional[int], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = 50 + r"""Maximum number of presets to return.""" + + cursor: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Opaque pagination cursor from a previous response.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["datasource", "page_size", "cursor"]) + 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/platform_triggers_createop.py b/src/glean/api_client/models/platform_triggers_createop.py new file mode 100644 index 00000000..bcea934c --- /dev/null +++ b/src/glean/api_client/models/platform_triggers_createop.py @@ -0,0 +1,77 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformtriggerwebhookevent import ( + PlatformTriggerWebhookEvent, + PlatformTriggerWebhookEventTypedDict, +) +from glean.api_client.types import BaseModel +from glean.api_client.utils import FieldMetadata, HeaderMetadata, RequestMetadata +import pydantic +from typing_extensions import Annotated, TypedDict + + +class PlatformTriggersCreateTriggerWebhookEventRequestTypedDict(TypedDict): + webhook_id: str + r"""Opaque delivery ID. It remains stable across retries of the same event and can be used as an idempotency key.""" + webhook_timestamp: int + r"""Unix time in seconds when this delivery attempt was signed.""" + webhook_signature: str + r"""`v1,` followed by the standard Base64-encoded HMAC-SHA256 digest. To verify it, remove the + `whsec_` prefix from `signing_secret`, standard-Base64-decode the remainder, and use those + bytes as the HMAC key. Sign the UTF-8 bytes of `webhook-id + \".\" + webhook-timestamp + \".\" + + raw request body`. Verify the signature against the unmodified request body before + parsing JSON, and use a constant-time comparison. + + Fixed test vector (the raw body is one line with no trailing newline): + + - decoded signing key bytes (UTF-8; test only): `test_webhook_signing_secret_1234` + - `webhook-id`: `81e6dc877ac553ef96ecbc939c1e46431159491991ba55cd131fbd0e3746c6bc` + - `webhook-timestamp`: `1700000000` + - `raw request body`: `{\"version\":\"1\",\"trigger_id\":\"trigger_test_123\",\"datasource\":\"GITHUB\",\"reason\":\"REVIEW_REQUESTED\",\"doc_type\":\"pull\",\"event_type\":\"DOCUMENT_CHANGE\",\"doc_id\":\"GITHUB_pull_123\",\"view_url\":\"https://github.com/acme/payments-api/pull/123\",\"title\":\"Add retry backoff to the crawler\",\"event_time\":\"2025-04-23T11:00:00Z\"}` + - `webhook-signature`: `v1,JqvHW0dwAOSLndiwQdXLUS/P+2RvOO8x4sOWgA/w0Gs=` + + """ + platform_trigger_webhook_event: PlatformTriggerWebhookEventTypedDict + + +class PlatformTriggersCreateTriggerWebhookEventRequest(BaseModel): + webhook_id: Annotated[ + str, + pydantic.Field(alias="webhook-id"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] + r"""Opaque delivery ID. It remains stable across retries of the same event and can be used as an idempotency key.""" + + webhook_timestamp: Annotated[ + int, + pydantic.Field(alias="webhook-timestamp"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] + r"""Unix time in seconds when this delivery attempt was signed.""" + + webhook_signature: Annotated[ + str, + pydantic.Field(alias="webhook-signature"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] + r"""`v1,` followed by the standard Base64-encoded HMAC-SHA256 digest. To verify it, remove the + `whsec_` prefix from `signing_secret`, standard-Base64-decode the remainder, and use those + bytes as the HMAC key. Sign the UTF-8 bytes of `webhook-id + \".\" + webhook-timestamp + \".\" + + raw request body`. Verify the signature against the unmodified request body before + parsing JSON, and use a constant-time comparison. + + Fixed test vector (the raw body is one line with no trailing newline): + + - decoded signing key bytes (UTF-8; test only): `test_webhook_signing_secret_1234` + - `webhook-id`: `81e6dc877ac553ef96ecbc939c1e46431159491991ba55cd131fbd0e3746c6bc` + - `webhook-timestamp`: `1700000000` + - `raw request body`: `{\"version\":\"1\",\"trigger_id\":\"trigger_test_123\",\"datasource\":\"GITHUB\",\"reason\":\"REVIEW_REQUESTED\",\"doc_type\":\"pull\",\"event_type\":\"DOCUMENT_CHANGE\",\"doc_id\":\"GITHUB_pull_123\",\"view_url\":\"https://github.com/acme/payments-api/pull/123\",\"title\":\"Add retry backoff to the crawler\",\"event_time\":\"2025-04-23T11:00:00Z\"}` + - `webhook-signature`: `v1,JqvHW0dwAOSLndiwQdXLUS/P+2RvOO8x4sOWgA/w0Gs=` + + """ + + platform_trigger_webhook_event: Annotated[ + PlatformTriggerWebhookEvent, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] diff --git a/src/glean/api_client/models/platform_triggers_deleteop.py b/src/glean/api_client/models/platform_triggers_deleteop.py new file mode 100644 index 00000000..e3caabe5 --- /dev/null +++ b/src/glean/api_client/models/platform_triggers_deleteop.py @@ -0,0 +1,18 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel +from glean.api_client.utils import FieldMetadata, PathParamMetadata +from typing_extensions import Annotated, TypedDict + + +class PlatformTriggersDeleteRequestTypedDict(TypedDict): + trigger_id: str + r"""ID of the trigger to delete.""" + + +class PlatformTriggersDeleteRequest(BaseModel): + trigger_id: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""ID of the trigger to delete.""" diff --git a/src/glean/api_client/models/platform_triggers_events_searchop.py b/src/glean/api_client/models/platform_triggers_events_searchop.py new file mode 100644 index 00000000..6ac07ec2 --- /dev/null +++ b/src/glean/api_client/models/platform_triggers_events_searchop.py @@ -0,0 +1,48 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformtriggereventsearchrequest import ( + PlatformTriggerEventSearchRequest, + PlatformTriggerEventSearchRequestTypedDict, +) +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, PathParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class PlatformTriggersEventsSearchRequestTypedDict(TypedDict): + trigger_id: str + r"""ID of the trigger whose events to search.""" + platform_trigger_event_search_request: NotRequired[ + PlatformTriggerEventSearchRequestTypedDict + ] + + +class PlatformTriggersEventsSearchRequest(BaseModel): + trigger_id: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""ID of the trigger whose events to search.""" + + platform_trigger_event_search_request: Annotated[ + Optional[PlatformTriggerEventSearchRequest], + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["PlatformTriggerEventSearchRequest"]) + 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/platform_triggers_getop.py b/src/glean/api_client/models/platform_triggers_getop.py new file mode 100644 index 00000000..892ee994 --- /dev/null +++ b/src/glean/api_client/models/platform_triggers_getop.py @@ -0,0 +1,18 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel +from glean.api_client.utils import FieldMetadata, PathParamMetadata +from typing_extensions import Annotated, TypedDict + + +class PlatformTriggersGetRequestTypedDict(TypedDict): + trigger_id: str + r"""ID of the trigger to retrieve.""" + + +class PlatformTriggersGetRequest(BaseModel): + trigger_id: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""ID of the trigger to retrieve.""" diff --git a/src/glean/api_client/models/platform_triggers_listop.py b/src/glean/api_client/models/platform_triggers_listop.py new file mode 100644 index 00000000..4eb3df40 --- /dev/null +++ b/src/glean/api_client/models/platform_triggers_listop.py @@ -0,0 +1,45 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class PlatformTriggersListRequestTypedDict(TypedDict): + page_size: NotRequired[int] + r"""Maximum number of triggers to return.""" + cursor: NotRequired[str] + r"""Opaque pagination cursor from a previous response.""" + + +class PlatformTriggersListRequest(BaseModel): + page_size: Annotated[ + Optional[int], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = 50 + r"""Maximum number of triggers to return.""" + + cursor: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Opaque pagination cursor from a previous response.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["page_size", "cursor"]) + 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/platform_triggers_updateop.py b/src/glean/api_client/models/platform_triggers_updateop.py new file mode 100644 index 00000000..c57697e4 --- /dev/null +++ b/src/glean/api_client/models/platform_triggers_updateop.py @@ -0,0 +1,28 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformtriggerupdaterequest import ( + PlatformTriggerUpdateRequest, + PlatformTriggerUpdateRequestTypedDict, +) +from glean.api_client.types import BaseModel +from glean.api_client.utils import FieldMetadata, PathParamMetadata, RequestMetadata +from typing_extensions import Annotated, TypedDict + + +class PlatformTriggersUpdateRequestTypedDict(TypedDict): + trigger_id: str + r"""ID of the trigger to update.""" + platform_trigger_update_request: PlatformTriggerUpdateRequestTypedDict + + +class PlatformTriggersUpdateRequest(BaseModel): + trigger_id: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""ID of the trigger to update.""" + + platform_trigger_update_request: Annotated[ + PlatformTriggerUpdateRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] diff --git a/src/glean/api_client/models/platformactionsummary.py b/src/glean/api_client/models/platformactionsummary.py new file mode 100644 index 00000000..66c767a0 --- /dev/null +++ b/src/glean/api_client/models/platformactionsummary.py @@ -0,0 +1,71 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer +from typing import Optional +from typing_extensions import NotRequired, TypedDict + + +class PlatformActionSummaryTypedDict(TypedDict): + tool_id: str + r"""Unique identifier of the action.""" + display_name: str + r"""Display name of the action.""" + type: NotRequired[str] + r"""Tool type.""" + auth_type: NotRequired[str] + r"""Authentication type required by the action.""" + write_action_type: NotRequired[str] + r"""Write-action execution type.""" + is_setup_finished: NotRequired[bool] + r"""Whether this action has been fully configured.""" + data_source: NotRequired[str] + r"""Kind of knowledge the action accesses or modifies.""" + + +class PlatformActionSummary(BaseModel): + tool_id: str + r"""Unique identifier of the action.""" + + display_name: str + r"""Display name of the action.""" + + type: Optional[str] = None + r"""Tool type.""" + + auth_type: Optional[str] = None + r"""Authentication type required by the action.""" + + write_action_type: Optional[str] = None + r"""Write-action execution type.""" + + is_setup_finished: Optional[bool] = None + r"""Whether this action has been fully configured.""" + + data_source: Optional[str] = None + r"""Kind of knowledge the action accesses or modifies.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "type", + "auth_type", + "write_action_type", + "is_setup_finished", + "data_source", + ] + ) + 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/platformagent.py b/src/glean/api_client/models/platformagent.py new file mode 100644 index 00000000..84a399b6 --- /dev/null +++ b/src/glean/api_client/models/platformagent.py @@ -0,0 +1,55 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformagentcapabilities import ( + PlatformAgentCapabilities, + PlatformAgentCapabilitiesTypedDict, +) +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer +from typing import Any, Dict, Optional +from typing_extensions import NotRequired, TypedDict + + +class PlatformAgentTypedDict(TypedDict): + agent_id: str + r"""ID of the agent.""" + name: str + r"""Name of the agent.""" + capabilities: PlatformAgentCapabilitiesTypedDict + description: NotRequired[str] + r"""Description of the agent.""" + metadata: NotRequired[Dict[str, Any]] + r"""Agent metadata.""" + + +class PlatformAgent(BaseModel): + agent_id: str + r"""ID of the agent.""" + + name: str + r"""Name of the agent.""" + + capabilities: PlatformAgentCapabilities + + description: Optional[str] = None + r"""Description of the agent.""" + + metadata: Optional[Dict[str, Any]] = None + r"""Agent metadata.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["description", "metadata"]) + 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/platformagentcapabilities.py b/src/glean/api_client/models/platformagentcapabilities.py new file mode 100644 index 00000000..099c35b7 --- /dev/null +++ b/src/glean/api_client/models/platformagentcapabilities.py @@ -0,0 +1,65 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel, UNSET_SENTINEL +import pydantic +from pydantic import ConfigDict, model_serializer +from typing import Any, Dict, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class PlatformAgentCapabilitiesTypedDict(TypedDict): + ap_io_messages: NotRequired[bool] + r"""Whether the agent supports messages as input.""" + ap_io_streaming: NotRequired[bool] + r"""Whether the agent supports streaming output.""" + + +class PlatformAgentCapabilities(BaseModel): + model_config = ConfigDict( + populate_by_name=True, arbitrary_types_allowed=True, extra="allow" + ) + __pydantic_extra__: Dict[str, Any] = pydantic.Field(init=False) + + ap_io_messages: Annotated[ + Optional[bool], pydantic.Field(alias="ap.io.messages") + ] = None + r"""Whether the agent supports messages as input.""" + + ap_io_streaming: Annotated[ + Optional[bool], pydantic.Field(alias="ap.io.streaming") + ] = None + r"""Whether the agent supports streaming output.""" + + @property + def additional_properties(self): + return self.__pydantic_extra__ + + @additional_properties.setter + def additional_properties(self, value): + self.__pydantic_extra__ = value # pyright: ignore[reportIncompatibleVariableOverride] + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["ap.io.messages", "ap.io.streaming"]) + 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)) + serialized.pop(k, serialized.pop(n, None)) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + for k, v in serialized.items(): + m[k] = v + + return m + + +try: + PlatformAgentCapabilities.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/platformagentexecutionstatus.py b/src/glean/api_client/models/platformagentexecutionstatus.py new file mode 100644 index 00000000..cab8cafc --- /dev/null +++ b/src/glean/api_client/models/platformagentexecutionstatus.py @@ -0,0 +1,12 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +from glean.api_client import utils + + +class PlatformAgentExecutionStatus(str, Enum, metaclass=utils.OpenEnumMeta): + r"""Status of the agent run.""" + + ERROR = "error" + SUCCESS = "success" diff --git a/src/glean/api_client/models/platformagentgetresponse.py b/src/glean/api_client/models/platformagentgetresponse.py new file mode 100644 index 00000000..dff40930 --- /dev/null +++ b/src/glean/api_client/models/platformagentgetresponse.py @@ -0,0 +1,19 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformagent import PlatformAgent, PlatformAgentTypedDict +from glean.api_client.types import BaseModel +from typing_extensions import TypedDict + + +class PlatformAgentGetResponseTypedDict(TypedDict): + agent: PlatformAgentTypedDict + request_id: str + r"""Platform-generated request ID for support correlation.""" + + +class PlatformAgentGetResponse(BaseModel): + agent: PlatformAgent + + request_id: str + r"""Platform-generated request ID for support correlation.""" diff --git a/src/glean/api_client/models/platformagentrun.py b/src/glean/api_client/models/platformagentrun.py new file mode 100644 index 00000000..26bf4003 --- /dev/null +++ b/src/glean/api_client/models/platformagentrun.py @@ -0,0 +1,65 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformagentexecutionstatus import PlatformAgentExecutionStatus +from .platformmessage import PlatformMessage, PlatformMessageTypedDict +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 Any, Dict, List, Optional +from typing_extensions import NotRequired, TypedDict + + +class PlatformAgentRunTypedDict(TypedDict): + agent_id: str + r"""ID of the agent being run.""" + status: PlatformAgentExecutionStatus + r"""Status of the agent run.""" + input: NotRequired[Dict[str, Any]] + r"""Input fields for an input-form triggered agent.""" + messages: NotRequired[List[PlatformMessageTypedDict]] + r"""Messages passed to the agent.""" + metadata: NotRequired[Dict[str, Any]] + r"""Metadata passed to the agent.""" + + +class PlatformAgentRun(BaseModel): + agent_id: str + r"""ID of the agent being run.""" + + status: PlatformAgentExecutionStatus + r"""Status of the agent run.""" + + input: Optional[Dict[str, Any]] = None + r"""Input fields for an input-form triggered agent.""" + + messages: Optional[List[PlatformMessage]] = None + r"""Messages passed to the agent.""" + + metadata: Optional[Dict[str, Any]] = None + r"""Metadata passed to the agent.""" + + @field_serializer("status") + def serialize_status(self, value): + if isinstance(value, str): + try: + return models.PlatformAgentExecutionStatus(value) + except ValueError: + return value + return value + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["input", "messages", "metadata"]) + 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/platformagentruncreaterequest.py b/src/glean/api_client/models/platformagentruncreaterequest.py new file mode 100644 index 00000000..8d669029 --- /dev/null +++ b/src/glean/api_client/models/platformagentruncreaterequest.py @@ -0,0 +1,57 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformmessage import PlatformMessage, PlatformMessageTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer +from typing import Any, Dict, List, Optional +from typing_extensions import NotRequired, TypedDict + + +class PlatformAgentRunCreateRequestTypedDict(TypedDict): + r"""Request to run an agent. A request MUST supply either `messages` (a non-empty conversation) or `input` (for input-form triggered agents).""" + + input: NotRequired[Dict[str, Any]] + r"""Input fields for an input-form triggered agent.""" + messages: NotRequired[List[PlatformMessageTypedDict]] + r"""Messages to pass to the agent. When provided, the array MUST contain at least one message and each message MUST specify a valid `role` and non-empty `content`. + + """ + metadata: NotRequired[Dict[str, Any]] + r"""Metadata to pass to the agent.""" + stream: NotRequired[bool] + r"""Whether to stream the run response as server-sent events.""" + + +class PlatformAgentRunCreateRequest(BaseModel): + r"""Request to run an agent. A request MUST supply either `messages` (a non-empty conversation) or `input` (for input-form triggered agents).""" + + input: Optional[Dict[str, Any]] = None + r"""Input fields for an input-form triggered agent.""" + + messages: Optional[List[PlatformMessage]] = None + r"""Messages to pass to the agent. When provided, the array MUST contain at least one message and each message MUST specify a valid `role` and non-empty `content`. + + """ + + metadata: Optional[Dict[str, Any]] = None + r"""Metadata to pass to the agent.""" + + stream: Optional[bool] = False + r"""Whether to stream the run response as server-sent events.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["input", "messages", "metadata", "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 diff --git a/src/glean/api_client/models/platformagentrunwaitresponse.py b/src/glean/api_client/models/platformagentrunwaitresponse.py new file mode 100644 index 00000000..f2454eb0 --- /dev/null +++ b/src/glean/api_client/models/platformagentrunwaitresponse.py @@ -0,0 +1,43 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformagentrun import PlatformAgentRun, PlatformAgentRunTypedDict +from .platformmessage import PlatformMessage, PlatformMessageTypedDict +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 PlatformAgentRunWaitResponseTypedDict(TypedDict): + request_id: str + r"""Platform-generated request ID for support correlation.""" + run: NotRequired[PlatformAgentRunTypedDict] + messages: NotRequired[List[PlatformMessageTypedDict]] + r"""Messages returned by the completed run.""" + + +class PlatformAgentRunWaitResponse(BaseModel): + request_id: str + r"""Platform-generated request ID for support correlation.""" + + run: Optional[PlatformAgentRun] = None + + messages: Optional[List[PlatformMessage]] = None + r"""Messages returned by the completed run.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["run", "messages"]) + 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/platformagentschemasresponse.py b/src/glean/api_client/models/platformagentschemasresponse.py new file mode 100644 index 00000000..9bd08605 --- /dev/null +++ b/src/glean/api_client/models/platformagentschemasresponse.py @@ -0,0 +1,59 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformactionsummary import PlatformActionSummary, PlatformActionSummaryTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer +from typing import Any, Dict, List, Optional +from typing_extensions import NotRequired, TypedDict + + +class PlatformAgentSchemasResponseTypedDict(TypedDict): + agent_id: str + r"""ID of the agent.""" + input_schema: Dict[str, Any] + r"""Agent input schema in JSON Schema format.""" + output_schema: Dict[str, Any] + r"""Agent output schema in JSON Schema format.""" + request_id: str + r"""Platform-generated request ID for support correlation.""" + name: NotRequired[str] + r"""Name of the agent.""" + tools: NotRequired[List[PlatformActionSummaryTypedDict]] + r"""Tools that the agent can invoke, when requested.""" + + +class PlatformAgentSchemasResponse(BaseModel): + agent_id: str + r"""ID of the agent.""" + + input_schema: Dict[str, Any] + r"""Agent input schema in JSON Schema format.""" + + output_schema: Dict[str, Any] + r"""Agent output schema in JSON Schema format.""" + + request_id: str + r"""Platform-generated request ID for support correlation.""" + + name: Optional[str] = None + r"""Name of the agent.""" + + tools: Optional[List[PlatformActionSummary]] = None + r"""Tools that the agent can invoke, when requested.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["name", "tools"]) + 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/platformagentssearchrequest.py b/src/glean/api_client/models/platformagentssearchrequest.py new file mode 100644 index 00000000..0ddc45d2 --- /dev/null +++ b/src/glean/api_client/models/platformagentssearchrequest.py @@ -0,0 +1,33 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer +from typing import Optional +from typing_extensions import NotRequired, TypedDict + + +class PlatformAgentsSearchRequestTypedDict(TypedDict): + name: NotRequired[str] + r"""Case-insensitive substring to match against agent names. If omitted or empty, no name filter is applied.""" + + +class PlatformAgentsSearchRequest(BaseModel): + name: Optional[str] = None + r"""Case-insensitive substring to match against agent names. If omitted or empty, no name filter is applied.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["name"]) + 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/platformagentssearchresponse.py b/src/glean/api_client/models/platformagentssearchresponse.py new file mode 100644 index 00000000..c9f820b8 --- /dev/null +++ b/src/glean/api_client/models/platformagentssearchresponse.py @@ -0,0 +1,22 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformagent import PlatformAgent, PlatformAgentTypedDict +from glean.api_client.types import BaseModel +from typing import List +from typing_extensions import TypedDict + + +class PlatformAgentsSearchResponseTypedDict(TypedDict): + agents: List[PlatformAgentTypedDict] + r"""Agents matching the search request.""" + request_id: str + r"""Platform-generated request ID for support correlation.""" + + +class PlatformAgentsSearchResponse(BaseModel): + agents: List[PlatformAgent] + r"""Agents matching the search request.""" + + request_id: str + r"""Platform-generated request ID for support correlation.""" diff --git a/src/glean/api_client/models/platformauthenticationsuggestion.py b/src/glean/api_client/models/platformauthenticationsuggestion.py new file mode 100644 index 00000000..04be56b8 --- /dev/null +++ b/src/glean/api_client/models/platformauthenticationsuggestion.py @@ -0,0 +1,42 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer +from typing import Optional +from typing_extensions import NotRequired, TypedDict + + +class PlatformAuthenticationSuggestionTypedDict(TypedDict): + r"""One tool the caller must authorize before the agent can run.""" + + server_id: str + r"""Identifier to POST to `/tool-servers/{serverId}/auth` (Client API) with `returnUrl` in the request body to obtain an `authorizationUrl` to redirect the end user to.""" + tool_name: NotRequired[str] + r"""Human-readable tool name.""" + + +class PlatformAuthenticationSuggestion(BaseModel): + r"""One tool the caller must authorize before the agent can run.""" + + server_id: str + r"""Identifier to POST to `/tool-servers/{serverId}/auth` (Client API) with `returnUrl` in the request body to obtain an `authorizationUrl` to redirect the end user to.""" + + tool_name: Optional[str] = None + r"""Human-readable tool name.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["tool_name"]) + 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/platformchatcitationannotation.py b/src/glean/api_client/models/platformchatcitationannotation.py new file mode 100644 index 00000000..5dd276ba --- /dev/null +++ b/src/glean/api_client/models/platformchatcitationannotation.py @@ -0,0 +1,71 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformchatcitationsnippet import ( + PlatformChatCitationSnippet, + PlatformChatCitationSnippetTypedDict, +) +from .platformchatcitationsource import ( + PlatformChatCitationSource, + PlatformChatCitationSourceTypedDict, +) +from enum import Enum +from glean.api_client.types import ( + BaseModel, + Nullable, + OptionalNullable, + UNSET, + UNSET_SENTINEL, +) +from pydantic import model_serializer +from typing import List +from typing_extensions import NotRequired, TypedDict + + +class PlatformChatCitationAnnotationType(str, Enum): + CITATION = "CITATION" + + +class PlatformChatCitationAnnotationTypedDict(TypedDict): + type: PlatformChatCitationAnnotationType + sources: List[PlatformChatCitationSourceTypedDict] + start_index: NotRequired[Nullable[int]] + end_index: NotRequired[Nullable[int]] + snippets: NotRequired[Nullable[List[PlatformChatCitationSnippetTypedDict]]] + + +class PlatformChatCitationAnnotation(BaseModel): + type: PlatformChatCitationAnnotationType + + sources: List[PlatformChatCitationSource] + + start_index: OptionalNullable[int] = UNSET + + end_index: OptionalNullable[int] = UNSET + + snippets: OptionalNullable[List[PlatformChatCitationSnippet]] = UNSET + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["start_index", "end_index", "snippets"]) + nullable_fields = set(["start_index", "end_index", "snippets"]) + 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)) + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val + + return m diff --git a/src/glean/api_client/models/platformchatcitationsnippet.py b/src/glean/api_client/models/platformchatcitationsnippet.py new file mode 100644 index 00000000..c679f40a --- /dev/null +++ b/src/glean/api_client/models/platformchatcitationsnippet.py @@ -0,0 +1,48 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import ( + BaseModel, + Nullable, + OptionalNullable, + UNSET, + UNSET_SENTINEL, +) +from pydantic import model_serializer +from typing_extensions import NotRequired, TypedDict + + +class PlatformChatCitationSnippetTypedDict(TypedDict): + text: str + page_number: NotRequired[Nullable[int]] + + +class PlatformChatCitationSnippet(BaseModel): + text: str + + page_number: OptionalNullable[int] = UNSET + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["page_number"]) + nullable_fields = set(["page_number"]) + 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)) + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val + + return m diff --git a/src/glean/api_client/models/platformchatcitationsource.py b/src/glean/api_client/models/platformchatcitationsource.py new file mode 100644 index 00000000..b44f4b97 --- /dev/null +++ b/src/glean/api_client/models/platformchatcitationsource.py @@ -0,0 +1,47 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformchatcustomentitysource import ( + PlatformChatCustomEntitySource, + PlatformChatCustomEntitySourceTypedDict, +) +from .platformchatdocumentsource import ( + PlatformChatDocumentSource, + PlatformChatDocumentSourceTypedDict, +) +from .platformchatfilesource import ( + PlatformChatFileSource, + PlatformChatFileSourceTypedDict, +) +from .platformchatpersonsource import ( + PlatformChatPersonSource, + PlatformChatPersonSourceTypedDict, +) +from glean.api_client.utils import get_discriminator +from pydantic import Discriminator, Tag +from typing import Union +from typing_extensions import Annotated, TypeAliasType + + +PlatformChatCitationSourceTypedDict = TypeAliasType( + "PlatformChatCitationSourceTypedDict", + Union[ + PlatformChatPersonSourceTypedDict, + PlatformChatFileSourceTypedDict, + PlatformChatCustomEntitySourceTypedDict, + PlatformChatDocumentSourceTypedDict, + ], +) +r"""Four-variant citation source union.""" + + +PlatformChatCitationSource = Annotated[ + Union[ + Annotated[PlatformChatDocumentSource, Tag("DOCUMENT")], + Annotated[PlatformChatPersonSource, Tag("PERSON")], + Annotated[PlatformChatFileSource, Tag("FILE")], + Annotated[PlatformChatCustomEntitySource, Tag("CUSTOM_ENTITY")], + ], + Discriminator(lambda m: get_discriminator(m, "type", "type")), +] +r"""Four-variant citation source union.""" diff --git a/src/glean/api_client/models/platformchatcompletedresponse.py b/src/glean/api_client/models/platformchatcompletedresponse.py new file mode 100644 index 00000000..4b32c84b --- /dev/null +++ b/src/glean/api_client/models/platformchatcompletedresponse.py @@ -0,0 +1,91 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformchatoutputmessage import ( + PlatformChatOutputMessage, + PlatformChatOutputMessageTypedDict, +) +from datetime import datetime +from enum import Enum +from glean.api_client.types import ( + BaseModel, + Nullable, + OptionalNullable, + UNSET, + UNSET_SENTINEL, +) +from pydantic import model_serializer +from typing import List +from typing_extensions import NotRequired, TypedDict + + +class Object(str, Enum): + RESPONSE = "RESPONSE" + + +class PlatformChatCompletedResponseStatus(str, Enum): + COMPLETED = "COMPLETED" + + +class PlatformChatCompletedResponseTypedDict(TypedDict): + id: str + r"""Platform-owned, non-persisted response envelope identifier in `resp_` form. The same identifier is used for every event in one streamed response. + + """ + object: Object + created_at: datetime + r"""RFC 3339 UTC timestamp when the response was created.""" + status: PlatformChatCompletedResponseStatus + output: List[PlatformChatOutputMessageTypedDict] + store: bool + request_id: str + conversation_id: NotRequired[Nullable[str]] + r"""Present when the interaction was persisted.""" + + +class PlatformChatCompletedResponse(BaseModel): + id: str + r"""Platform-owned, non-persisted response envelope identifier in `resp_` form. The same identifier is used for every event in one streamed response. + + """ + + object: Object + + created_at: datetime + r"""RFC 3339 UTC timestamp when the response was created.""" + + status: PlatformChatCompletedResponseStatus + + output: List[PlatformChatOutputMessage] + + store: bool + + request_id: str + + conversation_id: OptionalNullable[str] = UNSET + r"""Present when the interaction was persisted.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["conversation_id"]) + nullable_fields = set(["conversation_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)) + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val + + return m diff --git a/src/glean/api_client/models/platformchatcreaterequest.py b/src/glean/api_client/models/platformchatcreaterequest.py new file mode 100644 index 00000000..b596efc5 --- /dev/null +++ b/src/glean/api_client/models/platformchatcreaterequest.py @@ -0,0 +1,82 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformchatinputmessage import ( + PlatformChatInputMessage, + PlatformChatInputMessageTypedDict, +) +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer +from typing import List, Optional, Union +from typing_extensions import NotRequired, TypeAliasType, TypedDict + + +InputTypedDict = TypeAliasType( + "InputTypedDict", Union[str, List[PlatformChatInputMessageTypedDict]] +) +r"""Either a plain string (single user turn) or a chronological array of `USER`/`ASSISTANT` messages. The final array message must be `USER`. + +""" + + +Input = TypeAliasType("Input", Union[str, List[PlatformChatInputMessage]]) +r"""Either a plain string (single user turn) or a chronological array of `USER`/`ASSISTANT` messages. The final array message must be `USER`. + +""" + + +class PlatformChatCreateRequestTypedDict(TypedDict): + input: InputTypedDict + r"""Either a plain string (single user turn) or a chronological array of `USER`/`ASSISTANT` messages. The final array message must be `USER`. + + """ + stream: NotRequired[bool] + r"""When true, respond with `text/event-stream`. When false or omitted, respond with `application/json`. + + """ + store: NotRequired[bool] + r"""When true (default), persist the interaction and return a `conversation_id`. When false, run ephemerally with no persistence. + + """ + conversation_id: NotRequired[str] + r"""Continue an existing stored conversation. Incompatible with message-array `input` and with `store: false`. + + """ + + +class PlatformChatCreateRequest(BaseModel): + input: Input + r"""Either a plain string (single user turn) or a chronological array of `USER`/`ASSISTANT` messages. The final array message must be `USER`. + + """ + + stream: Optional[bool] = False + r"""When true, respond with `text/event-stream`. When false or omitted, respond with `application/json`. + + """ + + store: Optional[bool] = True + r"""When true (default), persist the interaction and return a `conversation_id`. When false, run ephemerally with no persistence. + + """ + + conversation_id: Optional[str] = None + r"""Continue an existing stored conversation. Incompatible with message-array `input` and with `store: false`. + + """ + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["stream", "store", "conversation_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 diff --git a/src/glean/api_client/models/platformchatcustomentitysource.py b/src/glean/api_client/models/platformchatcustomentitysource.py new file mode 100644 index 00000000..f2ec133b --- /dev/null +++ b/src/glean/api_client/models/platformchatcustomentitysource.py @@ -0,0 +1,51 @@ +"""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, UNSET_SENTINEL +from pydantic import model_serializer +from typing import Optional +from typing_extensions import NotRequired, TypedDict + + +class PlatformChatCustomEntitySourceType(str, Enum): + CUSTOM_ENTITY = "CUSTOM_ENTITY" + + +class PlatformChatCustomEntitySourceTypedDict(TypedDict): + type: PlatformChatCustomEntitySourceType + entity_id: str + name: NotRequired[str] + title: NotRequired[str] + url: NotRequired[str] + datasource: NotRequired[str] + + +class PlatformChatCustomEntitySource(BaseModel): + type: PlatformChatCustomEntitySourceType + + entity_id: str + + name: Optional[str] = None + + title: Optional[str] = None + + url: Optional[str] = None + + datasource: Optional[str] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["name", "title", "url", "datasource"]) + 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/platformchatdocumentsource.py b/src/glean/api_client/models/platformchatdocumentsource.py new file mode 100644 index 00000000..73aad8d2 --- /dev/null +++ b/src/glean/api_client/models/platformchatdocumentsource.py @@ -0,0 +1,103 @@ +"""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, UNSET_SENTINEL +from pydantic import model_serializer +from typing import Optional, Union +from typing_extensions import NotRequired, TypeAliasType, TypedDict + + +class PlatformChatDocumentSourceType2(str, Enum): + DOCUMENT = "DOCUMENT" + + +class PlatformChatDocumentSourceDocument2TypedDict(TypedDict): + type: PlatformChatDocumentSourceType2 + url: str + document_id: NotRequired[str] + title: NotRequired[str] + datasource: NotRequired[str] + + +class PlatformChatDocumentSourceDocument2(BaseModel): + type: PlatformChatDocumentSourceType2 + + url: str + + document_id: Optional[str] = None + + title: Optional[str] = None + + datasource: Optional[str] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["document_id", "title", "datasource"]) + 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 + + +class PlatformChatDocumentSourceType1(str, Enum): + DOCUMENT = "DOCUMENT" + + +class PlatformChatDocumentSourceDocument1TypedDict(TypedDict): + type: PlatformChatDocumentSourceType1 + document_id: str + url: NotRequired[str] + title: NotRequired[str] + datasource: NotRequired[str] + + +class PlatformChatDocumentSourceDocument1(BaseModel): + type: PlatformChatDocumentSourceType1 + + document_id: str + + url: Optional[str] = None + + title: Optional[str] = None + + datasource: Optional[str] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["url", "title", "datasource"]) + 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 + + +PlatformChatDocumentSourceTypedDict = TypeAliasType( + "PlatformChatDocumentSourceTypedDict", + Union[ + PlatformChatDocumentSourceDocument1TypedDict, + PlatformChatDocumentSourceDocument2TypedDict, + ], +) + + +PlatformChatDocumentSource = TypeAliasType( + "PlatformChatDocumentSource", + Union[PlatformChatDocumentSourceDocument1, PlatformChatDocumentSourceDocument2], +) diff --git a/src/glean/api_client/models/platformchatfilesource.py b/src/glean/api_client/models/platformchatfilesource.py new file mode 100644 index 00000000..228194cb --- /dev/null +++ b/src/glean/api_client/models/platformchatfilesource.py @@ -0,0 +1,48 @@ +"""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, UNSET_SENTINEL +from pydantic import model_serializer +from typing import Optional +from typing_extensions import NotRequired, TypedDict + + +class PlatformChatFileSourceType(str, Enum): + FILE = "FILE" + + +class PlatformChatFileSourceTypedDict(TypedDict): + type: PlatformChatFileSourceType + file_id: str + title: NotRequired[str] + url: NotRequired[str] + datasource: NotRequired[str] + + +class PlatformChatFileSource(BaseModel): + type: PlatformChatFileSourceType + + file_id: str + + title: Optional[str] = None + + url: Optional[str] = None + + datasource: Optional[str] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["title", "url", "datasource"]) + 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/platformchatinputmessage.py b/src/glean/api_client/models/platformchatinputmessage.py new file mode 100644 index 00000000..9d21d2a1 --- /dev/null +++ b/src/glean/api_client/models/platformchatinputmessage.py @@ -0,0 +1,22 @@ +"""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 PlatformChatInputMessageRole(str, Enum): + USER = "USER" + ASSISTANT = "ASSISTANT" + + +class PlatformChatInputMessageTypedDict(TypedDict): + role: PlatformChatInputMessageRole + content: str + + +class PlatformChatInputMessage(BaseModel): + role: PlatformChatInputMessageRole + + content: str diff --git a/src/glean/api_client/models/platformchatoutputmessage.py b/src/glean/api_client/models/platformchatoutputmessage.py new file mode 100644 index 00000000..9082277a --- /dev/null +++ b/src/glean/api_client/models/platformchatoutputmessage.py @@ -0,0 +1,33 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformchatoutputtextcontent import ( + PlatformChatOutputTextContent, + PlatformChatOutputTextContentTypedDict, +) +from enum import Enum +from glean.api_client.types import BaseModel +from typing import List +from typing_extensions import TypedDict + + +class PlatformChatOutputMessageType(str, Enum): + MESSAGE = "MESSAGE" + + +class PlatformChatOutputMessageRole(str, Enum): + ASSISTANT = "ASSISTANT" + + +class PlatformChatOutputMessageTypedDict(TypedDict): + type: PlatformChatOutputMessageType + role: PlatformChatOutputMessageRole + content: List[PlatformChatOutputTextContentTypedDict] + + +class PlatformChatOutputMessage(BaseModel): + type: PlatformChatOutputMessageType + + role: PlatformChatOutputMessageRole + + content: List[PlatformChatOutputTextContent] diff --git a/src/glean/api_client/models/platformchatoutputtextcontent.py b/src/glean/api_client/models/platformchatoutputtextcontent.py new file mode 100644 index 00000000..d3742527 --- /dev/null +++ b/src/glean/api_client/models/platformchatoutputtextcontent.py @@ -0,0 +1,46 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformchatcitationannotation import ( + PlatformChatCitationAnnotation, + PlatformChatCitationAnnotationTypedDict, +) +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 PlatformChatOutputTextContentType(str, Enum): + OUTPUT_TEXT = "OUTPUT_TEXT" + + +class PlatformChatOutputTextContentTypedDict(TypedDict): + type: PlatformChatOutputTextContentType + text: str + annotations: NotRequired[List[PlatformChatCitationAnnotationTypedDict]] + + +class PlatformChatOutputTextContent(BaseModel): + type: PlatformChatOutputTextContentType + + text: str + + annotations: Optional[List[PlatformChatCitationAnnotation]] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["annotations"]) + 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/platformchatpersonsource.py b/src/glean/api_client/models/platformchatpersonsource.py new file mode 100644 index 00000000..a2e120b1 --- /dev/null +++ b/src/glean/api_client/models/platformchatpersonsource.py @@ -0,0 +1,45 @@ +"""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, UNSET_SENTINEL +from pydantic import model_serializer +from typing import Optional +from typing_extensions import NotRequired, TypedDict + + +class PlatformChatPersonSourceType(str, Enum): + PERSON = "PERSON" + + +class PlatformChatPersonSourceTypedDict(TypedDict): + type: PlatformChatPersonSourceType + person_id: str + name: NotRequired[str] + url: NotRequired[str] + + +class PlatformChatPersonSource(BaseModel): + type: PlatformChatPersonSourceType + + person_id: str + + name: Optional[str] = None + + url: Optional[str] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["name", "url"]) + 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/platformcontentschedulewebhookevent.py b/src/glean/api_client/models/platformcontentschedulewebhookevent.py new file mode 100644 index 00000000..0b1d4cff --- /dev/null +++ b/src/glean/api_client/models/platformcontentschedulewebhookevent.py @@ -0,0 +1,82 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from datetime import datetime +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer +from typing import Optional +from typing_extensions import NotRequired, TypedDict + + +class PlatformContentScheduleWebhookEventTypedDict(TypedDict): + version: str + r"""Webhook payload schema version.""" + trigger_id: str + r"""ID of the Platform trigger that produced the event.""" + event_type: str + datasource: str + r"""Datasource the event originated from.""" + reason: str + r"""Why the event fired.""" + doc_type: str + r"""Datasource-specific object type.""" + doc_id: str + r"""Identifier of the document the event is about.""" + view_url: str + r"""Link to the document in its source system.""" + title: str + r"""Title of the document, or the subject for email.""" + time_offset_seconds: int + r"""Offset in seconds from the scheduled time at which the trigger fired.""" + event_time: NotRequired[datetime] + r"""Relevant event time. Document changes use the source-observed time when available and otherwise the document ingestion time; content schedules use the scheduled time. Omitted when no timestamp is available.""" + + +class PlatformContentScheduleWebhookEvent(BaseModel): + version: str + r"""Webhook payload schema version.""" + + trigger_id: str + r"""ID of the Platform trigger that produced the event.""" + + event_type: str + + datasource: str + r"""Datasource the event originated from.""" + + reason: str + r"""Why the event fired.""" + + doc_type: str + r"""Datasource-specific object type.""" + + doc_id: str + r"""Identifier of the document the event is about.""" + + view_url: str + r"""Link to the document in its source system.""" + + title: str + r"""Title of the document, or the subject for email.""" + + time_offset_seconds: int + r"""Offset in seconds from the scheduled time at which the trigger fired.""" + + event_time: Optional[datetime] = None + r"""Relevant event time. Document changes use the source-observed time when available and otherwise the document ingestion time; content schedules use the scheduled time. Omitted when no timestamp is available.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["event_time"]) + 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/platformcontenttype.py b/src/glean/api_client/models/platformcontenttype.py new file mode 100644 index 00000000..c327d0ce --- /dev/null +++ b/src/glean/api_client/models/platformcontenttype.py @@ -0,0 +1,8 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum + + +class PlatformContentType(str, Enum): + TEXT = "text" diff --git a/src/glean/api_client/models/platformdatasourcefilterinfo.py b/src/glean/api_client/models/platformdatasourcefilterinfo.py new file mode 100644 index 00000000..cd2ba67f --- /dev/null +++ b/src/glean/api_client/models/platformdatasourcefilterinfo.py @@ -0,0 +1,33 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformfilterfieldinfo import ( + PlatformFilterFieldInfo, + PlatformFilterFieldInfoTypedDict, +) +from glean.api_client.types import BaseModel +from typing import List +from typing_extensions import TypedDict + + +class PlatformDatasourceFilterInfoTypedDict(TypedDict): + datasource: str + r"""Datasource identifier usable in `POST /api/search` `datasources`. + + """ + filters: List[PlatformFilterFieldInfoTypedDict] + r"""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. + + """ + + +class PlatformDatasourceFilterInfo(BaseModel): + datasource: str + r"""Datasource identifier usable in `POST /api/search` `datasources`. + + """ + + filters: List[PlatformFilterFieldInfo] + r"""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. + + """ diff --git a/src/glean/api_client/models/platformdocumentchangewebhookevent.py b/src/glean/api_client/models/platformdocumentchangewebhookevent.py new file mode 100644 index 00000000..a1eb453d --- /dev/null +++ b/src/glean/api_client/models/platformdocumentchangewebhookevent.py @@ -0,0 +1,87 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from datetime import datetime +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer +from typing import Optional +from typing_extensions import NotRequired, TypedDict + + +class PlatformDocumentChangeWebhookEventTypedDict(TypedDict): + version: str + r"""Webhook payload schema version.""" + trigger_id: str + r"""ID of the Platform trigger that produced the event.""" + event_type: str + datasource: str + r"""Datasource the event originated from.""" + reason: str + r"""Why the event fired.""" + doc_type: str + r"""Datasource-specific object type.""" + doc_id: str + r"""Identifier of the document the event is about.""" + view_url: str + r"""Link to the document in its source system.""" + title: str + r"""Title of the document, or the subject for email.""" + event_time: NotRequired[datetime] + r"""Relevant event time. Document changes use the source-observed time when available and otherwise the document ingestion time; content schedules use the scheduled time. Omitted when no timestamp is available.""" + content: NotRequired[str] + r"""Email body content when the event is for an email document.""" + content_truncated: NotRequired[bool] + r"""Present and true when source content exceeded the delivery size limit.""" + + +class PlatformDocumentChangeWebhookEvent(BaseModel): + version: str + r"""Webhook payload schema version.""" + + trigger_id: str + r"""ID of the Platform trigger that produced the event.""" + + event_type: str + + datasource: str + r"""Datasource the event originated from.""" + + reason: str + r"""Why the event fired.""" + + doc_type: str + r"""Datasource-specific object type.""" + + doc_id: str + r"""Identifier of the document the event is about.""" + + view_url: str + r"""Link to the document in its source system.""" + + title: str + r"""Title of the document, or the subject for email.""" + + event_time: Optional[datetime] = None + r"""Relevant event time. Document changes use the source-observed time when available and otherwise the document ingestion time; content schedules use the scheduled time. Omitted when no timestamp is available.""" + + content: Optional[str] = None + r"""Email body content when the event is for an email document.""" + + content_truncated: Optional[bool] = None + r"""Present and true when source content exceeded the delivery size limit.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["event_time", "content", "content_truncated"]) + 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/platformfilter.py b/src/glean/api_client/models/platformfilter.py new file mode 100644 index 00000000..2243c553 --- /dev/null +++ b/src/glean/api_client/models/platformfilter.py @@ -0,0 +1,70 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformfilteroperator import PlatformFilterOperator +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 PlatformFilterTypedDict(TypedDict): + r"""A single filter criterion. For `EQUALS`, multiple values within a filter are OR'd; for `NOT_EQUALS`, listed values are excluded. Separate filters are AND'd with each other and with inline operators in `query`. Repeated same-field `EQUALS` filters are rejected.""" + + field: str + r"""Filter field name. Built-in names (case-sensitive, lowercase only): `type`, `owner`, `from`, `author`, `channel`, `status`, `assignee`, `reporter`, `component`, `mentions`, and `collection`. Built-ins accept only `EQUALS` and `NOT_EQUALS`. Any other nonblank name is accepted as a custom filter without spelling, existence, or type checks; behavior depends on your connected sources. + + """ + values: List[str] + r"""One or more values to match. Prefer values returned by filter discovery unchanged. For people (`USER`) fields, values may be email addresses or display names. + + """ + operator: NotRequired[PlatformFilterOperator] + r"""Comparison operator. Defaults to `EQUALS`. Built-in fields support only `EQUALS` and `NOT_EQUALS`. Range operators (`GT`, `GTE`, `LT`, `LTE`) require exactly one value; express ranges with multiple filters on the same field. Custom fields may support different operators depending on the data source. + + """ + + +class PlatformFilter(BaseModel): + r"""A single filter criterion. For `EQUALS`, multiple values within a filter are OR'd; for `NOT_EQUALS`, listed values are excluded. Separate filters are AND'd with each other and with inline operators in `query`. Repeated same-field `EQUALS` filters are rejected.""" + + field: str + r"""Filter field name. Built-in names (case-sensitive, lowercase only): `type`, `owner`, `from`, `author`, `channel`, `status`, `assignee`, `reporter`, `component`, `mentions`, and `collection`. Built-ins accept only `EQUALS` and `NOT_EQUALS`. Any other nonblank name is accepted as a custom filter without spelling, existence, or type checks; behavior depends on your connected sources. + + """ + + values: List[str] + r"""One or more values to match. Prefer values returned by filter discovery unchanged. For people (`USER`) fields, values may be email addresses or display names. + + """ + + operator: Optional[PlatformFilterOperator] = None + r"""Comparison operator. Defaults to `EQUALS`. Built-in fields support only `EQUALS` and `NOT_EQUALS`. Range operators (`GT`, `GTE`, `LT`, `LTE`) require exactly one value; express ranges with multiple filters on the same field. Custom fields may support different operators depending on the data source. + + """ + + @field_serializer("operator") + def serialize_operator(self, value): + if isinstance(value, str): + try: + return models.PlatformFilterOperator(value) + except ValueError: + return value + return value + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["operator"]) + 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/platformfilterfieldinfo.py b/src/glean/api_client/models/platformfilterfieldinfo.py new file mode 100644 index 00000000..755b03c7 --- /dev/null +++ b/src/glean/api_client/models/platformfilterfieldinfo.py @@ -0,0 +1,61 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformfilteroperator import PlatformFilterOperator +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 PlatformFilterFieldInfoTypedDict(TypedDict): + field: str + r"""Field name usable in the `filters` array for `POST /api/search`.""" + type: str + r"""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. + + """ + operators: List[PlatformFilterOperator] + r"""Comparison operators supported for this field. Built-in fields expose `EQUALS` and `NOT_EQUALS`. + + """ + values: NotRequired[List[str]] + r"""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. + + """ + + +class PlatformFilterFieldInfo(BaseModel): + field: str + r"""Field name usable in the `filters` array for `POST /api/search`.""" + + type: str + r"""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. + + """ + + operators: List[PlatformFilterOperator] + r"""Comparison operators supported for this field. Built-in fields expose `EQUALS` and `NOT_EQUALS`. + + """ + + values: Optional[List[str]] = None + r"""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. + + """ + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["values"]) + 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/platformfilteroperator.py b/src/glean/api_client/models/platformfilteroperator.py new file mode 100644 index 00000000..f0185fb9 --- /dev/null +++ b/src/glean/api_client/models/platformfilteroperator.py @@ -0,0 +1,16 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +from glean.api_client import utils + + +class PlatformFilterOperator(str, Enum, metaclass=utils.OpenEnumMeta): + r"""Supported filter operator.""" + + EQUALS = "EQUALS" + NOT_EQUALS = "NOT_EQUALS" + GT = "GT" + GTE = "GTE" + LT = "LT" + LTE = "LTE" diff --git a/src/glean/api_client/models/platformmessage.py b/src/glean/api_client/models/platformmessage.py new file mode 100644 index 00000000..7be2c4dc --- /dev/null +++ b/src/glean/api_client/models/platformmessage.py @@ -0,0 +1,37 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformmessagerole import PlatformMessageRole +from .platformmessagetextblock import ( + PlatformMessageTextBlock, + PlatformMessageTextBlockTypedDict, +) +from glean.api_client import models +from glean.api_client.types import BaseModel +from pydantic import field_serializer +from typing import List +from typing_extensions import TypedDict + + +class PlatformMessageTypedDict(TypedDict): + role: PlatformMessageRole + r"""Role of the message author.""" + content: List[PlatformMessageTextBlockTypedDict] + r"""Content blocks in the message.""" + + +class PlatformMessage(BaseModel): + role: PlatformMessageRole + r"""Role of the message author.""" + + content: List[PlatformMessageTextBlock] + r"""Content blocks in the message.""" + + @field_serializer("role") + def serialize_role(self, value): + if isinstance(value, str): + try: + return models.PlatformMessageRole(value) + except ValueError: + return value + return value diff --git a/src/glean/api_client/models/platformmessagerole.py b/src/glean/api_client/models/platformmessagerole.py new file mode 100644 index 00000000..9d7939bd --- /dev/null +++ b/src/glean/api_client/models/platformmessagerole.py @@ -0,0 +1,12 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +from glean.api_client import utils + + +class PlatformMessageRole(str, Enum, metaclass=utils.OpenEnumMeta): + r"""Role of the message author.""" + + USER = "USER" + GLEAN_AI = "GLEAN_AI" diff --git a/src/glean/api_client/models/platformmessagetextblock.py b/src/glean/api_client/models/platformmessagetextblock.py new file mode 100644 index 00000000..35266bb6 --- /dev/null +++ b/src/glean/api_client/models/platformmessagetextblock.py @@ -0,0 +1,19 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformcontenttype import PlatformContentType +from glean.api_client.types import BaseModel +from typing_extensions import TypedDict + + +class PlatformMessageTextBlockTypedDict(TypedDict): + text: str + r"""Text content.""" + type: PlatformContentType + + +class PlatformMessageTextBlock(BaseModel): + text: str + r"""Text content.""" + + type: PlatformContentType diff --git a/src/glean/api_client/models/platformpersonreference.py b/src/glean/api_client/models/platformpersonreference.py new file mode 100644 index 00000000..3f687979 --- /dev/null +++ b/src/glean/api_client/models/platformpersonreference.py @@ -0,0 +1,42 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer +from typing import Optional +from typing_extensions import NotRequired, TypedDict + + +class PlatformPersonReferenceTypedDict(TypedDict): + r"""A lightweight reference to a person, used where a payload merely points at someone.""" + + name: str + r"""Display name.""" + id: NotRequired[str] + r"""Opaque Glean person ID.""" + + +class PlatformPersonReference(BaseModel): + r"""A lightweight reference to a person, used where a payload merely points at someone.""" + + name: str + r"""Display name.""" + + id: Optional[str] = None + r"""Opaque Glean person ID.""" + + @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 diff --git a/src/glean/api_client/models/platformproblemdetailcode.py b/src/glean/api_client/models/platformproblemdetailcode.py new file mode 100644 index 00000000..38faf64f --- /dev/null +++ b/src/glean/api_client/models/platformproblemdetailcode.py @@ -0,0 +1,33 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +from glean.api_client import utils + + +class PlatformProblemDetailCode(str, Enum, metaclass=utils.OpenEnumMeta): + r"""Stable machine-readable error code.""" + + INVALID_REQUEST = "invalid_request" + MISSING_REQUIRED_FIELD = "missing_required_field" + INVALID_PARAMETER = "invalid_parameter" + INVALID_CURSOR = "invalid_cursor" + EXPIRED_CURSOR = "expired_cursor" + INVALID_FILTER = "invalid_filter" + INVALID_DATASOURCE = "invalid_datasource" + AUTHENTICATION_REQUIRED = "authentication_required" + TOKEN_EXPIRED = "token_expired" + INSUFFICIENT_PERMISSIONS = "insufficient_permissions" + SPEND_LIMIT_EXCEEDED = "spend_limit_exceeded" + RESOURCE_NOT_FOUND = "resource_not_found" + METHOD_NOT_ALLOWED = "method_not_allowed" + REQUEST_TIMEOUT = "request_timeout" + REQUEST_TOO_LARGE = "request_too_large" + TOKEN_LIMIT_EXCEEDED = "token_limit_exceeded" + CONFLICT = "conflict" + GONE = "gone" + UNPROCESSABLE_QUERY = "unprocessable_query" + TOOLS_UNAUTHORIZED = "tools_unauthorized" + RATE_LIMIT_EXCEEDED = "rate_limit_exceeded" + INTERNAL_ERROR = "internal_error" + SERVICE_UNAVAILABLE = "service_unavailable" diff --git a/src/glean/api_client/models/platformproblemdetailerror.py b/src/glean/api_client/models/platformproblemdetailerror.py new file mode 100644 index 00000000..336efdc3 --- /dev/null +++ b/src/glean/api_client/models/platformproblemdetailerror.py @@ -0,0 +1,58 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformproblemdetailcode import PlatformProblemDetailCode +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 Optional +from typing_extensions import NotRequired, TypedDict + + +class PlatformProblemDetailErrorTypedDict(TypedDict): + r"""Field-level validation problem for a single offending field.""" + + pointer: str + r"""RFC 6901 JSON Pointer to the offending field.""" + detail: str + r"""Human-readable explanation for this field.""" + code: NotRequired[PlatformProblemDetailCode] + r"""Stable machine-readable error code.""" + + +class PlatformProblemDetailError(BaseModel): + r"""Field-level validation problem for a single offending field.""" + + pointer: str + r"""RFC 6901 JSON Pointer to the offending field.""" + + detail: str + r"""Human-readable explanation for this field.""" + + code: Optional[PlatformProblemDetailCode] = None + r"""Stable machine-readable error code.""" + + @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(["code"]) + 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/platformresult.py b/src/glean/api_client/models/platformresult.py new file mode 100644 index 00000000..167efcae --- /dev/null +++ b/src/glean/api_client/models/platformresult.py @@ -0,0 +1,102 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformpersonreference import ( + PlatformPersonReference, + PlatformPersonReferenceTypedDict, +) +from datetime import datetime +from glean.api_client.types import ( + BaseModel, + Nullable, + OptionalNullable, + UNSET, + UNSET_SENTINEL, +) +from pydantic import model_serializer +from typing import List, Optional +from typing_extensions import NotRequired, TypedDict + + +class PlatformResultTypedDict(TypedDict): + url: str + r"""Canonical URL of the result.""" + title: str + r"""Result title.""" + datasource: str + r"""The datasource this result originates from.""" + snippets: NotRequired[List[str]] + r"""Query-relevant plain-text excerpts from the result body.""" + document_type: NotRequired[Nullable[str]] + r"""The document type within the datasource.""" + creator: NotRequired[PlatformPersonReferenceTypedDict] + r"""A lightweight reference to a person, used where a payload merely points at someone.""" + owner: NotRequired[PlatformPersonReferenceTypedDict] + r"""A lightweight reference to a person, used where a payload merely points at someone.""" + updated_at: NotRequired[Nullable[datetime]] + r"""When the result was last modified.""" + created_at: NotRequired[Nullable[datetime]] + r"""When the result was created.""" + + +class PlatformResult(BaseModel): + url: str + r"""Canonical URL of the result.""" + + title: str + r"""Result title.""" + + datasource: str + r"""The datasource this result originates from.""" + + snippets: Optional[List[str]] = None + r"""Query-relevant plain-text excerpts from the result body.""" + + document_type: OptionalNullable[str] = UNSET + r"""The document type within the datasource.""" + + creator: Optional[PlatformPersonReference] = None + r"""A lightweight reference to a person, used where a payload merely points at someone.""" + + owner: Optional[PlatformPersonReference] = None + r"""A lightweight reference to a person, used where a payload merely points at someone.""" + + updated_at: OptionalNullable[datetime] = UNSET + r"""When the result was last modified.""" + + created_at: OptionalNullable[datetime] = UNSET + r"""When the result was created.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "snippets", + "document_type", + "creator", + "owner", + "updated_at", + "created_at", + ] + ) + nullable_fields = set(["document_type", "updated_at", "created_at"]) + 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)) + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val + + return m diff --git a/src/glean/api_client/models/platformsearchfiltersresponse.py b/src/glean/api_client/models/platformsearchfiltersresponse.py new file mode 100644 index 00000000..1d8aa689 --- /dev/null +++ b/src/glean/api_client/models/platformsearchfiltersresponse.py @@ -0,0 +1,29 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformdatasourcefilterinfo import ( + PlatformDatasourceFilterInfo, + PlatformDatasourceFilterInfoTypedDict, +) +from glean.api_client.types import BaseModel +from typing import List +from typing_extensions import TypedDict + + +class PlatformSearchFiltersResponseTypedDict(TypedDict): + datasources: List[PlatformDatasourceFilterInfoTypedDict] + r"""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. + + """ + request_id: str + r"""Platform-generated request ID for support correlation.""" + + +class PlatformSearchFiltersResponse(BaseModel): + datasources: List[PlatformDatasourceFilterInfo] + r"""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. + + """ + + request_id: str + r"""Platform-generated request ID for support correlation.""" diff --git a/src/glean/api_client/models/platformsearchrequest.py b/src/glean/api_client/models/platformsearchrequest.py new file mode 100644 index 00000000..8a3cd9bc --- /dev/null +++ b/src/glean/api_client/models/platformsearchrequest.py @@ -0,0 +1,93 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformfilter import PlatformFilter, PlatformFilterTypedDict +from .platformtimerange import PlatformTimeRange, PlatformTimeRangeTypedDict +from glean.api_client.types import ( + BaseModel, + Nullable, + OptionalNullable, + UNSET, + UNSET_SENTINEL, +) +from pydantic import model_serializer +from typing import List, Optional +from typing_extensions import NotRequired, TypedDict + + +class PlatformSearchRequestTypedDict(TypedDict): + query: str + r"""The search query string. Supports inline operators such as `from:jane type:document app:confluence`. Inline operators are AND'd with structured `filters`. + + """ + page_size: NotRequired[int] + r"""Number of results to return per page.""" + cursor: NotRequired[Nullable[str]] + r"""Opaque pagination token from a previous response's `next_cursor` field. Omit on the first request. + + """ + datasources: NotRequired[List[str]] + r"""Restrict results to specific datasource identifiers returned by `GET /api/search/filters`. Scopes by datasource type and may include results from multiple instances of that type. + + """ + filters: NotRequired[List[PlatformFilterTypedDict]] + r"""Structured filters applied to search results. Multiple values within a filter with `EQUALS` are OR'd; separate filters are AND'd. Conflicting constraints on the same field (for example, `type:document` in `query` and `type:spreadsheet` in a filter) return an empty result set. See `Filter.field` for built-in field names and operators. Other nonblank field names are accepted as custom filters without validation; behavior depends on your connected sources. + + """ + time_range: NotRequired[PlatformTimeRangeTypedDict] + r"""Filter results to those last updated within this range.""" + + +class PlatformSearchRequest(BaseModel): + query: str + r"""The search query string. Supports inline operators such as `from:jane type:document app:confluence`. Inline operators are AND'd with structured `filters`. + + """ + + page_size: Optional[int] = 10 + r"""Number of results to return per page.""" + + cursor: OptionalNullable[str] = UNSET + r"""Opaque pagination token from a previous response's `next_cursor` field. Omit on the first request. + + """ + + datasources: Optional[List[str]] = None + r"""Restrict results to specific datasource identifiers returned by `GET /api/search/filters`. Scopes by datasource type and may include results from multiple instances of that type. + + """ + + filters: Optional[List[PlatformFilter]] = None + r"""Structured filters applied to search results. Multiple values within a filter with `EQUALS` are OR'd; separate filters are AND'd. Conflicting constraints on the same field (for example, `type:document` in `query` and `type:spreadsheet` in a filter) return an empty result set. See `Filter.field` for built-in field names and operators. Other nonblank field names are accepted as custom filters without validation; behavior depends on your connected sources. + + """ + + time_range: Optional[PlatformTimeRange] = None + r"""Filter results to those last updated within this range.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + ["page_size", "cursor", "datasources", "filters", "time_range"] + ) + nullable_fields = set(["cursor"]) + 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)) + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val + + return m diff --git a/src/glean/api_client/models/platformsearchresponse.py b/src/glean/api_client/models/platformsearchresponse.py new file mode 100644 index 00000000..ff13d204 --- /dev/null +++ b/src/glean/api_client/models/platformsearchresponse.py @@ -0,0 +1,61 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformresult import PlatformResult, PlatformResultTypedDict +from .platformwarning import PlatformWarning, PlatformWarningTypedDict +from glean.api_client.types import BaseModel, Nullable, UNSET_SENTINEL +from pydantic import model_serializer +from typing import List +from typing_extensions import TypedDict + + +class PlatformSearchResponseTypedDict(TypedDict): + results: List[PlatformResultTypedDict] + r"""Ordered list of ranked document results. People cards, Q&A blocks, and other UI-only result types are not included. + + """ + has_more: bool + r"""Indicates whether additional pages of results are available.""" + next_cursor: Nullable[str] + r"""Opaque token to pass as `cursor` in the next request.""" + request_id: str + r"""Platform-generated request ID for support correlation.""" + warnings: List[PlatformWarningTypedDict] + r"""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. + + """ + + +class PlatformSearchResponse(BaseModel): + results: List[PlatformResult] + r"""Ordered list of ranked document results. People cards, Q&A blocks, and other UI-only result types are not included. + + """ + + has_more: bool + r"""Indicates whether additional pages of results are available.""" + + next_cursor: Nullable[str] + r"""Opaque token to pass as `cursor` in the next request.""" + + request_id: str + r"""Platform-generated request ID for support correlation.""" + + warnings: List[PlatformWarning] + r"""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. + + """ + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + 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: + m[k] = val + + return m diff --git a/src/glean/api_client/models/platformskill.py b/src/glean/api_client/models/platformskill.py new file mode 100644 index 00000000..4b7e21a7 --- /dev/null +++ b/src/glean/api_client/models/platformskill.py @@ -0,0 +1,102 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformpersonreference import ( + PlatformPersonReference, + PlatformPersonReferenceTypedDict, +) +from .platformskillorigin import PlatformSkillOrigin +from .platformskillsourceprovenance import ( + PlatformSkillSourceProvenance, + PlatformSkillSourceProvenanceTypedDict, +) +from .platformskillstatus import PlatformSkillStatus +from datetime import datetime +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 Optional +from typing_extensions import NotRequired, TypedDict + + +class PlatformSkillTypedDict(TypedDict): + id: str + r"""Glean skill ID.""" + display_name: str + r"""Human-readable skill name.""" + description: str + r"""Human-readable skill description.""" + latest_version: int + r"""Latest major version number for the skill.""" + latest_minor_version: int + r"""Latest minor version number for the skill.""" + status: PlatformSkillStatus + r"""Current skill status.""" + origin: PlatformSkillOrigin + r"""Source category for the skill.""" + owner: PlatformPersonReferenceTypedDict + r"""A lightweight reference to a person, used where a payload merely points at someone.""" + created_at: datetime + r"""Time the skill was created.""" + updated_at: datetime + r"""Time the skill was last updated.""" + source_provenance: NotRequired[PlatformSkillSourceProvenanceTypedDict] + + +class PlatformSkill(BaseModel): + id: str + r"""Glean skill ID.""" + + display_name: str + r"""Human-readable skill name.""" + + description: str + r"""Human-readable skill description.""" + + latest_version: int + r"""Latest major version number for the skill.""" + + latest_minor_version: int + r"""Latest minor version number for the skill.""" + + status: PlatformSkillStatus + r"""Current skill status.""" + + origin: PlatformSkillOrigin + r"""Source category for the skill.""" + + owner: PlatformPersonReference + r"""A lightweight reference to a person, used where a payload merely points at someone.""" + + created_at: datetime + r"""Time the skill was created.""" + + updated_at: datetime + r"""Time the skill was last updated.""" + + source_provenance: Optional[PlatformSkillSourceProvenance] = None + + @field_serializer("status") + def serialize_status(self, value): + if isinstance(value, str): + try: + return models.PlatformSkillStatus(value) + except ValueError: + return value + return value + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["source_provenance"]) + 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/platformskillcreaterequest.py b/src/glean/api_client/models/platformskillcreaterequest.py new file mode 100644 index 00000000..51a4dfa4 --- /dev/null +++ b/src/glean/api_client/models/platformskillcreaterequest.py @@ -0,0 +1,63 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, MultipartFormMetadata +import io +import pydantic +from pydantic import model_serializer +from typing import IO, Optional, Union +from typing_extensions import Annotated, NotRequired, TypedDict + + +class PlatformSkillCreateRequestFileTypedDict(TypedDict): + file_name: str + content: Union[bytes, IO[bytes], io.IOBase] + content_type: NotRequired[str] + + +class PlatformSkillCreateRequestFile(BaseModel): + file_name: Annotated[ + str, pydantic.Field(alias="fileName"), FieldMetadata(multipart=True) + ] + + content: Annotated[ + Union[bytes, IO[bytes], io.IOBase], + pydantic.Field(alias=""), + FieldMetadata(multipart=MultipartFormMetadata(content=True)), + ] + + content_type: Annotated[ + Optional[str], + pydantic.Field(alias="Content-Type"), + FieldMetadata(multipart=True), + ] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["contentType"]) + 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 + + +class PlatformSkillCreateRequestTypedDict(TypedDict): + file: PlatformSkillCreateRequestFileTypedDict + r"""SKILL.md, .zip, or .skill bundle to create.""" + + +class PlatformSkillCreateRequest(BaseModel): + file: Annotated[ + PlatformSkillCreateRequestFile, + FieldMetadata(multipart=MultipartFormMetadata(file=True)), + ] + r"""SKILL.md, .zip, or .skill bundle to create.""" diff --git a/src/glean/api_client/models/platformskillcreateresponse.py b/src/glean/api_client/models/platformskillcreateresponse.py new file mode 100644 index 00000000..377237f5 --- /dev/null +++ b/src/glean/api_client/models/platformskillcreateresponse.py @@ -0,0 +1,19 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformskill import PlatformSkill, PlatformSkillTypedDict +from glean.api_client.types import BaseModel +from typing_extensions import TypedDict + + +class PlatformSkillCreateResponseTypedDict(TypedDict): + skill: PlatformSkillTypedDict + request_id: str + r"""Platform-generated request ID for support correlation.""" + + +class PlatformSkillCreateResponse(BaseModel): + skill: PlatformSkill + + request_id: str + r"""Platform-generated request ID for support correlation.""" diff --git a/src/glean/api_client/models/platformskillgetresponse.py b/src/glean/api_client/models/platformskillgetresponse.py new file mode 100644 index 00000000..2cc28636 --- /dev/null +++ b/src/glean/api_client/models/platformskillgetresponse.py @@ -0,0 +1,19 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformskill import PlatformSkill, PlatformSkillTypedDict +from glean.api_client.types import BaseModel +from typing_extensions import TypedDict + + +class PlatformSkillGetResponseTypedDict(TypedDict): + skill: PlatformSkillTypedDict + request_id: str + r"""Platform-generated request ID for support correlation.""" + + +class PlatformSkillGetResponse(BaseModel): + skill: PlatformSkill + + request_id: str + r"""Platform-generated request ID for support correlation.""" diff --git a/src/glean/api_client/models/platformskillimportrequest.py b/src/glean/api_client/models/platformskillimportrequest.py new file mode 100644 index 00000000..00ca6da5 --- /dev/null +++ b/src/glean/api_client/models/platformskillimportrequest.py @@ -0,0 +1,16 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel +from typing import List +from typing_extensions import TypedDict + + +class PlatformSkillImportRequestTypedDict(TypedDict): + source_urls: List[str] + r"""Resolved GitHub skill URLs selected from a source preview.""" + + +class PlatformSkillImportRequest(BaseModel): + source_urls: List[str] + r"""Resolved GitHub skill URLs selected from a source preview.""" diff --git a/src/glean/api_client/models/platformskillimportresponse.py b/src/glean/api_client/models/platformskillimportresponse.py new file mode 100644 index 00000000..4e8827e5 --- /dev/null +++ b/src/glean/api_client/models/platformskillimportresponse.py @@ -0,0 +1,22 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformskill import PlatformSkill, PlatformSkillTypedDict +from glean.api_client.types import BaseModel +from typing import List +from typing_extensions import TypedDict + + +class PlatformSkillImportResponseTypedDict(TypedDict): + skills: List[PlatformSkillTypedDict] + r"""Independently persisted skills in request order.""" + request_id: str + r"""Platform-generated request ID for support correlation.""" + + +class PlatformSkillImportResponse(BaseModel): + skills: List[PlatformSkill] + r"""Independently persisted skills in request order.""" + + 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 new file mode 100644 index 00000000..320c60ec --- /dev/null +++ b/src/glean/api_client/models/platformskillorigin.py @@ -0,0 +1,10 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum + + +class PlatformSkillOrigin(str, Enum): + r"""Source category for the skill.""" + + CUSTOM = "CUSTOM" diff --git a/src/glean/api_client/models/platformskillslistresponse.py b/src/glean/api_client/models/platformskillslistresponse.py new file mode 100644 index 00000000..7303b051 --- /dev/null +++ b/src/glean/api_client/models/platformskillslistresponse.py @@ -0,0 +1,47 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformskill import PlatformSkill, PlatformSkillTypedDict +from glean.api_client.types import BaseModel, Nullable, UNSET_SENTINEL +from pydantic import model_serializer +from typing import List +from typing_extensions import TypedDict + + +class PlatformSkillsListResponseTypedDict(TypedDict): + skills: List[PlatformSkillTypedDict] + r"""Skills available to the user.""" + has_more: bool + r"""Whether additional results are available.""" + next_cursor: Nullable[str] + r"""Cursor for the next page, or null when no more results are available.""" + request_id: str + r"""Platform-generated request ID for support correlation.""" + + +class PlatformSkillsListResponse(BaseModel): + skills: List[PlatformSkill] + r"""Skills available to the user.""" + + has_more: bool + r"""Whether additional results are available.""" + + next_cursor: Nullable[str] + r"""Cursor for the next page, or null when no more results are available.""" + + request_id: str + r"""Platform-generated request ID for support correlation.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + 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: + m[k] = val + + return m diff --git a/src/glean/api_client/models/platformskillsourcepreview.py b/src/glean/api_client/models/platformskillsourcepreview.py new file mode 100644 index 00000000..084954d9 --- /dev/null +++ b/src/glean/api_client/models/platformskillsourcepreview.py @@ -0,0 +1,50 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformskillsourcepreviewfile import ( + PlatformSkillSourcePreviewFile, + PlatformSkillSourcePreviewFileTypedDict, +) +from glean.api_client.types import BaseModel +from typing import List +from typing_extensions import TypedDict + + +class PlatformSkillSourcePreviewTypedDict(TypedDict): + display_name: str + r"""Skill name parsed from SKILL.md frontmatter.""" + description: str + r"""Skill description parsed from SKILL.md frontmatter.""" + source_url: str + r"""Resolved URL for this skill within the source.""" + commit_sha: str + r"""Commit SHA used to produce the preview.""" + main_content: str + r"""SKILL.md content fetched as part of the preview.""" + files: List[PlatformSkillSourcePreviewFileTypedDict] + r"""Supporting files fetched with the skill.""" + file_tree: List[str] + r"""Relative paths discovered for the skill.""" + + +class PlatformSkillSourcePreview(BaseModel): + display_name: str + r"""Skill name parsed from SKILL.md frontmatter.""" + + description: str + r"""Skill description parsed from SKILL.md frontmatter.""" + + source_url: str + r"""Resolved URL for this skill within the source.""" + + commit_sha: str + r"""Commit SHA used to produce the preview.""" + + main_content: str + r"""SKILL.md content fetched as part of the preview.""" + + files: List[PlatformSkillSourcePreviewFile] + r"""Supporting files fetched with the skill.""" + + file_tree: List[str] + r"""Relative paths discovered for the skill.""" diff --git a/src/glean/api_client/models/platformskillsourcepreviewfailure.py b/src/glean/api_client/models/platformskillsourcepreviewfailure.py new file mode 100644 index 00000000..e190c122 --- /dev/null +++ b/src/glean/api_client/models/platformskillsourcepreviewfailure.py @@ -0,0 +1,37 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformskillsourcepreviewfailurecode import PlatformSkillSourcePreviewFailureCode +from glean.api_client import models +from glean.api_client.types import BaseModel +from pydantic import field_serializer +from typing_extensions import TypedDict + + +class PlatformSkillSourcePreviewFailureTypedDict(TypedDict): + source_url: str + r"""Resolved URL for the entry that could not be previewed.""" + code: PlatformSkillSourcePreviewFailureCode + r"""Stable machine-readable reason a discovered entry was excluded.""" + detail: str + r"""Safe explanation of why the entry was excluded.""" + + +class PlatformSkillSourcePreviewFailure(BaseModel): + source_url: str + r"""Resolved URL for the entry that could not be previewed.""" + + code: PlatformSkillSourcePreviewFailureCode + r"""Stable machine-readable reason a discovered entry was excluded.""" + + detail: str + r"""Safe explanation of why the entry was excluded.""" + + @field_serializer("code") + def serialize_code(self, value): + if isinstance(value, str): + try: + return models.PlatformSkillSourcePreviewFailureCode(value) + except ValueError: + return value + return value diff --git a/src/glean/api_client/models/platformskillsourcepreviewfailurecode.py b/src/glean/api_client/models/platformskillsourcepreviewfailurecode.py new file mode 100644 index 00000000..627495d3 --- /dev/null +++ b/src/glean/api_client/models/platformskillsourcepreviewfailurecode.py @@ -0,0 +1,12 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +from glean.api_client import utils + + +class PlatformSkillSourcePreviewFailureCode(str, Enum, metaclass=utils.OpenEnumMeta): + r"""Stable machine-readable reason a discovered entry was excluded.""" + + INVALID_SKILL = "INVALID_SKILL" + SKILL_FETCH_FAILED = "SKILL_FETCH_FAILED" diff --git a/src/glean/api_client/models/platformskillsourcepreviewfile.py b/src/glean/api_client/models/platformskillsourcepreviewfile.py new file mode 100644 index 00000000..71aee533 --- /dev/null +++ b/src/glean/api_client/models/platformskillsourcepreviewfile.py @@ -0,0 +1,20 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel +from typing_extensions import TypedDict + + +class PlatformSkillSourcePreviewFileTypedDict(TypedDict): + path: str + r"""Relative path within the skill bundle.""" + content: str + r"""UTF-8 file content.""" + + +class PlatformSkillSourcePreviewFile(BaseModel): + path: str + r"""Relative path within the skill bundle.""" + + content: str + r"""UTF-8 file content.""" diff --git a/src/glean/api_client/models/platformskillsourcepreviewrequest.py b/src/glean/api_client/models/platformskillsourcepreviewrequest.py new file mode 100644 index 00000000..92057490 --- /dev/null +++ b/src/glean/api_client/models/platformskillsourcepreviewrequest.py @@ -0,0 +1,38 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer +from typing import Optional +from typing_extensions import NotRequired, TypedDict + + +class PlatformSkillSourcePreviewRequestTypedDict(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.""" + + +class PlatformSkillSourcePreviewRequest(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.""" + + @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 diff --git a/src/glean/api_client/models/platformskillsourcepreviewresponse.py b/src/glean/api_client/models/platformskillsourcepreviewresponse.py new file mode 100644 index 00000000..37cf8bc1 --- /dev/null +++ b/src/glean/api_client/models/platformskillsourcepreviewresponse.py @@ -0,0 +1,34 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformskillsourcepreview import ( + PlatformSkillSourcePreview, + PlatformSkillSourcePreviewTypedDict, +) +from .platformskillsourcepreviewfailure import ( + PlatformSkillSourcePreviewFailure, + PlatformSkillSourcePreviewFailureTypedDict, +) +from glean.api_client.types import BaseModel +from typing import List +from typing_extensions import TypedDict + + +class PlatformSkillSourcePreviewResponseTypedDict(TypedDict): + skills: List[PlatformSkillSourcePreviewTypedDict] + r"""Valid skills discovered at the source URL.""" + failures: List[PlatformSkillSourcePreviewFailureTypedDict] + r"""Discovered entries that could not be included in the preview.""" + request_id: str + r"""Platform-generated request ID for support correlation.""" + + +class PlatformSkillSourcePreviewResponse(BaseModel): + skills: List[PlatformSkillSourcePreview] + r"""Valid skills discovered at the source URL.""" + + failures: List[PlatformSkillSourcePreviewFailure] + r"""Discovered entries that could not be included in the preview.""" + + request_id: str + r"""Platform-generated request ID for support correlation.""" diff --git a/src/glean/api_client/models/platformskillsourceprovenance.py b/src/glean/api_client/models/platformskillsourceprovenance.py new file mode 100644 index 00000000..d1352b1f --- /dev/null +++ b/src/glean/api_client/models/platformskillsourceprovenance.py @@ -0,0 +1,79 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformskillsyncstatus import PlatformSkillSyncStatus +from datetime import datetime +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 Optional +from typing_extensions import NotRequired, TypedDict + + +class PlatformSkillSourceProvenanceTypedDict(TypedDict): + source_url: NotRequired[str] + r"""URL of the external source the skill was imported from.""" + commit_sha: NotRequired[str] + r"""Source commit SHA for the imported skill.""" + imported_at: NotRequired[datetime] + r"""Time the skill was imported.""" + last_synced_at: NotRequired[datetime] + r"""Time the skill was last synced from its source.""" + sync_status: NotRequired[PlatformSkillSyncStatus] + r"""Current external-source sync status.""" + sync_error: NotRequired[str] + r"""Human-readable sync failure reason, present only when sync_status is SYNC_FAILED.""" + + +class PlatformSkillSourceProvenance(BaseModel): + source_url: Optional[str] = None + r"""URL of the external source the skill was imported from.""" + + commit_sha: Optional[str] = None + r"""Source commit SHA for the imported skill.""" + + imported_at: Optional[datetime] = None + r"""Time the skill was imported.""" + + last_synced_at: Optional[datetime] = None + r"""Time the skill was last synced from its source.""" + + sync_status: Optional[PlatformSkillSyncStatus] = None + r"""Current external-source sync status.""" + + sync_error: Optional[str] = None + r"""Human-readable sync failure reason, present only when sync_status is SYNC_FAILED.""" + + @field_serializer("sync_status") + def serialize_sync_status(self, value): + if isinstance(value, str): + try: + return models.PlatformSkillSyncStatus(value) + except ValueError: + return value + return value + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "source_url", + "commit_sha", + "imported_at", + "last_synced_at", + "sync_status", + "sync_error", + ] + ) + 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/platformskillstatus.py b/src/glean/api_client/models/platformskillstatus.py new file mode 100644 index 00000000..d57185fb --- /dev/null +++ b/src/glean/api_client/models/platformskillstatus.py @@ -0,0 +1,13 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +from glean.api_client import utils + + +class PlatformSkillStatus(str, Enum, metaclass=utils.OpenEnumMeta): + r"""Current skill status.""" + + DRAFT = "DRAFT" + ENABLED = "ENABLED" + DISABLED = "DISABLED" diff --git a/src/glean/api_client/models/platformskillsyncresponse.py b/src/glean/api_client/models/platformskillsyncresponse.py new file mode 100644 index 00000000..731c531d --- /dev/null +++ b/src/glean/api_client/models/platformskillsyncresponse.py @@ -0,0 +1,31 @@ +"""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 + 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 + r"""Whether this request created a new skill version.""" + + request_id: str + r"""Platform-generated request ID for support correlation.""" diff --git a/src/glean/api_client/models/platformskillsyncresultstatus.py b/src/glean/api_client/models/platformskillsyncresultstatus.py new file mode 100644 index 00000000..b85415a1 --- /dev/null +++ b/src/glean/api_client/models/platformskillsyncresultstatus.py @@ -0,0 +1,10 @@ +"""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/platformskillsyncstatus.py b/src/glean/api_client/models/platformskillsyncstatus.py new file mode 100644 index 00000000..13fb6bcf --- /dev/null +++ b/src/glean/api_client/models/platformskillsyncstatus.py @@ -0,0 +1,13 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +from glean.api_client import utils + + +class PlatformSkillSyncStatus(str, Enum, metaclass=utils.OpenEnumMeta): + r"""Current external-source sync status.""" + + UP_TO_DATE = "UP_TO_DATE" + UPDATE_AVAILABLE = "UPDATE_AVAILABLE" + SYNC_FAILED = "SYNC_FAILED" diff --git a/src/glean/api_client/models/platformskillupdaterequest.py b/src/glean/api_client/models/platformskillupdaterequest.py new file mode 100644 index 00000000..0d87a591 --- /dev/null +++ b/src/glean/api_client/models/platformskillupdaterequest.py @@ -0,0 +1,16 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformskillupdatestatus import PlatformSkillUpdateStatus +from glean.api_client.types import BaseModel +from typing_extensions import TypedDict + + +class PlatformSkillUpdateRequestTypedDict(TypedDict): + status: PlatformSkillUpdateStatus + r"""New status for the skill.""" + + +class PlatformSkillUpdateRequest(BaseModel): + status: PlatformSkillUpdateStatus + r"""New status for the skill.""" diff --git a/src/glean/api_client/models/platformskillupdateresponse.py b/src/glean/api_client/models/platformskillupdateresponse.py new file mode 100644 index 00000000..b508a52f --- /dev/null +++ b/src/glean/api_client/models/platformskillupdateresponse.py @@ -0,0 +1,19 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformskill import PlatformSkill, PlatformSkillTypedDict +from glean.api_client.types import BaseModel +from typing_extensions import TypedDict + + +class PlatformSkillUpdateResponseTypedDict(TypedDict): + skill: PlatformSkillTypedDict + request_id: str + r"""Platform-generated request ID for support correlation.""" + + +class PlatformSkillUpdateResponse(BaseModel): + skill: PlatformSkill + + request_id: str + r"""Platform-generated request ID for support correlation.""" diff --git a/src/glean/api_client/models/platformskillupdatestatus.py b/src/glean/api_client/models/platformskillupdatestatus.py new file mode 100644 index 00000000..ede7b308 --- /dev/null +++ b/src/glean/api_client/models/platformskillupdatestatus.py @@ -0,0 +1,11 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum + + +class PlatformSkillUpdateStatus(str, Enum): + r"""New status for the skill.""" + + ENABLED = "ENABLED" + DISABLED = "DISABLED" diff --git a/src/glean/api_client/models/platformskillvalidationfile.py b/src/glean/api_client/models/platformskillvalidationfile.py new file mode 100644 index 00000000..803332c1 --- /dev/null +++ b/src/glean/api_client/models/platformskillvalidationfile.py @@ -0,0 +1,25 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel +from typing_extensions import TypedDict + + +class PlatformSkillValidationFileTypedDict(TypedDict): + path: str + r"""Normalized relative path in the skill bundle.""" + size_bytes: int + r"""File size in bytes.""" + is_manifest: bool + r"""Whether this file is the skill manifest.""" + + +class PlatformSkillValidationFile(BaseModel): + path: str + r"""Normalized relative path in the skill bundle.""" + + size_bytes: int + r"""File size in bytes.""" + + is_manifest: bool + r"""Whether this file is the skill manifest.""" diff --git a/src/glean/api_client/models/platformskillvalidationmetadata.py b/src/glean/api_client/models/platformskillvalidationmetadata.py new file mode 100644 index 00000000..33217062 --- /dev/null +++ b/src/glean/api_client/models/platformskillvalidationmetadata.py @@ -0,0 +1,20 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel +from typing_extensions import TypedDict + + +class PlatformSkillValidationMetadataTypedDict(TypedDict): + display_name: str + r"""Skill name parsed from SKILL.md frontmatter.""" + description: str + r"""Skill description parsed from SKILL.md frontmatter.""" + + +class PlatformSkillValidationMetadata(BaseModel): + display_name: str + r"""Skill name parsed from SKILL.md frontmatter.""" + + description: str + r"""Skill description parsed from SKILL.md frontmatter.""" diff --git a/src/glean/api_client/models/platformskillvalidationrequest.py b/src/glean/api_client/models/platformskillvalidationrequest.py new file mode 100644 index 00000000..d0a3a2b4 --- /dev/null +++ b/src/glean/api_client/models/platformskillvalidationrequest.py @@ -0,0 +1,63 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, MultipartFormMetadata +import io +import pydantic +from pydantic import model_serializer +from typing import IO, Optional, Union +from typing_extensions import Annotated, NotRequired, TypedDict + + +class PlatformSkillValidationRequestFileTypedDict(TypedDict): + file_name: str + content: Union[bytes, IO[bytes], io.IOBase] + content_type: NotRequired[str] + + +class PlatformSkillValidationRequestFile(BaseModel): + file_name: Annotated[ + str, pydantic.Field(alias="fileName"), FieldMetadata(multipart=True) + ] + + content: Annotated[ + Union[bytes, IO[bytes], io.IOBase], + pydantic.Field(alias=""), + FieldMetadata(multipart=MultipartFormMetadata(content=True)), + ] + + content_type: Annotated[ + Optional[str], + pydantic.Field(alias="Content-Type"), + FieldMetadata(multipart=True), + ] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["contentType"]) + 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 + + +class PlatformSkillValidationRequestTypedDict(TypedDict): + file: PlatformSkillValidationRequestFileTypedDict + r"""SKILL.md, .zip, or .skill bundle to validate.""" + + +class PlatformSkillValidationRequest(BaseModel): + file: Annotated[ + PlatformSkillValidationRequestFile, + FieldMetadata(multipart=MultipartFormMetadata(file=True)), + ] + r"""SKILL.md, .zip, or .skill bundle to validate.""" diff --git a/src/glean/api_client/models/platformskillvalidationresponse.py b/src/glean/api_client/models/platformskillvalidationresponse.py new file mode 100644 index 00000000..76af1575 --- /dev/null +++ b/src/glean/api_client/models/platformskillvalidationresponse.py @@ -0,0 +1,38 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformskillvalidationfile import ( + PlatformSkillValidationFile, + PlatformSkillValidationFileTypedDict, +) +from .platformskillvalidationmetadata import ( + PlatformSkillValidationMetadata, + PlatformSkillValidationMetadataTypedDict, +) +from .platformwarning import PlatformWarning, PlatformWarningTypedDict +from glean.api_client.types import BaseModel +from typing import List +from typing_extensions import TypedDict + + +class PlatformSkillValidationResponseTypedDict(TypedDict): + metadata: PlatformSkillValidationMetadataTypedDict + files: List[PlatformSkillValidationFileTypedDict] + r"""Normalized files in the bundle after stripping an optional single root folder.""" + warnings: List[PlatformWarningTypedDict] + r"""Non-blocking validation warnings.""" + request_id: str + r"""Platform-generated request ID for support correlation.""" + + +class PlatformSkillValidationResponse(BaseModel): + metadata: PlatformSkillValidationMetadata + + files: List[PlatformSkillValidationFile] + r"""Normalized files in the bundle after stripping an optional single root folder.""" + + warnings: List[PlatformWarning] + r"""Non-blocking validation warnings.""" + + request_id: str + r"""Platform-generated request ID for support correlation.""" diff --git a/src/glean/api_client/models/platformskillversion.py b/src/glean/api_client/models/platformskillversion.py new file mode 100644 index 00000000..44bae125 --- /dev/null +++ b/src/glean/api_client/models/platformskillversion.py @@ -0,0 +1,75 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformpersonreference import ( + PlatformPersonReference, + PlatformPersonReferenceTypedDict, +) +from .platformskillsourceprovenance import ( + PlatformSkillSourceProvenance, + PlatformSkillSourceProvenanceTypedDict, +) +from datetime import datetime +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer +from typing import Optional +from typing_extensions import NotRequired, TypedDict + + +class PlatformSkillVersionTypedDict(TypedDict): + skill_id: str + r"""Glean skill ID.""" + version: int + r"""Major version number.""" + minor_version: int + r"""Minor version number.""" + is_latest: bool + r"""Whether this is the latest version of the skill.""" + created_by: PlatformPersonReferenceTypedDict + r"""A lightweight reference to a person, used where a payload merely points at someone.""" + created_at: datetime + r"""Time this version was created.""" + updated_at: datetime + r"""Time this version was last updated.""" + source_provenance: NotRequired[PlatformSkillSourceProvenanceTypedDict] + + +class PlatformSkillVersion(BaseModel): + skill_id: str + r"""Glean skill ID.""" + + version: int + r"""Major version number.""" + + minor_version: int + r"""Minor version number.""" + + is_latest: bool + r"""Whether this is the latest version of the skill.""" + + created_by: PlatformPersonReference + r"""A lightweight reference to a person, used where a payload merely points at someone.""" + + created_at: datetime + r"""Time this version was created.""" + + updated_at: datetime + r"""Time this version was last updated.""" + + source_provenance: Optional[PlatformSkillSourceProvenance] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["source_provenance"]) + 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/platformskillversioncreaterequest.py b/src/glean/api_client/models/platformskillversioncreaterequest.py new file mode 100644 index 00000000..dc1d6f9e --- /dev/null +++ b/src/glean/api_client/models/platformskillversioncreaterequest.py @@ -0,0 +1,63 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, MultipartFormMetadata +import io +import pydantic +from pydantic import model_serializer +from typing import IO, Optional, Union +from typing_extensions import Annotated, NotRequired, TypedDict + + +class PlatformSkillVersionCreateRequestFileTypedDict(TypedDict): + file_name: str + content: Union[bytes, IO[bytes], io.IOBase] + content_type: NotRequired[str] + + +class PlatformSkillVersionCreateRequestFile(BaseModel): + file_name: Annotated[ + str, pydantic.Field(alias="fileName"), FieldMetadata(multipart=True) + ] + + content: Annotated[ + Union[bytes, IO[bytes], io.IOBase], + pydantic.Field(alias=""), + FieldMetadata(multipart=MultipartFormMetadata(content=True)), + ] + + content_type: Annotated[ + Optional[str], + pydantic.Field(alias="Content-Type"), + FieldMetadata(multipart=True), + ] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["contentType"]) + 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 + + +class PlatformSkillVersionCreateRequestTypedDict(TypedDict): + file: PlatformSkillVersionCreateRequestFileTypedDict + r"""SKILL.md, .zip, or .skill bundle to store as a new version.""" + + +class PlatformSkillVersionCreateRequest(BaseModel): + file: Annotated[ + PlatformSkillVersionCreateRequestFile, + FieldMetadata(multipart=MultipartFormMetadata(file=True)), + ] + r"""SKILL.md, .zip, or .skill bundle to store as a new version.""" diff --git a/src/glean/api_client/models/platformskillversioncreateresponse.py b/src/glean/api_client/models/platformskillversioncreateresponse.py new file mode 100644 index 00000000..65fdfc4a --- /dev/null +++ b/src/glean/api_client/models/platformskillversioncreateresponse.py @@ -0,0 +1,19 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformskillversion import PlatformSkillVersion, PlatformSkillVersionTypedDict +from glean.api_client.types import BaseModel +from typing_extensions import TypedDict + + +class PlatformSkillVersionCreateResponseTypedDict(TypedDict): + version: PlatformSkillVersionTypedDict + request_id: str + r"""Platform-generated request ID for support correlation.""" + + +class PlatformSkillVersionCreateResponse(BaseModel): + version: PlatformSkillVersion + + request_id: str + r"""Platform-generated request ID for support correlation.""" diff --git a/src/glean/api_client/models/platformskillversiongetresponse.py b/src/glean/api_client/models/platformskillversiongetresponse.py new file mode 100644 index 00000000..828ce545 --- /dev/null +++ b/src/glean/api_client/models/platformskillversiongetresponse.py @@ -0,0 +1,19 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformskillversion import PlatformSkillVersion, PlatformSkillVersionTypedDict +from glean.api_client.types import BaseModel +from typing_extensions import TypedDict + + +class PlatformSkillVersionGetResponseTypedDict(TypedDict): + version: PlatformSkillVersionTypedDict + request_id: str + r"""Platform-generated request ID for support correlation.""" + + +class PlatformSkillVersionGetResponse(BaseModel): + version: PlatformSkillVersion + + request_id: str + r"""Platform-generated request ID for support correlation.""" diff --git a/src/glean/api_client/models/platformskillversionslistresponse.py b/src/glean/api_client/models/platformskillversionslistresponse.py new file mode 100644 index 00000000..2ae04090 --- /dev/null +++ b/src/glean/api_client/models/platformskillversionslistresponse.py @@ -0,0 +1,47 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformskillversion import PlatformSkillVersion, PlatformSkillVersionTypedDict +from glean.api_client.types import BaseModel, Nullable, UNSET_SENTINEL +from pydantic import model_serializer +from typing import List +from typing_extensions import TypedDict + + +class PlatformSkillVersionsListResponseTypedDict(TypedDict): + versions: List[PlatformSkillVersionTypedDict] + r"""Versions available for the skill.""" + has_more: bool + r"""Whether additional results are available.""" + next_cursor: Nullable[str] + r"""Cursor for the next page, or null when no more results are available.""" + request_id: str + r"""Platform-generated request ID for support correlation.""" + + +class PlatformSkillVersionsListResponse(BaseModel): + versions: List[PlatformSkillVersion] + r"""Versions available for the skill.""" + + has_more: bool + r"""Whether additional results are available.""" + + next_cursor: Nullable[str] + r"""Cursor for the next page, or null when no more results are available.""" + + request_id: str + r"""Platform-generated request ID for support correlation.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + 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: + m[k] = val + + return m diff --git a/src/glean/api_client/models/platformtimerange.py b/src/glean/api_client/models/platformtimerange.py new file mode 100644 index 00000000..0a5acb2a --- /dev/null +++ b/src/glean/api_client/models/platformtimerange.py @@ -0,0 +1,43 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from datetime import datetime +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer +from typing import Optional +from typing_extensions import NotRequired, TypedDict + + +class PlatformTimeRangeTypedDict(TypedDict): + r"""Filter results to those last updated within this range.""" + + start: NotRequired[datetime] + r"""Inclusive lower bound in ISO 8601 format.""" + end: NotRequired[datetime] + r"""Exclusive upper bound in ISO 8601 format.""" + + +class PlatformTimeRange(BaseModel): + r"""Filter results to those last updated within this range.""" + + start: Optional[datetime] = None + r"""Inclusive lower bound in ISO 8601 format.""" + + end: Optional[datetime] = None + r"""Exclusive upper bound in ISO 8601 format.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["start", "end"]) + 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/platformtrigger.py b/src/glean/api_client/models/platformtrigger.py new file mode 100644 index 00000000..c3542359 --- /dev/null +++ b/src/glean/api_client/models/platformtrigger.py @@ -0,0 +1,82 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformtriggerdelivery_output import ( + PlatformTriggerDeliveryOutput, + PlatformTriggerDeliveryOutputTypedDict, +) +from .platformtriggerstatus import PlatformTriggerStatus +from datetime import datetime +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 Any, Dict, Optional +from typing_extensions import NotRequired, TypedDict + + +class PlatformTriggerTypedDict(TypedDict): + trigger_id: str + r"""ID of the trigger.""" + preset_id: str + r"""ID of the preset this trigger was created from.""" + status: PlatformTriggerStatus + r"""Current trigger lifecycle state.""" + delivery: PlatformTriggerDeliveryOutputTypedDict + created_at: datetime + r"""Time the trigger was created.""" + updated_at: datetime + r"""Time the trigger was last updated.""" + description: NotRequired[str] + r"""Optional caller-supplied note describing this trigger.""" + inputs: NotRequired[Dict[str, Any]] + r"""Values supplied for the preset's inputs.""" + + +class PlatformTrigger(BaseModel): + trigger_id: str + r"""ID of the trigger.""" + + preset_id: str + r"""ID of the preset this trigger was created from.""" + + status: PlatformTriggerStatus + r"""Current trigger lifecycle state.""" + + delivery: PlatformTriggerDeliveryOutput + + created_at: datetime + r"""Time the trigger was created.""" + + updated_at: datetime + r"""Time the trigger was last updated.""" + + description: Optional[str] = None + r"""Optional caller-supplied note describing this trigger.""" + + inputs: Optional[Dict[str, Any]] = None + r"""Values supplied for the preset's inputs.""" + + @field_serializer("status") + def serialize_status(self, value): + if isinstance(value, str): + try: + return models.PlatformTriggerStatus(value) + except ValueError: + return value + return value + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["description", "inputs"]) + 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/platformtriggerauth_output.py b/src/glean/api_client/models/platformtriggerauth_output.py new file mode 100644 index 00000000..0288980e --- /dev/null +++ b/src/glean/api_client/models/platformtriggerauth_output.py @@ -0,0 +1,45 @@ +"""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 PlatformTriggerAuthType(str, Enum): + r"""Credential scheme.""" + + BEARER = "BEARER" + + +class PlatformTriggerAuthOutputTypedDict(TypedDict): + r"""Optional caller credential sent as an HTTP auth header on each delivery, in addition to the HMAC signature. Lets the receiving endpoint authenticate the request. On update, omit `auth` to preserve the existing credential; there is no in-place removal — recreate the trigger to remove auth.""" + + type: PlatformTriggerAuthType + r"""Credential scheme.""" + + +class PlatformTriggerAuthOutput(BaseModel): + r"""Optional caller credential sent as an HTTP auth header on each delivery, in addition to the HMAC signature. Lets the receiving endpoint authenticate the request. On update, omit `auth` to preserve the existing credential; there is no in-place removal — recreate the trigger to remove auth.""" + + type: PlatformTriggerAuthType + r"""Credential scheme.""" + + +class PlatformTriggerAuthTypedDict(TypedDict): + r"""Optional caller credential sent as an HTTP auth header on each delivery, in addition to the HMAC signature. Lets the receiving endpoint authenticate the request. On update, omit `auth` to preserve the existing credential; there is no in-place removal — recreate the trigger to remove auth.""" + + type: PlatformTriggerAuthType + r"""Credential scheme.""" + secret: str + r"""Secret credential value. Write-only; never returned on reads.""" + + +class PlatformTriggerAuth(BaseModel): + r"""Optional caller credential sent as an HTTP auth header on each delivery, in addition to the HMAC signature. Lets the receiving endpoint authenticate the request. On update, omit `auth` to preserve the existing credential; there is no in-place removal — recreate the trigger to remove auth.""" + + type: PlatformTriggerAuthType + r"""Credential scheme.""" + + secret: str + r"""Secret credential value. Write-only; never returned on reads.""" diff --git a/src/glean/api_client/models/platformtriggercreaterequest.py b/src/glean/api_client/models/platformtriggercreaterequest.py new file mode 100644 index 00000000..d70686f2 --- /dev/null +++ b/src/glean/api_client/models/platformtriggercreaterequest.py @@ -0,0 +1,50 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformtriggerdelivery import ( + PlatformTriggerDelivery, + PlatformTriggerDeliveryTypedDict, +) +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer +from typing import Any, Dict, Optional +from typing_extensions import NotRequired, TypedDict + + +class PlatformTriggerCreateRequestTypedDict(TypedDict): + preset_id: str + r"""ID of the preset to instantiate.""" + delivery: PlatformTriggerDeliveryTypedDict + description: NotRequired[str] + r"""Optional note describing this trigger.""" + inputs: NotRequired[Dict[str, Any]] + r"""Values for the preset's inputs.""" + + +class PlatformTriggerCreateRequest(BaseModel): + preset_id: str + r"""ID of the preset to instantiate.""" + + delivery: PlatformTriggerDelivery + + description: Optional[str] = None + r"""Optional note describing this trigger.""" + + inputs: Optional[Dict[str, Any]] = None + r"""Values for the preset's inputs.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["description", "inputs"]) + 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/platformtriggercreateresponse.py b/src/glean/api_client/models/platformtriggercreateresponse.py new file mode 100644 index 00000000..f0f1a850 --- /dev/null +++ b/src/glean/api_client/models/platformtriggercreateresponse.py @@ -0,0 +1,22 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformtriggerwithsecret import ( + PlatformTriggerWithSecret, + PlatformTriggerWithSecretTypedDict, +) +from glean.api_client.types import BaseModel +from typing_extensions import TypedDict + + +class PlatformTriggerCreateResponseTypedDict(TypedDict): + trigger: PlatformTriggerWithSecretTypedDict + request_id: str + r"""Platform-generated request ID for support correlation.""" + + +class PlatformTriggerCreateResponse(BaseModel): + trigger: PlatformTriggerWithSecret + + request_id: str + r"""Platform-generated request ID for support correlation.""" diff --git a/src/glean/api_client/models/platformtriggerdelivery.py b/src/glean/api_client/models/platformtriggerdelivery.py new file mode 100644 index 00000000..84e4fb28 --- /dev/null +++ b/src/glean/api_client/models/platformtriggerdelivery.py @@ -0,0 +1,42 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformtriggerauth_output import ( + PlatformTriggerAuth, + PlatformTriggerAuthTypedDict, +) +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer +from typing import Optional +from typing_extensions import NotRequired, TypedDict + + +class PlatformTriggerDeliveryTypedDict(TypedDict): + webhook_url: str + r"""HTTPS URL that signed events are delivered to.""" + auth: NotRequired[PlatformTriggerAuthTypedDict] + r"""Optional caller credential sent as an HTTP auth header on each delivery, in addition to the HMAC signature. Lets the receiving endpoint authenticate the request. On update, omit `auth` to preserve the existing credential; there is no in-place removal — recreate the trigger to remove auth.""" + + +class PlatformTriggerDelivery(BaseModel): + webhook_url: str + r"""HTTPS URL that signed events are delivered to.""" + + auth: Optional[PlatformTriggerAuth] = None + r"""Optional caller credential sent as an HTTP auth header on each delivery, in addition to the HMAC signature. Lets the receiving endpoint authenticate the request. On update, omit `auth` to preserve the existing credential; there is no in-place removal — recreate the trigger to remove auth.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["auth"]) + 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/platformtriggerdelivery_output.py b/src/glean/api_client/models/platformtriggerdelivery_output.py new file mode 100644 index 00000000..5ba108c1 --- /dev/null +++ b/src/glean/api_client/models/platformtriggerdelivery_output.py @@ -0,0 +1,42 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformtriggerauth_output import ( + PlatformTriggerAuthOutput, + PlatformTriggerAuthOutputTypedDict, +) +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer +from typing import Optional +from typing_extensions import NotRequired, TypedDict + + +class PlatformTriggerDeliveryOutputTypedDict(TypedDict): + webhook_url: str + r"""HTTPS URL that signed events are delivered to.""" + auth: NotRequired[PlatformTriggerAuthOutputTypedDict] + r"""Optional caller credential sent as an HTTP auth header on each delivery, in addition to the HMAC signature. Lets the receiving endpoint authenticate the request. On update, omit `auth` to preserve the existing credential; there is no in-place removal — recreate the trigger to remove auth.""" + + +class PlatformTriggerDeliveryOutput(BaseModel): + webhook_url: str + r"""HTTPS URL that signed events are delivered to.""" + + auth: Optional[PlatformTriggerAuthOutput] = None + r"""Optional caller credential sent as an HTTP auth header on each delivery, in addition to the HMAC signature. Lets the receiving endpoint authenticate the request. On update, omit `auth` to preserve the existing credential; there is no in-place removal — recreate the trigger to remove auth.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["auth"]) + 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/platformtriggerevent.py b/src/glean/api_client/models/platformtriggerevent.py new file mode 100644 index 00000000..816d5bab --- /dev/null +++ b/src/glean/api_client/models/platformtriggerevent.py @@ -0,0 +1,68 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformtriggereventreason import PlatformTriggerEventReason +from .platformtriggereventtype import PlatformTriggerEventType +from datetime import datetime +from glean.api_client import models +from glean.api_client.types import BaseModel +from pydantic import field_serializer +from typing_extensions import TypedDict + + +class PlatformTriggerEventTypedDict(TypedDict): + r"""A content event a trigger can fire on.""" + + event_type: PlatformTriggerEventType + r"""The kind of event.""" + datasource: str + r"""Datasource the event originated from.""" + reason: PlatformTriggerEventReason + r"""Why the event fired.""" + doc_type: str + r"""Datasource-specific object type.""" + doc_id: str + r"""Identifier of the document the event is about.""" + view_url: str + r"""Link to the document in its source system.""" + title: str + r"""Title of the document, or the subject for email.""" + event_time: datetime + r"""When the event happened at the source: the document's own change timestamp for a document change, and the scheduled time for a content schedule. Omitted when the source did not supply one.""" + + +class PlatformTriggerEvent(BaseModel): + r"""A content event a trigger can fire on.""" + + event_type: PlatformTriggerEventType + r"""The kind of event.""" + + datasource: str + r"""Datasource the event originated from.""" + + reason: PlatformTriggerEventReason + r"""Why the event fired.""" + + doc_type: str + r"""Datasource-specific object type.""" + + doc_id: str + r"""Identifier of the document the event is about.""" + + view_url: str + r"""Link to the document in its source system.""" + + title: str + r"""Title of the document, or the subject for email.""" + + event_time: datetime + r"""When the event happened at the source: the document's own change timestamp for a document change, and the scheduled time for a content schedule. Omitted when the source did not supply one.""" + + @field_serializer("reason") + def serialize_reason(self, value): + if isinstance(value, str): + try: + return models.PlatformTriggerEventReason(value) + except ValueError: + return value + return value diff --git a/src/glean/api_client/models/platformtriggereventreason.py b/src/glean/api_client/models/platformtriggereventreason.py new file mode 100644 index 00000000..984437d8 --- /dev/null +++ b/src/glean/api_client/models/platformtriggereventreason.py @@ -0,0 +1,36 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +from glean.api_client import utils + + +class PlatformTriggerEventReason(str, Enum, metaclass=utils.OpenEnumMeta): + r"""Why the event fired.""" + + # The document was created. + CREATED = "CREATED" + # The document was updated. + UPDATED = "UPDATED" + # The document was deleted. + DELETED = "DELETED" + # The document started matching the trigger's conditions. + MEETS_CONDITION = "MEETS_CONDITION" + # The item was assigned to someone. + ASSIGNED = "ASSIGNED" + # The item was unassigned. + UNASSIGNED = "UNASSIGNED" + # A label was added. + LABELED = "LABELED" + # A label was removed. + UNLABELED = "UNLABELED" + # A review was requested. + REVIEW_REQUESTED = "REVIEW_REQUESTED" + # A review request was withdrawn. + REVIEW_REQUEST_REMOVED = "REVIEW_REQUEST_REMOVED" + # A draft was marked ready for review. + READY_FOR_REVIEW = "READY_FOR_REVIEW" + # The item was converted back to a draft. + CONVERTED_TO_DRAFT = "CONVERTED_TO_DRAFT" + # The source system sent a webhook update. + WEBHOOK_UPDATED = "WEBHOOK_UPDATED" diff --git a/src/glean/api_client/models/platformtriggereventsearchrequest.py b/src/glean/api_client/models/platformtriggereventsearchrequest.py new file mode 100644 index 00000000..a8f990c2 --- /dev/null +++ b/src/glean/api_client/models/platformtriggereventsearchrequest.py @@ -0,0 +1,33 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer +from typing import Optional +from typing_extensions import NotRequired, TypedDict + + +class PlatformTriggerEventSearchRequestTypedDict(TypedDict): + page_size: NotRequired[int] + r"""Maximum number of events to return.""" + + +class PlatformTriggerEventSearchRequest(BaseModel): + page_size: Optional[int] = 10 + r"""Maximum number of events to return.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["page_size"]) + 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/platformtriggereventsearchresponse.py b/src/glean/api_client/models/platformtriggereventsearchresponse.py new file mode 100644 index 00000000..11179d5b --- /dev/null +++ b/src/glean/api_client/models/platformtriggereventsearchresponse.py @@ -0,0 +1,31 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformtriggerevent import PlatformTriggerEvent, PlatformTriggerEventTypedDict +from glean.api_client.types import BaseModel +from typing import List +from typing_extensions import TypedDict + + +class PlatformTriggerEventSearchResponseTypedDict(TypedDict): + results: List[PlatformTriggerEventTypedDict] + r"""Matching events, most recent first.""" + has_more: bool + r"""Whether more events matched than were returned. Raise `page_size` to see more; cursor-based paging is not offered yet. + + """ + request_id: str + r"""Unique identifier for this request, for support and debugging.""" + + +class PlatformTriggerEventSearchResponse(BaseModel): + results: List[PlatformTriggerEvent] + r"""Matching events, most recent first.""" + + has_more: bool + r"""Whether more events matched than were returned. Raise `page_size` to see more; cursor-based paging is not offered yet. + + """ + + request_id: str + r"""Unique identifier for this request, for support and debugging.""" diff --git a/src/glean/api_client/models/platformtriggereventtype.py b/src/glean/api_client/models/platformtriggereventtype.py new file mode 100644 index 00000000..cef1d084 --- /dev/null +++ b/src/glean/api_client/models/platformtriggereventtype.py @@ -0,0 +1,11 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum + + +class PlatformTriggerEventType(str, Enum): + r"""The kind of event.""" + + # A document was created, updated, or deleted. + DOCUMENT_CHANGE = "DOCUMENT_CHANGE" diff --git a/src/glean/api_client/models/platformtriggergetresponse.py b/src/glean/api_client/models/platformtriggergetresponse.py new file mode 100644 index 00000000..ca171e8d --- /dev/null +++ b/src/glean/api_client/models/platformtriggergetresponse.py @@ -0,0 +1,19 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformtrigger import PlatformTrigger, PlatformTriggerTypedDict +from glean.api_client.types import BaseModel +from typing_extensions import TypedDict + + +class PlatformTriggerGetResponseTypedDict(TypedDict): + trigger: PlatformTriggerTypedDict + request_id: str + r"""Platform-generated request ID for support correlation.""" + + +class PlatformTriggerGetResponse(BaseModel): + trigger: PlatformTrigger + + request_id: str + r"""Platform-generated request ID for support correlation.""" diff --git a/src/glean/api_client/models/platformtriggerlistresponse.py b/src/glean/api_client/models/platformtriggerlistresponse.py new file mode 100644 index 00000000..16bdf27f --- /dev/null +++ b/src/glean/api_client/models/platformtriggerlistresponse.py @@ -0,0 +1,47 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformtrigger import PlatformTrigger, PlatformTriggerTypedDict +from glean.api_client.types import BaseModel, Nullable, UNSET_SENTINEL +from pydantic import model_serializer +from typing import List +from typing_extensions import TypedDict + + +class PlatformTriggerListResponseTypedDict(TypedDict): + results: List[PlatformTriggerTypedDict] + r"""Triggers owned by the caller.""" + has_more: bool + r"""Whether additional results are available.""" + next_cursor: Nullable[str] + r"""Cursor for the next page, or null when no more results are available.""" + request_id: str + r"""Platform-generated request ID for support correlation.""" + + +class PlatformTriggerListResponse(BaseModel): + results: List[PlatformTrigger] + r"""Triggers owned by the caller.""" + + has_more: bool + r"""Whether additional results are available.""" + + next_cursor: Nullable[str] + r"""Cursor for the next page, or null when no more results are available.""" + + request_id: str + r"""Platform-generated request ID for support correlation.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + 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: + m[k] = val + + return m diff --git a/src/glean/api_client/models/platformtriggerpreset.py b/src/glean/api_client/models/platformtriggerpreset.py new file mode 100644 index 00000000..a7c372a8 --- /dev/null +++ b/src/glean/api_client/models/platformtriggerpreset.py @@ -0,0 +1,57 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformtriggerpresetinput import ( + PlatformTriggerPresetInput, + PlatformTriggerPresetInputTypedDict, +) +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 PlatformTriggerPresetTypedDict(TypedDict): + preset_id: str + r"""ID of the preset. Pass this when creating a trigger.""" + datasource: str + r"""Datasource the preset fires on.""" + display_name: str + r"""Human-readable preset name.""" + inputs: List[PlatformTriggerPresetInputTypedDict] + r"""Inputs the caller may supply when creating a trigger from this preset.""" + description: NotRequired[str] + r"""Human-readable description of when the preset fires.""" + + +class PlatformTriggerPreset(BaseModel): + preset_id: str + r"""ID of the preset. Pass this when creating a trigger.""" + + datasource: str + r"""Datasource the preset fires on.""" + + display_name: str + r"""Human-readable preset name.""" + + inputs: List[PlatformTriggerPresetInput] + r"""Inputs the caller may supply when creating a trigger from this preset.""" + + description: Optional[str] = None + r"""Human-readable description of when the preset fires.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["description"]) + 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/platformtriggerpreseteventsearchrequest.py b/src/glean/api_client/models/platformtriggerpreseteventsearchrequest.py new file mode 100644 index 00000000..ac214e06 --- /dev/null +++ b/src/glean/api_client/models/platformtriggerpreseteventsearchrequest.py @@ -0,0 +1,42 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer +from typing import Dict, Optional +from typing_extensions import NotRequired, TypedDict + + +class PlatformTriggerPresetEventSearchRequestTypedDict(TypedDict): + inputs: NotRequired[Dict[str, str]] + r"""Values for the preset's input fields, keyed by field name. + + """ + page_size: NotRequired[int] + r"""Maximum number of events to return.""" + + +class PlatformTriggerPresetEventSearchRequest(BaseModel): + inputs: Optional[Dict[str, str]] = None + r"""Values for the preset's input fields, keyed by field name. + + """ + + page_size: Optional[int] = 10 + r"""Maximum number of events to return.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["inputs", "page_size"]) + 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/platformtriggerpresetgetresponse.py b/src/glean/api_client/models/platformtriggerpresetgetresponse.py new file mode 100644 index 00000000..a5b185f3 --- /dev/null +++ b/src/glean/api_client/models/platformtriggerpresetgetresponse.py @@ -0,0 +1,19 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformtriggerpreset import PlatformTriggerPreset, PlatformTriggerPresetTypedDict +from glean.api_client.types import BaseModel +from typing_extensions import TypedDict + + +class PlatformTriggerPresetGetResponseTypedDict(TypedDict): + trigger_preset: PlatformTriggerPresetTypedDict + request_id: str + r"""Platform-generated request ID for support correlation.""" + + +class PlatformTriggerPresetGetResponse(BaseModel): + trigger_preset: PlatformTriggerPreset + + request_id: str + r"""Platform-generated request ID for support correlation.""" diff --git a/src/glean/api_client/models/platformtriggerpresetinput.py b/src/glean/api_client/models/platformtriggerpresetinput.py new file mode 100644 index 00000000..ebe2f224 --- /dev/null +++ b/src/glean/api_client/models/platformtriggerpresetinput.py @@ -0,0 +1,81 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformtriggerpresetinputtype import PlatformTriggerPresetInputType +from .platformtriggerpresetinputvalue import ( + PlatformTriggerPresetInputValue, + PlatformTriggerPresetInputValueTypedDict, +) +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 PlatformTriggerPresetInputTypedDict(TypedDict): + field: str + r"""Identifier of the input, supplied as a key in the trigger's `inputs`.""" + type: PlatformTriggerPresetInputType + r"""Type of a preset input.""" + display_name: str + r"""Human-readable name for the input.""" + is_required: bool + r"""Whether the caller must supply a value for this input.""" + values: NotRequired[List[PlatformTriggerPresetInputValueTypedDict]] + r"""Bounded initial set of selectable values for a picklist input. Omitted entirely for free-text inputs. + + """ + is_truncated: NotRequired[bool] + r"""Whether additional selectable values were omitted from `values`. When true, use GET /trigger-presets/{preset_id}/input-values with a query to narrow the result set. + + """ + + +class PlatformTriggerPresetInput(BaseModel): + field: str + r"""Identifier of the input, supplied as a key in the trigger's `inputs`.""" + + type: PlatformTriggerPresetInputType + r"""Type of a preset input.""" + + display_name: str + r"""Human-readable name for the input.""" + + is_required: bool + r"""Whether the caller must supply a value for this input.""" + + values: Optional[List[PlatformTriggerPresetInputValue]] = None + r"""Bounded initial set of selectable values for a picklist input. Omitted entirely for free-text inputs. + + """ + + is_truncated: Optional[bool] = None + r"""Whether additional selectable values were omitted from `values`. When true, use GET /trigger-presets/{preset_id}/input-values with a query to narrow the result set. + + """ + + @field_serializer("type") + def serialize_type(self, value): + if isinstance(value, str): + try: + return models.PlatformTriggerPresetInputType(value) + except ValueError: + return value + return value + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["values", "is_truncated"]) + 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/platformtriggerpresetinputtype.py b/src/glean/api_client/models/platformtriggerpresetinputtype.py new file mode 100644 index 00000000..2697c7d5 --- /dev/null +++ b/src/glean/api_client/models/platformtriggerpresetinputtype.py @@ -0,0 +1,13 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +from glean.api_client import utils + + +class PlatformTriggerPresetInputType(str, Enum, metaclass=utils.OpenEnumMeta): + r"""Type of a preset input.""" + + PICKLIST = "PICKLIST" + TEXT = "TEXT" + USER = "USER" diff --git a/src/glean/api_client/models/platformtriggerpresetinputvalue.py b/src/glean/api_client/models/platformtriggerpresetinputvalue.py new file mode 100644 index 00000000..0e3bedde --- /dev/null +++ b/src/glean/api_client/models/platformtriggerpresetinputvalue.py @@ -0,0 +1,24 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel +from typing_extensions import TypedDict + + +class PlatformTriggerPresetInputValueTypedDict(TypedDict): + value: str + r"""The exact value to send in the trigger's `inputs` for this choice (e.g. a channel name, a user's email, etc). + + """ + display_name: str + r"""Human-readable name for this value.""" + + +class PlatformTriggerPresetInputValue(BaseModel): + value: str + r"""The exact value to send in the trigger's `inputs` for this choice (e.g. a channel name, a user's email, etc). + + """ + + display_name: str + r"""Human-readable name for this value.""" diff --git a/src/glean/api_client/models/platformtriggerpresetinputvaluelistresponse.py b/src/glean/api_client/models/platformtriggerpresetinputvaluelistresponse.py new file mode 100644 index 00000000..d3a2336f --- /dev/null +++ b/src/glean/api_client/models/platformtriggerpresetinputvaluelistresponse.py @@ -0,0 +1,34 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformtriggerpresetinputvalue import ( + PlatformTriggerPresetInputValue, + PlatformTriggerPresetInputValueTypedDict, +) +from glean.api_client.types import BaseModel +from typing import List +from typing_extensions import TypedDict + + +class PlatformTriggerPresetInputValueListResponseTypedDict(TypedDict): + results: List[PlatformTriggerPresetInputValueTypedDict] + r"""The bounded set of selectable values matching the query.""" + is_truncated: bool + r"""Whether additional matches were omitted. When true, refine `query` to narrow the result set. + + """ + request_id: str + r"""Platform-generated request ID for support correlation.""" + + +class PlatformTriggerPresetInputValueListResponse(BaseModel): + results: List[PlatformTriggerPresetInputValue] + r"""The bounded set of selectable values matching the query.""" + + is_truncated: bool + r"""Whether additional matches were omitted. When true, refine `query` to narrow the result set. + + """ + + request_id: str + r"""Platform-generated request ID for support correlation.""" diff --git a/src/glean/api_client/models/platformtriggerpresetlistresponse.py b/src/glean/api_client/models/platformtriggerpresetlistresponse.py new file mode 100644 index 00000000..60c4d72b --- /dev/null +++ b/src/glean/api_client/models/platformtriggerpresetlistresponse.py @@ -0,0 +1,50 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformtriggerpresetsummary import ( + PlatformTriggerPresetSummary, + PlatformTriggerPresetSummaryTypedDict, +) +from glean.api_client.types import BaseModel, Nullable, UNSET_SENTINEL +from pydantic import model_serializer +from typing import List +from typing_extensions import TypedDict + + +class PlatformTriggerPresetListResponseTypedDict(TypedDict): + results: List[PlatformTriggerPresetSummaryTypedDict] + r"""Trigger presets available to the caller.""" + has_more: bool + r"""Whether additional results are available.""" + next_cursor: Nullable[str] + r"""Cursor for the next page, or null when no more results are available.""" + request_id: str + r"""Platform-generated request ID for support correlation.""" + + +class PlatformTriggerPresetListResponse(BaseModel): + results: List[PlatformTriggerPresetSummary] + r"""Trigger presets available to the caller.""" + + has_more: bool + r"""Whether additional results are available.""" + + next_cursor: Nullable[str] + r"""Cursor for the next page, or null when no more results are available.""" + + request_id: str + r"""Platform-generated request ID for support correlation.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + 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: + m[k] = val + + return m diff --git a/src/glean/api_client/models/platformtriggerpresetsummary.py b/src/glean/api_client/models/platformtriggerpresetsummary.py new file mode 100644 index 00000000..64917154 --- /dev/null +++ b/src/glean/api_client/models/platformtriggerpresetsummary.py @@ -0,0 +1,48 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer +from typing import Optional +from typing_extensions import NotRequired, TypedDict + + +class PlatformTriggerPresetSummaryTypedDict(TypedDict): + preset_id: str + r"""ID of the preset. Pass this when creating a trigger.""" + datasource: str + r"""Datasource the preset fires on.""" + display_name: str + r"""Human-readable preset name.""" + description: NotRequired[str] + r"""Human-readable description of when the preset fires.""" + + +class PlatformTriggerPresetSummary(BaseModel): + preset_id: str + r"""ID of the preset. Pass this when creating a trigger.""" + + datasource: str + r"""Datasource the preset fires on.""" + + display_name: str + r"""Human-readable preset name.""" + + description: Optional[str] = None + r"""Human-readable description of when the preset fires.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["description"]) + 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/platformtriggerstatus.py b/src/glean/api_client/models/platformtriggerstatus.py new file mode 100644 index 00000000..0c789c9a --- /dev/null +++ b/src/glean/api_client/models/platformtriggerstatus.py @@ -0,0 +1,12 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +from glean.api_client import utils + + +class PlatformTriggerStatus(str, Enum, metaclass=utils.OpenEnumMeta): + r"""Current trigger lifecycle state.""" + + ENABLED = "ENABLED" + DISABLED = "DISABLED" diff --git a/src/glean/api_client/models/platformtriggerupdaterequest.py b/src/glean/api_client/models/platformtriggerupdaterequest.py new file mode 100644 index 00000000..7dcbd6a2 --- /dev/null +++ b/src/glean/api_client/models/platformtriggerupdaterequest.py @@ -0,0 +1,65 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformtriggerdelivery import ( + PlatformTriggerDelivery, + PlatformTriggerDeliveryTypedDict, +) +from .platformtriggerstatus import PlatformTriggerStatus +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 Any, Dict, Optional +from typing_extensions import NotRequired, TypedDict + + +class PlatformTriggerUpdateRequestTypedDict(TypedDict): + r"""Partial update. Only the supplied fields are changed.""" + + status: NotRequired[PlatformTriggerStatus] + r"""Current trigger lifecycle state.""" + description: NotRequired[str] + r"""Optional note describing this trigger.""" + inputs: NotRequired[Dict[str, Any]] + r"""Values for the preset's inputs.""" + delivery: NotRequired[PlatformTriggerDeliveryTypedDict] + + +class PlatformTriggerUpdateRequest(BaseModel): + r"""Partial update. Only the supplied fields are changed.""" + + status: Optional[PlatformTriggerStatus] = None + r"""Current trigger lifecycle state.""" + + description: Optional[str] = None + r"""Optional note describing this trigger.""" + + inputs: Optional[Dict[str, Any]] = None + r"""Values for the preset's inputs.""" + + delivery: Optional[PlatformTriggerDelivery] = None + + @field_serializer("status") + def serialize_status(self, value): + if isinstance(value, str): + try: + return models.PlatformTriggerStatus(value) + except ValueError: + return value + return value + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["status", "description", "inputs", "delivery"]) + 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/platformtriggerwebhookevent.py b/src/glean/api_client/models/platformtriggerwebhookevent.py new file mode 100644 index 00000000..70e79cb4 --- /dev/null +++ b/src/glean/api_client/models/platformtriggerwebhookevent.py @@ -0,0 +1,35 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformcontentschedulewebhookevent import ( + PlatformContentScheduleWebhookEvent, + PlatformContentScheduleWebhookEventTypedDict, +) +from .platformdocumentchangewebhookevent import ( + PlatformDocumentChangeWebhookEvent, + PlatformDocumentChangeWebhookEventTypedDict, +) +from glean.api_client.utils import get_discriminator +from pydantic import Discriminator, Tag +from typing import Union +from typing_extensions import Annotated, TypeAliasType + + +PlatformTriggerWebhookEventTypedDict = TypeAliasType( + "PlatformTriggerWebhookEventTypedDict", + Union[ + PlatformContentScheduleWebhookEventTypedDict, + PlatformDocumentChangeWebhookEventTypedDict, + ], +) +r"""Every delivered webhook is one of these two variants. A trigger with a cron schedule carries no document and so cannot be delivered over a webhook.""" + + +PlatformTriggerWebhookEvent = Annotated[ + Union[ + Annotated[PlatformDocumentChangeWebhookEvent, Tag("DOCUMENT_CHANGE")], + Annotated[PlatformContentScheduleWebhookEvent, Tag("CONTENT_SCHEDULE")], + ], + Discriminator(lambda m: get_discriminator(m, "event_type", "event_type")), +] +r"""Every delivered webhook is one of these two variants. A trigger with a cron schedule carries no document and so cannot be delivered over a webhook.""" diff --git a/src/glean/api_client/models/platformtriggerwithsecret.py b/src/glean/api_client/models/platformtriggerwithsecret.py new file mode 100644 index 00000000..43b0b789 --- /dev/null +++ b/src/glean/api_client/models/platformtriggerwithsecret.py @@ -0,0 +1,87 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformtriggerdelivery_output import ( + PlatformTriggerDeliveryOutput, + PlatformTriggerDeliveryOutputTypedDict, +) +from .platformtriggerstatus import PlatformTriggerStatus +from datetime import datetime +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 Any, Dict, Optional +from typing_extensions import NotRequired, TypedDict + + +class PlatformTriggerWithSecretTypedDict(TypedDict): + trigger_id: str + r"""ID of the trigger.""" + preset_id: str + r"""ID of the preset this trigger was created from.""" + status: PlatformTriggerStatus + r"""Current trigger lifecycle state.""" + delivery: PlatformTriggerDeliveryOutputTypedDict + created_at: datetime + r"""Time the trigger was created.""" + updated_at: datetime + r"""Time the trigger was last updated.""" + signing_secret: str + r"""Secret for verifying webhook signatures, serialized as `whsec_` following Standard Webhooks. Returned only when the trigger is created and cannot be retrieved later. Store it securely.""" + description: NotRequired[str] + r"""Optional caller-supplied note describing this trigger.""" + inputs: NotRequired[Dict[str, Any]] + r"""Values supplied for the preset's inputs.""" + + +class PlatformTriggerWithSecret(BaseModel): + trigger_id: str + r"""ID of the trigger.""" + + preset_id: str + r"""ID of the preset this trigger was created from.""" + + status: PlatformTriggerStatus + r"""Current trigger lifecycle state.""" + + delivery: PlatformTriggerDeliveryOutput + + created_at: datetime + r"""Time the trigger was created.""" + + updated_at: datetime + r"""Time the trigger was last updated.""" + + signing_secret: str + r"""Secret for verifying webhook signatures, serialized as `whsec_` following Standard Webhooks. Returned only when the trigger is created and cannot be retrieved later. Store it securely.""" + + description: Optional[str] = None + r"""Optional caller-supplied note describing this trigger.""" + + inputs: Optional[Dict[str, Any]] = None + r"""Values supplied for the preset's inputs.""" + + @field_serializer("status") + def serialize_status(self, value): + if isinstance(value, str): + try: + return models.PlatformTriggerStatus(value) + except ValueError: + return value + return value + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["description", "inputs"]) + 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/platformwarning.py b/src/glean/api_client/models/platformwarning.py new file mode 100644 index 00000000..3f5ea79c --- /dev/null +++ b/src/glean/api_client/models/platformwarning.py @@ -0,0 +1,28 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel +from typing_extensions import TypedDict + + +class PlatformWarningTypedDict(TypedDict): + r"""Non-blocking warning attached to a successful Platform response.""" + + code: str + r"""Open snake_case warning code. Clients must tolerate unknown values; the set of codes is not a closed enum. + + """ + message: str + r"""Human-readable warning message.""" + + +class PlatformWarning(BaseModel): + r"""Non-blocking warning attached to a successful Platform response.""" + + code: str + r"""Open snake_case warning code. Clients must tolerate unknown values; the set of codes is not a closed enum. + + """ + + message: str + r"""Human-readable warning message.""" diff --git a/src/glean/api_client/models/possiblevalue.py b/src/glean/api_client/models/possiblevalue.py index 8ce8997e..1881d203 100644 --- a/src/glean/api_client/models/possiblevalue.py +++ b/src/glean/api_client/models/possiblevalue.py @@ -33,7 +33,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/post_api_index_v1_debug_datasource_document_eventsop.py b/src/glean/api_client/models/post_api_index_v1_debug_datasource_document_eventsop.py new file mode 100644 index 00000000..e9d136d3 --- /dev/null +++ b/src/glean/api_client/models/post_api_index_v1_debug_datasource_document_eventsop.py @@ -0,0 +1,28 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .debugdocumentlifecyclerequest import ( + DebugDocumentLifecycleRequest, + DebugDocumentLifecycleRequestTypedDict, +) +from glean.api_client.types import BaseModel +from glean.api_client.utils import FieldMetadata, PathParamMetadata, RequestMetadata +from typing_extensions import Annotated, TypedDict + + +class PostAPIIndexV1DebugDatasourceDocumentEventsRequestTypedDict(TypedDict): + datasource: str + r"""The datasource to which the document belongs""" + debug_document_lifecycle_request: DebugDocumentLifecycleRequestTypedDict + + +class PostAPIIndexV1DebugDatasourceDocumentEventsRequest(BaseModel): + datasource: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""The datasource to which the document belongs""" + + debug_document_lifecycle_request: Annotated[ + DebugDocumentLifecycleRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] diff --git a/src/glean/api_client/models/post_rest_api_index_submissions_datasourceinstance_type_op.py b/src/glean/api_client/models/post_rest_api_index_submissions_datasourceinstance_type_op.py new file mode 100644 index 00000000..93bcbc0b --- /dev/null +++ b/src/glean/api_client/models/post_rest_api_index_submissions_datasourceinstance_type_op.py @@ -0,0 +1,58 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel +from glean.api_client.utils import FieldMetadata, PathParamMetadata, RequestMetadata +import pydantic +from typing import Any, Dict +from typing_extensions import Annotated, TypedDict + + +POST_REST_API_INDEX_SUBMISSIONS_DATASOURCE_INSTANCE_TYPE_OP_SERVERS = [ + "https://{instance}-be.glean.com", +] + + +class PostRestAPIIndexSubmissionsDatasourceInstanceTypeRequestTypedDict(TypedDict): + datasource_instance: str + r"""Datasource instance that should process the submission""" + type: str + r"""Submission type registered for the datasource""" + request_body: Dict[str, Any] + + +class PostRestAPIIndexSubmissionsDatasourceInstanceTypeRequest(BaseModel): + datasource_instance: Annotated[ + str, + pydantic.Field(alias="datasourceInstance"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""Datasource instance that should process the submission""" + + type: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""Submission type registered for the datasource""" + + request_body: Annotated[ + Dict[str, Any], + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + + +class PostRestAPIIndexSubmissionsDatasourceInstanceTypeResponseTypedDict(TypedDict): + r"""Accepted""" + + request_id: str + + +class PostRestAPIIndexSubmissionsDatasourceInstanceTypeResponse(BaseModel): + r"""Accepted""" + + request_id: Annotated[str, pydantic.Field(alias="requestId")] + + +try: + PostRestAPIIndexSubmissionsDatasourceInstanceTypeResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/processalldocumentsrequest.py b/src/glean/api_client/models/processalldocumentsrequest.py index b06f9338..aa29557c 100644 --- a/src/glean/api_client/models/processalldocumentsrequest.py +++ b/src/glean/api_client/models/processalldocumentsrequest.py @@ -28,7 +28,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/processallmembershipsrequest.py b/src/glean/api_client/models/processallmembershipsrequest.py index 30d55883..f1bba49d 100644 --- a/src/glean/api_client/models/processallmembershipsrequest.py +++ b/src/glean/api_client/models/processallmembershipsrequest.py @@ -28,7 +28,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/processinghistoryevent.py b/src/glean/api_client/models/processinghistoryevent.py index d8939795..61b4c047 100644 --- a/src/glean/api_client/models/processinghistoryevent.py +++ b/src/glean/api_client/models/processinghistoryevent.py @@ -34,10 +34,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + ProcessingHistoryEvent.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/prompttemplate.py b/src/glean/api_client/models/prompttemplate.py index baf554b9..90327467 100644 --- a/src/glean/api_client/models/prompttemplate.py +++ b/src/glean/api_client/models/prompttemplate.py @@ -111,10 +111,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + PromptTemplate.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/prompttemplateresult.py b/src/glean/api_client/models/prompttemplateresult.py index aa0dac52..efd9ff47 100644 --- a/src/glean/api_client/models/prompttemplateresult.py +++ b/src/glean/api_client/models/prompttemplateresult.py @@ -45,10 +45,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + PromptTemplateResult.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/propertydefinition.py b/src/glean/api_client/models/propertydefinition.py index e7270834..6ec503a2 100644 --- a/src/glean/api_client/models/propertydefinition.py +++ b/src/glean/api_client/models/propertydefinition.py @@ -2,14 +2,15 @@ from __future__ import annotations from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict -class PropertyType(str, Enum): +class PropertyDefinitionPropertyType(str, Enum, metaclass=utils.OpenEnumMeta): r"""The type of custom property - this governs the search and faceting behavior. Note that MULTIPICKLIST is not yet supported.""" TEXT = "TEXT" @@ -21,7 +22,7 @@ class PropertyType(str, Enum): MULTIPICKLIST = "MULTIPICKLIST" -class UIOptions(str, Enum): +class UIOptions(str, Enum, metaclass=utils.OpenEnumMeta): NONE = "NONE" SEARCH_RESULT = "SEARCH_RESULT" DOC_HOVERCARD = "DOC_HOVERCARD" @@ -34,7 +35,7 @@ class PropertyDefinitionTypedDict(TypedDict): r"""The user friendly label for the property.""" display_label_plural: NotRequired[str] r"""The user friendly label for the property that will be used if a plural context.""" - property_type: NotRequired[PropertyType] + property_type: NotRequired[PropertyDefinitionPropertyType] r"""The type of custom property - this governs the search and faceting behavior. Note that MULTIPICKLIST is not yet supported.""" ui_options: NotRequired[UIOptions] hide_ui_facet: NotRequired[bool] @@ -60,7 +61,7 @@ class PropertyDefinition(BaseModel): r"""The user friendly label for the property that will be used if a plural context.""" property_type: Annotated[ - Optional[PropertyType], pydantic.Field(alias="propertyType") + Optional[PropertyDefinitionPropertyType], pydantic.Field(alias="propertyType") ] = None r"""The type of custom property - this governs the search and faceting behavior. Note that MULTIPICKLIST is not yet supported.""" @@ -82,6 +83,24 @@ class PropertyDefinition(BaseModel): group: Optional[str] = None r"""The unique identifier of the `PropertyGroup` to which this property belongs.""" + @field_serializer("property_type") + def serialize_property_type(self, value): + if isinstance(value, str): + try: + return models.PropertyDefinitionPropertyType(value) + except ValueError: + return value + return value + + @field_serializer("ui_options") + def serialize_ui_options(self, value): + if isinstance(value, str): + try: + return models.UIOptions(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -102,10 +121,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + PropertyDefinition.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/propertygroup.py b/src/glean/api_client/models/propertygroup.py index 8feac964..f3ed0cfd 100644 --- a/src/glean/api_client/models/propertygroup.py +++ b/src/glean/api_client/models/propertygroup.py @@ -34,10 +34,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + PropertyGroup.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/put_rest_api_index_custom_metadata_schema_groupname_op.py b/src/glean/api_client/models/put_rest_api_index_custom_metadata_schema_groupname_op.py new file mode 100644 index 00000000..8f79bfe0 --- /dev/null +++ b/src/glean/api_client/models/put_rest_api_index_custom_metadata_schema_groupname_op.py @@ -0,0 +1,33 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .custommetadataschema import CustomMetadataSchema, CustomMetadataSchemaTypedDict +from glean.api_client.types import BaseModel +from glean.api_client.utils import FieldMetadata, PathParamMetadata, RequestMetadata +import pydantic +from typing_extensions import Annotated, TypedDict + + +PUT_REST_API_INDEX_CUSTOM_METADATA_SCHEMA_GROUP_NAME_OP_SERVERS = [ + "https://{instance}-be.glean.com", +] + + +class PutRestAPIIndexCustomMetadataSchemaGroupNameRequestTypedDict(TypedDict): + group_name: str + r"""Name of the metadata group schema""" + custom_metadata_schema: CustomMetadataSchemaTypedDict + + +class PutRestAPIIndexCustomMetadataSchemaGroupNameRequest(BaseModel): + group_name: Annotated[ + str, + pydantic.Field(alias="groupName"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""Name of the metadata group schema""" + + custom_metadata_schema: Annotated[ + CustomMetadataSchema, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] diff --git a/src/glean/api_client/models/put_rest_api_index_document_docid_custom_metadata_groupname_op.py b/src/glean/api_client/models/put_rest_api_index_document_docid_custom_metadata_groupname_op.py new file mode 100644 index 00000000..b8da6cec --- /dev/null +++ b/src/glean/api_client/models/put_rest_api_index_document_docid_custom_metadata_groupname_op.py @@ -0,0 +1,45 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .custommetadataputrequest import ( + CustomMetadataPutRequest, + CustomMetadataPutRequestTypedDict, +) +from glean.api_client.types import BaseModel +from glean.api_client.utils import FieldMetadata, PathParamMetadata, RequestMetadata +import pydantic +from typing_extensions import Annotated, TypedDict + + +PUT_REST_API_INDEX_DOCUMENT_DOC_ID_CUSTOM_METADATA_GROUP_NAME_OP_SERVERS = [ + "https://{instance}-be.glean.com", +] + + +class PutRestAPIIndexDocumentDocIDCustomMetadataGroupNameRequestTypedDict(TypedDict): + doc_id: str + r"""Unique Glean identifier of the document""" + group_name: str + r"""Name of the metadata group as specified while adding schema""" + custom_metadata_put_request: CustomMetadataPutRequestTypedDict + + +class PutRestAPIIndexDocumentDocIDCustomMetadataGroupNameRequest(BaseModel): + doc_id: Annotated[ + str, + pydantic.Field(alias="docId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""Unique Glean identifier of the document""" + + group_name: Annotated[ + str, + pydantic.Field(alias="groupName"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""Name of the metadata group as specified while adding schema""" + + custom_metadata_put_request: Annotated[ + CustomMetadataPutRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] diff --git a/src/glean/api_client/models/queryinsight.py b/src/glean/api_client/models/queryinsight.py deleted file mode 100644 index 9f3f0adc..00000000 --- a/src/glean/api_client/models/queryinsight.py +++ /dev/null @@ -1,70 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from .countinfo import CountInfo, CountInfoTypedDict -from glean.api_client.types import BaseModel, UNSET_SENTINEL -import pydantic -from pydantic import model_serializer -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class QueryInsightTypedDict(TypedDict): - query: str - r"""The query string the information is about.""" - search_count: NotRequired[CountInfoTypedDict] - searchor_count: NotRequired[CountInfoTypedDict] - search_with_click_count: NotRequired[CountInfoTypedDict] - click_count: NotRequired[CountInfoTypedDict] - similar_queries: NotRequired[List[QueryInsightTypedDict]] - r"""list of similar queries to current one.""" - - -class QueryInsight(BaseModel): - query: str - r"""The query string the information is about.""" - - search_count: Annotated[ - Optional[CountInfo], pydantic.Field(alias="searchCount") - ] = None - - searchor_count: Annotated[ - Optional[CountInfo], pydantic.Field(alias="searchorCount") - ] = None - - search_with_click_count: Annotated[ - Optional[CountInfo], pydantic.Field(alias="searchWithClickCount") - ] = None - - click_count: Annotated[Optional[CountInfo], pydantic.Field(alias="clickCount")] = ( - None - ) - - similar_queries: Annotated[ - Optional[List[QueryInsight]], pydantic.Field(alias="similarQueries") - ] = None - r"""list of similar queries to current one.""" - - @model_serializer(mode="wrap") - def serialize_model(self, handler): - optional_fields = set( - [ - "searchCount", - "searchorCount", - "searchWithClickCount", - "clickCount", - "similarQueries", - ] - ) - serialized = handler(self) - m = {} - - for n, f in type(self).model_fields.items(): - k = f.alias or n - val = serialized.get(k) - - if val != UNSET_SENTINEL: - if val is not None or k not in optional_fields: - m[k] = val - - return m diff --git a/src/glean/api_client/models/queryinsightsresponse.py b/src/glean/api_client/models/queryinsightsresponse.py deleted file mode 100644 index 42d2d68c..00000000 --- a/src/glean/api_client/models/queryinsightsresponse.py +++ /dev/null @@ -1,71 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from .queryinsight import QueryInsight, QueryInsightTypedDict -from glean.api_client.types import BaseModel, UNSET_SENTINEL -import pydantic -from pydantic import model_serializer -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class QueryInsightsResponseTypedDict(TypedDict): - last_log_timestamp: NotRequired[int] - r"""Unix timestamp of the last activity processed to make the response (in seconds since epoch UTC).""" - query_insights: NotRequired[List[QueryInsightTypedDict]] - r"""Insights for queries.""" - low_performing_query_insights: NotRequired[List[QueryInsightTypedDict]] - r"""Insights for low performing queries without good results.""" - departments: NotRequired[List[str]] - r"""list of departments applicable for queries tab.""" - min_visitor_threshold: NotRequired[int] - r"""Min threshold in number of visitors while populating results, otherwise 0.""" - - -class QueryInsightsResponse(BaseModel): - last_log_timestamp: Annotated[ - Optional[int], pydantic.Field(alias="lastLogTimestamp") - ] = None - r"""Unix timestamp of the last activity processed to make the response (in seconds since epoch UTC).""" - - query_insights: Annotated[ - Optional[List[QueryInsight]], pydantic.Field(alias="queryInsights") - ] = None - r"""Insights for queries.""" - - low_performing_query_insights: Annotated[ - Optional[List[QueryInsight]], pydantic.Field(alias="lowPerformingQueryInsights") - ] = None - r"""Insights for low performing queries without good results.""" - - departments: Optional[List[str]] = None - r"""list of departments applicable for queries tab.""" - - min_visitor_threshold: Annotated[ - Optional[int], pydantic.Field(alias="minVisitorThreshold") - ] = None - r"""Min threshold in number of visitors while populating results, otherwise 0.""" - - @model_serializer(mode="wrap") - def serialize_model(self, handler): - optional_fields = set( - [ - "lastLogTimestamp", - "queryInsights", - "lowPerformingQueryInsights", - "departments", - "minVisitorThreshold", - ] - ) - serialized = handler(self) - m = {} - - for n, f in type(self).model_fields.items(): - k = f.alias or n - val = serialized.get(k) - - if val != UNSET_SENTINEL: - if val is not None or k not in optional_fields: - m[k] = val - - return m diff --git a/src/glean/api_client/models/querysuggestion.py b/src/glean/api_client/models/querysuggestion.py index 6d86ded6..39b6d5e5 100644 --- a/src/glean/api_client/models/querysuggestion.py +++ b/src/glean/api_client/models/querysuggestion.py @@ -84,10 +84,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + QuerySuggestion.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/querysuggestionlist.py b/src/glean/api_client/models/querysuggestionlist.py index 8d5b0fed..8723c878 100644 --- a/src/glean/api_client/models/querysuggestionlist.py +++ b/src/glean/api_client/models/querysuggestionlist.py @@ -29,7 +29,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/quicklink.py b/src/glean/api_client/models/quicklink.py index c09aa690..75045a1f 100644 --- a/src/glean/api_client/models/quicklink.py +++ b/src/glean/api_client/models/quicklink.py @@ -3,6 +3,7 @@ from __future__ import annotations from .iconconfig import IconConfig, IconConfigTypedDict from enum import Enum +from glean.api_client import utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic from pydantic import model_serializer @@ -10,7 +11,7 @@ from typing_extensions import Annotated, NotRequired, TypedDict -class Scope(str, Enum): +class Scope(str, Enum, metaclass=utils.OpenEnumMeta): APP_CARD = "APP_CARD" AUTOCOMPLETE_EXACT_MATCH = "AUTOCOMPLETE_EXACT_MATCH" AUTOCOMPLETE_FUZZY_MATCH = "AUTOCOMPLETE_FUZZY_MATCH" @@ -68,10 +69,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + Quicklink.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/reaction.py b/src/glean/api_client/models/reaction.py index b007a2c3..40dd0af4 100644 --- a/src/glean/api_client/models/reaction.py +++ b/src/glean/api_client/models/reaction.py @@ -41,10 +41,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + Reaction.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/readpermission.py b/src/glean/api_client/models/readpermission.py index d7f46af0..b82781fd 100644 --- a/src/glean/api_client/models/readpermission.py +++ b/src/glean/api_client/models/readpermission.py @@ -2,9 +2,10 @@ from __future__ import annotations from .scopetype import ScopeType +from glean.api_client import models from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -22,6 +23,15 @@ class ReadPermission(BaseModel): scope_type: Annotated[Optional[ScopeType], pydantic.Field(alias="scopeType")] = None r"""Describes the scope for a ReadPermission, WritePermission, or GrantPermission object""" + @field_serializer("scope_type") + def serialize_scope_type(self, value): + if isinstance(value, str): + try: + return models.ScopeType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["scopeType"]) @@ -30,10 +40,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + ReadPermission.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/recommendationsop.py b/src/glean/api_client/models/recommendationsop.py new file mode 100644 index 00000000..02f83b74 --- /dev/null +++ b/src/glean/api_client/models/recommendationsop.py @@ -0,0 +1,49 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .recommendationsrequest import ( + RecommendationsRequest, + RecommendationsRequestTypedDict, +) +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class RecommendationsRequestRequestTypedDict(TypedDict): + recommendations_request: RecommendationsRequestTypedDict + r"""Recommendations request""" + locale: NotRequired[str] + r"""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`.""" + + +class RecommendationsRequestRequest(BaseModel): + recommendations_request: Annotated[ + RecommendationsRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""Recommendations request""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""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`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/recommendationsrequest.py b/src/glean/api_client/models/recommendationsrequest.py index b402c15e..507d92fa 100644 --- a/src/glean/api_client/models/recommendationsrequest.py +++ b/src/glean/api_client/models/recommendationsrequest.py @@ -83,10 +83,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + RecommendationsRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/recommendationsrequestoptions.py b/src/glean/api_client/models/recommendationsrequestoptions.py index 1411a418..162c9f76 100644 --- a/src/glean/api_client/models/recommendationsrequestoptions.py +++ b/src/glean/api_client/models/recommendationsrequestoptions.py @@ -63,10 +63,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + RecommendationsRequestOptions.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/referencerange.py b/src/glean/api_client/models/referencerange.py index 45371636..851c90fa 100644 --- a/src/glean/api_client/models/referencerange.py +++ b/src/glean/api_client/models/referencerange.py @@ -34,10 +34,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + ReferenceRange.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/relateddocuments.py b/src/glean/api_client/models/relateddocuments.py index d19b3c35..dd591579 100644 --- a/src/glean/api_client/models/relateddocuments.py +++ b/src/glean/api_client/models/relateddocuments.py @@ -2,9 +2,10 @@ from __future__ import annotations from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import List, Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -14,7 +15,7 @@ from .searchresult import SearchResult, SearchResultTypedDict -class Relation(str, Enum): +class Relation(str, Enum, metaclass=utils.OpenEnumMeta): r"""How this document relates to the including entity.""" ATTACHMENT = "ATTACHMENT" @@ -64,7 +65,7 @@ class RelatedDocuments(BaseModel): documents: Annotated[ Optional[List["Document"]], pydantic.Field( - deprecated="warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible." + deprecated="warning: ** DEPRECATED ** - Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Field is deprecated." ), ] = None r"""A truncated list of documents with this relation. TO BE DEPRECATED.""" @@ -72,6 +73,15 @@ class RelatedDocuments(BaseModel): results: Optional[List["SearchResult"]] = None r"""A truncated list of documents associated with this relation. To be used in favor of `documents` because it contains a trackingToken.""" + @field_serializer("relation") + def serialize_relation(self, value): + if isinstance(value, str): + try: + return models.Relation(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -88,10 +98,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + RelatedDocuments.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/relatedobject.py b/src/glean/api_client/models/relatedobject.py index 621be80f..94a1515c 100644 --- a/src/glean/api_client/models/relatedobject.py +++ b/src/glean/api_client/models/relatedobject.py @@ -28,7 +28,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -59,7 +59,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/relatedobjectedge.py b/src/glean/api_client/models/relatedobjectedge.py index 06d322ec..6a5b0972 100644 --- a/src/glean/api_client/models/relatedobjectedge.py +++ b/src/glean/api_client/models/relatedobjectedge.py @@ -23,7 +23,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/relatedquestion.py b/src/glean/api_client/models/relatedquestion.py index 2985a98d..0bd513ec 100644 --- a/src/glean/api_client/models/relatedquestion.py +++ b/src/glean/api_client/models/relatedquestion.py @@ -37,7 +37,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/reminder.py b/src/glean/api_client/models/reminder.py index 1e17c7f3..8a084dd7 100644 --- a/src/glean/api_client/models/reminder.py +++ b/src/glean/api_client/models/reminder.py @@ -44,10 +44,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + Reminder.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/reminderrequest.py b/src/glean/api_client/models/reminderrequest.py index 855c5d79..5f4e8c64 100644 --- a/src/glean/api_client/models/reminderrequest.py +++ b/src/glean/api_client/models/reminderrequest.py @@ -42,10 +42,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + ReminderRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/reportstatusresponse.py b/src/glean/api_client/models/reportstatusresponse.py index d98e5ce2..ea27cecb 100644 --- a/src/glean/api_client/models/reportstatusresponse.py +++ b/src/glean/api_client/models/reportstatusresponse.py @@ -2,14 +2,15 @@ from __future__ import annotations from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict -class ReportStatusResponseStatus(str, Enum): +class ReportStatusResponseStatus(str, Enum, metaclass=utils.OpenEnumMeta): PENDING = "PENDING" SUCCESS = "SUCCESS" FAILURE = "FAILURE" @@ -30,6 +31,15 @@ class ReportStatusResponse(BaseModel): start_time: Annotated[Optional[str], pydantic.Field(alias="startTime")] = None r"""The timestamp at which the report's run/scan began.""" + @field_serializer("status") + def serialize_status(self, value): + if isinstance(value, str): + try: + return models.ReportStatusResponseStatus(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["status", "startTime"]) @@ -38,10 +48,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + ReportStatusResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/restrictionfilters.py b/src/glean/api_client/models/restrictionfilters.py index e52edc96..2e649d73 100644 --- a/src/glean/api_client/models/restrictionfilters.py +++ b/src/glean/api_client/models/restrictionfilters.py @@ -28,10 +28,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + RestrictionFilters.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/resultsdescription.py b/src/glean/api_client/models/resultsdescription.py index 4d75b71e..7c8140e5 100644 --- a/src/glean/api_client/models/resultsdescription.py +++ b/src/glean/api_client/models/resultsdescription.py @@ -33,10 +33,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + ResultsDescription.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/resultsresponse.py b/src/glean/api_client/models/resultsresponse.py index a2cd00c0..b6ea8902 100644 --- a/src/glean/api_client/models/resultsresponse.py +++ b/src/glean/api_client/models/resultsresponse.py @@ -78,10 +78,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + ResultsResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/resulttab.py b/src/glean/api_client/models/resulttab.py index 89afabda..3683f422 100644 --- a/src/glean/api_client/models/resulttab.py +++ b/src/glean/api_client/models/resulttab.py @@ -42,10 +42,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + ResultTab.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/rotatedatasourcecredentialsop.py b/src/glean/api_client/models/rotatedatasourcecredentialsop.py new file mode 100644 index 00000000..cb554501 --- /dev/null +++ b/src/glean/api_client/models/rotatedatasourcecredentialsop.py @@ -0,0 +1,31 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .rotatedatasourcecredentialsrequest import ( + RotateDatasourceCredentialsRequest, + RotateDatasourceCredentialsRequestTypedDict, +) +from glean.api_client.types import BaseModel +from glean.api_client.utils import FieldMetadata, PathParamMetadata, RequestMetadata +import pydantic +from typing_extensions import Annotated, TypedDict + + +class RotateDatasourceCredentialsRequestRequestTypedDict(TypedDict): + datasource_instance_id: str + r"""The full datasource instance identifier (e.g. o365sharepoint_abc123)""" + rotate_datasource_credentials_request: RotateDatasourceCredentialsRequestTypedDict + + +class RotateDatasourceCredentialsRequestRequest(BaseModel): + datasource_instance_id: Annotated[ + str, + pydantic.Field(alias="datasourceInstanceId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The full datasource instance identifier (e.g. o365sharepoint_abc123)""" + + rotate_datasource_credentials_request: Annotated[ + RotateDatasourceCredentialsRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] diff --git a/src/glean/api_client/models/rotatedatasourcecredentialsrequest.py b/src/glean/api_client/models/rotatedatasourcecredentialsrequest.py new file mode 100644 index 00000000..e9dfdd44 --- /dev/null +++ b/src/glean/api_client/models/rotatedatasourcecredentialsrequest.py @@ -0,0 +1,29 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .datasourceinstanceconfiguration import ( + DatasourceInstanceConfiguration, + DatasourceInstanceConfigurationTypedDict, +) +from glean.api_client.types import BaseModel +from typing_extensions import TypedDict + + +class RotateDatasourceCredentialsRequestTypedDict(TypedDict): + r"""Request to rotate the credentials used by a datasource instance. Replaces the active credential material with the supplied values. + `credentials.values` must contain only keys recognized as credential material for the datasource type (for example `clientSecret` for OAuth, `apiToken` for API-token auth, `privateKey` for certificate auth). Unrecognized keys, or keys that correspond to non-credential configuration, cause a 400; use the configure endpoint to change non-credential config. + + """ + + credentials: DatasourceInstanceConfigurationTypedDict + r"""Configuration for a datasource instance""" + + +class RotateDatasourceCredentialsRequest(BaseModel): + r"""Request to rotate the credentials used by a datasource instance. Replaces the active credential material with the supplied values. + `credentials.values` must contain only keys recognized as credential material for the datasource type (for example `clientSecret` for OAuth, `apiToken` for API-token auth, `privateKey` for certificate auth). Unrecognized keys, or keys that correspond to non-credential configuration, cause a 400; use the configure endpoint to change non-credential config. + + """ + + credentials: DatasourceInstanceConfiguration + r"""Configuration for a datasource instance""" diff --git a/src/glean/api_client/models/rotatetokenresponse.py b/src/glean/api_client/models/rotatetokenresponse.py index ac4281c0..723b5b9c 100644 --- a/src/glean/api_client/models/rotatetokenresponse.py +++ b/src/glean/api_client/models/rotatetokenresponse.py @@ -41,10 +41,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + RotateTokenResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/scopetype.py b/src/glean/api_client/models/scopetype.py index 3f3b0004..e45814ba 100644 --- a/src/glean/api_client/models/scopetype.py +++ b/src/glean/api_client/models/scopetype.py @@ -2,9 +2,10 @@ from __future__ import annotations from enum import Enum +from glean.api_client import utils -class ScopeType(str, Enum): +class ScopeType(str, Enum, metaclass=utils.OpenEnumMeta): r"""Describes the scope for a ReadPermission, WritePermission, or GrantPermission object""" GLOBAL = "GLOBAL" diff --git a/src/glean/api_client/models/searchagentsrequest.py b/src/glean/api_client/models/searchagentsrequest.py index 4d307075..a66f7d03 100644 --- a/src/glean/api_client/models/searchagentsrequest.py +++ b/src/glean/api_client/models/searchagentsrequest.py @@ -24,7 +24,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/searchagentsresponse.py b/src/glean/api_client/models/searchagentsresponse.py index bd830265..9e6b9852 100644 --- a/src/glean/api_client/models/searchagentsresponse.py +++ b/src/glean/api_client/models/searchagentsresponse.py @@ -23,7 +23,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/searchop.py b/src/glean/api_client/models/searchop.py new file mode 100644 index 00000000..d1dd1a5c --- /dev/null +++ b/src/glean/api_client/models/searchop.py @@ -0,0 +1,46 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .searchrequest import SearchRequest, SearchRequestTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class SearchRequestRequestTypedDict(TypedDict): + search_request: SearchRequestTypedDict + r"""Search request""" + locale: NotRequired[str] + r"""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`.""" + + +class SearchRequestRequest(BaseModel): + search_request: Annotated[ + SearchRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""Search request""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""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`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/searchproviderinfo.py b/src/glean/api_client/models/searchproviderinfo.py index 2fb5dba9..84921983 100644 --- a/src/glean/api_client/models/searchproviderinfo.py +++ b/src/glean/api_client/models/searchproviderinfo.py @@ -37,10 +37,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + SearchProviderInfo.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/searchrequest.py b/src/glean/api_client/models/searchrequest.py index c4bb5a38..535df875 100644 --- a/src/glean/api_client/models/searchrequest.py +++ b/src/glean/api_client/models/searchrequest.py @@ -118,10 +118,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + SearchRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/searchrequestinputdetails.py b/src/glean/api_client/models/searchrequestinputdetails.py index 5428f951..900e4ff2 100644 --- a/src/glean/api_client/models/searchrequestinputdetails.py +++ b/src/glean/api_client/models/searchrequestinputdetails.py @@ -27,10 +27,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + SearchRequestInputDetails.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/searchrequestoptions.py b/src/glean/api_client/models/searchrequestoptions.py index b56111c5..f5006c08 100644 --- a/src/glean/api_client/models/searchrequestoptions.py +++ b/src/glean/api_client/models/searchrequestoptions.py @@ -7,6 +7,7 @@ from .facetfilterset import FacetFilterSet, FacetFilterSetTypedDict from .restrictionfilters import RestrictionFilters, RestrictionFiltersTypedDict from enum import Enum +from glean.api_client import utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic from pydantic import model_serializer @@ -14,7 +15,7 @@ from typing_extensions import Annotated, NotRequired, TypedDict -class ResponseHint(str, Enum): +class ResponseHint(str, Enum, metaclass=utils.OpenEnumMeta): r"""Hints for the response content.""" # Return result counts for each result set which has non-zero results, even when the request itself is limited to a subset. @@ -167,10 +168,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + SearchRequestOptions.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/searchresponse.py b/src/glean/api_client/models/searchresponse.py index 1e585bed..0135246b 100644 --- a/src/glean/api_client/models/searchresponse.py +++ b/src/glean/api_client/models/searchresponse.py @@ -148,10 +148,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + SearchResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/searchresponsemetadata.py b/src/glean/api_client/models/searchresponsemetadata.py index 5cc7eb2e..0d4c2a38 100644 --- a/src/glean/api_client/models/searchresponsemetadata.py +++ b/src/glean/api_client/models/searchresponsemetadata.py @@ -126,10 +126,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + SearchResponseMetadata.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/searchresult.py b/src/glean/api_client/models/searchresult.py index 7f657c68..9bcd8639 100644 --- a/src/glean/api_client/models/searchresult.py +++ b/src/glean/api_client/models/searchresult.py @@ -3,9 +3,10 @@ from __future__ import annotations from .clustertypeenum import ClusterTypeEnum from .searchresultprominenceenum import SearchResultProminenceEnum +from glean.api_client import models from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import List, Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -149,6 +150,24 @@ class SearchResult(BaseModel): pins: Optional[List["PinDocument"]] = None r"""A list of pins associated with this search result.""" + @field_serializer("cluster_type") + def serialize_cluster_type(self, value): + if isinstance(value, str): + try: + return models.ClusterTypeEnum(value) + except ValueError: + return value + return value + + @field_serializer("prominence") + def serialize_prominence(self, value): + if isinstance(value, str): + try: + return models.SearchResultProminenceEnum(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -180,10 +199,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + SearchResult.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/searchresultprominenceenum.py b/src/glean/api_client/models/searchresultprominenceenum.py index ddf2e8f1..27ef471f 100644 --- a/src/glean/api_client/models/searchresultprominenceenum.py +++ b/src/glean/api_client/models/searchresultprominenceenum.py @@ -2,9 +2,10 @@ from __future__ import annotations from enum import Enum +from glean.api_client import utils -class SearchResultProminenceEnum(str, Enum): +class SearchResultProminenceEnum(str, Enum, metaclass=utils.OpenEnumMeta): r"""The level of visual distinction that should be given to a result.""" # A high-confidence result that should feature prominently on the page. diff --git a/src/glean/api_client/models/searchresultsnippet.py b/src/glean/api_client/models/searchresultsnippet.py index 4b7adb5c..aff7d94f 100644 --- a/src/glean/api_client/models/searchresultsnippet.py +++ b/src/glean/api_client/models/searchresultsnippet.py @@ -12,8 +12,6 @@ class SearchResultSnippetTypedDict(TypedDict): - snippet: str - r"""A matching snippet from the document. Query term matches are marked by the unicode characters uE006 and uE007. Use 'text' field instead.""" mime_type: NotRequired[str] r"""The mime type of the snippets, currently either text/plain or text/html.""" text: NotRequired[str] @@ -24,17 +22,11 @@ class SearchResultSnippetTypedDict(TypedDict): r"""The bolded ranges within text.""" url: NotRequired[str] r"""A URL, generated based on availability, that links to the position of the snippet text or to the nearest header above the snippet text.""" + snippet: NotRequired[str] + r"""A matching snippet from the document. Query term matches are marked by the unicode characters uE006 and uE007. Use 'text' field instead.""" class SearchResultSnippet(BaseModel): - snippet: Annotated[ - str, - pydantic.Field( - deprecated="warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible." - ), - ] - r"""A matching snippet from the document. Query term matches are marked by the unicode characters uE006 and uE007. Use 'text' field instead.""" - mime_type: Annotated[Optional[str], pydantic.Field(alias="mimeType")] = None r"""The mime type of the snippets, currently either text/plain or text/html.""" @@ -52,20 +44,34 @@ class SearchResultSnippet(BaseModel): url: Optional[str] = None r"""A URL, generated based on availability, that links to the position of the snippet text or to the nearest header above the snippet text.""" + snippet: Annotated[ + Optional[str], + pydantic.Field( + deprecated="warning: ** DEPRECATED ** - Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use 'text' field instead." + ), + ] = None + r"""A matching snippet from the document. Query term matches are marked by the unicode characters uE006 and uE007. Use 'text' field instead.""" + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( - ["mimeType", "text", "snippetTextOrdering", "ranges", "url"] + ["mimeType", "text", "snippetTextOrdering", "ranges", "url", "snippet"] ) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + SearchResultSnippet.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/searchwarning.py b/src/glean/api_client/models/searchwarning.py index decead16..79a0826d 100644 --- a/src/glean/api_client/models/searchwarning.py +++ b/src/glean/api_client/models/searchwarning.py @@ -2,14 +2,15 @@ from __future__ import annotations from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import List, Optional from typing_extensions import Annotated, NotRequired, TypedDict -class WarningType(str, Enum): +class WarningType(str, Enum, metaclass=utils.OpenEnumMeta): r"""The type of the warning.""" LONG_QUERY = "LONG_QUERY" @@ -51,6 +52,15 @@ class SearchWarning(BaseModel): ] = None r"""A list of query terms that were ignored when generating search results, if any. For example, terms containing invalid filters such as \"updated:invalid_date\" will be ignored.""" + @field_serializer("warning_type") + def serialize_warning_type(self, value): + if isinstance(value, str): + try: + return models.WarningType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["lastUsedTerm", "quotesIgnoredQuery", "ignoredTerms"]) @@ -59,10 +69,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + SearchWarning.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/sectiontype.py b/src/glean/api_client/models/sectiontype.py index 2dbb489e..59fe1bb6 100644 --- a/src/glean/api_client/models/sectiontype.py +++ b/src/glean/api_client/models/sectiontype.py @@ -2,9 +2,10 @@ from __future__ import annotations from enum import Enum +from glean.api_client import utils -class SectionType(str, Enum): +class SectionType(str, Enum, metaclass=utils.OpenEnumMeta): r"""Type of the section. This defines how the section should be interpreted and rendered in the digest.""" # A standard section for channel-based digests (e.g. from Slack, Teams). diff --git a/src/glean/api_client/models/security.py b/src/glean/api_client/models/security.py index 1a757df2..c248ffd0 100644 --- a/src/glean/api_client/models/security.py +++ b/src/glean/api_client/models/security.py @@ -33,7 +33,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/seenfeedbackinfo.py b/src/glean/api_client/models/seenfeedbackinfo.py index 8293814e..a5ebcfaa 100644 --- a/src/glean/api_client/models/seenfeedbackinfo.py +++ b/src/glean/api_client/models/seenfeedbackinfo.py @@ -25,10 +25,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + SeenFeedbackInfo.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/sensitivecontentoptions.py b/src/glean/api_client/models/sensitivecontentoptions.py index a0496954..9c337af1 100644 --- a/src/glean/api_client/models/sensitivecontentoptions.py +++ b/src/glean/api_client/models/sensitivecontentoptions.py @@ -33,7 +33,7 @@ class SensitiveContentOptions(BaseModel): sensitive_info_types: Annotated[ Optional[List[SensitiveInfoType]], pydantic.Field( - deprecated="warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible.", + deprecated="warning: ** DEPRECATED ** - Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use customSensitiveExpressions instead.", alias="sensitiveInfoTypes", ), ] = None @@ -42,7 +42,7 @@ class SensitiveContentOptions(BaseModel): sensitive_terms: Annotated[ Optional[List[SensitiveExpression]], pydantic.Field( - deprecated="warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible.", + deprecated="warning: ** DEPRECATED ** - Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use customSensitiveExpressions instead.", alias="sensitiveTerms", ), ] = None @@ -51,7 +51,7 @@ class SensitiveContentOptions(BaseModel): sensitive_regexes: Annotated[ Optional[List[SensitiveExpression]], pydantic.Field( - deprecated="warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible.", + deprecated="warning: ** DEPRECATED ** - Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use customSensitiveExpressions instead.", alias="sensitiveRegexes", ), ] = None @@ -78,10 +78,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + SensitiveContentOptions.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/sensitiveexpression.py b/src/glean/api_client/models/sensitiveexpression.py index ddc4bf2e..4f4970c3 100644 --- a/src/glean/api_client/models/sensitiveexpression.py +++ b/src/glean/api_client/models/sensitiveexpression.py @@ -30,7 +30,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/sensitiveinfotype.py b/src/glean/api_client/models/sensitiveinfotype.py index c1469c00..61ec4473 100644 --- a/src/glean/api_client/models/sensitiveinfotype.py +++ b/src/glean/api_client/models/sensitiveinfotype.py @@ -2,17 +2,18 @@ from __future__ import annotations from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict, deprecated @deprecated( - "warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible." + "warning: ** DEPRECATED ** - Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Field is deprecated." ) -class SensitiveInfoTypeLikelihoodThreshold(str, Enum): +class SensitiveInfoTypeLikelihoodThreshold(str, Enum, metaclass=utils.OpenEnumMeta): LIKELY = "LIKELY" VERY_LIKELY = "VERY_LIKELY" POSSIBLE = "POSSIBLE" @@ -30,7 +31,7 @@ class SensitiveInfoType(BaseModel): likelihood_threshold: Annotated[ Optional[SensitiveInfoTypeLikelihoodThreshold], pydantic.Field( - deprecated="warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible.", + deprecated="warning: ** DEPRECATED ** - Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Field is deprecated.", alias="likelihoodThreshold", ), ] = None @@ -38,6 +39,15 @@ class SensitiveInfoType(BaseModel): info_type: Annotated[Optional[str], pydantic.Field(alias="infoType")] = None r"""Text representation of an info-type to scan for.""" + @field_serializer("likelihood_threshold") + def serialize_likelihood_threshold(self, value): + if isinstance(value, str): + try: + return models.SensitiveInfoTypeLikelihoodThreshold(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["likelihoodThreshold", "infoType"]) @@ -46,10 +56,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + SensitiveInfoType.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/servertoolrequest.py b/src/glean/api_client/models/servertoolrequest.py new file mode 100644 index 00000000..2e1f8e53 --- /dev/null +++ b/src/glean/api_client/models/servertoolrequest.py @@ -0,0 +1,102 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .actionpreview import ActionPreview, ActionPreviewTypedDict +from enum import Enum +from glean.api_client import models, utils +from glean.api_client.types import BaseModel, UNSET_SENTINEL +import pydantic +from pydantic import field_serializer, model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class ServerToolRequestRequestType(str, Enum, metaclass=utils.OpenEnumMeta): + r"""The type of request made to the user.""" + + # Request for approving execution of the tool. + EXECUTION = "EXECUTION" + # Request for authenticating to a tool, provided as a (tool) suggestion. + AUTHENTICATION_SUGGESTION = "AUTHENTICATION_SUGGESTION" + # Suggestion to vote for enabling an available-but-not-enabled tool. + VOTE_SUGGESTION = "VOTE_SUGGESTION" + + +class ServerToolRequestTypedDict(TypedDict): + request_type: ServerToolRequestRequestType + r"""The type of request made to the user.""" + request_id: str + r"""Unique identifier for this request.""" + tool_display_name: NotRequired[str] + r"""Human-readable display name for the tool.""" + server_id: NotRequired[str] + r"""Unique identifier of the tool server. Use with GET /tool-servers/{serverId}/auth + to resolve display information and authentication status. + + """ + tool_cta: NotRequired[str] + r"""Custom call-to-action (CTA) verb for the approval button (e.g., \"Create\", \"Update\", \"Send\").""" + action_preview: NotRequired[ActionPreviewTypedDict] + r"""Preview information for an action being executed.""" + + +class ServerToolRequest(BaseModel): + request_type: Annotated[ + ServerToolRequestRequestType, pydantic.Field(alias="requestType") + ] + r"""The type of request made to the user.""" + + request_id: Annotated[str, pydantic.Field(alias="requestId")] + r"""Unique identifier for this request.""" + + tool_display_name: Annotated[ + Optional[str], pydantic.Field(alias="toolDisplayName") + ] = None + r"""Human-readable display name for the tool.""" + + server_id: Annotated[Optional[str], pydantic.Field(alias="serverId")] = None + r"""Unique identifier of the tool server. Use with GET /tool-servers/{serverId}/auth + to resolve display information and authentication status. + + """ + + tool_cta: Annotated[Optional[str], pydantic.Field(alias="toolCta")] = None + r"""Custom call-to-action (CTA) verb for the approval button (e.g., \"Create\", \"Update\", \"Send\").""" + + action_preview: Annotated[ + Optional[ActionPreview], pydantic.Field(alias="actionPreview") + ] = None + r"""Preview information for an action being executed.""" + + @field_serializer("request_type") + def serialize_request_type(self, value): + if isinstance(value, str): + try: + return models.ServerToolRequestRequestType(value) + except ValueError: + return value + return value + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + ["toolDisplayName", "serverId", "toolCta", "actionPreview"] + ) + 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: + ServerToolRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/servertoolresponse.py b/src/glean/api_client/models/servertoolresponse.py new file mode 100644 index 00000000..90ec0049 --- /dev/null +++ b/src/glean/api_client/models/servertoolresponse.py @@ -0,0 +1,149 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .authcontext import AuthContext, AuthContextTypedDict +from enum import Enum +from glean.api_client import models, utils +from glean.api_client.types import BaseModel, UNSET_SENTINEL +import pydantic +from pydantic import field_serializer, model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class ServerToolResponseRequestType(str, Enum, metaclass=utils.OpenEnumMeta): + r"""The type of request made to the user.""" + + # Request for approving execution of the tool. + EXECUTION = "EXECUTION" + # Request for authenticating to a tool, provided as a (tool) suggestion. + AUTHENTICATION_SUGGESTION = "AUTHENTICATION_SUGGESTION" + # Suggestion to vote for enabling an available-but-not-enabled tool. + VOTE_SUGGESTION = "VOTE_SUGGESTION" + + +class GrantScope(str, Enum, metaclass=utils.OpenEnumMeta): + r"""Scope of the approval grant. Only applicable when isGranted is true and requestType is EXECUTION.""" + + # Approve only the current tool request. Future tool execution requests still require approval. + CURRENT_REQUEST = "CURRENT_REQUEST" + # Approve the current tool request and auto-approve all future same tool requests in this chat session. + CURRENT_SESSION = "CURRENT_SESSION" + # Approve the current tool request and auto-approve all future same tool requests across all chat sessions. + ALWAYS = "ALWAYS" + + +class ServerToolResponseTypedDict(TypedDict): + r"""Response to a server tool request. The applicable fields depend on requestType: + + For EXECUTION requests: + - isGranted: whether tool execution is approved + - reason: optional explanation + + For AUTHENTICATION_SUGGESTION requests: + - isGranted: whether auth completed successfully (true=connected, false=skipped) + - authContext: contains serverId or actionPackId for identifying the authenticated entity + - reason: optional explanation for skip + + For VOTE_SUGGESTION requests: + - voted: whether the user voted for this tool + + """ + + request_type: ServerToolResponseRequestType + r"""The type of request made to the user.""" + request_id: str + r"""Unique identifier for this request.""" + is_granted: NotRequired[bool] + r"""Whether tool request is granted (indicates approval for execution, or completion for auth).""" + grant_scope: NotRequired[GrantScope] + r"""Scope of the approval grant. Only applicable when isGranted is true and requestType is EXECUTION. + + """ + auth_context: NotRequired[AuthContextTypedDict] + r"""Context for authentication responses, containing identifiers for the entity being authenticated. + + """ + + +class ServerToolResponse(BaseModel): + r"""Response to a server tool request. The applicable fields depend on requestType: + + For EXECUTION requests: + - isGranted: whether tool execution is approved + - reason: optional explanation + + For AUTHENTICATION_SUGGESTION requests: + - isGranted: whether auth completed successfully (true=connected, false=skipped) + - authContext: contains serverId or actionPackId for identifying the authenticated entity + - reason: optional explanation for skip + + For VOTE_SUGGESTION requests: + - voted: whether the user voted for this tool + + """ + + request_type: Annotated[ + ServerToolResponseRequestType, pydantic.Field(alias="requestType") + ] + r"""The type of request made to the user.""" + + request_id: Annotated[str, pydantic.Field(alias="requestId")] + r"""Unique identifier for this request.""" + + is_granted: Annotated[Optional[bool], pydantic.Field(alias="isGranted")] = None + r"""Whether tool request is granted (indicates approval for execution, or completion for auth).""" + + grant_scope: Annotated[Optional[GrantScope], pydantic.Field(alias="grantScope")] = ( + GrantScope.CURRENT_REQUEST + ) + r"""Scope of the approval grant. Only applicable when isGranted is true and requestType is EXECUTION. + + """ + + auth_context: Annotated[ + Optional[AuthContext], pydantic.Field(alias="authContext") + ] = None + r"""Context for authentication responses, containing identifiers for the entity being authenticated. + + """ + + @field_serializer("request_type") + def serialize_request_type(self, value): + if isinstance(value, str): + try: + return models.ServerToolResponseRequestType(value) + except ValueError: + return value + return value + + @field_serializer("grant_scope") + def serialize_grant_scope(self, value): + if isinstance(value, str): + try: + return models.GrantScope(value) + except ValueError: + return value + return value + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["isGranted", "grantScope", "authContext"]) + 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: + ServerToolResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/sessioninfo.py b/src/glean/api_client/models/sessioninfo.py index 02af4fd3..0a0ab521 100644 --- a/src/glean/api_client/models/sessioninfo.py +++ b/src/glean/api_client/models/sessioninfo.py @@ -45,10 +45,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + SessionInfo.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/share.py b/src/glean/api_client/models/share.py index e3e68d45..3356d1fb 100644 --- a/src/glean/api_client/models/share.py +++ b/src/glean/api_client/models/share.py @@ -41,10 +41,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + Share.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/sharingoptions.py b/src/glean/api_client/models/sharingoptions.py index 9942a504..c6ffe694 100644 --- a/src/glean/api_client/models/sharingoptions.py +++ b/src/glean/api_client/models/sharingoptions.py @@ -33,7 +33,7 @@ class SharingOptions(BaseModel): enabled: Annotated[ Optional[bool], pydantic.Field( - deprecated="warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible." + deprecated="warning: ** DEPRECATED ** - Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Field is deprecated." ), ] = None @@ -48,7 +48,7 @@ class SharingOptions(BaseModel): anyone_with_link_enabled: Annotated[ Optional[bool], pydantic.Field( - deprecated="warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible.", + deprecated="warning: ** DEPRECATED ** - Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Field is deprecated.", alias="anyoneWithLinkEnabled", ), ] = None @@ -90,10 +90,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + SharingOptions.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/shortcut.py b/src/glean/api_client/models/shortcut.py index 629d64b1..6038fd52 100644 --- a/src/glean/api_client/models/shortcut.py +++ b/src/glean/api_client/models/shortcut.py @@ -1,6 +1,7 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations +from .favoriteinfo import FavoriteInfo, FavoriteInfoTypedDict from .objectpermissions import ObjectPermissions, ObjectPermissionsTypedDict from datetime import datetime from glean.api_client.types import BaseModel, UNSET_SENTINEL @@ -59,6 +60,7 @@ class ShortcutTypedDict(TypedDict): r"""Title for the Go Link""" roles: NotRequired[List["UserRoleSpecificationTypedDict"]] r"""A list of user roles for the Go Link.""" + favorite_info: NotRequired[FavoriteInfoTypedDict] class Shortcut(BaseModel): @@ -140,6 +142,10 @@ class Shortcut(BaseModel): roles: Optional[List["UserRoleSpecification"]] = None r"""A list of user roles for the Go Link.""" + favorite_info: Annotated[ + Optional[FavoriteInfo], pydantic.Field(alias="favoriteInfo") + ] = None + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -165,6 +171,7 @@ def serialize_model(self, handler): "alias", "title", "roles", + "favoriteInfo", ] ) serialized = handler(self) @@ -172,10 +179,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + Shortcut.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/shortcuterror.py b/src/glean/api_client/models/shortcuterror.py index d7bb10ba..b4922a4c 100644 --- a/src/glean/api_client/models/shortcuterror.py +++ b/src/glean/api_client/models/shortcuterror.py @@ -2,14 +2,15 @@ from __future__ import annotations from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict -class ShortcutErrorErrorType(str, Enum): +class ShortcutErrorErrorType(str, Enum, metaclass=utils.OpenEnumMeta): NO_PERMISSION = "NO_PERMISSION" INVALID_ID = "INVALID_ID" EXISTING_SHORTCUT = "EXISTING_SHORTCUT" @@ -25,6 +26,15 @@ class ShortcutError(BaseModel): Optional[ShortcutErrorErrorType], pydantic.Field(alias="errorType") ] = None + @field_serializer("error_type") + def serialize_error_type(self, value): + if isinstance(value, str): + try: + return models.ShortcutErrorErrorType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["errorType"]) @@ -33,10 +43,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + ShortcutError.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/shortcutinsight.py b/src/glean/api_client/models/shortcutinsight.py deleted file mode 100644 index c22aee3c..00000000 --- a/src/glean/api_client/models/shortcutinsight.py +++ /dev/null @@ -1,44 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from .countinfo import CountInfo, CountInfoTypedDict -from .shortcut import Shortcut, ShortcutTypedDict -from glean.api_client.types import BaseModel, UNSET_SENTINEL -import pydantic -from pydantic import model_serializer -from typing import Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class ShortcutInsightTypedDict(TypedDict): - shortcut: ShortcutTypedDict - visit_count: NotRequired[CountInfoTypedDict] - visitor_count: NotRequired[CountInfoTypedDict] - - -class ShortcutInsight(BaseModel): - shortcut: Shortcut - - visit_count: Annotated[Optional[CountInfo], pydantic.Field(alias="visitCount")] = ( - None - ) - - visitor_count: Annotated[ - Optional[CountInfo], pydantic.Field(alias="visitorCount") - ] = None - - @model_serializer(mode="wrap") - def serialize_model(self, handler): - optional_fields = set(["visitCount", "visitorCount"]) - serialized = handler(self) - m = {} - - for n, f in type(self).model_fields.items(): - k = f.alias or n - val = serialized.get(k) - - if val != UNSET_SENTINEL: - if val is not None or k not in optional_fields: - m[k] = val - - return m diff --git a/src/glean/api_client/models/shortcutinsightsresponse.py b/src/glean/api_client/models/shortcutinsightsresponse.py deleted file mode 100644 index 6371ed3f..00000000 --- a/src/glean/api_client/models/shortcutinsightsresponse.py +++ /dev/null @@ -1,63 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from .shortcutinsight import ShortcutInsight, ShortcutInsightTypedDict -from glean.api_client.types import BaseModel, UNSET_SENTINEL -import pydantic -from pydantic import model_serializer -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class ShortcutInsightsResponseTypedDict(TypedDict): - last_log_timestamp: NotRequired[int] - r"""Unix timestamp of the last activity processed to make the response (in seconds since epoch UTC).""" - shortcut_insights: NotRequired[List[ShortcutInsightTypedDict]] - r"""Insights for shortcuts.""" - departments: NotRequired[List[str]] - r"""list of departments applicable for shortcuts tab.""" - min_visitor_threshold: NotRequired[int] - r"""Min threshold in number of visitors while populating results, otherwise 0.""" - - -class ShortcutInsightsResponse(BaseModel): - last_log_timestamp: Annotated[ - Optional[int], pydantic.Field(alias="lastLogTimestamp") - ] = None - r"""Unix timestamp of the last activity processed to make the response (in seconds since epoch UTC).""" - - shortcut_insights: Annotated[ - Optional[List[ShortcutInsight]], pydantic.Field(alias="shortcutInsights") - ] = None - r"""Insights for shortcuts.""" - - departments: Optional[List[str]] = None - r"""list of departments applicable for shortcuts tab.""" - - min_visitor_threshold: Annotated[ - Optional[int], pydantic.Field(alias="minVisitorThreshold") - ] = None - r"""Min threshold in number of visitors while populating results, otherwise 0.""" - - @model_serializer(mode="wrap") - def serialize_model(self, handler): - optional_fields = set( - [ - "lastLogTimestamp", - "shortcutInsights", - "departments", - "minVisitorThreshold", - ] - ) - serialized = handler(self) - m = {} - - for n, f in type(self).model_fields.items(): - k = f.alias or n - val = serialized.get(k) - - if val != UNSET_SENTINEL: - if val is not None or k not in optional_fields: - m[k] = val - - return m diff --git a/src/glean/api_client/models/shortcutmutableproperties.py b/src/glean/api_client/models/shortcutmutableproperties.py index 0e78fc48..a70757ea 100644 --- a/src/glean/api_client/models/shortcutmutableproperties.py +++ b/src/glean/api_client/models/shortcutmutableproperties.py @@ -80,10 +80,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + ShortcutMutableProperties.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/shortcutspaginationmetadata.py b/src/glean/api_client/models/shortcutspaginationmetadata.py index 4e7ce4a4..dd14f76d 100644 --- a/src/glean/api_client/models/shortcutspaginationmetadata.py +++ b/src/glean/api_client/models/shortcutspaginationmetadata.py @@ -33,10 +33,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + ShortcutsPaginationMetadata.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/sidebysideimplementation.py b/src/glean/api_client/models/sidebysideimplementation.py index e10986c3..2df5ff06 100644 --- a/src/glean/api_client/models/sidebysideimplementation.py +++ b/src/glean/api_client/models/sidebysideimplementation.py @@ -39,7 +39,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -101,10 +101,20 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + ResponseMetadata.model_rebuild() +except NameError: + pass +try: + SideBySideImplementation.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/socialnetwork.py b/src/glean/api_client/models/socialnetwork.py index f2e3e570..6540572a 100644 --- a/src/glean/api_client/models/socialnetwork.py +++ b/src/glean/api_client/models/socialnetwork.py @@ -35,10 +35,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + SocialNetwork.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/socialnetworkdefinition.py b/src/glean/api_client/models/socialnetworkdefinition.py index b7c8aff3..be8259cd 100644 --- a/src/glean/api_client/models/socialnetworkdefinition.py +++ b/src/glean/api_client/models/socialnetworkdefinition.py @@ -39,10 +39,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + SocialNetworkDefinition.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/sortoptions.py b/src/glean/api_client/models/sortoptions.py index 29b0f4c8..b47e3975 100644 --- a/src/glean/api_client/models/sortoptions.py +++ b/src/glean/api_client/models/sortoptions.py @@ -32,10 +32,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + SortOptions.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/structuredlink.py b/src/glean/api_client/models/structuredlink.py index f32650d1..64e4e5b9 100644 --- a/src/glean/api_client/models/structuredlink.py +++ b/src/glean/api_client/models/structuredlink.py @@ -42,10 +42,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + StructuredLink.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/structuredlocation.py b/src/glean/api_client/models/structuredlocation.py index 589d66e4..8fc2a7f5 100644 --- a/src/glean/api_client/models/structuredlocation.py +++ b/src/glean/api_client/models/structuredlocation.py @@ -81,10 +81,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + StructuredLocation.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/structuredresult.py b/src/glean/api_client/models/structuredresult.py index 0ae10473..ead2bdf1 100644 --- a/src/glean/api_client/models/structuredresult.py +++ b/src/glean/api_client/models/structuredresult.py @@ -4,9 +4,10 @@ from .appresult import AppResult, AppResultTypedDict from .disambiguation import Disambiguation, DisambiguationTypedDict from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import List, Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -30,7 +31,7 @@ from .team import Team, TeamTypedDict -class Prominence(str, Enum): +class Prominence(str, Enum, metaclass=utils.OpenEnumMeta): r"""The level of visual distinction that should be given to a result.""" # A high-confidence result that should feature prominently on the page. @@ -41,7 +42,7 @@ class Prominence(str, Enum): STANDARD = "STANDARD" -class StructuredResultSource(str, Enum): +class StructuredResultSource(str, Enum, metaclass=utils.OpenEnumMeta): r"""Source context for this result. Possible values depend on the result type.""" EXPERT_DETECTION = "EXPERT_DETECTION" @@ -152,6 +153,24 @@ class StructuredResult(BaseModel): source: Optional[StructuredResultSource] = None r"""Source context for this result. Possible values depend on the result type.""" + @field_serializer("prominence") + def serialize_prominence(self, value): + if isinstance(value, str): + try: + return models.Prominence(value) + except ValueError: + return value + return value + + @field_serializer("source") + def serialize_source(self, value): + if isinstance(value, str): + try: + return models.StructuredResultSource(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -185,10 +204,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + StructuredResult.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/structuredtext.py b/src/glean/api_client/models/structuredtext.py index 32f08d18..dcf058b2 100644 --- a/src/glean/api_client/models/structuredtext.py +++ b/src/glean/api_client/models/structuredtext.py @@ -33,10 +33,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + StructuredText.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/structuredtextitem.py b/src/glean/api_client/models/structuredtextitem.py index c63c6ba7..6eeb60a0 100644 --- a/src/glean/api_client/models/structuredtextitem.py +++ b/src/glean/api_client/models/structuredtextitem.py @@ -40,10 +40,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + StructuredTextItem.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/successresponse.py b/src/glean/api_client/models/successresponse.py new file mode 100644 index 00000000..c48ec864 --- /dev/null +++ b/src/glean/api_client/models/successresponse.py @@ -0,0 +1,37 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer +from typing import Optional +from typing_extensions import NotRequired, TypedDict + + +class SuccessResponseTypedDict(TypedDict): + r"""Success response for custom metadata operations""" + + success: NotRequired[bool] + r"""Indicates if the operation was successful""" + + +class SuccessResponse(BaseModel): + r"""Success response for custom metadata operations""" + + success: Optional[bool] = True + r"""Indicates if the operation was successful""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["success"]) + 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/summarizeop.py b/src/glean/api_client/models/summarizeop.py new file mode 100644 index 00000000..1211d870 --- /dev/null +++ b/src/glean/api_client/models/summarizeop.py @@ -0,0 +1,46 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .summarizerequest import SummarizeRequest, SummarizeRequestTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class SummarizeRequestRequestTypedDict(TypedDict): + summarize_request: SummarizeRequestTypedDict + r"""Includes request params such as the query and specs of the documents to summarize.""" + locale: NotRequired[str] + r"""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`.""" + + +class SummarizeRequestRequest(BaseModel): + summarize_request: Annotated[ + SummarizeRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""Includes request params such as the query and specs of the documents to summarize.""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""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`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/summarizerequest.py b/src/glean/api_client/models/summarizerequest.py index f40056ef..2ee5dfa9 100644 --- a/src/glean/api_client/models/summarizerequest.py +++ b/src/glean/api_client/models/summarizerequest.py @@ -59,10 +59,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + SummarizeRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/summarizeresponse.py b/src/glean/api_client/models/summarizeresponse.py index f6314645..ca5dc1b6 100644 --- a/src/glean/api_client/models/summarizeresponse.py +++ b/src/glean/api_client/models/summarizeresponse.py @@ -24,7 +24,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -58,10 +58,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + SummarizeResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/summary.py b/src/glean/api_client/models/summary.py index dffc88b5..35573db7 100644 --- a/src/glean/api_client/models/summary.py +++ b/src/glean/api_client/models/summary.py @@ -30,10 +30,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + Summary.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/team.py b/src/glean/api_client/models/team.py index de3d33ac..7fa4e162 100644 --- a/src/glean/api_client/models/team.py +++ b/src/glean/api_client/models/team.py @@ -7,9 +7,10 @@ from .teamemail import TeamEmail, TeamEmailTypedDict from datetime import datetime from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Dict, List, Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -21,7 +22,7 @@ ) -class TeamStatus(str, Enum): +class TeamStatus(str, Enum, metaclass=utils.OpenEnumMeta): r"""whether this team is fully processed or there are still unprocessed operations that'll affect it""" PROCESSED = "PROCESSED" @@ -146,6 +147,15 @@ class Team(BaseModel): logging_id: Annotated[Optional[str], pydantic.Field(alias="loggingId")] = None r"""The logging id of the team used in scrubbed logs, client analytics, and metrics.""" + @field_serializer("status") + def serialize_status(self, value): + if isinstance(value, str): + try: + return models.TeamStatus(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -176,10 +186,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + Team.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/teamemail.py b/src/glean/api_client/models/teamemail.py index 42973717..73f5b4cd 100644 --- a/src/glean/api_client/models/teamemail.py +++ b/src/glean/api_client/models/teamemail.py @@ -33,7 +33,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/teaminfodefinition.py b/src/glean/api_client/models/teaminfodefinition.py index 1d32e73c..d5e57583 100644 --- a/src/glean/api_client/models/teaminfodefinition.py +++ b/src/glean/api_client/models/teaminfodefinition.py @@ -106,10 +106,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + TeamInfoDefinition.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/teammember.py b/src/glean/api_client/models/teammember.py index d6cece46..9b534f8c 100644 --- a/src/glean/api_client/models/teammember.py +++ b/src/glean/api_client/models/teammember.py @@ -39,7 +39,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/textrange.py b/src/glean/api_client/models/textrange.py index 5f2bc015..9cd52eba 100644 --- a/src/glean/api_client/models/textrange.py +++ b/src/glean/api_client/models/textrange.py @@ -2,9 +2,10 @@ from __future__ import annotations from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -12,7 +13,7 @@ from .document import Document, DocumentTypedDict -class TextRangeType(str, Enum): +class TextRangeType(str, Enum, metaclass=utils.OpenEnumMeta): BOLD = "BOLD" CITATION = "CITATION" HIGHLIGHT = "HIGHLIGHT" @@ -48,6 +49,15 @@ class TextRange(BaseModel): document: Optional["Document"] = None + @field_serializer("type") + def serialize_type(self, value): + if isinstance(value, str): + try: + return models.TextRangeType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["endIndex", "type", "url", "document"]) @@ -56,10 +66,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + TextRange.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/thumbnail.py b/src/glean/api_client/models/thumbnail.py index c7a4f3b2..decf9c1f 100644 --- a/src/glean/api_client/models/thumbnail.py +++ b/src/glean/api_client/models/thumbnail.py @@ -30,10 +30,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + Thumbnail.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/timepoint.py b/src/glean/api_client/models/timepoint.py index 6ef8aaa3..64b09fea 100644 --- a/src/glean/api_client/models/timepoint.py +++ b/src/glean/api_client/models/timepoint.py @@ -12,7 +12,7 @@ class TimePointTypedDict(TypedDict): epoch_seconds: NotRequired[int] r"""Epoch seconds. Has precedence over daysFromNow.""" days_from_now: NotRequired[int] - r"""The number of days from now. Specification relative to current time. Can be negative.""" + r"""Number of days in the past, relative to the current date.""" class TimePoint(BaseModel): @@ -20,7 +20,7 @@ class TimePoint(BaseModel): r"""Epoch seconds. Has precedence over daysFromNow.""" days_from_now: Annotated[Optional[int], pydantic.Field(alias="daysFromNow")] = None - r"""The number of days from now. Specification relative to current time. Can be negative.""" + r"""Number of days in the past, relative to the current date.""" @model_serializer(mode="wrap") def serialize_model(self, handler): @@ -30,10 +30,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + TimePoint.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/timerange.py b/src/glean/api_client/models/timerange.py index a4aa5dae..7ac2cf3c 100644 --- a/src/glean/api_client/models/timerange.py +++ b/src/glean/api_client/models/timerange.py @@ -38,10 +38,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + TimeRange.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/timerangefilter.py b/src/glean/api_client/models/timerangefilter.py index 6beaa1ef..b8ad3178 100644 --- a/src/glean/api_client/models/timerangefilter.py +++ b/src/glean/api_client/models/timerangefilter.py @@ -3,14 +3,15 @@ from __future__ import annotations from .timerange import TimeRange, TimeRangeTypedDict from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict -class TimeRangeFilterTimePeriodType(str, Enum): +class TimeRangeFilterTimePeriodType(str, Enum, metaclass=utils.OpenEnumMeta): r"""The type of time period for which to filter findings.""" PAST_DAY = "PAST_DAY" @@ -36,6 +37,15 @@ class TimeRangeFilter(BaseModel): Optional[TimeRange], pydantic.Field(alias="customTimeRange") ] = None + @field_serializer("time_period_type") + def serialize_time_period_type(self, value): + if isinstance(value, str): + try: + return models.TimeRangeFilterTimePeriodType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["timePeriodType", "customTimeRange"]) @@ -44,10 +54,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + TimeRangeFilter.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/tool.py b/src/glean/api_client/models/tool.py index fd199921..86839d1b 100644 --- a/src/glean/api_client/models/tool.py +++ b/src/glean/api_client/models/tool.py @@ -3,14 +3,15 @@ from __future__ import annotations from .toolparameter import ToolParameter, ToolParameterTypedDict from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Dict, Optional from typing_extensions import Annotated, NotRequired, TypedDict -class ToolType(str, Enum): +class ToolType(str, Enum, metaclass=utils.OpenEnumMeta): r"""Type of tool (READ, WRITE)""" READ = "READ" @@ -46,6 +47,15 @@ class Tool(BaseModel): parameters: Optional[Dict[str, ToolParameter]] = None r"""The parameters for the tool. Each key is the name of the parameter and the value is the parameter object.""" + @field_serializer("type") + def serialize_type(self, value): + if isinstance(value, str): + try: + return models.ToolType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -56,10 +66,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + Tool.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/toolannotations.py b/src/glean/api_client/models/toolannotations.py new file mode 100644 index 00000000..fa00357c --- /dev/null +++ b/src/glean/api_client/models/toolannotations.py @@ -0,0 +1,137 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import ( + BaseModel, + Nullable, + OptionalNullable, + UNSET, + UNSET_SENTINEL, +) +import pydantic +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class ToolAnnotationsTypedDict(TypedDict): + r"""Behavioural hints for the tool, exactly as declared by the tool server. No + defaults are filled in — see the per-field notes for what an absent value means. + + Per the MCP specification, clients MUST treat these hints as untrusted unless + the tool server is itself trusted. They are advisory metadata, not an + authorization signal, and must not be the sole basis of a security decision. + + """ + + title: NotRequired[str] + read_only_hint: NotRequired[bool] + r"""True if the tool does not modify its environment. Always present. MCP + defines no distinction between an undeclared value and `false` here, so + `false` means \"not declared read-only\" rather than \"declared mutating\". + + """ + destructive_hint: NotRequired[Nullable[bool]] + r"""True if the tool may perform destructive updates. **Absent means the server + did not declare it**, for which the MCP default is `true`. Only meaningful + when `readOnlyHint` is `false`. + + """ + idempotent_hint: NotRequired[bool] + r"""True if repeated calls with the same arguments have no additional effect. + Always present; as with `readOnlyHint`, `false` means \"not declared + idempotent\". Only meaningful when `readOnlyHint` is `false`. + + """ + open_world_hint: NotRequired[Nullable[bool]] + r"""True if the tool interacts with an open world of external entities. **Absent + means the server did not declare it**, for which the MCP default is `true`. + + """ + + +class ToolAnnotations(BaseModel): + r"""Behavioural hints for the tool, exactly as declared by the tool server. No + defaults are filled in — see the per-field notes for what an absent value means. + + Per the MCP specification, clients MUST treat these hints as untrusted unless + the tool server is itself trusted. They are advisory metadata, not an + authorization signal, and must not be the sole basis of a security decision. + + """ + + title: Optional[str] = None + + read_only_hint: Annotated[Optional[bool], pydantic.Field(alias="readOnlyHint")] = ( + None + ) + r"""True if the tool does not modify its environment. Always present. MCP + defines no distinction between an undeclared value and `false` here, so + `false` means \"not declared read-only\" rather than \"declared mutating\". + + """ + + destructive_hint: Annotated[ + OptionalNullable[bool], pydantic.Field(alias="destructiveHint") + ] = UNSET + r"""True if the tool may perform destructive updates. **Absent means the server + did not declare it**, for which the MCP default is `true`. Only meaningful + when `readOnlyHint` is `false`. + + """ + + idempotent_hint: Annotated[ + Optional[bool], pydantic.Field(alias="idempotentHint") + ] = None + r"""True if repeated calls with the same arguments have no additional effect. + Always present; as with `readOnlyHint`, `false` means \"not declared + idempotent\". Only meaningful when `readOnlyHint` is `false`. + + """ + + open_world_hint: Annotated[ + OptionalNullable[bool], pydantic.Field(alias="openWorldHint") + ] = UNSET + r"""True if the tool interacts with an open world of external entities. **Absent + means the server did not declare it**, for which the MCP default is `true`. + + """ + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "title", + "readOnlyHint", + "destructiveHint", + "idempotentHint", + "openWorldHint", + ] + ) + nullable_fields = set(["destructiveHint", "openWorldHint"]) + 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)) + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val + + return m + + +try: + ToolAnnotations.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/tooldefinition.py b/src/glean/api_client/models/tooldefinition.py new file mode 100644 index 00000000..805617b1 --- /dev/null +++ b/src/glean/api_client/models/tooldefinition.py @@ -0,0 +1,84 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .toolannotations import ToolAnnotations, ToolAnnotationsTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +import pydantic +from pydantic import model_serializer +from typing import Any, Dict, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class ToolDefinitionTypedDict(TypedDict): + server_id: str + r"""Tool server this tool belongs to.""" + name: str + r"""Name to invoke the tool by.""" + display_name: NotRequired[str] + r"""Human-readable name of the tool.""" + description: NotRequired[str] + r"""What the tool does, as surfaced to a model.""" + input_schema: NotRequired[Dict[str, Any]] + r"""JSON Schema for the tool's input parameters.""" + annotations: NotRequired[ToolAnnotationsTypedDict] + r"""Behavioural hints for the tool, exactly as declared by the tool server. No + defaults are filled in — see the per-field notes for what an absent value means. + + Per the MCP specification, clients MUST treat these hints as untrusted unless + the tool server is itself trusted. They are advisory metadata, not an + authorization signal, and must not be the sole basis of a security decision. + + """ + + +class ToolDefinition(BaseModel): + server_id: Annotated[str, pydantic.Field(alias="serverId")] + r"""Tool server this tool belongs to.""" + + name: str + r"""Name to invoke the tool by.""" + + display_name: Annotated[Optional[str], pydantic.Field(alias="displayName")] = None + r"""Human-readable name of the tool.""" + + description: Optional[str] = None + r"""What the tool does, as surfaced to a model.""" + + input_schema: Annotated[ + Optional[Dict[str, Any]], pydantic.Field(alias="inputSchema") + ] = None + r"""JSON Schema for the tool's input parameters.""" + + annotations: Optional[ToolAnnotations] = None + r"""Behavioural hints for the tool, exactly as declared by the tool server. No + defaults are filled in — see the per-field notes for what an absent value means. + + Per the MCP specification, clients MUST treat these hints as untrusted unless + the tool server is itself trusted. They are advisory metadata, not an + authorization signal, and must not be the sole basis of a security decision. + + """ + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + ["displayName", "description", "inputSchema", "annotations"] + ) + 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: + ToolDefinition.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/tooldefinitionsresponse.py b/src/glean/api_client/models/tooldefinitionsresponse.py new file mode 100644 index 00000000..a0fa1e09 --- /dev/null +++ b/src/glean/api_client/models/tooldefinitionsresponse.py @@ -0,0 +1,46 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .tooldefinition import ToolDefinition, ToolDefinitionTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +import pydantic +from pydantic import model_serializer +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class ToolDefinitionsResponseTypedDict(TypedDict): + tools: List[ToolDefinitionTypedDict] + r"""Definitions for the requested tools that exist on this server.""" + not_found: NotRequired[List[str]] + r"""Requested names that do not exist on this server.""" + + +class ToolDefinitionsResponse(BaseModel): + tools: List[ToolDefinition] + r"""Definitions for the requested tools that exist on this server.""" + + not_found: Annotated[Optional[List[str]], pydantic.Field(alias="notFound")] = None + r"""Requested names that do not exist on this server.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["notFound"]) + 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: + ToolDefinitionsResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/toolinfo.py b/src/glean/api_client/models/toolinfo.py index a83308e9..9bbfdf32 100644 --- a/src/glean/api_client/models/toolinfo.py +++ b/src/glean/api_client/models/toolinfo.py @@ -31,7 +31,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/toolmetadata.py b/src/glean/api_client/models/toolmetadata.py index 7f458148..d7928cf2 100644 --- a/src/glean/api_client/models/toolmetadata.py +++ b/src/glean/api_client/models/toolmetadata.py @@ -6,21 +6,22 @@ from .personobject import PersonObject, PersonObjectTypedDict from datetime import datetime from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict -class ToolMetadataType(str, Enum): +class ToolMetadataType(str, Enum, metaclass=utils.OpenEnumMeta): r"""The type of tool.""" RETRIEVAL = "RETRIEVAL" ACTION = "ACTION" -class KnowledgeType(str, Enum): +class KnowledgeType(str, Enum, metaclass=utils.OpenEnumMeta): r"""Indicates the kind of knowledge a tool would access or modify.""" NEUTRAL_KNOWLEDGE = "NEUTRAL_KNOWLEDGE" @@ -28,7 +29,7 @@ class KnowledgeType(str, Enum): WORLD_KNOWLEDGE = "WORLD_KNOWLEDGE" -class WriteActionType(str, Enum): +class WriteActionType(str, Enum, metaclass=utils.OpenEnumMeta): r"""Valid only for write actions. Represents the type of write action. REDIRECT - The client renders the URL which contains information for carrying out the action. EXECUTION - Send a request to an external server and execute the action. MCP - Send a tools/call request to an MCP server to execute the action.""" REDIRECT = "REDIRECT" @@ -36,7 +37,25 @@ class WriteActionType(str, Enum): MCP = "MCP" -class AuthType(str, Enum): +class ActionTypeSource(str, Enum, metaclass=utils.OpenEnumMeta): + r"""Analytics-only signal (product snapshot) describing WHERE the action's + read/write determination came from. Complementary to the effective + read/write value (the tool's ToolType, which drives HITL): the value says + read-or-write, this says how confident that is. MCP_ANNOTATION = from the + tool's read-only/destructive hints; ADMIN_OVERRIDE = an admin set it; + NONE = no usable hint (the effective value then defaults to write); + NATIVE_TOOL_DEFINITION = from a curated native tool (snapshot-derived). + Does not affect runtime behavior. + + """ + + MCP_ANNOTATION = "MCP_ANNOTATION" + ADMIN_OVERRIDE = "ADMIN_OVERRIDE" + NONE = "NONE" + NATIVE_TOOL_DEFINITION = "NATIVE_TOOL_DEFINITION" + + +class AuthType(str, Enum, metaclass=utils.OpenEnumMeta): r"""The type of authentication being used. Use 'OAUTH_*' when Glean calls an external API (e.g., Jira) on behalf of a user to obtain an OAuth token. 'OAUTH_ADMIN' utilizes an admin token for external API calls on behalf all users. @@ -80,6 +99,17 @@ class ToolMetadataTypedDict(TypedDict): r"""The time the tool was last updated in ISO format (ISO 8601)""" write_action_type: NotRequired[WriteActionType] r"""Valid only for write actions. Represents the type of write action. REDIRECT - The client renders the URL which contains information for carrying out the action. EXECUTION - Send a request to an external server and execute the action. MCP - Send a tools/call request to an MCP server to execute the action.""" + action_type_source: NotRequired[ActionTypeSource] + r"""Analytics-only signal (product snapshot) describing WHERE the action's + read/write determination came from. Complementary to the effective + read/write value (the tool's ToolType, which drives HITL): the value says + read-or-write, this says how confident that is. MCP_ANNOTATION = from the + tool's read-only/destructive hints; ADMIN_OVERRIDE = an admin set it; + NONE = no usable hint (the effective value then defaults to write); + NATIVE_TOOL_DEFINITION = from a curated native tool (snapshot-derived). + Does not affect runtime behavior. + + """ auth_type: NotRequired[AuthType] r"""The type of authentication being used. Use 'OAUTH_*' when Glean calls an external API (e.g., Jira) on behalf of a user to obtain an OAuth token. @@ -147,6 +177,20 @@ class ToolMetadata(BaseModel): ] = None r"""Valid only for write actions. Represents the type of write action. REDIRECT - The client renders the URL which contains information for carrying out the action. EXECUTION - Send a request to an external server and execute the action. MCP - Send a tools/call request to an MCP server to execute the action.""" + action_type_source: Annotated[ + Optional[ActionTypeSource], pydantic.Field(alias="actionTypeSource") + ] = None + r"""Analytics-only signal (product snapshot) describing WHERE the action's + read/write determination came from. Complementary to the effective + read/write value (the tool's ToolType, which drives HITL): the value says + read-or-write, this says how confident that is. MCP_ANNOTATION = from the + tool's read-only/destructive hints; ADMIN_OVERRIDE = an admin set it; + NONE = no usable hint (the effective value then defaults to write); + NATIVE_TOOL_DEFINITION = from a curated native tool (snapshot-derived). + Does not affect runtime behavior. + + """ + auth_type: Annotated[Optional[AuthType], pydantic.Field(alias="authType")] = None r"""The type of authentication being used. Use 'OAUTH_*' when Glean calls an external API (e.g., Jira) on behalf of a user to obtain an OAuth token. @@ -171,6 +215,51 @@ class ToolMetadata(BaseModel): ] = None r"""Whether this action has been fully configured and validated.""" + @field_serializer("type") + def serialize_type(self, value): + if isinstance(value, str): + try: + return models.ToolMetadataType(value) + except ValueError: + return value + return value + + @field_serializer("knowledge_type") + def serialize_knowledge_type(self, value): + if isinstance(value, str): + try: + return models.KnowledgeType(value) + except ValueError: + return value + return value + + @field_serializer("write_action_type") + def serialize_write_action_type(self, value): + if isinstance(value, str): + try: + return models.WriteActionType(value) + except ValueError: + return value + return value + + @field_serializer("action_type_source") + def serialize_action_type_source(self, value): + if isinstance(value, str): + try: + return models.ActionTypeSource(value) + except ValueError: + return value + return value + + @field_serializer("auth_type") + def serialize_auth_type(self, value): + if isinstance(value, str): + try: + return models.AuthType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -184,6 +273,7 @@ def serialize_model(self, handler): "createdAt", "lastUpdatedAt", "writeActionType", + "actionTypeSource", "authType", "auth", "permissions", @@ -196,10 +286,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + ToolMetadata.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/toolparameter.py b/src/glean/api_client/models/toolparameter.py index e8ac88d3..2e00547d 100644 --- a/src/glean/api_client/models/toolparameter.py +++ b/src/glean/api_client/models/toolparameter.py @@ -2,14 +2,15 @@ from __future__ import annotations from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Dict, List, Optional from typing_extensions import Annotated, NotRequired, TypedDict -class ToolParameterType(str, Enum): +class ToolParameterType(str, Enum, metaclass=utils.OpenEnumMeta): r"""Parameter type (string, number, boolean, object, array)""" STRING = "string" @@ -58,6 +59,15 @@ class ToolParameter(BaseModel): properties: Optional[Dict[str, ToolParameter]] = None r"""When type is 'object', this describes the structure of the object.""" + @field_serializer("type") + def serialize_type(self, value): + if isinstance(value, str): + try: + return models.ToolParameterType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -76,10 +86,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + ToolParameter.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/toolscallparameter.py b/src/glean/api_client/models/toolscallparameter.py index 461023ac..43b68c3e 100644 --- a/src/glean/api_client/models/toolscallparameter.py +++ b/src/glean/api_client/models/toolscallparameter.py @@ -39,7 +39,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/toolscallresponse.py b/src/glean/api_client/models/toolscallresponse.py index d2d3ad95..9949402b 100644 --- a/src/glean/api_client/models/toolscallresponse.py +++ b/src/glean/api_client/models/toolscallresponse.py @@ -32,10 +32,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + ToolsCallResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/toolserverauthstatus.py b/src/glean/api_client/models/toolserverauthstatus.py new file mode 100644 index 00000000..3a96ab18 --- /dev/null +++ b/src/glean/api_client/models/toolserverauthstatus.py @@ -0,0 +1,12 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +from glean.api_client import utils + + +class ToolServerAuthStatus(str, Enum, metaclass=utils.OpenEnumMeta): + r"""Authentication status for the calling user.""" + + AWAITING_AUTH = "AWAITING_AUTH" + AUTHORIZED = "AUTHORIZED" diff --git a/src/glean/api_client/models/toolserverauthstatusresponse.py b/src/glean/api_client/models/toolserverauthstatusresponse.py new file mode 100644 index 00000000..8af7af9c --- /dev/null +++ b/src/glean/api_client/models/toolserverauthstatusresponse.py @@ -0,0 +1,91 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .actionauthtype import ActionAuthType +from .toolserverauthstatus import ToolServerAuthStatus +from glean.api_client import models +from glean.api_client.types import BaseModel, UNSET_SENTINEL +import pydantic +from pydantic import field_serializer, model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class ToolServerAuthStatusResponseTypedDict(TypedDict): + auth_status: ToolServerAuthStatus + r"""Authentication status for the calling user.""" + auth_type: ActionAuthType + r"""Authentication mechanism used by an action pack. + - `AUTH_USER_OAUTH`: Requires per-user OAuth consent to the third-party tool. + - `AUTH_ADMIN`: Uses a service-account / admin-owned credential. End users do not authorize individually. + - `AUTH_NONE`: Action pack requires no authentication. + + """ + display_name: NotRequired[str] + r"""Human-readable name of the tool server.""" + logo_url: NotRequired[str] + r"""Logo URL for the tool server.""" + description: NotRequired[str] + r"""Brief description of the tool server.""" + + +class ToolServerAuthStatusResponse(BaseModel): + auth_status: Annotated[ToolServerAuthStatus, pydantic.Field(alias="authStatus")] + r"""Authentication status for the calling user.""" + + auth_type: Annotated[ActionAuthType, pydantic.Field(alias="authType")] + r"""Authentication mechanism used by an action pack. + - `AUTH_USER_OAUTH`: Requires per-user OAuth consent to the third-party tool. + - `AUTH_ADMIN`: Uses a service-account / admin-owned credential. End users do not authorize individually. + - `AUTH_NONE`: Action pack requires no authentication. + + """ + + display_name: Annotated[Optional[str], pydantic.Field(alias="displayName")] = None + r"""Human-readable name of the tool server.""" + + logo_url: Annotated[Optional[str], pydantic.Field(alias="logoUrl")] = None + r"""Logo URL for the tool server.""" + + description: Optional[str] = None + r"""Brief description of the tool server.""" + + @field_serializer("auth_status") + def serialize_auth_status(self, value): + if isinstance(value, str): + try: + return models.ToolServerAuthStatus(value) + except ValueError: + return value + return value + + @field_serializer("auth_type") + def serialize_auth_type(self, value): + if isinstance(value, str): + try: + return models.ActionAuthType(value) + except ValueError: + return value + return value + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["displayName", "logoUrl", "description"]) + 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: + ToolServerAuthStatusResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/toolsets.py b/src/glean/api_client/models/toolsets.py index 1accc57c..c1ecb2c2 100644 --- a/src/glean/api_client/models/toolsets.py +++ b/src/glean/api_client/models/toolsets.py @@ -38,10 +38,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + ToolSets.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/toolslistresponse.py b/src/glean/api_client/models/toolslistresponse.py index d20d237b..8b5a32cc 100644 --- a/src/glean/api_client/models/toolslistresponse.py +++ b/src/glean/api_client/models/toolslistresponse.py @@ -23,7 +23,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/ugctype.py b/src/glean/api_client/models/ugctype.py index 383b3994..7775bf5a 100644 --- a/src/glean/api_client/models/ugctype.py +++ b/src/glean/api_client/models/ugctype.py @@ -2,12 +2,27 @@ from __future__ import annotations from enum import Enum +from glean.api_client import utils -class UgcType(str, Enum): +class UgcType(str, Enum, metaclass=utils.OpenEnumMeta): + AGENT_TYPE = "AGENT_TYPE" ANNOUNCEMENTS_TYPE = "ANNOUNCEMENTS_TYPE" ANSWERS_TYPE = "ANSWERS_TYPE" + CHATS_TYPE = "CHATS_TYPE" COLLECTIONS_TYPE = "COLLECTIONS_TYPE" + EMAIL_TYPE = "EMAIL_TYPE" + HTML_CODE_TYPE = "HTML_CODE_TYPE" + IMAGE_TYPE = "IMAGE_TYPE" + MESSAGE_TYPE = "MESSAGE_TYPE" + PAPER_TYPE = "PAPER_TYPE" + PRISM_VIEWS_TYPE = "PRISM_VIEWS_TYPE" + PROMPT_TEMPLATES_TYPE = "PROMPT_TEMPLATES_TYPE" + PINS_TYPE = "PINS_TYPE" + SCRIBES_TYPE = "SCRIBES_TYPE" SHORTCUTS_TYPE = "SHORTCUTS_TYPE" + SLIDE_TYPE = "SLIDE_TYPE" + SPREADSHEET_TYPE = "SPREADSHEET_TYPE" + INLINE_HTML_TYPE = "INLINE_HTML_TYPE" + PODCAST_TYPE = "PODCAST_TYPE" WORKFLOWS_TYPE = "WORKFLOWS_TYPE" - PROMPT_TEMPLATES_TYPE = "PROMPT_TEMPLATES_TYPE" diff --git a/src/glean/api_client/models/unauthorizeddatasourceinstance.py b/src/glean/api_client/models/unauthorizeddatasourceinstance.py new file mode 100644 index 00000000..526f7724 --- /dev/null +++ b/src/glean/api_client/models/unauthorizeddatasourceinstance.py @@ -0,0 +1,86 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .authstatus import AuthStatus +from glean.api_client import models +from glean.api_client.types import BaseModel, UNSET_SENTINEL +import pydantic +from pydantic import field_serializer, model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class UnauthorizedDatasourceInstanceTypedDict(TypedDict): + r"""A datasource instance that could not return results for this request because the user has not completed or has expired per-user OAuth.""" + + datasource_instance: NotRequired[str] + r"""The instance identifier (e.g. \"github\", \"github_enterprise_0\", \"slack_0\"). Matches the instance names used in datasource configuration. + + """ + display_name: NotRequired[str] + r"""Human-readable name of the datasource instance for display.""" + auth_status: NotRequired[AuthStatus] + r"""The per-user authorization status for a datasource.""" + auth_url_relative_path: NotRequired[str] + r"""Relative path to initiate or resume OAuth for the current user and instance, including a one-time authentication token as a query parameter. Clients should prepend their configured Glean backend base URL. + + """ + + +class UnauthorizedDatasourceInstance(BaseModel): + r"""A datasource instance that could not return results for this request because the user has not completed or has expired per-user OAuth.""" + + datasource_instance: Annotated[ + Optional[str], pydantic.Field(alias="datasourceInstance") + ] = None + r"""The instance identifier (e.g. \"github\", \"github_enterprise_0\", \"slack_0\"). Matches the instance names used in datasource configuration. + + """ + + display_name: Annotated[Optional[str], pydantic.Field(alias="displayName")] = None + r"""Human-readable name of the datasource instance for display.""" + + auth_status: Annotated[Optional[AuthStatus], pydantic.Field(alias="authStatus")] = ( + None + ) + r"""The per-user authorization status for a datasource.""" + + auth_url_relative_path: Annotated[ + Optional[str], pydantic.Field(alias="authUrlRelativePath") + ] = None + r"""Relative path to initiate or resume OAuth for the current user and instance, including a one-time authentication token as a query parameter. Clients should prepend their configured Glean backend base URL. + + """ + + @field_serializer("auth_status") + def serialize_auth_status(self, value): + if isinstance(value, str): + try: + return models.AuthStatus(value) + except ValueError: + return value + return value + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + ["datasourceInstance", "displayName", "authStatus", "authUrlRelativePath"] + ) + 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: + UnauthorizedDatasourceInstance.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/unpin.py b/src/glean/api_client/models/unpin.py index f8feebc7..406ddefe 100644 --- a/src/glean/api_client/models/unpin.py +++ b/src/glean/api_client/models/unpin.py @@ -24,7 +24,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/unpinop.py b/src/glean/api_client/models/unpinop.py new file mode 100644 index 00000000..788b1fdb --- /dev/null +++ b/src/glean/api_client/models/unpinop.py @@ -0,0 +1,45 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .unpin import Unpin, UnpinTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class UnpinRequestTypedDict(TypedDict): + unpin: UnpinTypedDict + r"""Details about the pin being unpinned.""" + locale: NotRequired[str] + r"""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`.""" + + +class UnpinRequest(BaseModel): + unpin: Annotated[ + Unpin, FieldMetadata(request=RequestMetadata(media_type="application/json")) + ] + r"""Details about the pin being unpinned.""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""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`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/updateannouncementop.py b/src/glean/api_client/models/updateannouncementop.py new file mode 100644 index 00000000..8ccce4d0 --- /dev/null +++ b/src/glean/api_client/models/updateannouncementop.py @@ -0,0 +1,49 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .updateannouncementrequest import ( + UpdateAnnouncementRequest, + UpdateAnnouncementRequestTypedDict, +) +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class UpdateannouncementRequestRequestTypedDict(TypedDict): + update_announcement_request: UpdateAnnouncementRequestTypedDict + r"""Announcement content. Id need to be specified for the announcement.""" + locale: NotRequired[str] + r"""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`.""" + + +class UpdateannouncementRequestRequest(BaseModel): + update_announcement_request: Annotated[ + UpdateAnnouncementRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""Announcement content. Id need to be specified for the announcement.""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""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`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/updateannouncementrequest.py b/src/glean/api_client/models/updateannouncementrequest.py index 7107314e..04efd103 100644 --- a/src/glean/api_client/models/updateannouncementrequest.py +++ b/src/glean/api_client/models/updateannouncementrequest.py @@ -132,10 +132,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + UpdateAnnouncementRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/updatedatasourceconfigurationrequest.py b/src/glean/api_client/models/updatedatasourceconfigurationrequest.py new file mode 100644 index 00000000..e1a2c5a3 --- /dev/null +++ b/src/glean/api_client/models/updatedatasourceconfigurationrequest.py @@ -0,0 +1,23 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .datasourceinstanceconfiguration import ( + DatasourceInstanceConfiguration, + DatasourceInstanceConfigurationTypedDict, +) +from glean.api_client.types import BaseModel +from typing_extensions import TypedDict + + +class UpdateDatasourceConfigurationRequestTypedDict(TypedDict): + r"""Request to update greenlisted configuration values for a datasource instance. Only keys that are exposed via the public API greenlist may be set.""" + + configuration: DatasourceInstanceConfigurationTypedDict + r"""Configuration for a datasource instance""" + + +class UpdateDatasourceConfigurationRequest(BaseModel): + r"""Request to update greenlisted configuration values for a datasource instance. Only keys that are exposed via the public API greenlist may be set.""" + + configuration: DatasourceInstanceConfiguration + r"""Configuration for a datasource instance""" diff --git a/src/glean/api_client/models/updatedatasourceinstanceconfigurationop.py b/src/glean/api_client/models/updatedatasourceinstanceconfigurationop.py new file mode 100644 index 00000000..1f77deeb --- /dev/null +++ b/src/glean/api_client/models/updatedatasourceinstanceconfigurationop.py @@ -0,0 +1,42 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .updatedatasourceconfigurationrequest import ( + UpdateDatasourceConfigurationRequest, + UpdateDatasourceConfigurationRequestTypedDict, +) +from glean.api_client.types import BaseModel +from glean.api_client.utils import FieldMetadata, PathParamMetadata, RequestMetadata +import pydantic +from typing_extensions import Annotated, TypedDict + + +class UpdateDatasourceInstanceConfigurationRequestTypedDict(TypedDict): + datasource_id: str + r"""The datasource type identifier (e.g. o365sharepoint)""" + instance_id: str + r"""The datasource instance identifier""" + update_datasource_configuration_request: ( + UpdateDatasourceConfigurationRequestTypedDict + ) + + +class UpdateDatasourceInstanceConfigurationRequest(BaseModel): + datasource_id: Annotated[ + str, + pydantic.Field(alias="datasourceId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The datasource type identifier (e.g. o365sharepoint)""" + + instance_id: Annotated[ + str, + pydantic.Field(alias="instanceId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The datasource instance identifier""" + + update_datasource_configuration_request: Annotated[ + UpdateDatasourceConfigurationRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] diff --git a/src/glean/api_client/models/updatedlpconfigrequest.py b/src/glean/api_client/models/updatedlpconfigrequest.py index 9111f959..dfa51ced 100644 --- a/src/glean/api_client/models/updatedlpconfigrequest.py +++ b/src/glean/api_client/models/updatedlpconfigrequest.py @@ -30,7 +30,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/updatedlpconfigresponse.py b/src/glean/api_client/models/updatedlpconfigresponse.py index e776c48f..216e80d9 100644 --- a/src/glean/api_client/models/updatedlpconfigresponse.py +++ b/src/glean/api_client/models/updatedlpconfigresponse.py @@ -2,9 +2,10 @@ from __future__ import annotations from .dlpsimpleresult import DlpSimpleResult +from glean.api_client import models from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -21,6 +22,15 @@ class UpdateDlpConfigResponse(BaseModel): report_id: Annotated[Optional[str], pydantic.Field(alias="reportId")] = None r"""The id of the report that was just created and run.""" + @field_serializer("result") + def serialize_result(self, value): + if isinstance(value, str): + try: + return models.DlpSimpleResult(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["result", "reportId"]) @@ -29,10 +39,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + UpdateDlpConfigResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/updatedlpreportrequest.py b/src/glean/api_client/models/updatedlpreportrequest.py index 20dcac32..8fdd3dd1 100644 --- a/src/glean/api_client/models/updatedlpreportrequest.py +++ b/src/glean/api_client/models/updatedlpreportrequest.py @@ -4,9 +4,10 @@ from .dlpconfig import DlpConfig, DlpConfigTypedDict from .dlpfrequency import DlpFrequency from .dlpreportstatus import DlpReportStatus +from glean.api_client import models from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -42,6 +43,24 @@ class UpdateDlpReportRequest(BaseModel): report_name: Annotated[Optional[str], pydantic.Field(alias="reportName")] = None r"""The new name of the policy if provided.""" + @field_serializer("frequency") + def serialize_frequency(self, value): + if isinstance(value, str): + try: + return models.DlpFrequency(value) + except ValueError: + return value + return value + + @field_serializer("status") + def serialize_status(self, value): + if isinstance(value, str): + try: + return models.DlpReportStatus(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -52,10 +71,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + UpdateDlpReportRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/updatedlpreportresponse.py b/src/glean/api_client/models/updatedlpreportresponse.py index c65474b8..ecb9e43f 100644 --- a/src/glean/api_client/models/updatedlpreportresponse.py +++ b/src/glean/api_client/models/updatedlpreportresponse.py @@ -2,8 +2,9 @@ from __future__ import annotations from .dlpsimpleresult import DlpSimpleResult +from glean.api_client import models from glean.api_client.types import BaseModel, UNSET_SENTINEL -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -15,6 +16,15 @@ class UpdateDlpReportResponseTypedDict(TypedDict): class UpdateDlpReportResponse(BaseModel): result: Optional[DlpSimpleResult] = None + @field_serializer("result") + def serialize_result(self, value): + if isinstance(value, str): + try: + return models.DlpSimpleResult(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["result"]) @@ -23,7 +33,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/updatedocumentvisibilityoverridesrequest.py b/src/glean/api_client/models/updatedocumentvisibilityoverridesrequest.py index 1ba68c41..94e18dac 100644 --- a/src/glean/api_client/models/updatedocumentvisibilityoverridesrequest.py +++ b/src/glean/api_client/models/updatedocumentvisibilityoverridesrequest.py @@ -30,10 +30,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + UpdateDocumentVisibilityOverridesRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/updatedocumentvisibilityoverridesresponse.py b/src/glean/api_client/models/updatedocumentvisibilityoverridesresponse.py index 1dacc410..48078741 100644 --- a/src/glean/api_client/models/updatedocumentvisibilityoverridesresponse.py +++ b/src/glean/api_client/models/updatedocumentvisibilityoverridesresponse.py @@ -28,7 +28,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/updatepermissionsrequest.py b/src/glean/api_client/models/updatepermissionsrequest.py index e7f6ae6e..0c622986 100644 --- a/src/glean/api_client/models/updatepermissionsrequest.py +++ b/src/glean/api_client/models/updatepermissionsrequest.py @@ -55,10 +55,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + UpdatePermissionsRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/updateshortcutop.py b/src/glean/api_client/models/updateshortcutop.py new file mode 100644 index 00000000..f047f8ac --- /dev/null +++ b/src/glean/api_client/models/updateshortcutop.py @@ -0,0 +1,46 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .updateshortcutrequest import UpdateShortcutRequest, UpdateShortcutRequestTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class UpdateshortcutRequestRequestTypedDict(TypedDict): + update_shortcut_request: UpdateShortcutRequestTypedDict + r"""Shortcut content. Id need to be specified for the shortcut.""" + locale: NotRequired[str] + r"""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`.""" + + +class UpdateshortcutRequestRequest(BaseModel): + update_shortcut_request: Annotated[ + UpdateShortcutRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""Shortcut content. Id need to be specified for the shortcut.""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""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`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/updateshortcutrequest.py b/src/glean/api_client/models/updateshortcutrequest.py index 650b32fb..4b89b63a 100644 --- a/src/glean/api_client/models/updateshortcutrequest.py +++ b/src/glean/api_client/models/updateshortcutrequest.py @@ -85,10 +85,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + UpdateShortcutRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/updateshortcutresponse.py b/src/glean/api_client/models/updateshortcutresponse.py index ed28c5ae..9c51a9a4 100644 --- a/src/glean/api_client/models/updateshortcutresponse.py +++ b/src/glean/api_client/models/updateshortcutresponse.py @@ -27,7 +27,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/updatetype.py b/src/glean/api_client/models/updatetype.py index 687544d4..6a51a4bb 100644 --- a/src/glean/api_client/models/updatetype.py +++ b/src/glean/api_client/models/updatetype.py @@ -2,9 +2,10 @@ from __future__ import annotations from enum import Enum +from glean.api_client import utils -class UpdateType(str, Enum): +class UpdateType(str, Enum, metaclass=utils.OpenEnumMeta): r"""Optional type classification for the update.""" # Updates that require user attention or action diff --git a/src/glean/api_client/models/uploadchatfilesop.py b/src/glean/api_client/models/uploadchatfilesop.py index 59b0c7d0..4aafc910 100644 --- a/src/glean/api_client/models/uploadchatfilesop.py +++ b/src/glean/api_client/models/uploadchatfilesop.py @@ -15,6 +15,8 @@ class UploadchatfilesRequestRequestTypedDict(TypedDict): upload_chat_files_request: UploadChatFilesRequestTypedDict + locale: NotRequired[str] + r"""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: 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.""" @@ -25,6 +27,12 @@ class UploadchatfilesRequestRequest(BaseModel): FieldMetadata(request=RequestMetadata(media_type="multipart/form-data")), ] + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""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: Annotated[ Optional[int], pydantic.Field(alias="timezoneOffset"), @@ -34,13 +42,13 @@ class UploadchatfilesRequestRequest(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = set(["timezoneOffset"]) + optional_fields = set(["locale", "timezoneOffset"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/uploadchatfilesrequest.py b/src/glean/api_client/models/uploadchatfilesrequest.py index 898603b0..23c3ccd7 100644 --- a/src/glean/api_client/models/uploadchatfilesrequest.py +++ b/src/glean/api_client/models/uploadchatfilesrequest.py @@ -10,19 +10,19 @@ from typing_extensions import Annotated, NotRequired, TypedDict -class FileTypedDict(TypedDict): +class UploadChatFilesRequestFileTypedDict(TypedDict): file_name: str - content: Union[bytes, IO[bytes], io.BufferedReader] + content: Union[bytes, IO[bytes], io.IOBase] content_type: NotRequired[str] -class File(BaseModel): +class UploadChatFilesRequestFile(BaseModel): file_name: Annotated[ str, pydantic.Field(alias="fileName"), FieldMetadata(multipart=True) ] content: Annotated[ - Union[bytes, IO[bytes], io.BufferedReader], + Union[bytes, IO[bytes], io.IOBase], pydantic.Field(alias=""), FieldMetadata(multipart=MultipartFormMetadata(content=True)), ] @@ -41,7 +41,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -51,12 +51,13 @@ def serialize_model(self, handler): class UploadChatFilesRequestTypedDict(TypedDict): - files: List[FileTypedDict] + files: List[UploadChatFilesRequestFileTypedDict] r"""Raw files to be uploaded for chat in binary format.""" class UploadChatFilesRequest(BaseModel): files: Annotated[ - List[File], FieldMetadata(multipart=MultipartFormMetadata(file=True)) + List[UploadChatFilesRequestFile], + FieldMetadata(multipart=MultipartFormMetadata(file=True)), ] r"""Raw files to be uploaded for chat in binary format.""" diff --git a/src/glean/api_client/models/uploadchatfilesresponse.py b/src/glean/api_client/models/uploadchatfilesresponse.py index 123f81d5..a707d722 100644 --- a/src/glean/api_client/models/uploadchatfilesresponse.py +++ b/src/glean/api_client/models/uploadchatfilesresponse.py @@ -25,7 +25,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/uploadshortcutsrequest.py b/src/glean/api_client/models/uploadshortcutsrequest.py index 47126dad..e73b9c17 100644 --- a/src/glean/api_client/models/uploadshortcutsrequest.py +++ b/src/glean/api_client/models/uploadshortcutsrequest.py @@ -52,10 +52,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + UploadShortcutsRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/uploadstatusenum.py b/src/glean/api_client/models/uploadstatusenum.py index c7ca19e2..950f6a40 100644 --- a/src/glean/api_client/models/uploadstatusenum.py +++ b/src/glean/api_client/models/uploadstatusenum.py @@ -2,9 +2,10 @@ from __future__ import annotations from enum import Enum +from glean.api_client import utils -class UploadStatusEnum(str, Enum): +class UploadStatusEnum(str, Enum, metaclass=utils.OpenEnumMeta): r"""Upload status, enum of NOT_UPLOADED, UPLOADED, STATUS_UNKNOWN""" UPLOADED = "UPLOADED" diff --git a/src/glean/api_client/models/user.py b/src/glean/api_client/models/user.py index 82151492..3a8ab795 100644 --- a/src/glean/api_client/models/user.py +++ b/src/glean/api_client/models/user.py @@ -30,10 +30,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + User.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/useractivity.py b/src/glean/api_client/models/useractivity.py index 1320675b..17d6333e 100644 --- a/src/glean/api_client/models/useractivity.py +++ b/src/glean/api_client/models/useractivity.py @@ -4,14 +4,15 @@ from .countinfo import CountInfo, CountInfoTypedDict from .person import Person, PersonTypedDict from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict -class UserActivityAction(str, Enum): +class UserActivityAction(str, Enum, metaclass=utils.OpenEnumMeta): r"""The action for the activity""" ADD = "ADD" @@ -52,6 +53,15 @@ class UserActivity(BaseModel): Optional[CountInfo], pydantic.Field(alias="aggregateVisitCount") ] = None + @field_serializer("action") + def serialize_action(self, value): + if isinstance(value, str): + try: + return models.UserActivityAction(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["actor", "timestamp", "action", "aggregateVisitCount"]) @@ -60,10 +70,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + UserActivity.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/useractivityinsight.py b/src/glean/api_client/models/useractivityinsight.py index c5485fa6..692a1035 100644 --- a/src/glean/api_client/models/useractivityinsight.py +++ b/src/glean/api_client/models/useractivityinsight.py @@ -4,14 +4,15 @@ from .countinfo import CountInfo, CountInfoTypedDict from .person import Person, PersonTypedDict from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict -class ActivityEnum(str, Enum): +class ActivityEnum(str, Enum, metaclass=utils.OpenEnumMeta): r"""Activity e.g. search, home page visit or all.""" ALL = "ALL" @@ -47,6 +48,15 @@ class UserActivityInsight(BaseModel): Optional[CountInfo], pydantic.Field(alias="activeDayCount") ] = None + @field_serializer("activity") + def serialize_activity(self, value): + if isinstance(value, str): + try: + return models.ActivityEnum(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -57,10 +67,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + UserActivityInsight.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/usergeneratedcontentid.py b/src/glean/api_client/models/usergeneratedcontentid.py index 04553f56..cd30606c 100644 --- a/src/glean/api_client/models/usergeneratedcontentid.py +++ b/src/glean/api_client/models/usergeneratedcontentid.py @@ -24,7 +24,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/userinsightsresponse.py b/src/glean/api_client/models/userinsightsresponse.py deleted file mode 100644 index 835b21b3..00000000 --- a/src/glean/api_client/models/userinsightsresponse.py +++ /dev/null @@ -1,79 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from .useractivityinsight import UserActivityInsight, UserActivityInsightTypedDict -from glean.api_client.types import BaseModel, UNSET_SENTINEL -import pydantic -from pydantic import model_serializer -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class UserInsightsResponseTypedDict(TypedDict): - last_log_timestamp: NotRequired[int] - r"""Unix timestamp of the last activity processed to make the response (in seconds since epoch UTC).""" - activity_insights: NotRequired[List[UserActivityInsightTypedDict]] - r"""Insights for all active users with respect to set of actions.""" - inactive_insights: NotRequired[List[UserActivityInsightTypedDict]] - r"""Insights for all in inactive users with respect to set of actions and time period. Activity count will be set to 0.""" - total_teammates: NotRequired[int] - r"""Total number of teammates that have logged in to the product, that are still valid teammates.""" - total_active_users: NotRequired[int] - r"""Total number of active users in the requested period.""" - departments: NotRequired[List[str]] - r"""list of departments applicable for users tab.""" - - -class UserInsightsResponse(BaseModel): - last_log_timestamp: Annotated[ - Optional[int], pydantic.Field(alias="lastLogTimestamp") - ] = None - r"""Unix timestamp of the last activity processed to make the response (in seconds since epoch UTC).""" - - activity_insights: Annotated[ - Optional[List[UserActivityInsight]], pydantic.Field(alias="activityInsights") - ] = None - r"""Insights for all active users with respect to set of actions.""" - - inactive_insights: Annotated[ - Optional[List[UserActivityInsight]], pydantic.Field(alias="inactiveInsights") - ] = None - r"""Insights for all in inactive users with respect to set of actions and time period. Activity count will be set to 0.""" - - total_teammates: Annotated[ - Optional[int], pydantic.Field(alias="totalTeammates") - ] = None - r"""Total number of teammates that have logged in to the product, that are still valid teammates.""" - - total_active_users: Annotated[ - Optional[int], pydantic.Field(alias="totalActiveUsers") - ] = None - r"""Total number of active users in the requested period.""" - - departments: Optional[List[str]] = None - r"""list of departments applicable for users tab.""" - - @model_serializer(mode="wrap") - def serialize_model(self, handler): - optional_fields = set( - [ - "lastLogTimestamp", - "activityInsights", - "inactiveInsights", - "totalTeammates", - "totalActiveUsers", - "departments", - ] - ) - serialized = handler(self) - m = {} - - for n, f in type(self).model_fields.items(): - k = f.alias or n - val = serialized.get(k) - - if val != UNSET_SENTINEL: - if val is not None or k not in optional_fields: - m[k] = val - - return m diff --git a/src/glean/api_client/models/userreferencedefinition.py b/src/glean/api_client/models/userreferencedefinition.py index 60cbbb12..ae7ab296 100644 --- a/src/glean/api_client/models/userreferencedefinition.py +++ b/src/glean/api_client/models/userreferencedefinition.py @@ -37,10 +37,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + UserReferenceDefinition.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/userrole.py b/src/glean/api_client/models/userrole.py index f4aa28fa..2768603f 100644 --- a/src/glean/api_client/models/userrole.py +++ b/src/glean/api_client/models/userrole.py @@ -2,9 +2,10 @@ from __future__ import annotations from enum import Enum +from glean.api_client import utils -class UserRole(str, Enum): +class UserRole(str, Enum, metaclass=utils.OpenEnumMeta): r"""A user's role with respect to a specific document.""" OWNER = "OWNER" diff --git a/src/glean/api_client/models/userrolespecification.py b/src/glean/api_client/models/userrolespecification.py index 9691a239..485de693 100644 --- a/src/glean/api_client/models/userrolespecification.py +++ b/src/glean/api_client/models/userrolespecification.py @@ -4,9 +4,10 @@ from .documentspec_union import DocumentSpecUnion, DocumentSpecUnionTypedDict from .group import Group, GroupTypedDict from .userrole import UserRole +from glean.api_client import models from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -34,6 +35,15 @@ class UserRoleSpecification(BaseModel): group: Optional[Group] = None + @field_serializer("role") + def serialize_role(self, value): + if isinstance(value, str): + try: + return models.UserRole(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["sourceDocumentSpec", "person", "group"]) @@ -42,10 +52,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + UserRoleSpecification.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/userstatusresponse.py b/src/glean/api_client/models/userstatusresponse.py index d22d67a3..0ee6f353 100644 --- a/src/glean/api_client/models/userstatusresponse.py +++ b/src/glean/api_client/models/userstatusresponse.py @@ -2,9 +2,10 @@ from __future__ import annotations from .uploadstatusenum import UploadStatusEnum +from glean.api_client import models from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -38,6 +39,15 @@ class UserStatusResponse(BaseModel): ] = None r"""Time of last successful upload for the user, in ISO 8601 format""" + @field_serializer("upload_status") + def serialize_upload_status(self, value): + if isinstance(value, str): + try: + return models.UploadStatusEnum(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["isActiveUser", "uploadStatus", "lastUploadedAt"]) @@ -46,10 +56,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + UserStatusResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/userviewinfo.py b/src/glean/api_client/models/userviewinfo.py index e44b5445..9dfde209 100644 --- a/src/glean/api_client/models/userviewinfo.py +++ b/src/glean/api_client/models/userviewinfo.py @@ -35,10 +35,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + UserViewInfo.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/verification.py b/src/glean/api_client/models/verification.py index 4aa8837d..014203d0 100644 --- a/src/glean/api_client/models/verification.py +++ b/src/glean/api_client/models/verification.py @@ -2,8 +2,9 @@ from __future__ import annotations from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional, TYPE_CHECKING from typing_extensions import NotRequired, TypedDict @@ -14,7 +15,7 @@ ) -class State(str, Enum): +class State(str, Enum, metaclass=utils.OpenEnumMeta): r"""The verification state for the document.""" UNVERIFIED = "UNVERIFIED" @@ -34,6 +35,15 @@ class Verification(BaseModel): metadata: Optional["VerificationMetadata"] = None + @field_serializer("state") + def serialize_state(self, value): + if isinstance(value, str): + try: + return models.State(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["metadata"]) @@ -42,7 +52,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/verificationfeed.py b/src/glean/api_client/models/verificationfeed.py index 00a88599..46752ed8 100644 --- a/src/glean/api_client/models/verificationfeed.py +++ b/src/glean/api_client/models/verificationfeed.py @@ -25,7 +25,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/verificationmetadata.py b/src/glean/api_client/models/verificationmetadata.py index 6f4e916e..a04d6ea3 100644 --- a/src/glean/api_client/models/verificationmetadata.py +++ b/src/glean/api_client/models/verificationmetadata.py @@ -81,10 +81,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + VerificationMetadata.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/verifyop.py b/src/glean/api_client/models/verifyop.py new file mode 100644 index 00000000..c4c3e681 --- /dev/null +++ b/src/glean/api_client/models/verifyop.py @@ -0,0 +1,46 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .verifyrequest import VerifyRequest, VerifyRequestTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class VerifyRequestRequestTypedDict(TypedDict): + verify_request: VerifyRequestTypedDict + r"""Details about the verification request.""" + locale: NotRequired[str] + r"""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`.""" + + +class VerifyRequestRequest(BaseModel): + verify_request: Annotated[ + VerifyRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""Details about the verification request.""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""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`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/verifyrequest.py b/src/glean/api_client/models/verifyrequest.py index 564b1844..7c93b46f 100644 --- a/src/glean/api_client/models/verifyrequest.py +++ b/src/glean/api_client/models/verifyrequest.py @@ -39,10 +39,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + VerifyRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/viewerinfo.py b/src/glean/api_client/models/viewerinfo.py index dffc8d94..32b116e7 100644 --- a/src/glean/api_client/models/viewerinfo.py +++ b/src/glean/api_client/models/viewerinfo.py @@ -3,17 +3,18 @@ from __future__ import annotations from datetime import datetime from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict, deprecated @deprecated( - "warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible." + "warning: ** DEPRECATED ** - Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use permissions instead." ) -class Role(str, Enum): +class ViewerInfoRole(str, Enum, metaclass=utils.OpenEnumMeta): r"""DEPRECATED - use permissions instead. Viewer's role on the specific document.""" ANSWER_MODERATOR = "ANSWER_MODERATOR" @@ -22,16 +23,16 @@ class Role(str, Enum): class ViewerInfoTypedDict(TypedDict): - role: NotRequired[Role] + role: NotRequired[ViewerInfoRole] r"""DEPRECATED - use permissions instead. Viewer's role on the specific document.""" last_viewed_time: NotRequired[datetime] class ViewerInfo(BaseModel): role: Annotated[ - Optional[Role], + Optional[ViewerInfoRole], pydantic.Field( - deprecated="warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible." + deprecated="warning: ** DEPRECATED ** - Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use permissions instead." ), ] = None r"""DEPRECATED - use permissions instead. Viewer's role on the specific document.""" @@ -40,6 +41,15 @@ class ViewerInfo(BaseModel): Optional[datetime], pydantic.Field(alias="lastViewedTime") ] = None + @field_serializer("role") + def serialize_role(self, value): + if isinstance(value, str): + try: + return models.ViewerInfoRole(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["role", "lastViewedTime"]) @@ -48,10 +58,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + ViewerInfo.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/workflow.py b/src/glean/api_client/models/workflow.py index 2161dd8a..063e8acf 100644 --- a/src/glean/api_client/models/workflow.py +++ b/src/glean/api_client/models/workflow.py @@ -18,10 +18,23 @@ class WorkflowTypedDict(TypedDict): r"""Server Unix timestamp of the creation time.""" last_update_timestamp: NotRequired[int] r"""Server Unix timestamp of the last update time.""" + last_draft_saved_at: NotRequired[int] + r"""Server Unix timestamp of the last time the draft was saved.""" + last_draft_saved_by: NotRequired[PersonTypedDict] + last_draft_git_author_id: NotRequired[str] + r"""ID of the VCS user (e.g. GitHub username) who last saved the draft. Set only by the draft save path via the external Git integration API.""" last_updated_by: NotRequired[PersonTypedDict] permissions: NotRequired[ObjectPermissionsTypedDict] id: NotRequired[str] r"""The ID of the workflow.""" + verified: NotRequired[bool] + r"""When present, indicates this workflow is admin-verified. Set via the dedicated admin settings endpoint, not by regular edits.""" + show_organization_as_author: NotRequired[bool] + r"""When true, displays organization name instead of author name in agent card. Set via the dedicated admin settings endpoint, not by regular edits.""" + webhook_url: NotRequired[str] + r"""For a CUSTOM_WEBHOOK-triggered agent, the full inbound webhook URL (.../webhooks/custom/) minted for the agent. Empty for other trigger types. + + """ class Workflow(BaseModel): @@ -40,6 +53,20 @@ class Workflow(BaseModel): ] = None r"""Server Unix timestamp of the last update time.""" + last_draft_saved_at: Annotated[ + Optional[int], pydantic.Field(alias="lastDraftSavedAt") + ] = None + r"""Server Unix timestamp of the last time the draft was saved.""" + + last_draft_saved_by: Annotated[ + Optional[Person], pydantic.Field(alias="lastDraftSavedBy") + ] = None + + last_draft_git_author_id: Annotated[ + Optional[str], pydantic.Field(alias="lastDraftGitAuthorId") + ] = None + r"""ID of the VCS user (e.g. GitHub username) who last saved the draft. Set only by the draft save path via the external Git integration API.""" + last_updated_by: Annotated[ Optional[Person], pydantic.Field(alias="lastUpdatedBy") ] = None @@ -49,6 +76,19 @@ class Workflow(BaseModel): id: Optional[str] = None r"""The ID of the workflow.""" + verified: Optional[bool] = None + r"""When present, indicates this workflow is admin-verified. Set via the dedicated admin settings endpoint, not by regular edits.""" + + show_organization_as_author: Annotated[ + Optional[bool], pydantic.Field(alias="showOrganizationAsAuthor") + ] = None + r"""When true, displays organization name instead of author name in agent card. Set via the dedicated admin settings endpoint, not by regular edits.""" + + webhook_url: Annotated[Optional[str], pydantic.Field(alias="webhookUrl")] = None + r"""For a CUSTOM_WEBHOOK-triggered agent, the full inbound webhook URL (.../webhooks/custom/) minted for the agent. Empty for other trigger types. + + """ + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -57,9 +97,15 @@ def serialize_model(self, handler): "author", "createTimestamp", "lastUpdateTimestamp", + "lastDraftSavedAt", + "lastDraftSavedBy", + "lastDraftGitAuthorId", "lastUpdatedBy", "permissions", "id", + "verified", + "showOrganizationAsAuthor", + "webhookUrl", ] ) serialized = handler(self) @@ -67,10 +113,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + Workflow.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/workflowfeedbackinfo.py b/src/glean/api_client/models/workflowfeedbackinfo.py index 3c8abf0e..a0d06dbc 100644 --- a/src/glean/api_client/models/workflowfeedbackinfo.py +++ b/src/glean/api_client/models/workflowfeedbackinfo.py @@ -33,7 +33,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/writeactionparameter.py b/src/glean/api_client/models/writeactionparameter.py index 599f2427..65b3d94c 100644 --- a/src/glean/api_client/models/writeactionparameter.py +++ b/src/glean/api_client/models/writeactionparameter.py @@ -3,14 +3,15 @@ from __future__ import annotations from .possiblevalue import PossibleValue, PossibleValueTypedDict from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import List, Optional from typing_extensions import Annotated, NotRequired, TypedDict -class WriteActionParameterType(str, Enum): +class WriteActionParameterType(str, Enum, metaclass=utils.OpenEnumMeta): r"""The type of the value (e.g., integer, string, boolean, etc.)""" UNKNOWN = "UNKNOWN" @@ -55,6 +56,15 @@ class WriteActionParameter(BaseModel): ] = None r"""Possible values that the parameter can take.""" + @field_serializer("type") + def serialize_type(self, value): + if isinstance(value, str): + try: + return models.WriteActionParameterType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -72,10 +82,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + WriteActionParameter.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/writepermission.py b/src/glean/api_client/models/writepermission.py index 76eac4b7..85e816dc 100644 --- a/src/glean/api_client/models/writepermission.py +++ b/src/glean/api_client/models/writepermission.py @@ -2,9 +2,10 @@ from __future__ import annotations from .scopetype import ScopeType +from glean.api_client import models from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -37,6 +38,15 @@ class WritePermission(BaseModel): delete: Optional[bool] = None r"""True if user has delete permission for this feature and scope""" + @field_serializer("scope_type") + def serialize_scope_type(self, value): + if isinstance(value, str): + try: + return models.ScopeType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["scopeType", "create", "update", "delete"]) @@ -45,10 +55,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + 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: + WritePermission.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/people.py b/src/glean/api_client/people.py index 984073db..a1cca36e 100644 --- a/src/glean/api_client/people.py +++ b/src/glean/api_client/people.py @@ -6,7 +6,7 @@ from glean.api_client.types import OptionalNullable, UNSET from glean.api_client.utils import get_security_from_env from glean.api_client.utils.unmarshal_json_response import unmarshal_json_response -from typing import List, Mapping, Optional, Union +from typing import Iterable, List, Mapping, Optional, Union from typing_extensions import deprecated @@ -62,7 +62,7 @@ def debug( request_has_path_params=True, request_has_query_params=True, user_agent_header="user-agent", - accept_header_value="application/json; charset=UTF-8", + accept_header_value="application/json", http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( @@ -93,13 +93,15 @@ def debug( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Troubleshooting"], + extensions={"x-beta": True}, ), request=req, - error_status_codes=["400", "401", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) - if utils.match_response(http_res, "200", "application/json; charset=UTF-8"): + if utils.match_response(http_res, "200", "application/json"): return unmarshal_json_response(models.DebugUserResponse, http_res) if utils.match_response(http_res, ["400", "401", "4XX"], "*"): http_res_text = utils.stream_to_text(http_res) @@ -161,7 +163,7 @@ async def debug_async( request_has_path_params=True, request_has_query_params=True, user_agent_header="user-agent", - accept_header_value="application/json; charset=UTF-8", + accept_header_value="application/json", http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( @@ -192,13 +194,15 @@ async def debug_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Troubleshooting"], + extensions={"x-beta": True}, ), request=req, - error_status_codes=["400", "401", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) - if utils.match_response(http_res, "200", "application/json; charset=UTF-8"): + if utils.match_response(http_res, "200", "application/json"): return unmarshal_json_response(models.DebugUserResponse, http_res) if utils.match_response(http_res, ["400", "401", "4XX"], "*"): http_res_text = await utils.stream_to_text_async(http_res) @@ -210,7 +214,7 @@ async def debug_async( raise errors.GleanError("Unexpected response received", http_res) @deprecated( - "warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible." + "warning: ** DEPRECATED ** - Deprecated on 2026-02-03, removal scheduled for 2026-10-15: Endpoint is deprecated." ) def count( self, @@ -285,9 +289,18 @@ def count( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Troubleshooting"], + extensions={ + "x-glean-deprecated": { + "id": "4f5df873-385e-4539-8183-cb764b0f06b9", + "introduced": "2026-02-03", + "message": "Endpoint is deprecated", + "removal": "2026-10-15", + } + }, ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -303,7 +316,7 @@ def count( raise errors.GleanError("Unexpected response received", http_res) @deprecated( - "warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible." + "warning: ** DEPRECATED ** - Deprecated on 2026-02-03, removal scheduled for 2026-10-15: Endpoint is deprecated." ) async def count_async( self, @@ -378,9 +391,18 @@ async def count_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Troubleshooting"], + extensions={ + "x-glean-deprecated": { + "id": "4f5df873-385e-4539-8183-cb764b0f06b9", + "introduced": "2026-02-03", + "message": "Endpoint is deprecated", + "removal": "2026-10-15", + } + }, ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -409,7 +431,7 @@ def index( ): r"""Index employee - Adds an employee or updates information about an employee + Adds an employee or replaces the existing information about an employee. :param employee: Describes employee info :param version: Version number for the employee object. If absent or 0 then no version checks are done @@ -470,9 +492,11 @@ def index( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["People"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -501,7 +525,7 @@ async def index_async( ): r"""Index employee - Adds an employee or updates information about an employee + Adds an employee or replaces the existing information about an employee. :param employee: Describes employee info :param version: Version number for the employee object. If absent or 0 then no version checks are done @@ -562,9 +586,11 @@ async def index_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["People"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -579,13 +605,16 @@ async def index_async( raise errors.GleanError("Unexpected response received", http_res) + @deprecated( + "warning: ** DEPRECATED ** - Deprecated on 2026-02-03, removal scheduled for 2026-10-15: Endpoint is deprecated." + ) def bulk_index( self, *, upload_id: str, employees: Union[ - List[models.EmployeeInfoDefinition], - List[models.EmployeeInfoDefinitionTypedDict], + Iterable[models.EmployeeInfoDefinition], + Iterable[models.EmployeeInfoDefinitionTypedDict], ], is_first_page: Optional[bool] = None, is_last_page: Optional[bool] = None, @@ -669,9 +698,18 @@ def bulk_index( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["People"], + extensions={ + "x-glean-deprecated": { + "id": "ce596f49-55c4-465e-bf3c-5a3a33906e1f", + "introduced": "2026-02-03", + "message": "Endpoint is deprecated", + "removal": "2026-10-15", + } + }, ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -686,13 +724,16 @@ def bulk_index( raise errors.GleanError("Unexpected response received", http_res) + @deprecated( + "warning: ** DEPRECATED ** - Deprecated on 2026-02-03, removal scheduled for 2026-10-15: Endpoint is deprecated." + ) async def bulk_index_async( self, *, upload_id: str, employees: Union[ - List[models.EmployeeInfoDefinition], - List[models.EmployeeInfoDefinitionTypedDict], + Iterable[models.EmployeeInfoDefinition], + Iterable[models.EmployeeInfoDefinitionTypedDict], ], is_first_page: Optional[bool] = None, is_last_page: Optional[bool] = None, @@ -776,9 +817,18 @@ async def bulk_index_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["People"], + extensions={ + "x-glean-deprecated": { + "id": "ce596f49-55c4-465e-bf3c-5a3a33906e1f", + "introduced": "2026-02-03", + "message": "Endpoint is deprecated", + "removal": "2026-10-15", + } + }, ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -854,9 +904,11 @@ def process_all_employees_and_teams( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["People"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -932,9 +984,11 @@ async def process_all_employees_and_teams_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["People"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1022,9 +1076,11 @@ def delete( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["People"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1112,9 +1168,11 @@ async def delete_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["People"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1202,9 +1260,11 @@ def index_team( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["People"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1292,9 +1352,11 @@ async def index_team_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["People"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1379,9 +1441,11 @@ def delete_team( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["People"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1466,9 +1530,11 @@ async def delete_team_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["People"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1488,7 +1554,8 @@ def bulk_index_teams( *, upload_id: str, teams: Union[ - List[models.TeamInfoDefinition], List[models.TeamInfoDefinitionTypedDict] + Iterable[models.TeamInfoDefinition], + Iterable[models.TeamInfoDefinitionTypedDict], ], is_first_page: Optional[bool] = None, is_last_page: Optional[bool] = None, @@ -1567,9 +1634,11 @@ def bulk_index_teams( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["People"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1589,7 +1658,8 @@ async def bulk_index_teams_async( *, upload_id: str, teams: Union[ - List[models.TeamInfoDefinition], List[models.TeamInfoDefinitionTypedDict] + Iterable[models.TeamInfoDefinition], + Iterable[models.TeamInfoDefinitionTypedDict], ], is_first_page: Optional[bool] = None, is_last_page: Optional[bool] = None, @@ -1668,9 +1738,11 @@ async def bulk_index_teams_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["People"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/glean/api_client/pins.py b/src/glean/api_client/pins.py index 80d29702..fbba9b16 100644 --- a/src/glean/api_client/pins.py +++ b/src/glean/api_client/pins.py @@ -3,19 +3,20 @@ from .basesdk import BaseSDK from glean.api_client import errors, models, utils from glean.api_client._hooks import HookContext -from glean.api_client.types import BaseModel, OptionalNullable, UNSET +from glean.api_client.types import OptionalNullable, UNSET from glean.api_client.utils import get_security_from_env from glean.api_client.utils.unmarshal_json_response import unmarshal_json_response -from typing import List, Mapping, Optional, Union, cast +from typing import Iterable, List, Mapping, Optional, Union class Pins(BaseSDK): def update( self, *, - queries: Optional[List[str]] = None, + locale: Optional[str] = None, + queries: Optional[Iterable[str]] = None, audience_filters: Optional[ - Union[List[models.FacetFilter], List[models.FacetFilterTypedDict]] + Union[Iterable[models.FacetFilter], Iterable[models.FacetFilterTypedDict]] ] = None, id: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, @@ -27,6 +28,7 @@ def update( Update an existing user-generated pin. + :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 queries: The query strings for which the pinned result will show. :param audience_filters: Filters which restrict who should see the pinned document. Values are taken from the corresponding filters in people search. :param id: The opaque id of the pin to be edited. @@ -45,12 +47,15 @@ def update( else: base_url = self._get_url(base_url, url_variables) - request = models.EditPinRequest( - queries=queries, - audience_filters=utils.get_pydantic_model( - audience_filters, Optional[List[models.FacetFilter]] + request = models.EditpinRequestRequest( + locale=locale, + edit_pin_request=models.EditPinRequest( + queries=utils.unmarshal(queries, Optional[List[str]]), + audience_filters=utils.get_pydantic_model( + audience_filters, Optional[List[models.FacetFilter]] + ), + id=id, ), - id=id, ) req = self._build_request( @@ -67,7 +72,7 @@ def update( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.EditPinRequest + request.edit_pin_request, False, False, "json", models.EditPinRequest ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -90,9 +95,14 @@ def update( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Pins"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -110,9 +120,10 @@ def update( async def update_async( self, *, - queries: Optional[List[str]] = None, + locale: Optional[str] = None, + queries: Optional[Iterable[str]] = None, audience_filters: Optional[ - Union[List[models.FacetFilter], List[models.FacetFilterTypedDict]] + Union[Iterable[models.FacetFilter], Iterable[models.FacetFilterTypedDict]] ] = None, id: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, @@ -124,6 +135,7 @@ async def update_async( Update an existing user-generated pin. + :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 queries: The query strings for which the pinned result will show. :param audience_filters: Filters which restrict who should see the pinned document. Values are taken from the corresponding filters in people search. :param id: The opaque id of the pin to be edited. @@ -142,12 +154,15 @@ async def update_async( else: base_url = self._get_url(base_url, url_variables) - request = models.EditPinRequest( - queries=queries, - audience_filters=utils.get_pydantic_model( - audience_filters, Optional[List[models.FacetFilter]] + request = models.EditpinRequestRequest( + locale=locale, + edit_pin_request=models.EditPinRequest( + queries=utils.unmarshal(queries, Optional[List[str]]), + audience_filters=utils.get_pydantic_model( + audience_filters, Optional[List[models.FacetFilter]] + ), + id=id, ), - id=id, ) req = self._build_request_async( @@ -164,7 +179,7 @@ async def update_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.EditPinRequest + request.edit_pin_request, False, False, "json", models.EditPinRequest ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -187,9 +202,14 @@ async def update_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Pins"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -207,6 +227,7 @@ async def update_async( def retrieve( self, *, + locale: Optional[str] = None, id: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -217,6 +238,7 @@ def retrieve( Read pin details given its ID. + :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 id: The opaque id of the pin to be fetched. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -233,8 +255,11 @@ def retrieve( else: base_url = self._get_url(base_url, url_variables) - request = models.GetPinRequest( - id=id, + request = models.GetpinRequestRequest( + locale=locale, + get_pin_request=models.GetPinRequest( + id=id, + ), ) req = self._build_request( @@ -251,7 +276,7 @@ def retrieve( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.GetPinRequest + request.get_pin_request, False, False, "json", models.GetPinRequest ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -274,9 +299,14 @@ def retrieve( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Pins"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -294,6 +324,7 @@ def retrieve( async def retrieve_async( self, *, + locale: Optional[str] = None, id: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -304,6 +335,7 @@ async def retrieve_async( Read pin details given its ID. + :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 id: The opaque id of the pin to be fetched. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -320,8 +352,11 @@ async def retrieve_async( else: base_url = self._get_url(base_url, url_variables) - request = models.GetPinRequest( - id=id, + request = models.GetpinRequestRequest( + locale=locale, + get_pin_request=models.GetPinRequest( + id=id, + ), ) req = self._build_request_async( @@ -338,7 +373,7 @@ async def retrieve_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.GetPinRequest + request.get_pin_request, False, False, "json", models.GetPinRequest ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -361,9 +396,14 @@ async def retrieve_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Pins"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -381,7 +421,10 @@ async def retrieve_async( def list( self, *, - request: Union[models.ListpinsRequest, models.ListpinsRequestTypedDict], + request_body: Union[ + models.ListpinsRequestBody, models.ListpinsRequestBodyTypedDict + ], + locale: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -391,7 +434,8 @@ def list( Lists all pins. - :param request: The request object to send. + :param request_body: List pins request + :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 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 @@ -407,9 +451,12 @@ def list( else: base_url = self._get_url(base_url, url_variables) - if not isinstance(request, BaseModel): - request = utils.unmarshal(request, models.ListpinsRequest) - request = cast(models.ListpinsRequest, request) + request = models.ListpinsRequest( + locale=locale, + request_body=utils.get_pydantic_model( + request_body, models.ListpinsRequestBody + ), + ) req = self._build_request( method="POST", @@ -425,7 +472,7 @@ def list( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.ListpinsRequest + request.request_body, False, False, "json", models.ListpinsRequestBody ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -448,9 +495,14 @@ def list( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Pins"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -468,7 +520,10 @@ def list( async def list_async( self, *, - request: Union[models.ListpinsRequest, models.ListpinsRequestTypedDict], + request_body: Union[ + models.ListpinsRequestBody, models.ListpinsRequestBodyTypedDict + ], + locale: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -478,7 +533,8 @@ async def list_async( Lists all pins. - :param request: The request object to send. + :param request_body: List pins request + :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 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 @@ -494,9 +550,12 @@ async def list_async( else: base_url = self._get_url(base_url, url_variables) - if not isinstance(request, BaseModel): - request = utils.unmarshal(request, models.ListpinsRequest) - request = cast(models.ListpinsRequest, request) + request = models.ListpinsRequest( + locale=locale, + request_body=utils.get_pydantic_model( + request_body, models.ListpinsRequestBody + ), + ) req = self._build_request_async( method="POST", @@ -512,7 +571,7 @@ async def list_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.ListpinsRequest + request.request_body, False, False, "json", models.ListpinsRequestBody ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -535,9 +594,14 @@ async def list_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Pins"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -555,9 +619,10 @@ async def list_async( def create( self, *, - queries: Optional[List[str]] = None, + locale: Optional[str] = None, + queries: Optional[Iterable[str]] = None, audience_filters: Optional[ - Union[List[models.FacetFilter], List[models.FacetFilterTypedDict]] + Union[Iterable[models.FacetFilter], Iterable[models.FacetFilterTypedDict]] ] = None, document_id: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, @@ -569,6 +634,7 @@ def create( Pin a document as a result for a given search query.Pin results that are known to be a good match. + :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 queries: The query strings for which the pinned result will show. :param audience_filters: Filters which restrict who should see the pinned document. Values are taken from the corresponding filters in people search. :param document_id: The document to be pinned. @@ -587,12 +653,15 @@ def create( else: base_url = self._get_url(base_url, url_variables) - request = models.PinRequest( - queries=queries, - audience_filters=utils.get_pydantic_model( - audience_filters, Optional[List[models.FacetFilter]] + request = models.PinRequestRequest( + locale=locale, + pin_request=models.PinRequest( + queries=utils.unmarshal(queries, Optional[List[str]]), + audience_filters=utils.get_pydantic_model( + audience_filters, Optional[List[models.FacetFilter]] + ), + document_id=document_id, ), - document_id=document_id, ) req = self._build_request( @@ -609,7 +678,7 @@ def create( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.PinRequest + request.pin_request, False, False, "json", models.PinRequest ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -632,9 +701,14 @@ def create( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Pins"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -652,9 +726,10 @@ def create( async def create_async( self, *, - queries: Optional[List[str]] = None, + locale: Optional[str] = None, + queries: Optional[Iterable[str]] = None, audience_filters: Optional[ - Union[List[models.FacetFilter], List[models.FacetFilterTypedDict]] + Union[Iterable[models.FacetFilter], Iterable[models.FacetFilterTypedDict]] ] = None, document_id: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, @@ -666,6 +741,7 @@ async def create_async( Pin a document as a result for a given search query.Pin results that are known to be a good match. + :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 queries: The query strings for which the pinned result will show. :param audience_filters: Filters which restrict who should see the pinned document. Values are taken from the corresponding filters in people search. :param document_id: The document to be pinned. @@ -684,12 +760,15 @@ async def create_async( else: base_url = self._get_url(base_url, url_variables) - request = models.PinRequest( - queries=queries, - audience_filters=utils.get_pydantic_model( - audience_filters, Optional[List[models.FacetFilter]] + request = models.PinRequestRequest( + locale=locale, + pin_request=models.PinRequest( + queries=utils.unmarshal(queries, Optional[List[str]]), + audience_filters=utils.get_pydantic_model( + audience_filters, Optional[List[models.FacetFilter]] + ), + document_id=document_id, ), - document_id=document_id, ) req = self._build_request_async( @@ -706,7 +785,7 @@ async def create_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.PinRequest + request.pin_request, False, False, "json", models.PinRequest ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -729,9 +808,14 @@ async def create_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Pins"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -749,6 +833,7 @@ async def create_async( def remove( self, *, + locale: Optional[str] = None, id: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -759,6 +844,7 @@ def remove( Unpin a previously pinned result. + :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 id: The opaque id of the pin to be unpinned. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -775,8 +861,11 @@ def remove( else: base_url = self._get_url(base_url, url_variables) - request = models.Unpin( - id=id, + request = models.UnpinRequest( + locale=locale, + unpin=models.Unpin( + id=id, + ), ) req = self._build_request( @@ -793,7 +882,7 @@ def remove( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.Unpin + request.unpin, False, False, "json", models.Unpin ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -816,9 +905,14 @@ def remove( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Pins"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "403", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -836,6 +930,7 @@ def remove( async def remove_async( self, *, + locale: Optional[str] = None, id: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -846,6 +941,7 @@ async def remove_async( Unpin a previously pinned result. + :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 id: The opaque id of the pin to be unpinned. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -862,8 +958,11 @@ async def remove_async( else: base_url = self._get_url(base_url, url_variables) - request = models.Unpin( - id=id, + request = models.UnpinRequest( + locale=locale, + unpin=models.Unpin( + id=id, + ), ) req = self._build_request_async( @@ -880,7 +979,7 @@ async def remove_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.Unpin + request.unpin, False, False, "json", models.Unpin ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -903,9 +1002,14 @@ async def remove_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Pins"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "403", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/glean/api_client/policies.py b/src/glean/api_client/policies.py index b2349e2e..ce81e8ef 100644 --- a/src/glean/api_client/policies.py +++ b/src/glean/api_client/policies.py @@ -80,9 +80,11 @@ def retrieve( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Governance"], + extensions={"x-visibility": "Public"}, ), request=req, - error_status_codes=["403", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -167,9 +169,11 @@ async def retrieve_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Governance"], + extensions={"x-visibility": "Public"}, ), request=req, - error_status_codes=["403", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -275,9 +279,11 @@ def update( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Governance"], + extensions=None, ), request=req, - error_status_codes=["403", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -383,9 +389,11 @@ async def update_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Governance"], + extensions=None, ), request=req, - error_status_codes=["403", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -470,9 +478,11 @@ def list( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Governance"], + extensions={"x-visibility": "Public"}, ), request=req, - error_status_codes=["403", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -557,9 +567,11 @@ async def list_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Governance"], + extensions={"x-visibility": "Public"}, ), request=req, - error_status_codes=["403", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -653,9 +665,11 @@ def create( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Governance"], + extensions={"x-visibility": "Public"}, ), request=req, - error_status_codes=["403", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -749,9 +763,11 @@ async def create_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Governance"], + extensions={"x-visibility": "Public"}, ), request=req, - error_status_codes=["403", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -833,9 +849,11 @@ def download( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Governance"], + extensions={"x-visibility": "Public"}, ), request=req, - error_status_codes=["400", "403", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -917,9 +935,11 @@ async def download_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Governance"], + extensions={"x-visibility": "Public"}, ), request=req, - error_status_codes=["400", "403", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/glean/api_client/reports.py b/src/glean/api_client/reports.py index fc7fbb02..3a4c3e6e 100644 --- a/src/glean/api_client/reports.py +++ b/src/glean/api_client/reports.py @@ -83,9 +83,11 @@ def create( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Governance"], + extensions={"x-visibility": "Public"}, ), request=req, - error_status_codes=["403", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -173,9 +175,11 @@ async def create_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Governance"], + extensions={"x-visibility": "Public"}, ), request=req, - error_status_codes=["403", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -257,9 +261,11 @@ def download( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Governance"], + extensions={"x-visibility": "Public"}, ), request=req, - error_status_codes=["403", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -341,9 +347,11 @@ async def download_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Governance"], + extensions={"x-visibility": "Public"}, ), request=req, - error_status_codes=["403", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -425,9 +433,11 @@ def status( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Governance"], + extensions={"x-visibility": "Public"}, ), request=req, - error_status_codes=["403", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -509,9 +519,11 @@ async def status_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Governance"], + extensions={"x-visibility": "Public"}, ), request=req, - error_status_codes=["403", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/glean/api_client/sdk.py b/src/glean/api_client/sdk.py index 6435cf78..4efe2dd7 100644 --- a/src/glean/api_client/sdk.py +++ b/src/glean/api_client/sdk.py @@ -15,9 +15,13 @@ import weakref if TYPE_CHECKING: + from glean.api_client.agents import Agents + from glean.api_client.chat_sdk import ChatSDK from glean.api_client.client import Client - from glean.api_client.governance import Governance from glean.api_client.indexing import Indexing + from glean.api_client.search import Search + from glean.api_client.skills import Skills + from glean.api_client.triggers import Triggers class Glean(BaseSDK): @@ -40,13 +44,21 @@ class Glean(BaseSDK): """ + agents: "Agents" + chat: "ChatSDK" + skills: "Skills" + search: "Search" + triggers: "Triggers" client: "Client" indexing: "Indexing" - governance: "Governance" _sub_sdk_map = { + "agents": ("glean.api_client.agents", "Agents"), + "chat": ("glean.api_client.chat_sdk", "ChatSDK"), + "skills": ("glean.api_client.skills", "Skills"), + "search": ("glean.api_client.search", "Search"), + "triggers": ("glean.api_client.triggers", "Triggers"), "client": ("glean.api_client.client", "Client"), "indexing": ("glean.api_client.indexing", "Indexing"), - "governance": ("glean.api_client.governance", "Governance"), } def __init__( @@ -54,15 +66,13 @@ def __init__( api_token: Optional[Union[Optional[str], Callable[[], Optional[str]]]] = None, instance: Optional[str] = None, server_idx: Optional[int] = None, - server_url: Optional[str] = None, url_params: Optional[Dict[str, str]] = None, + server_url: Optional[str] = None, client: Optional[HttpClient] = None, async_client: Optional[AsyncHttpClient] = None, retry_config: OptionalNullable[RetryConfig] = UNSET, timeout_ms: Optional[int] = None, debug_logger: Optional[Logger] = None, - exclude_deprecated_after: Optional[str] = None, - include_experimental: Optional[bool] = None, ) -> None: r"""Instantiates the SDK configuring it with the provided parameters. @@ -75,8 +85,6 @@ def __init__( :param async_client: The Async HTTP client to use for all asynchronous methods :param retry_config: The retry configuration to use for all supported methods :param timeout_ms: Optional request timeout applied to each operation in milliseconds - :param exclude_deprecated_after: Exclude API endpoints deprecated after this date (YYYY-MM-DD) - :param include_experimental: When True, enables experimental API features """ client_supplied = True if client is None: @@ -100,7 +108,9 @@ def __init__( ), "The provided async_client must implement the AsyncHttpClient protocol." security: Any = None - if callable(api_token): + if api_token is None: + security = None + elif callable(api_token): # pylint: disable=unnecessary-lambda-assignment security = lambda: models.Security(api_token=api_token()) else: @@ -129,8 +139,6 @@ def __init__( retry_config=retry_config, timeout_ms=timeout_ms, debug_logger=debug_logger, - exclude_deprecated_after=exclude_deprecated_after, - include_experimental=include_experimental, ), parent_ref=self, ) diff --git a/src/glean/api_client/sdkconfiguration.py b/src/glean/api_client/sdkconfiguration.py index 824e2983..22e0a4ea 100644 --- a/src/glean/api_client/sdkconfiguration.py +++ b/src/glean/api_client/sdkconfiguration.py @@ -39,19 +39,6 @@ class SDKConfiguration: user_agent: str = __user_agent__ retry_config: OptionalNullable[RetryConfig] = Field(default_factory=lambda: UNSET) timeout_ms: Optional[int] = None - exclude_deprecated_after: Optional[str] = None - """ - Exclude API endpoints that will be deprecated after this date. - Use this to test your integration against upcoming deprecations. - Format: YYYY-MM-DD (e.g., '2026-10-15') - - More information: https://developers.glean.com/deprecations/overview - """ - include_experimental: Optional[bool] = None - """ - When True, enables experimental API features that are not yet generally available. - Use this to preview and test new functionality. - """ def get_server_details(self) -> Tuple[str, Dict[str, str]]: if self.server_url is not None and self.server_url: diff --git a/src/glean/api_client/search.py b/src/glean/api_client/search.py index 4ea44b0d..91ea57d2 100644 --- a/src/glean/api_client/search.py +++ b/src/glean/api_client/search.py @@ -1,65 +1,52 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from .basesdk import BaseSDK -from datetime import datetime 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.unmarshal_json_response import unmarshal_json_response -from typing import Any, List, Mapping, Optional, Union +from typing import Any, Iterable, List, Mapping, Optional, Union class Search(BaseSDK): - def query_as_admin( + def query( self, *, query: str, - timestamp: Optional[datetime] = None, - tracking_token: Optional[str] = None, - session_info: Optional[ - Union[models.SessionInfo, models.SessionInfoTypedDict] - ] = None, - source_document: Optional[ - Union[models.Document, models.DocumentTypedDict] - ] = None, - page_size: Optional[int] = None, - max_snippet_size: Optional[int] = None, - cursor: Optional[str] = None, - result_tab_ids: Optional[List[str]] = None, - input_details: Optional[ + page_size: Optional[int] = 10, + cursor: OptionalNullable[str] = UNSET, + datasources: Optional[Iterable[str]] = None, + filters: Optional[ Union[ - models.SearchRequestInputDetails, - models.SearchRequestInputDetailsTypedDict, + Iterable[models.PlatformFilter], + Iterable[models.PlatformFilterTypedDict], ] ] = None, - request_options: Optional[ - Union[models.SearchRequestOptions, models.SearchRequestOptionsTypedDict] + time_range: Optional[ + Union[models.PlatformTimeRange, models.PlatformTimeRangeTypedDict] ] = None, - timeout_millis: Optional[int] = None, - disable_spellcheck: Optional[bool] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> models.SearchResponse: - r"""Search the index (admin) + ) -> models.PlatformSearchResponse: + r"""Search + + Search your organization's connected content and return ranked document results with cursor pagination. Use `GET /api/search/filters` to discover datasource identifiers and common filter fields. Built-in filter names are validated; other field names are accepted as custom filters and behavior depends on your Glean configuration and connected sources. + Errors: HTTP 422 `unprocessable_query` returns no `results` or `next_cursor`. See `warnings` on the response for non-blocking issues such as partially available results. Not every query issue produces a warning or error. + + + :param query: The search query string. Supports inline operators such as `from:jane type:document app:confluence`. Inline operators are AND'd with structured `filters`. + + :param page_size: Number of results to return per page. + :param cursor: Opaque pagination token from a previous response's `next_cursor` field. Omit on the first request. - Retrieves results for search query without respect for permissions. This is available only to privileged users. + :param datasources: Restrict results to specific datasource identifiers returned by `GET /api/search/filters`. Scopes by datasource type and may include results from multiple instances of that type. - :param query: The search terms. - :param timestamp: The ISO 8601 timestamp associated with the client request. - :param tracking_token: A previously received trackingToken for a search associated with the same query. Useful for more requests and requests for other tabs. - :param session_info: - :param source_document: - :param page_size: Hint to the server about how many results to send back. Server may return less or more. Structured results and clustered results don't count towards pageSize. - :param max_snippet_size: Hint to the server about how many characters long a snippet may be. Server may return less or more. - :param cursor: Pagination cursor. A previously received opaque token representing the position in the overall results at which to start. - :param result_tab_ids: The unique IDs of the result tabs for which to fetch results. This will have precedence over datasource filters if both are specified and in conflict. - :param input_details: - :param request_options: - :param timeout_millis: Timeout in milliseconds for the request. A `408` error will be returned if handling the request takes longer. - :param disable_spellcheck: Whether or not to disable spellcheck. + :param filters: Structured filters applied to search results. Multiple values within a filter with `EQUALS` are OR'd; separate filters are AND'd. Conflicting constraints on the same field (for example, `type:document` in `query` and `type:spreadsheet` in a filter) return an empty result set. See `Filter.field` for built-in field names and operators. Other nonblank field names are accepted as custom filters without validation; behavior depends on your connected sources. + + :param time_range: Filter results to those last updated within this range. :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 @@ -75,33 +62,22 @@ def query_as_admin( else: base_url = self._get_url(base_url, url_variables) - request = models.SearchRequest( - timestamp=timestamp, - tracking_token=tracking_token, - session_info=utils.get_pydantic_model( - session_info, Optional[models.SessionInfo] - ), - source_document=utils.get_pydantic_model( - source_document, Optional[models.Document] - ), - page_size=page_size, - max_snippet_size=max_snippet_size, + request = models.PlatformSearchRequest( query=query, + page_size=page_size, cursor=cursor, - result_tab_ids=result_tab_ids, - input_details=utils.get_pydantic_model( - input_details, Optional[models.SearchRequestInputDetails] + datasources=utils.unmarshal(datasources, Optional[List[str]]), + filters=utils.get_pydantic_model( + filters, Optional[List[models.PlatformFilter]] ), - request_options=utils.get_pydantic_model( - request_options, Optional[models.SearchRequestOptions] + time_range=utils.get_pydantic_model( + time_range, Optional[models.PlatformTimeRange] ), - timeout_millis=timeout_millis, - disable_spellcheck=disable_spellcheck, ) req = self._build_request( method="POST", - path="/rest/api/v1/adminsearch", + path="/api/search", base_url=base_url, url_variables=url_variables, request=request, @@ -113,7 +89,7 @@ def query_as_admin( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.SearchRequest + request, False, False, "json", models.PlatformSearchRequest ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -131,24 +107,44 @@ def query_as_admin( hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="adminsearch", + operation_id="platform-search", oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Search"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-glean-experimental": { + "id": "5ab612fc-ed50-4419-bec3-e5fe83934653", + "introduced": "2026-04-08", + }, + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "403", "422", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) response_data: Any = None if utils.match_response(http_res, "200", "application/json"): - return unmarshal_json_response(models.SearchResponse, http_res) - if utils.match_response(http_res, ["403", "422"], "application/json"): - response_data = unmarshal_json_response(errors.GleanDataErrorData, http_res) - raise errors.GleanDataError(response_data, http_res) - if utils.match_response(http_res, ["400", "401", "429", "4XX"], "*"): + return unmarshal_json_response(models.PlatformSearchResponse, http_res) + if utils.match_response( + http_res, + ["400", "401", "403", "404", "408", "413", "422", "429"], + "application/problem+json", + ): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + if utils.match_response(http_res, ["500", "503"], "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + 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", "*"): @@ -157,55 +153,43 @@ def query_as_admin( raise errors.GleanError("Unexpected response received", http_res) - async def query_as_admin_async( + async def query_async( self, *, query: str, - timestamp: Optional[datetime] = None, - tracking_token: Optional[str] = None, - session_info: Optional[ - Union[models.SessionInfo, models.SessionInfoTypedDict] - ] = None, - source_document: Optional[ - Union[models.Document, models.DocumentTypedDict] - ] = None, - page_size: Optional[int] = None, - max_snippet_size: Optional[int] = None, - cursor: Optional[str] = None, - result_tab_ids: Optional[List[str]] = None, - input_details: Optional[ + page_size: Optional[int] = 10, + cursor: OptionalNullable[str] = UNSET, + datasources: Optional[Iterable[str]] = None, + filters: Optional[ Union[ - models.SearchRequestInputDetails, - models.SearchRequestInputDetailsTypedDict, + Iterable[models.PlatformFilter], + Iterable[models.PlatformFilterTypedDict], ] ] = None, - request_options: Optional[ - Union[models.SearchRequestOptions, models.SearchRequestOptionsTypedDict] + time_range: Optional[ + Union[models.PlatformTimeRange, models.PlatformTimeRangeTypedDict] ] = None, - timeout_millis: Optional[int] = None, - disable_spellcheck: Optional[bool] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> models.SearchResponse: - r"""Search the index (admin) + ) -> models.PlatformSearchResponse: + r"""Search + + Search your organization's connected content and return ranked document results with cursor pagination. Use `GET /api/search/filters` to discover datasource identifiers and common filter fields. Built-in filter names are validated; other field names are accepted as custom filters and behavior depends on your Glean configuration and connected sources. + Errors: HTTP 422 `unprocessable_query` returns no `results` or `next_cursor`. See `warnings` on the response for non-blocking issues such as partially available results. Not every query issue produces a warning or error. + + + :param query: The search query string. Supports inline operators such as `from:jane type:document app:confluence`. Inline operators are AND'd with structured `filters`. - Retrieves results for search query without respect for permissions. This is available only to privileged users. + :param page_size: Number of results to return per page. + :param cursor: Opaque pagination token from a previous response's `next_cursor` field. Omit on the first request. - :param query: The search terms. - :param timestamp: The ISO 8601 timestamp associated with the client request. - :param tracking_token: A previously received trackingToken for a search associated with the same query. Useful for more requests and requests for other tabs. - :param session_info: - :param source_document: - :param page_size: Hint to the server about how many results to send back. Server may return less or more. Structured results and clustered results don't count towards pageSize. - :param max_snippet_size: Hint to the server about how many characters long a snippet may be. Server may return less or more. - :param cursor: Pagination cursor. A previously received opaque token representing the position in the overall results at which to start. - :param result_tab_ids: The unique IDs of the result tabs for which to fetch results. This will have precedence over datasource filters if both are specified and in conflict. - :param input_details: - :param request_options: - :param timeout_millis: Timeout in milliseconds for the request. A `408` error will be returned if handling the request takes longer. - :param disable_spellcheck: Whether or not to disable spellcheck. + :param datasources: Restrict results to specific datasource identifiers returned by `GET /api/search/filters`. Scopes by datasource type and may include results from multiple instances of that type. + + :param filters: Structured filters applied to search results. Multiple values within a filter with `EQUALS` are OR'd; separate filters are AND'd. Conflicting constraints on the same field (for example, `type:document` in `query` and `type:spreadsheet` in a filter) return an empty result set. See `Filter.field` for built-in field names and operators. Other nonblank field names are accepted as custom filters without validation; behavior depends on your connected sources. + + :param time_range: Filter results to those last updated within this range. :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 @@ -221,33 +205,22 @@ async def query_as_admin_async( else: base_url = self._get_url(base_url, url_variables) - request = models.SearchRequest( - timestamp=timestamp, - tracking_token=tracking_token, - session_info=utils.get_pydantic_model( - session_info, Optional[models.SessionInfo] - ), - source_document=utils.get_pydantic_model( - source_document, Optional[models.Document] - ), - page_size=page_size, - max_snippet_size=max_snippet_size, + request = models.PlatformSearchRequest( query=query, + page_size=page_size, cursor=cursor, - result_tab_ids=result_tab_ids, - input_details=utils.get_pydantic_model( - input_details, Optional[models.SearchRequestInputDetails] + datasources=utils.unmarshal(datasources, Optional[List[str]]), + filters=utils.get_pydantic_model( + filters, Optional[List[models.PlatformFilter]] ), - request_options=utils.get_pydantic_model( - request_options, Optional[models.SearchRequestOptions] + time_range=utils.get_pydantic_model( + time_range, Optional[models.PlatformTimeRange] ), - timeout_millis=timeout_millis, - disable_spellcheck=disable_spellcheck, ) req = self._build_request_async( method="POST", - path="/rest/api/v1/adminsearch", + path="/api/search", base_url=base_url, url_variables=url_variables, request=request, @@ -259,7 +232,7 @@ async def query_as_admin_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.SearchRequest + request, False, False, "json", models.PlatformSearchRequest ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -277,24 +250,44 @@ async def query_as_admin_async( hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="adminsearch", + operation_id="platform-search", oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Search"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-glean-experimental": { + "id": "5ab612fc-ed50-4419-bec3-e5fe83934653", + "introduced": "2026-04-08", + }, + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "403", "422", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) response_data: Any = None if utils.match_response(http_res, "200", "application/json"): - return unmarshal_json_response(models.SearchResponse, http_res) - if utils.match_response(http_res, ["403", "422"], "application/json"): - response_data = unmarshal_json_response(errors.GleanDataErrorData, http_res) - raise errors.GleanDataError(response_data, http_res) - if utils.match_response(http_res, ["400", "401", "429", "4XX"], "*"): + return unmarshal_json_response(models.PlatformSearchResponse, http_res) + if utils.match_response( + http_res, + ["400", "401", "403", "404", "408", "413", "422", "429"], + "application/problem+json", + ): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + if utils.match_response(http_res, ["500", "503"], "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + 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", "*"): @@ -303,39 +296,26 @@ async def query_as_admin_async( raise errors.GleanError("Unexpected response received", http_res) - def autocomplete( + def list_filters( self, *, - tracking_token: Optional[str] = None, - session_info: Optional[ - Union[models.SessionInfo, models.SessionInfoTypedDict] - ] = None, + datasources: Optional[Iterable[str]] = None, query: Optional[str] = None, - datasources_filter: Optional[List[str]] = None, - datasource: Optional[str] = None, - result_types: Optional[List[models.AutocompleteRequestResultType]] = None, - result_size: Optional[int] = None, - auth_tokens: Optional[ - Union[List[models.AuthToken], List[models.AuthTokenTypedDict]] - ] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> models.AutocompleteResponse: - r"""Autocomplete + ) -> models.PlatformSearchFiltersResponseResponse: + r"""List search filters - Retrieve query suggestions, operators and documents for the given partially typed query. + List datasources and common built-in filter fields visible to the authenticated user. This is a best-effort catalog, not an exhaustive list of every filter search accepts. + Without `query`, returns field metadata only and does not run a search. With a nonblank `query`, provide exactly one `datasources` value to request suggested filter values for that query; no documents are returned and this endpoint does not include warning objects. See `FilterFieldInfo.values` for limitations on suggested values. Rate-limited requests return HTTP 429 with `Retry-After`; temporary backend unavailability returns HTTP 503. - :param tracking_token: - :param session_info: - :param query: Partially typed query. - :param datasources_filter: Filter results to only those relevant to one or more datasources (e.g. jira, gdrive). Results are unfiltered if missing. - :param datasource: Filter to only return results relevant to the given datasource. - :param result_types: Filter to only return results of the given type(s). All types may be returned if omitted. - :param result_size: Maximum number of results to be returned. If no value is provided, the backend will cap at 200. - :param auth_tokens: Auth tokens which may be used for federated results. + :param datasources: Restrict metadata to one or more datasource identifiers as returned by this endpoint (for example, `jira`). With a nonblank `query`, exactly one datasource is required. Unknown or inaccessible identifiers return `invalid_datasource`. + + :param query: Optional search query that requests suggested filter values for the selected datasource. Must be nonblank when present. Triggers a search for facet values only; does not return documents. + :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 @@ -351,37 +331,24 @@ def autocomplete( else: base_url = self._get_url(base_url, url_variables) - request = models.AutocompleteRequest( - tracking_token=tracking_token, - session_info=utils.get_pydantic_model( - session_info, Optional[models.SessionInfo] - ), + request = models.PlatformSearchFiltersRequest( + datasources=utils.unmarshal(datasources, Optional[List[str]]), query=query, - datasources_filter=datasources_filter, - datasource=datasource, - result_types=result_types, - result_size=result_size, - auth_tokens=utils.get_pydantic_model( - auth_tokens, Optional[List[models.AuthToken]] - ), ) req = self._build_request( - method="POST", - path="/rest/api/v1/autocomplete", + method="GET", + path="/api/search/filters", base_url=base_url, url_variables=url_variables, request=request, - request_body_required=True, + request_body_required=False, request_has_path_params=False, request_has_query_params=True, user_agent_header="user-agent", 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.AutocompleteRequest - ), allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -398,20 +365,48 @@ def autocomplete( hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="autocomplete", + operation_id="platform-search-filters", oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Search"], + extensions={ + "x-glean-experimental": { + "id": "0b585621-13fb-4544-bf20-5e1c99452735", + "introduced": "2026-05-12", + }, + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) + response_data: Any = None if utils.match_response(http_res, "200", "application/json"): - return unmarshal_json_response(models.AutocompleteResponse, http_res) - if utils.match_response(http_res, ["400", "401", "429", "4XX"], "*"): + return models.PlatformSearchFiltersResponseResponse( + result=unmarshal_json_response( + models.PlatformSearchFiltersResponse, http_res + ), + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response( + http_res, + ["400", "401", "403", "404", "408", "429"], + "application/problem+json", + ): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + if utils.match_response(http_res, ["500", "503"], "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + 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", "*"): @@ -420,251 +415,26 @@ def autocomplete( raise errors.GleanError("Unexpected response received", http_res) - async def autocomplete_async( + async def list_filters_async( self, *, - tracking_token: Optional[str] = None, - session_info: Optional[ - Union[models.SessionInfo, models.SessionInfoTypedDict] - ] = None, + datasources: Optional[Iterable[str]] = None, query: Optional[str] = None, - datasources_filter: Optional[List[str]] = None, - datasource: Optional[str] = None, - result_types: Optional[List[models.AutocompleteRequestResultType]] = None, - result_size: Optional[int] = None, - auth_tokens: Optional[ - Union[List[models.AuthToken], List[models.AuthTokenTypedDict]] - ] = None, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> models.AutocompleteResponse: - r"""Autocomplete - - Retrieve query suggestions, operators and documents for the given partially typed query. - - :param tracking_token: - :param session_info: - :param query: Partially typed query. - :param datasources_filter: Filter results to only those relevant to one or more datasources (e.g. jira, gdrive). Results are unfiltered if missing. - :param datasource: Filter to only return results relevant to the given datasource. - :param result_types: Filter to only return results of the given type(s). All types may be returned if omitted. - :param result_size: Maximum number of results to be returned. If no value is provided, the backend will cap at 200. - - :param auth_tokens: Auth tokens which may be used for federated results. - :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.AutocompleteRequest( - tracking_token=tracking_token, - session_info=utils.get_pydantic_model( - session_info, Optional[models.SessionInfo] - ), - query=query, - datasources_filter=datasources_filter, - datasource=datasource, - result_types=result_types, - result_size=result_size, - auth_tokens=utils.get_pydantic_model( - auth_tokens, Optional[List[models.AuthToken]] - ), - ) - - req = self._build_request_async( - method="POST", - path="/rest/api/v1/autocomplete", - 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="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.AutocompleteRequest - ), - 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="autocomplete", - oauth2_scopes=None, - security_source=get_security_from_env( - self.sdk_configuration.security, models.Security - ), - ), - request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], - retry_config=retry_config, - ) - - if utils.match_response(http_res, "200", "application/json"): - return unmarshal_json_response(models.AutocompleteResponse, http_res) - if utils.match_response(http_res, ["400", "401", "429", "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) - - raise errors.GleanError("Unexpected response received", http_res) - - def retrieve_feed( - self, - *, - categories: Optional[List[models.FeedRequestCategory]] = None, - request_options: Optional[ - Union[models.FeedRequestOptions, models.FeedRequestOptionsTypedDict] - ] = None, - timeout_millis: Optional[int] = None, - session_info: Optional[ - Union[models.SessionInfo, models.SessionInfoTypedDict] - ] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> models.FeedResponse: - r"""Feed of documents and events - - The personalized feed/home includes different types of contents including suggestions, recents, calendar events and many more. - - :param categories: Categories of content requested. An allowlist gives flexibility to request content separately or together. - :param request_options: - :param timeout_millis: Timeout in milliseconds for the request. A `408` error will be returned if handling the request takes longer. - :param session_info: - :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.FeedRequest( - categories=categories, - request_options=utils.get_pydantic_model( - request_options, Optional[models.FeedRequestOptions] - ), - timeout_millis=timeout_millis, - session_info=utils.get_pydantic_model( - session_info, Optional[models.SessionInfo] - ), - ) - - req = self._build_request( - method="POST", - path="/rest/api/v1/feed", - 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="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.FeedRequest - ), - 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="feed", - oauth2_scopes=None, - security_source=get_security_from_env( - self.sdk_configuration.security, models.Security - ), - ), - request=req, - error_status_codes=["400", "401", "408", "429", "4XX", "5XX"], - retry_config=retry_config, - ) + ) -> models.PlatformSearchFiltersResponseResponse: + r"""List search filters - if utils.match_response(http_res, "200", "application/json"): - return unmarshal_json_response(models.FeedResponse, http_res) - if utils.match_response(http_res, ["400", "401", "408", "429", "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) + List datasources and common built-in filter fields visible to the authenticated user. This is a best-effort catalog, not an exhaustive list of every filter search accepts. + Without `query`, returns field metadata only and does not run a search. With a nonblank `query`, provide exactly one `datasources` value to request suggested filter values for that query; no documents are returned and this endpoint does not include warning objects. See `FilterFieldInfo.values` for limitations on suggested values. Rate-limited requests return HTTP 429 with `Retry-After`; temporary backend unavailability returns HTTP 503. - raise errors.GleanError("Unexpected response received", http_res) - async def retrieve_feed_async( - self, - *, - categories: Optional[List[models.FeedRequestCategory]] = None, - request_options: Optional[ - Union[models.FeedRequestOptions, models.FeedRequestOptionsTypedDict] - ] = None, - timeout_millis: Optional[int] = None, - session_info: Optional[ - Union[models.SessionInfo, models.SessionInfoTypedDict] - ] = None, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> models.FeedResponse: - r"""Feed of documents and events + :param datasources: Restrict metadata to one or more datasource identifiers as returned by this endpoint (for example, `jira`). With a nonblank `query`, exactly one datasource is required. Unknown or inaccessible identifiers return `invalid_datasource`. - The personalized feed/home includes different types of contents including suggestions, recents, calendar events and many more. + :param query: Optional search query that requests suggested filter values for the selected datasource. Must be nonblank when present. Triggers a search for facet values only; does not return documents. - :param categories: Categories of content requested. An allowlist gives flexibility to request content separately or together. - :param request_options: - :param timeout_millis: Timeout in milliseconds for the request. A `408` error will be returned if handling the request takes longer. - :param session_info: :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 @@ -680,33 +450,24 @@ async def retrieve_feed_async( else: base_url = self._get_url(base_url, url_variables) - request = models.FeedRequest( - categories=categories, - request_options=utils.get_pydantic_model( - request_options, Optional[models.FeedRequestOptions] - ), - timeout_millis=timeout_millis, - session_info=utils.get_pydantic_model( - session_info, Optional[models.SessionInfo] - ), + request = models.PlatformSearchFiltersRequest( + datasources=utils.unmarshal(datasources, Optional[List[str]]), + query=query, ) req = self._build_request_async( - method="POST", - path="/rest/api/v1/feed", + method="GET", + path="/api/search/filters", base_url=base_url, url_variables=url_variables, request=request, - request_body_required=True, + request_body_required=False, request_has_path_params=False, request_has_query_params=True, user_agent_header="user-agent", 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.FeedRequest - ), allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -723,570 +484,48 @@ async def retrieve_feed_async( hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="feed", + operation_id="platform-search-filters", oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Search"], + extensions={ + "x-glean-experimental": { + "id": "0b585621-13fb-4544-bf20-5e1c99452735", + "introduced": "2026-05-12", + }, + "x-visibility": "Public", + }, ), request=req, - error_status_codes=["400", "401", "408", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) + response_data: Any = None if utils.match_response(http_res, "200", "application/json"): - return unmarshal_json_response(models.FeedResponse, http_res) - if utils.match_response(http_res, ["400", "401", "408", "429", "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) - - raise errors.GleanError("Unexpected response received", http_res) - - def recommendations( - self, - *, - timestamp: Optional[datetime] = None, - tracking_token: Optional[str] = None, - session_info: Optional[ - Union[models.SessionInfo, models.SessionInfoTypedDict] - ] = None, - source_document: Optional[ - Union[models.Document, models.DocumentTypedDict] - ] = None, - page_size: Optional[int] = None, - max_snippet_size: Optional[int] = None, - recommendation_document_spec: Optional[ - Union[models.DocumentSpecUnion, models.DocumentSpecUnionTypedDict] - ] = None, - request_options: Optional[ - Union[ - models.RecommendationsRequestOptions, - models.RecommendationsRequestOptionsTypedDict, - ] - ] = None, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> Optional[models.ResultsResponse]: - r"""Recommend documents - - Retrieve recommended documents for the given URL or Glean Document ID. - - :param timestamp: The ISO 8601 timestamp associated with the client request. - :param tracking_token: A previously received trackingToken for a search associated with the same query. Useful for more requests and requests for other tabs. - :param session_info: - :param source_document: - :param page_size: Hint to the server about how many results to send back. Server may return less or more. Structured results and clustered results don't count towards pageSize. - :param max_snippet_size: Hint to the server about how many characters long a snippet may be. Server may return less or more. - :param recommendation_document_spec: - :param request_options: - :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.RecommendationsRequest( - timestamp=timestamp, - tracking_token=tracking_token, - session_info=utils.get_pydantic_model( - session_info, Optional[models.SessionInfo] - ), - source_document=utils.get_pydantic_model( - source_document, Optional[models.Document] - ), - page_size=page_size, - max_snippet_size=max_snippet_size, - recommendation_document_spec=utils.get_pydantic_model( - recommendation_document_spec, Optional[models.DocumentSpecUnion] - ), - request_options=utils.get_pydantic_model( - request_options, Optional[models.RecommendationsRequestOptions] - ), - ) - - req = self._build_request( - method="POST", - path="/rest/api/v1/recommendations", - 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="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.RecommendationsRequest - ), - 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="recommendations", - oauth2_scopes=None, - security_source=get_security_from_env( - self.sdk_configuration.security, models.Security - ), - ), - request=req, - error_status_codes=["400", "401", "403", "429", "4XX", "5XX"], - retry_config=retry_config, - ) - - if utils.match_response(http_res, "200", "application/json"): - return unmarshal_json_response(models.ResultsResponse, http_res) - if utils.match_response(http_res, ["202", "204"], "*"): - return None - if utils.match_response(http_res, ["400", "401", "403", "429", "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) - - raise errors.GleanError("Unexpected response received", http_res) - - async def recommendations_async( - self, - *, - timestamp: Optional[datetime] = None, - tracking_token: Optional[str] = None, - session_info: Optional[ - Union[models.SessionInfo, models.SessionInfoTypedDict] - ] = None, - source_document: Optional[ - Union[models.Document, models.DocumentTypedDict] - ] = None, - page_size: Optional[int] = None, - max_snippet_size: Optional[int] = None, - recommendation_document_spec: Optional[ - Union[models.DocumentSpecUnion, models.DocumentSpecUnionTypedDict] - ] = None, - request_options: Optional[ - Union[ - models.RecommendationsRequestOptions, - models.RecommendationsRequestOptionsTypedDict, - ] - ] = None, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> Optional[models.ResultsResponse]: - r"""Recommend documents - - Retrieve recommended documents for the given URL or Glean Document ID. - - :param timestamp: The ISO 8601 timestamp associated with the client request. - :param tracking_token: A previously received trackingToken for a search associated with the same query. Useful for more requests and requests for other tabs. - :param session_info: - :param source_document: - :param page_size: Hint to the server about how many results to send back. Server may return less or more. Structured results and clustered results don't count towards pageSize. - :param max_snippet_size: Hint to the server about how many characters long a snippet may be. Server may return less or more. - :param recommendation_document_spec: - :param request_options: - :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.RecommendationsRequest( - timestamp=timestamp, - tracking_token=tracking_token, - session_info=utils.get_pydantic_model( - session_info, Optional[models.SessionInfo] - ), - source_document=utils.get_pydantic_model( - source_document, Optional[models.Document] - ), - page_size=page_size, - max_snippet_size=max_snippet_size, - recommendation_document_spec=utils.get_pydantic_model( - recommendation_document_spec, Optional[models.DocumentSpecUnion] - ), - request_options=utils.get_pydantic_model( - request_options, Optional[models.RecommendationsRequestOptions] - ), - ) - - req = self._build_request_async( - method="POST", - path="/rest/api/v1/recommendations", - 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="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.RecommendationsRequest - ), - 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="recommendations", - oauth2_scopes=None, - security_source=get_security_from_env( - self.sdk_configuration.security, models.Security - ), - ), - request=req, - error_status_codes=["400", "401", "403", "429", "4XX", "5XX"], - retry_config=retry_config, - ) - - if utils.match_response(http_res, "200", "application/json"): - return unmarshal_json_response(models.ResultsResponse, http_res) - if utils.match_response(http_res, ["202", "204"], "*"): - return None - if utils.match_response(http_res, ["400", "401", "403", "429", "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) - - raise errors.GleanError("Unexpected response received", http_res) - - def query( - self, - *, - query: str, - timestamp: Optional[datetime] = None, - tracking_token: Optional[str] = None, - session_info: Optional[ - Union[models.SessionInfo, models.SessionInfoTypedDict] - ] = None, - source_document: Optional[ - Union[models.Document, models.DocumentTypedDict] - ] = None, - page_size: Optional[int] = None, - max_snippet_size: Optional[int] = None, - cursor: Optional[str] = None, - result_tab_ids: Optional[List[str]] = None, - input_details: Optional[ - Union[ - models.SearchRequestInputDetails, - models.SearchRequestInputDetailsTypedDict, - ] - ] = None, - request_options: Optional[ - Union[models.SearchRequestOptions, models.SearchRequestOptionsTypedDict] - ] = None, - timeout_millis: Optional[int] = None, - disable_spellcheck: Optional[bool] = None, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> models.SearchResponse: - r"""Search - - Retrieve results from the index for the given query and filters. - - :param query: The search terms. - :param timestamp: The ISO 8601 timestamp associated with the client request. - :param tracking_token: A previously received trackingToken for a search associated with the same query. Useful for more requests and requests for other tabs. - :param session_info: - :param source_document: - :param page_size: Hint to the server about how many results to send back. Server may return less or more. Structured results and clustered results don't count towards pageSize. - :param max_snippet_size: Hint to the server about how many characters long a snippet may be. Server may return less or more. - :param cursor: Pagination cursor. A previously received opaque token representing the position in the overall results at which to start. - :param result_tab_ids: The unique IDs of the result tabs for which to fetch results. This will have precedence over datasource filters if both are specified and in conflict. - :param input_details: - :param request_options: - :param timeout_millis: Timeout in milliseconds for the request. A `408` error will be returned if handling the request takes longer. - :param disable_spellcheck: Whether or not to disable spellcheck. - :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.SearchRequest( - timestamp=timestamp, - tracking_token=tracking_token, - session_info=utils.get_pydantic_model( - session_info, Optional[models.SessionInfo] - ), - source_document=utils.get_pydantic_model( - source_document, Optional[models.Document] - ), - page_size=page_size, - max_snippet_size=max_snippet_size, - query=query, - cursor=cursor, - result_tab_ids=result_tab_ids, - input_details=utils.get_pydantic_model( - input_details, Optional[models.SearchRequestInputDetails] - ), - request_options=utils.get_pydantic_model( - request_options, Optional[models.SearchRequestOptions] - ), - timeout_millis=timeout_millis, - disable_spellcheck=disable_spellcheck, - ) - - req = self._build_request( - method="POST", - path="/rest/api/v1/search", - 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="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.SearchRequest - ), - 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="search", - oauth2_scopes=None, - security_source=get_security_from_env( - self.sdk_configuration.security, models.Security - ), - ), - request=req, - error_status_codes=["400", "401", "403", "408", "422", "429", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return unmarshal_json_response(models.SearchResponse, http_res) - if utils.match_response(http_res, ["403", "422"], "application/json"): - response_data = unmarshal_json_response(errors.GleanDataErrorData, http_res) - raise errors.GleanDataError(response_data, http_res) - if utils.match_response(http_res, ["400", "401", "408", "429", "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) - - raise errors.GleanError("Unexpected response received", http_res) - - async def query_async( - self, - *, - query: str, - timestamp: Optional[datetime] = None, - tracking_token: Optional[str] = None, - session_info: Optional[ - Union[models.SessionInfo, models.SessionInfoTypedDict] - ] = None, - source_document: Optional[ - Union[models.Document, models.DocumentTypedDict] - ] = None, - page_size: Optional[int] = None, - max_snippet_size: Optional[int] = None, - cursor: Optional[str] = None, - result_tab_ids: Optional[List[str]] = None, - input_details: Optional[ - Union[ - models.SearchRequestInputDetails, - models.SearchRequestInputDetailsTypedDict, - ] - ] = None, - request_options: Optional[ - Union[models.SearchRequestOptions, models.SearchRequestOptionsTypedDict] - ] = None, - timeout_millis: Optional[int] = None, - disable_spellcheck: Optional[bool] = None, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> models.SearchResponse: - r"""Search - - Retrieve results from the index for the given query and filters. - - :param query: The search terms. - :param timestamp: The ISO 8601 timestamp associated with the client request. - :param tracking_token: A previously received trackingToken for a search associated with the same query. Useful for more requests and requests for other tabs. - :param session_info: - :param source_document: - :param page_size: Hint to the server about how many results to send back. Server may return less or more. Structured results and clustered results don't count towards pageSize. - :param max_snippet_size: Hint to the server about how many characters long a snippet may be. Server may return less or more. - :param cursor: Pagination cursor. A previously received opaque token representing the position in the overall results at which to start. - :param result_tab_ids: The unique IDs of the result tabs for which to fetch results. This will have precedence over datasource filters if both are specified and in conflict. - :param input_details: - :param request_options: - :param timeout_millis: Timeout in milliseconds for the request. A `408` error will be returned if handling the request takes longer. - :param disable_spellcheck: Whether or not to disable spellcheck. - :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.SearchRequest( - timestamp=timestamp, - tracking_token=tracking_token, - session_info=utils.get_pydantic_model( - session_info, Optional[models.SessionInfo] - ), - source_document=utils.get_pydantic_model( - source_document, Optional[models.Document] - ), - page_size=page_size, - max_snippet_size=max_snippet_size, - query=query, - cursor=cursor, - result_tab_ids=result_tab_ids, - input_details=utils.get_pydantic_model( - input_details, Optional[models.SearchRequestInputDetails] - ), - request_options=utils.get_pydantic_model( - request_options, Optional[models.SearchRequestOptions] - ), - timeout_millis=timeout_millis, - disable_spellcheck=disable_spellcheck, - ) - - req = self._build_request_async( - method="POST", - path="/rest/api/v1/search", - 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="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.SearchRequest - ), - 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="search", - oauth2_scopes=None, - security_source=get_security_from_env( - self.sdk_configuration.security, models.Security + return models.PlatformSearchFiltersResponseResponse( + result=unmarshal_json_response( + models.PlatformSearchFiltersResponse, http_res ), - ), - request=req, - error_status_codes=["400", "401", "403", "408", "422", "429", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return unmarshal_json_response(models.SearchResponse, http_res) - if utils.match_response(http_res, ["403", "422"], "application/json"): - response_data = unmarshal_json_response(errors.GleanDataErrorData, http_res) - raise errors.GleanDataError(response_data, http_res) - if utils.match_response(http_res, ["400", "401", "408", "429", "4XX"], "*"): + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response( + http_res, + ["400", "401", "403", "404", "408", "429"], + "application/problem+json", + ): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + if utils.match_response(http_res, ["500", "503"], "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + 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", "*"): diff --git a/src/glean/api_client/skills.py b/src/glean/api_client/skills.py new file mode 100644 index 00000000..89e97e10 --- /dev/null +++ b/src/glean/api_client/skills.py @@ -0,0 +1,3259 @@ +"""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.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, + *, + file: Union[ + models.PlatformSkillCreateRequestFile, + models.PlatformSkillCreateRequestFileTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> 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. + + + :param file: SKILL.md, .zip, or .skill bundle to create. + :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.PlatformSkillCreateRequest( + file=utils.get_pydantic_model(file, models.PlatformSkillCreateRequestFile), + ) + + req = self._build_request( + method="POST", + path="/api/skills", + 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="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request, False, False, "multipart", models.PlatformSkillCreateRequest + ), + 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-create", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Skills"], + extensions={ + "x-glean-experimental": { + "id": "3cd55572-0d5c-4898-9ecf-1b86c520d1c7", + "introduced": "2026-06-24", + }, + "x-visibility": "Public", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.PlatformSkillCreateResponse, http_res) + if utils.match_response( + http_res, + ["400", "401", "403", "404", "408", "413", "429"], + "application/problem+json", + ): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + if utils.match_response(http_res, ["500", "503"], "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + 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) + + raise errors.GleanError("Unexpected response received", http_res) + + async def create_async( + self, + *, + file: Union[ + models.PlatformSkillCreateRequestFile, + models.PlatformSkillCreateRequestFileTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> 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. + + + :param file: SKILL.md, .zip, or .skill bundle to create. + :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.PlatformSkillCreateRequest( + file=utils.get_pydantic_model(file, models.PlatformSkillCreateRequestFile), + ) + + req = self._build_request_async( + method="POST", + path="/api/skills", + 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="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request, False, False, "multipart", models.PlatformSkillCreateRequest + ), + 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-create", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Skills"], + extensions={ + "x-glean-experimental": { + "id": "3cd55572-0d5c-4898-9ecf-1b86c520d1c7", + "introduced": "2026-06-24", + }, + "x-visibility": "Public", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.PlatformSkillCreateResponse, http_res) + if utils.match_response( + http_res, + ["400", "401", "403", "404", "408", "413", "429"], + "application/problem+json", + ): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + if utils.match_response(http_res, ["500", "503"], "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + 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) + + raise errors.GleanError("Unexpected response received", http_res) + + def list( + self, + *, + page_size: Optional[int] = None, + cursor: Optional[str] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.PlatformSkillsListResponse: + r"""List skills + + List skills available to the authenticated user. + + + :param page_size: Maximum number of skills to return. + :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 + :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.PlatformSkillsListRequest( + page_size=page_size, + cursor=cursor, + ) + + req = self._build_request( + method="GET", + path="/api/skills", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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-list", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Skills"], + extensions={ + "x-glean-experimental": { + "id": "3eb65937-03a3-472b-9a00-be713f302b5f", + "introduced": "2026-06-23", + }, + "x-visibility": "Public", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.PlatformSkillsListResponse, http_res) + if utils.match_response( + http_res, + ["400", "401", "403", "404", "408", "429"], + "application/problem+json", + ): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + if utils.match_response(http_res, ["500", "503"], "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + 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) + + raise errors.GleanError("Unexpected response received", http_res) + + async def list_async( + self, + *, + page_size: Optional[int] = None, + cursor: Optional[str] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.PlatformSkillsListResponse: + r"""List skills + + List skills available to the authenticated user. + + + :param page_size: Maximum number of skills to return. + :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 + :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.PlatformSkillsListRequest( + page_size=page_size, + cursor=cursor, + ) + + req = self._build_request_async( + method="GET", + path="/api/skills", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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-list", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Skills"], + extensions={ + "x-glean-experimental": { + "id": "3eb65937-03a3-472b-9a00-be713f302b5f", + "introduced": "2026-06-23", + }, + "x-visibility": "Public", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.PlatformSkillsListResponse, http_res) + if utils.match_response( + http_res, + ["400", "401", "403", "404", "408", "429"], + "application/problem+json", + ): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + if utils.match_response(http_res, ["500", "503"], "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + 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) + + raise errors.GleanError("Unexpected response received", http_res) + + def import_( + self, + *, + source_urls: Iterable[str], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.PlatformSkillImportResponse: + r"""Import skills from GitHub + + Import one or more skills selected from a GitHub source preview. Each source URL is fetched and persisted as an independent skill with source provenance. This operation does not create a durable source resource. The import is atomic: if any source cannot be fetched, validated, or persisted, no skills are created. + + + :param source_urls: Resolved GitHub skill URLs selected from a source preview. + :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.PlatformSkillImportRequest( + source_urls=utils.unmarshal(source_urls, List[str]), + ) + + req = self._build_request( + method="POST", + path="/api/skills/import", + 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="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request, False, False, "json", models.PlatformSkillImportRequest + ), + 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-import", + 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": "9162d790-e101-437d-a9a0-25e4687d150b", + "introduced": "2026-07-28", + }, + "x-visibility": "Public", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.PlatformSkillImportResponse, http_res) + if utils.match_response( + http_res, + ["400", "401", "403", "408", "409", "413", "429"], + "application/problem+json", + ): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + if utils.match_response(http_res, ["500", "503"], "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + 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) + + raise errors.GleanError("Unexpected response received", http_res) + + async def import__async( + self, + *, + source_urls: Iterable[str], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.PlatformSkillImportResponse: + r"""Import skills from GitHub + + Import one or more skills selected from a GitHub source preview. Each source URL is fetched and persisted as an independent skill with source provenance. This operation does not create a durable source resource. The import is atomic: if any source cannot be fetched, validated, or persisted, no skills are created. + + + :param source_urls: Resolved GitHub skill URLs selected from a source preview. + :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.PlatformSkillImportRequest( + source_urls=utils.unmarshal(source_urls, List[str]), + ) + + req = self._build_request_async( + method="POST", + path="/api/skills/import", + 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="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request, False, False, "json", models.PlatformSkillImportRequest + ), + 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-import", + 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": "9162d790-e101-437d-a9a0-25e4687d150b", + "introduced": "2026-07-28", + }, + "x-visibility": "Public", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.PlatformSkillImportResponse, http_res) + if utils.match_response( + http_res, + ["400", "401", "403", "408", "409", "413", "429"], + "application/problem+json", + ): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + if utils.match_response(http_res, ["500", "503"], "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + 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) + + raise errors.GleanError("Unexpected response received", http_res) + + def validate( + self, + *, + file: Union[ + models.PlatformSkillValidationRequestFile, + models.PlatformSkillValidationRequestFileTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.PlatformSkillValidationResponse: + r"""Validate skill bundle + + Validate a skill bundle without persisting it. Accepts a SKILL.md, .zip, or .skill upload and returns parsed metadata plus the normalized file layout. + + + :param file: SKILL.md, .zip, or .skill bundle to validate. + :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.PlatformSkillValidationRequest( + file=utils.get_pydantic_model( + file, models.PlatformSkillValidationRequestFile + ), + ) + + req = self._build_request( + method="POST", + path="/api/skills/validation", + 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="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request, + False, + False, + "multipart", + models.PlatformSkillValidationRequest, + ), + 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-validate", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Skills"], + extensions={ + "x-glean-experimental": { + "id": "0b086fa6-30f8-4279-8d11-10ab0059c14a", + "introduced": "2026-06-24", + }, + "x-visibility": "Public", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response( + models.PlatformSkillValidationResponse, http_res + ) + if utils.match_response( + http_res, + ["400", "401", "403", "404", "408", "413", "429"], + "application/problem+json", + ): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + if utils.match_response(http_res, ["500", "503"], "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + 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) + + raise errors.GleanError("Unexpected response received", http_res) + + async def validate_async( + self, + *, + file: Union[ + models.PlatformSkillValidationRequestFile, + models.PlatformSkillValidationRequestFileTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.PlatformSkillValidationResponse: + r"""Validate skill bundle + + Validate a skill bundle without persisting it. Accepts a SKILL.md, .zip, or .skill upload and returns parsed metadata plus the normalized file layout. + + + :param file: SKILL.md, .zip, or .skill bundle to validate. + :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.PlatformSkillValidationRequest( + file=utils.get_pydantic_model( + file, models.PlatformSkillValidationRequestFile + ), + ) + + req = self._build_request_async( + method="POST", + path="/api/skills/validation", + 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="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request, + False, + False, + "multipart", + models.PlatformSkillValidationRequest, + ), + 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-validate", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Skills"], + extensions={ + "x-glean-experimental": { + "id": "0b086fa6-30f8-4279-8d11-10ab0059c14a", + "introduced": "2026-06-24", + }, + "x-visibility": "Public", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response( + models.PlatformSkillValidationResponse, http_res + ) + if utils.match_response( + http_res, + ["400", "401", "403", "404", "408", "413", "429"], + "application/problem+json", + ): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + if utils.match_response(http_res, ["500", "503"], "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + 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) + + raise errors.GleanError("Unexpected response received", http_res) + + 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: + 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 + 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.PlatformSkillSourcePreviewRequest( + source_url=source_url, + stream=stream, + ) + + req = self._build_request( + method="POST", + path="/api/skills/sources/preview", + 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=accept_header_override.value + if accept_header_override is not None + else "application/json;q=1, text/event-stream;q=0", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request, False, False, "json", models.PlatformSkillSourcePreviewRequest + ), + 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", + 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), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + 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, + ["400", "401", "403", "408", "413", "429"], + "application/problem+json", + ): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + if utils.match_response(http_res, ["500", "503"], "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + 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) + + raise errors.GleanError("Unexpected response received", http_res) + + 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: + 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 + 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.PlatformSkillSourcePreviewRequest( + source_url=source_url, + stream=stream, + ) + + req = self._build_request_async( + method="POST", + path="/api/skills/sources/preview", + 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=accept_header_override.value + if accept_header_override is not None + else "application/json;q=1, text/event-stream;q=0", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request, False, False, "json", models.PlatformSkillSourcePreviewRequest + ), + 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", + 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), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + 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, + ["400", "401", "403", "408", "413", "429"], + "application/problem+json", + ): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + if utils.match_response(http_res, ["500", "503"], "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + 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) + + raise errors.GleanError("Unexpected response received", http_res) + + def update( + self, + *, + skill_id: str, + status: models.PlatformSkillUpdateStatus, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.PlatformSkillUpdateResponse: + r"""Update skill + + Update mutable metadata for a skill. V1 supports enabling or disabling a skill without changing its content. + + + :param skill_id: Glean skill ID. + :param status: New status for the skill. + :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.PlatformSkillsUpdateRequest( + skill_id=skill_id, + platform_skill_update_request=models.PlatformSkillUpdateRequest( + status=status, + ), + ) + + req = self._build_request( + method="PATCH", + path="/api/skills/{skill_id}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=True, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request.platform_skill_update_request, + False, + False, + "json", + models.PlatformSkillUpdateRequest, + ), + 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-update", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Skills"], + extensions={ + "x-glean-experimental": { + "id": "262e1f6b-6c2d-4d6d-943b-fc251d2fb38b", + "introduced": "2026-07-20", + }, + "x-visibility": "Public", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.PlatformSkillUpdateResponse, http_res) + if utils.match_response( + http_res, + ["400", "401", "403", "404", "408", "409", "413", "429"], + "application/problem+json", + ): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + if utils.match_response(http_res, ["500", "503"], "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + 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) + + raise errors.GleanError("Unexpected response received", http_res) + + async def update_async( + self, + *, + skill_id: str, + status: models.PlatformSkillUpdateStatus, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.PlatformSkillUpdateResponse: + r"""Update skill + + Update mutable metadata for a skill. V1 supports enabling or disabling a skill without changing its content. + + + :param skill_id: Glean skill ID. + :param status: New status for the skill. + :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.PlatformSkillsUpdateRequest( + skill_id=skill_id, + platform_skill_update_request=models.PlatformSkillUpdateRequest( + status=status, + ), + ) + + req = self._build_request_async( + method="PATCH", + path="/api/skills/{skill_id}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=True, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request.platform_skill_update_request, + False, + False, + "json", + models.PlatformSkillUpdateRequest, + ), + 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-update", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Skills"], + extensions={ + "x-glean-experimental": { + "id": "262e1f6b-6c2d-4d6d-943b-fc251d2fb38b", + "introduced": "2026-07-20", + }, + "x-visibility": "Public", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.PlatformSkillUpdateResponse, http_res) + if utils.match_response( + http_res, + ["400", "401", "403", "404", "408", "409", "413", "429"], + "application/problem+json", + ): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + if utils.match_response(http_res, ["500", "503"], "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + 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) + + raise errors.GleanError("Unexpected response received", http_res) + + def delete( + self, + *, + skill_id: str, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ): + r"""Delete skill + + Delete a skill the authenticated caller is allowed to manage. This operation permanently removes all versions of the skill. + + + :param skill_id: Glean skill ID. + :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.PlatformSkillsDeleteRequest( + skill_id=skill_id, + ) + + req = self._build_request( + method="DELETE", + path="/api/skills/{skill_id}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/problem+json", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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-delete", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Skills"], + extensions={ + "x-glean-experimental": { + "id": "c4351fd0-4d28-4ad4-ab93-587ca4778173", + "introduced": "2026-07-31", + }, + "x-visibility": "Public", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "204", "*"): + return + if utils.match_response( + http_res, + ["400", "401", "403", "404", "408", "429"], + "application/problem+json", + ): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + if utils.match_response(http_res, ["500", "503"], "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + 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) + + raise errors.GleanError("Unexpected response received", http_res) + + async def delete_async( + self, + *, + skill_id: str, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ): + r"""Delete skill + + Delete a skill the authenticated caller is allowed to manage. This operation permanently removes all versions of the skill. + + + :param skill_id: Glean skill ID. + :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.PlatformSkillsDeleteRequest( + skill_id=skill_id, + ) + + req = self._build_request_async( + method="DELETE", + path="/api/skills/{skill_id}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/problem+json", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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-delete", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Skills"], + extensions={ + "x-glean-experimental": { + "id": "c4351fd0-4d28-4ad4-ab93-587ca4778173", + "introduced": "2026-07-31", + }, + "x-visibility": "Public", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "204", "*"): + return + if utils.match_response( + http_res, + ["400", "401", "403", "404", "408", "429"], + "application/problem+json", + ): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + if utils.match_response(http_res, ["500", "503"], "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + 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) + + raise errors.GleanError("Unexpected response received", http_res) + + def retrieve( + self, + *, + skill_id: str, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.PlatformSkillGetResponse: + r"""Retrieve skill + + Retrieve metadata for a skill available to the authenticated user. + + + :param skill_id: Glean skill ID. + :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.PlatformSkillsGetRequest( + skill_id=skill_id, + ) + + req = self._build_request( + method="GET", + path="/api/skills/{skill_id}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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-get", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Skills"], + extensions={ + "x-glean-experimental": { + "id": "8f8d1c92-a484-4769-9903-200613dc8a72", + "introduced": "2026-06-23", + }, + "x-visibility": "Public", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.PlatformSkillGetResponse, http_res) + if utils.match_response( + http_res, + ["400", "401", "403", "404", "408", "429"], + "application/problem+json", + ): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + if utils.match_response(http_res, ["500", "503"], "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + 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) + + raise errors.GleanError("Unexpected response received", http_res) + + async def retrieve_async( + self, + *, + skill_id: str, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.PlatformSkillGetResponse: + r"""Retrieve skill + + Retrieve metadata for a skill available to the authenticated user. + + + :param skill_id: Glean skill ID. + :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.PlatformSkillsGetRequest( + skill_id=skill_id, + ) + + req = self._build_request_async( + method="GET", + path="/api/skills/{skill_id}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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-get", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Skills"], + extensions={ + "x-glean-experimental": { + "id": "8f8d1c92-a484-4769-9903-200613dc8a72", + "introduced": "2026-06-23", + }, + "x-visibility": "Public", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.PlatformSkillGetResponse, http_res) + if utils.match_response( + http_res, + ["400", "401", "403", "404", "408", "429"], + "application/problem+json", + ): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + if utils.match_response(http_res, ["500", "503"], "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + 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) + + raise errors.GleanError("Unexpected response received", http_res) + + def retrieve_content( + self, + *, + skill_id: str, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.PlatformSkillsGetContentResponse: + r"""Download skill content + + Download the latest installable bundle for a skill available to the authenticated user. + + + :param skill_id: Glean skill ID. + :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.PlatformSkillsGetContentRequest( + skill_id=skill_id, + ) + + req = self._build_request( + method="GET", + path="/api/skills/{skill_id}/content", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/octet-stream", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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-get-content", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Skills"], + extensions={ + "x-glean-experimental": { + "id": "fd6908d8-f230-4cd5-bf45-f71e69266b1d", + "introduced": "2026-06-24", + }, + "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", "application/octet-stream"): + return models.PlatformSkillsGetContentResponse( + result=http_res, headers=utils.get_response_headers(http_res.headers) + ) + if utils.match_response( + http_res, + ["400", "401", "403", "404", "408", "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 retrieve_content_async( + self, + *, + skill_id: str, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.PlatformSkillsGetContentResponse: + r"""Download skill content + + Download the latest installable bundle for a skill available to the authenticated user. + + + :param skill_id: Glean skill ID. + :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.PlatformSkillsGetContentRequest( + skill_id=skill_id, + ) + + req = self._build_request_async( + method="GET", + path="/api/skills/{skill_id}/content", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/octet-stream", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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-get-content", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Skills"], + extensions={ + "x-glean-experimental": { + "id": "fd6908d8-f230-4cd5-bf45-f71e69266b1d", + "introduced": "2026-06-24", + }, + "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", "application/octet-stream"): + return models.PlatformSkillsGetContentResponse( + result=http_res, headers=utils.get_response_headers(http_res.headers) + ) + if utils.match_response( + http_res, + ["400", "401", "403", "404", "408", "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) + + def sync( + self, + *, + skill_id: str, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.PlatformSkillSyncResponse: + r"""Sync a GitHub-imported skill + + Refresh one GitHub-imported skill from its stored source URL. If the skill content has changed, this operation creates a new skill version. If the skill is no longer present upstream, the stored skill is left unchanged and must be deleted explicitly. + + + :param skill_id: ID of the GitHub-imported skill to sync. + :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.PlatformSkillsSyncRequest( + skill_id=skill_id, + ) + + req = self._build_request( + method="POST", + path="/api/skills/{skill_id}/sync", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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-sync", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Skills"], + extensions={ + "x-glean-experimental": { + "id": "568aa3f8-2af8-449c-9e4f-818ed4b877ef", + "introduced": "2026-08-03", + }, + "x-visibility": "Public", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + 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, + ["400", "401", "403", "404", "408", "409", "413", "429"], + "application/problem+json", + ): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + if utils.match_response(http_res, ["500", "503"], "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + 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) + + raise errors.GleanError("Unexpected response received", http_res) + + async def sync_async( + self, + *, + skill_id: str, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.PlatformSkillSyncResponse: + r"""Sync a GitHub-imported skill + + Refresh one GitHub-imported skill from its stored source URL. If the skill content has changed, this operation creates a new skill version. If the skill is no longer present upstream, the stored skill is left unchanged and must be deleted explicitly. + + + :param skill_id: ID of the GitHub-imported skill to sync. + :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.PlatformSkillsSyncRequest( + skill_id=skill_id, + ) + + req = self._build_request_async( + method="POST", + path="/api/skills/{skill_id}/sync", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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-sync", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Skills"], + extensions={ + "x-glean-experimental": { + "id": "568aa3f8-2af8-449c-9e4f-818ed4b877ef", + "introduced": "2026-08-03", + }, + "x-visibility": "Public", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + 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, + ["400", "401", "403", "404", "408", "409", "413", "429"], + "application/problem+json", + ): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + if utils.match_response(http_res, ["500", "503"], "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + 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) + + raise errors.GleanError("Unexpected response received", http_res) + + def create_version( + self, + *, + skill_id: str, + file: Union[ + models.PlatformSkillVersionCreateRequestFile, + models.PlatformSkillVersionCreateRequestFileTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> 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. + + + :param skill_id: Glean skill ID. + :param file: SKILL.md, .zip, or .skill bundle to store as a new version. + :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.PlatformSkillsCreateVersionRequest( + skill_id=skill_id, + platform_skill_version_create_request=models.PlatformSkillVersionCreateRequest( + file=utils.get_pydantic_model( + file, models.PlatformSkillVersionCreateRequestFile + ), + ), + ) + + req = self._build_request( + method="POST", + path="/api/skills/{skill_id}/versions", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=True, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request.platform_skill_version_create_request, + False, + False, + "multipart", + models.PlatformSkillVersionCreateRequest, + ), + 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-create-version", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Skills"], + extensions={ + "x-glean-experimental": { + "id": "0d5e48e2-7a41-4d54-b3aa-5026f0dd65df", + "introduced": "2026-06-24", + }, + "x-visibility": "Public", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response( + models.PlatformSkillVersionCreateResponse, http_res + ) + if utils.match_response( + http_res, + ["400", "401", "403", "404", "408", "409", "413", "429"], + "application/problem+json", + ): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + if utils.match_response(http_res, ["500", "503"], "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + 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) + + raise errors.GleanError("Unexpected response received", http_res) + + async def create_version_async( + self, + *, + skill_id: str, + file: Union[ + models.PlatformSkillVersionCreateRequestFile, + models.PlatformSkillVersionCreateRequestFileTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> 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. + + + :param skill_id: Glean skill ID. + :param file: SKILL.md, .zip, or .skill bundle to store as a new version. + :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.PlatformSkillsCreateVersionRequest( + skill_id=skill_id, + platform_skill_version_create_request=models.PlatformSkillVersionCreateRequest( + file=utils.get_pydantic_model( + file, models.PlatformSkillVersionCreateRequestFile + ), + ), + ) + + req = self._build_request_async( + method="POST", + path="/api/skills/{skill_id}/versions", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=True, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request.platform_skill_version_create_request, + False, + False, + "multipart", + models.PlatformSkillVersionCreateRequest, + ), + 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-create-version", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Skills"], + extensions={ + "x-glean-experimental": { + "id": "0d5e48e2-7a41-4d54-b3aa-5026f0dd65df", + "introduced": "2026-06-24", + }, + "x-visibility": "Public", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response( + models.PlatformSkillVersionCreateResponse, http_res + ) + if utils.match_response( + http_res, + ["400", "401", "403", "404", "408", "409", "413", "429"], + "application/problem+json", + ): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + if utils.match_response(http_res, ["500", "503"], "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + 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) + + raise errors.GleanError("Unexpected response received", http_res) + + def list_versions( + self, + *, + skill_id: str, + page_size: Optional[int] = None, + cursor: Optional[str] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.PlatformSkillVersionsListResponse: + r"""List skill versions + + List versions for a skill available to the authenticated user. + + + :param skill_id: Glean skill ID. + :param page_size: Maximum number of versions to return. + :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 + :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.PlatformSkillsListVersionsRequest( + skill_id=skill_id, + page_size=page_size, + cursor=cursor, + ) + + req = self._build_request( + method="GET", + path="/api/skills/{skill_id}/versions", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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-list-versions", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Skills"], + extensions={ + "x-glean-experimental": { + "id": "9efbb8a3-d546-4304-a653-09bb427e3681", + "introduced": "2026-06-24", + }, + "x-visibility": "Public", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response( + models.PlatformSkillVersionsListResponse, http_res + ) + if utils.match_response( + http_res, + ["400", "401", "403", "404", "408", "429"], + "application/problem+json", + ): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + if utils.match_response(http_res, ["500", "503"], "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + 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) + + raise errors.GleanError("Unexpected response received", http_res) + + async def list_versions_async( + self, + *, + skill_id: str, + page_size: Optional[int] = None, + cursor: Optional[str] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.PlatformSkillVersionsListResponse: + r"""List skill versions + + List versions for a skill available to the authenticated user. + + + :param skill_id: Glean skill ID. + :param page_size: Maximum number of versions to return. + :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 + :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.PlatformSkillsListVersionsRequest( + skill_id=skill_id, + page_size=page_size, + cursor=cursor, + ) + + req = self._build_request_async( + method="GET", + path="/api/skills/{skill_id}/versions", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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-list-versions", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Skills"], + extensions={ + "x-glean-experimental": { + "id": "9efbb8a3-d546-4304-a653-09bb427e3681", + "introduced": "2026-06-24", + }, + "x-visibility": "Public", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response( + models.PlatformSkillVersionsListResponse, http_res + ) + if utils.match_response( + http_res, + ["400", "401", "403", "404", "408", "429"], + "application/problem+json", + ): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + if utils.match_response(http_res, ["500", "503"], "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + 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) + + raise errors.GleanError("Unexpected response received", http_res) + + def retrieve_version( + self, + *, + skill_id: str, + version: int, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.PlatformSkillVersionGetResponse: + r"""Retrieve skill version + + Retrieve metadata for a skill version available to the authenticated user. + + + :param skill_id: Glean skill ID. + :param version: Major version number. + :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.PlatformSkillsGetVersionRequest( + skill_id=skill_id, + version=version, + ) + + req = self._build_request( + method="GET", + path="/api/skills/{skill_id}/versions/{version}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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-get-version", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Skills"], + extensions={ + "x-glean-experimental": { + "id": "d70986b1-ad80-48dd-8e52-f294e7251dda", + "introduced": "2026-06-24", + }, + "x-visibility": "Public", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response( + models.PlatformSkillVersionGetResponse, http_res + ) + if utils.match_response( + http_res, + ["400", "401", "403", "404", "408", "429"], + "application/problem+json", + ): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + if utils.match_response(http_res, ["500", "503"], "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + 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) + + raise errors.GleanError("Unexpected response received", http_res) + + async def retrieve_version_async( + self, + *, + skill_id: str, + version: int, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.PlatformSkillVersionGetResponse: + r"""Retrieve skill version + + Retrieve metadata for a skill version available to the authenticated user. + + + :param skill_id: Glean skill ID. + :param version: Major version number. + :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.PlatformSkillsGetVersionRequest( + skill_id=skill_id, + version=version, + ) + + req = self._build_request_async( + method="GET", + path="/api/skills/{skill_id}/versions/{version}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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-get-version", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Skills"], + extensions={ + "x-glean-experimental": { + "id": "d70986b1-ad80-48dd-8e52-f294e7251dda", + "introduced": "2026-06-24", + }, + "x-visibility": "Public", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response( + models.PlatformSkillVersionGetResponse, http_res + ) + if utils.match_response( + http_res, + ["400", "401", "403", "404", "408", "429"], + "application/problem+json", + ): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + if utils.match_response(http_res, ["500", "503"], "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + 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) + + raise errors.GleanError("Unexpected response received", http_res) + + def retrieve_version_content( + self, + *, + skill_id: str, + version: int, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.PlatformSkillsGetVersionContentResponse: + r"""Download skill version content + + Download the installable bundle for a skill version available to the authenticated user. + + + :param skill_id: Glean skill ID. + :param version: Major version number. + :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.PlatformSkillsGetVersionContentRequest( + skill_id=skill_id, + version=version, + ) + + req = self._build_request( + method="GET", + path="/api/skills/{skill_id}/versions/{version}/content", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/octet-stream", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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-get-version-content", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Skills"], + extensions={ + "x-glean-experimental": { + "id": "70c85692-7042-403a-a3a5-5b315576432a", + "introduced": "2026-06-24", + }, + "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", "application/octet-stream"): + return models.PlatformSkillsGetVersionContentResponse( + result=http_res, headers=utils.get_response_headers(http_res.headers) + ) + if utils.match_response( + http_res, + ["400", "401", "403", "404", "408", "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 retrieve_version_content_async( + self, + *, + skill_id: str, + version: int, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.PlatformSkillsGetVersionContentResponse: + r"""Download skill version content + + Download the installable bundle for a skill version available to the authenticated user. + + + :param skill_id: Glean skill ID. + :param version: Major version number. + :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.PlatformSkillsGetVersionContentRequest( + skill_id=skill_id, + version=version, + ) + + req = self._build_request_async( + method="GET", + path="/api/skills/{skill_id}/versions/{version}/content", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/octet-stream", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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-get-version-content", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Skills"], + extensions={ + "x-glean-experimental": { + "id": "70c85692-7042-403a-a3a5-5b315576432a", + "introduced": "2026-06-24", + }, + "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", "application/octet-stream"): + return models.PlatformSkillsGetVersionContentResponse( + result=http_res, headers=utils.get_response_headers(http_res.headers) + ) + if utils.match_response( + http_res, + ["400", "401", "403", "404", "408", "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/src/glean/api_client/tools.py b/src/glean/api_client/tools.py index ee415b62..a9a8b100 100644 --- a/src/glean/api_client/tools.py +++ b/src/glean/api_client/tools.py @@ -6,14 +6,14 @@ from glean.api_client.types import OptionalNullable, UNSET from glean.api_client.utils import get_security_from_env from glean.api_client.utils.unmarshal_json_response import unmarshal_json_response -from typing import Dict, List, Mapping, Optional, Union +from typing import Dict, Iterable, List, Mapping, Optional, Union class Tools(BaseSDK): def list( self, *, - tool_names: Optional[List[str]] = None, + tool_names: Optional[Iterable[str]] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -40,7 +40,7 @@ def list( base_url = self._get_url(base_url, url_variables) request = models.GetRestAPIV1ToolsListRequest( - tool_names=tool_names, + tool_names=utils.unmarshal(tool_names, Optional[List[str]]), ) req = self._build_request( @@ -77,9 +77,11 @@ def list( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Tools", "Tools"], + extensions={"x-visibility": "Preview"}, ), request=req, - error_status_codes=["400", "401", "404", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -97,7 +99,7 @@ def list( async def list_async( self, *, - tool_names: Optional[List[str]] = None, + tool_names: Optional[Iterable[str]] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -124,7 +126,7 @@ async def list_async( base_url = self._get_url(base_url, url_variables) request = models.GetRestAPIV1ToolsListRequest( - tool_names=tool_names, + tool_names=utils.unmarshal(tool_names, Optional[List[str]]), ) req = self._build_request_async( @@ -161,9 +163,11 @@ async def list_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Tools", "Tools"], + extensions={"x-visibility": "Preview"}, ), request=req, - error_status_codes=["400", "401", "404", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -183,8 +187,8 @@ def run( *, name: str, parameters: Union[ - Dict[str, models.ToolsCallParameter], - Dict[str, models.ToolsCallParameterTypedDict], + Mapping[str, models.ToolsCallParameter], + Mapping[str, models.ToolsCallParameterTypedDict], ], retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -256,9 +260,11 @@ def run( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Tools", "Tools"], + extensions={"x-visibility": "Preview"}, ), request=req, - error_status_codes=["400", "401", "404", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -278,8 +284,8 @@ async def run_async( *, name: str, parameters: Union[ - Dict[str, models.ToolsCallParameter], - Dict[str, models.ToolsCallParameterTypedDict], + Mapping[str, models.ToolsCallParameter], + Mapping[str, models.ToolsCallParameterTypedDict], ], retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -351,9 +357,11 @@ async def run_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Tools", "Tools"], + extensions={"x-visibility": "Preview"}, ), request=req, - error_status_codes=["400", "401", "404", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -367,3 +375,1035 @@ async def run_async( raise errors.GleanError("API error occurred", http_res, http_res_text) raise errors.GleanError("Unexpected response received", http_res) + + def retrieve_action_pack_auth_status( + self, + *, + action_pack_id: str, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.ActionPackAuthStatusResponse: + r"""Get end-user authentication status for an action pack. + + Reports whether the calling user is already authenticated against the third-party + tool backing the specified action pack. Intended for headless / server-driven clients + that render an \"Authorize\" prompt when the user has not yet consented to the tool. + + + :param action_pack_id: ID of the action pack to query or authorize. + :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.GetActionPackAuthStatusRequest( + action_pack_id=action_pack_id, + ) + + req = self._build_request( + method="GET", + path="/rest/api/v1/actions/actionpack/{actionPackId}/auth", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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="getActionPackAuthStatus", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Tools"], + extensions={"x-visibility": "Preview"}, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response( + models.ActionPackAuthStatusResponse, http_res + ) + if utils.match_response(http_res, ["400", "401", "404", "429", "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) + + raise errors.GleanError("Unexpected response received", http_res) + + async def retrieve_action_pack_auth_status_async( + self, + *, + action_pack_id: str, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.ActionPackAuthStatusResponse: + r"""Get end-user authentication status for an action pack. + + Reports whether the calling user is already authenticated against the third-party + tool backing the specified action pack. Intended for headless / server-driven clients + that render an \"Authorize\" prompt when the user has not yet consented to the tool. + + + :param action_pack_id: ID of the action pack to query or authorize. + :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.GetActionPackAuthStatusRequest( + action_pack_id=action_pack_id, + ) + + req = self._build_request_async( + method="GET", + path="/rest/api/v1/actions/actionpack/{actionPackId}/auth", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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="getActionPackAuthStatus", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Tools"], + extensions={"x-visibility": "Preview"}, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response( + models.ActionPackAuthStatusResponse, http_res + ) + if utils.match_response(http_res, ["400", "401", "404", "429", "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) + + raise errors.GleanError("Unexpected response received", http_res) + + def authorize_action_pack( + self, + *, + action_pack_id: str, + return_url: str, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.AuthorizeActionPackResponse: + r"""Start the OAuth authorization flow for an action pack. + + Starts the third-party OAuth flow for the specified action pack and returns the + redirect URL that the client should navigate the end user to. After the OAuth + callback completes, the user's browser is redirected back to `returnUrl` with a + status query parameter (`?glean_action_auth=success|error&actionPackId=...`). + + `returnUrl` must match the tenant's configured return URL allowlist; otherwise the + request is rejected with 400. + + + :param action_pack_id: ID of the action pack to query or authorize. + :param return_url: URL on the customer's domain to redirect the end user's browser back to after the third-party OAuth + callback completes. Must be present in the tenant's return URL allowlist. + + :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.AuthorizeActionPackRequestRequest( + action_pack_id=action_pack_id, + authorize_action_pack_request=models.AuthorizeActionPackRequest( + return_url=return_url, + ), + ) + + req = self._build_request( + method="POST", + path="/rest/api/v1/actions/actionpack/{actionPackId}/auth", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=True, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request.authorize_action_pack_request, + False, + False, + "json", + models.AuthorizeActionPackRequest, + ), + 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="authorizeActionPack", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Tools"], + extensions={"x-visibility": "Preview"}, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.AuthorizeActionPackResponse, http_res) + if utils.match_response( + http_res, ["400", "401", "403", "404", "429", "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) + + raise errors.GleanError("Unexpected response received", http_res) + + async def authorize_action_pack_async( + self, + *, + action_pack_id: str, + return_url: str, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.AuthorizeActionPackResponse: + r"""Start the OAuth authorization flow for an action pack. + + Starts the third-party OAuth flow for the specified action pack and returns the + redirect URL that the client should navigate the end user to. After the OAuth + callback completes, the user's browser is redirected back to `returnUrl` with a + status query parameter (`?glean_action_auth=success|error&actionPackId=...`). + + `returnUrl` must match the tenant's configured return URL allowlist; otherwise the + request is rejected with 400. + + + :param action_pack_id: ID of the action pack to query or authorize. + :param return_url: URL on the customer's domain to redirect the end user's browser back to after the third-party OAuth + callback completes. Must be present in the tenant's return URL allowlist. + + :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.AuthorizeActionPackRequestRequest( + action_pack_id=action_pack_id, + authorize_action_pack_request=models.AuthorizeActionPackRequest( + return_url=return_url, + ), + ) + + req = self._build_request_async( + method="POST", + path="/rest/api/v1/actions/actionpack/{actionPackId}/auth", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=True, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request.authorize_action_pack_request, + False, + False, + "json", + models.AuthorizeActionPackRequest, + ), + 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="authorizeActionPack", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Tools"], + extensions={"x-visibility": "Preview"}, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.AuthorizeActionPackResponse, http_res) + if utils.match_response( + http_res, ["400", "401", "403", "404", "429", "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) + + raise errors.GleanError("Unexpected response received", http_res) + + def retrieve_tool_server_auth_status( + self, + *, + server_id: str, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.ToolServerAuthStatusResponse: + r"""Get end-user authentication status for a tool server. + + Returns display information and the calling user's current authentication status + for the specified tool server. + + + :param server_id: Unique identifier of the tool server. + :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.GetToolServerAuthStatusRequest( + server_id=server_id, + ) + + req = self._build_request( + method="GET", + path="/rest/api/v1/tool-servers/{serverId}/auth", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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="getToolServerAuthStatus", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Tools"], + extensions={ + "x-glean-experimental": { + "id": "52fde6ec-c18b-4de6-b761-f82008542ae7", + "introduced": "2026-07-02", + }, + "x-visibility": "Preview", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response( + models.ToolServerAuthStatusResponse, http_res + ) + if utils.match_response(http_res, ["400", "401", "404", "429", "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) + + raise errors.GleanError("Unexpected response received", http_res) + + async def retrieve_tool_server_auth_status_async( + self, + *, + server_id: str, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.ToolServerAuthStatusResponse: + r"""Get end-user authentication status for a tool server. + + Returns display information and the calling user's current authentication status + for the specified tool server. + + + :param server_id: Unique identifier of the tool server. + :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.GetToolServerAuthStatusRequest( + server_id=server_id, + ) + + req = self._build_request_async( + method="GET", + path="/rest/api/v1/tool-servers/{serverId}/auth", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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="getToolServerAuthStatus", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Tools"], + extensions={ + "x-glean-experimental": { + "id": "52fde6ec-c18b-4de6-b761-f82008542ae7", + "introduced": "2026-07-02", + }, + "x-visibility": "Preview", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response( + models.ToolServerAuthStatusResponse, http_res + ) + if utils.match_response(http_res, ["400", "401", "404", "429", "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) + + raise errors.GleanError("Unexpected response received", http_res) + + def authorize_tool_server( + self, + *, + server_id: str, + return_url: str, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.AuthorizeToolServerResponse: + r"""Start the OAuth authorization flow for a tool server. + + Initiates the third-party OAuth flow for the specified tool server and returns the + authorization URL that the client should navigate the end user to. After the OAuth + callback completes, the user's browser is redirected back to `returnUrl` with query + parameters indicating the result. + + `returnUrl` must match the tenant's configured return URL allowlist; otherwise the + request is rejected with 400. + + + :param server_id: Unique identifier of the tool server. + :param return_url: URL to redirect the end user's browser back to after the OAuth flow completes. + Must be present in the tenant's configured return URL allowlist. + + :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.AuthorizeToolServerRequestRequest( + server_id=server_id, + authorize_tool_server_request=models.AuthorizeToolServerRequest( + return_url=return_url, + ), + ) + + req = self._build_request( + method="POST", + path="/rest/api/v1/tool-servers/{serverId}/auth", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=True, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request.authorize_tool_server_request, + False, + False, + "json", + models.AuthorizeToolServerRequest, + ), + 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="authorizeToolServer", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Tools"], + extensions={ + "x-glean-experimental": { + "id": "1935476e-ecaf-4c1f-a9fd-1e768cf68f30", + "introduced": "2026-07-02", + }, + "x-visibility": "Preview", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.AuthorizeToolServerResponse, http_res) + if utils.match_response( + http_res, ["400", "401", "403", "404", "429", "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) + + raise errors.GleanError("Unexpected response received", http_res) + + async def authorize_tool_server_async( + self, + *, + server_id: str, + return_url: str, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.AuthorizeToolServerResponse: + r"""Start the OAuth authorization flow for a tool server. + + Initiates the third-party OAuth flow for the specified tool server and returns the + authorization URL that the client should navigate the end user to. After the OAuth + callback completes, the user's browser is redirected back to `returnUrl` with query + parameters indicating the result. + + `returnUrl` must match the tenant's configured return URL allowlist; otherwise the + request is rejected with 400. + + + :param server_id: Unique identifier of the tool server. + :param return_url: URL to redirect the end user's browser back to after the OAuth flow completes. + Must be present in the tenant's configured return URL allowlist. + + :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.AuthorizeToolServerRequestRequest( + server_id=server_id, + authorize_tool_server_request=models.AuthorizeToolServerRequest( + return_url=return_url, + ), + ) + + req = self._build_request_async( + method="POST", + path="/rest/api/v1/tool-servers/{serverId}/auth", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=True, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request.authorize_tool_server_request, + False, + False, + "json", + models.AuthorizeToolServerRequest, + ), + 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="authorizeToolServer", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Tools"], + extensions={ + "x-glean-experimental": { + "id": "1935476e-ecaf-4c1f-a9fd-1e768cf68f30", + "introduced": "2026-07-02", + }, + "x-visibility": "Preview", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.AuthorizeToolServerResponse, http_res) + if utils.match_response( + http_res, ["400", "401", "403", "404", "429", "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) + + raise errors.GleanError("Unexpected response received", http_res) + + def get_tool_server_tools( + self, + *, + server_id: str, + tool_names: Iterable[str], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.ToolDefinitionsResponse: + r"""Get tool definitions from a tool server. + + Returns the name, description and JSON input schema for the named tools on the + specified tool server. Works for Glean's built-in tools, tool packs and MCP + servers. + + `toolNames` is required. Names that do not exist on the server are returned in + `notFound` rather than failing the request, so a single bad name does not force + callers into one-at-a-time retries. Matching is case-insensitive and treats `-` + and `_` as equivalent. + + Use `serverId=native` for Glean's built-in tools. + + + :param server_id: Unique identifier of the tool server. + :param tool_names: Tool names to look up on this server. Maximum 100. + :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.GetToolServerToolsRequest( + server_id=server_id, + tool_names=utils.unmarshal(tool_names, List[str]), + ) + + req = self._build_request( + method="GET", + path="/rest/api/v1/tool-servers/{serverId}/tools", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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="getToolServerTools", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Tools"], + extensions={ + "x-glean-experimental": { + "id": "332eb38f-1b5d-4896-88e3-59db5e96e4e1", + "introduced": "2026-07-30", + }, + "x-visibility": "Preview", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.ToolDefinitionsResponse, http_res) + if utils.match_response(http_res, ["400", "401", "404", "429", "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, ["503", "5XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.GleanError("API error occurred", http_res, http_res_text) + + raise errors.GleanError("Unexpected response received", http_res) + + async def get_tool_server_tools_async( + self, + *, + server_id: str, + tool_names: Iterable[str], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.ToolDefinitionsResponse: + r"""Get tool definitions from a tool server. + + Returns the name, description and JSON input schema for the named tools on the + specified tool server. Works for Glean's built-in tools, tool packs and MCP + servers. + + `toolNames` is required. Names that do not exist on the server are returned in + `notFound` rather than failing the request, so a single bad name does not force + callers into one-at-a-time retries. Matching is case-insensitive and treats `-` + and `_` as equivalent. + + Use `serverId=native` for Glean's built-in tools. + + + :param server_id: Unique identifier of the tool server. + :param tool_names: Tool names to look up on this server. Maximum 100. + :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.GetToolServerToolsRequest( + server_id=server_id, + tool_names=utils.unmarshal(tool_names, List[str]), + ) + + req = self._build_request_async( + method="GET", + path="/rest/api/v1/tool-servers/{serverId}/tools", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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="getToolServerTools", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Tools"], + extensions={ + "x-glean-experimental": { + "id": "332eb38f-1b5d-4896-88e3-59db5e96e4e1", + "introduced": "2026-07-30", + }, + "x-visibility": "Preview", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.ToolDefinitionsResponse, http_res) + if utils.match_response(http_res, ["400", "401", "404", "429", "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, ["503", "5XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.GleanError("API error occurred", http_res, http_res_text) + + raise errors.GleanError("Unexpected response received", http_res) diff --git a/src/glean/api_client/triggers.py b/src/glean/api_client/triggers.py new file mode 100644 index 00000000..d0546336 --- /dev/null +++ b/src/glean/api_client/triggers.py @@ -0,0 +1,2369 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from .basesdk import BaseSDK +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.unmarshal_json_response import unmarshal_json_response +from typing import Any, Dict, Mapping, Optional, Union + + +class Triggers(BaseSDK): + def create( + self, + *, + preset_id: str, + delivery: Union[ + models.PlatformTriggerDelivery, models.PlatformTriggerDeliveryTypedDict + ], + description: Optional[str] = None, + inputs: Optional[Mapping[str, Any]] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.PlatformTriggerCreateResponse: + r"""Create trigger + + Create a trigger from a preset and return it with its signing secret. + + + :param preset_id: ID of the preset to instantiate. + :param delivery: + :param description: Optional note describing this trigger. + :param inputs: Values for the preset's inputs. + :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.PlatformTriggerCreateRequest( + preset_id=preset_id, + description=description, + inputs=utils.unmarshal(inputs, Optional[Dict[str, Any]]), + delivery=utils.get_pydantic_model(delivery, models.PlatformTriggerDelivery), + ) + + req = self._build_request( + method="POST", + path="/api/triggers", + 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="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request, False, False, "json", models.PlatformTriggerCreateRequest + ), + 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-triggers-create", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Triggers"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-glean-experimental": { + "id": "eb175f18-74e6-4c9c-ba02-23bcc9018fc9", + "introduced": "2026-07-06", + }, + "x-visibility": "Public", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "201", "application/json"): + return unmarshal_json_response( + models.PlatformTriggerCreateResponse, http_res + ) + if utils.match_response( + http_res, + ["400", "401", "403", "404", "408", "409", "413", "429"], + "application/problem+json", + ): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + if utils.match_response(http_res, ["500", "503"], "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + 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) + + raise errors.GleanError("Unexpected response received", http_res) + + async def create_async( + self, + *, + preset_id: str, + delivery: Union[ + models.PlatformTriggerDelivery, models.PlatformTriggerDeliveryTypedDict + ], + description: Optional[str] = None, + inputs: Optional[Mapping[str, Any]] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.PlatformTriggerCreateResponse: + r"""Create trigger + + Create a trigger from a preset and return it with its signing secret. + + + :param preset_id: ID of the preset to instantiate. + :param delivery: + :param description: Optional note describing this trigger. + :param inputs: Values for the preset's inputs. + :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.PlatformTriggerCreateRequest( + preset_id=preset_id, + description=description, + inputs=utils.unmarshal(inputs, Optional[Dict[str, Any]]), + delivery=utils.get_pydantic_model(delivery, models.PlatformTriggerDelivery), + ) + + req = self._build_request_async( + method="POST", + path="/api/triggers", + 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="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request, False, False, "json", models.PlatformTriggerCreateRequest + ), + 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-triggers-create", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Triggers"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-glean-experimental": { + "id": "eb175f18-74e6-4c9c-ba02-23bcc9018fc9", + "introduced": "2026-07-06", + }, + "x-visibility": "Public", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "201", "application/json"): + return unmarshal_json_response( + models.PlatformTriggerCreateResponse, http_res + ) + if utils.match_response( + http_res, + ["400", "401", "403", "404", "408", "409", "413", "429"], + "application/problem+json", + ): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + if utils.match_response(http_res, ["500", "503"], "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + 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) + + raise errors.GleanError("Unexpected response received", http_res) + + def list( + self, + *, + page_size: Optional[int] = 50, + cursor: Optional[str] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.PlatformTriggerListResponse: + r"""List triggers + + List triggers owned by the authenticated caller. + + + :param page_size: Maximum number of triggers to return. + :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 + :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.PlatformTriggersListRequest( + page_size=page_size, + cursor=cursor, + ) + + req = self._build_request( + method="GET", + path="/api/triggers", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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-triggers-list", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Triggers"], + extensions={ + "x-glean-experimental": { + "id": "e3554987-e043-4561-889a-a1117b1bce06", + "introduced": "2026-07-06", + }, + "x-visibility": "Public", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.PlatformTriggerListResponse, http_res) + if utils.match_response( + http_res, ["400", "401", "403", "408", "429"], "application/problem+json" + ): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + if utils.match_response(http_res, ["500", "503"], "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + 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) + + raise errors.GleanError("Unexpected response received", http_res) + + async def list_async( + self, + *, + page_size: Optional[int] = 50, + cursor: Optional[str] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.PlatformTriggerListResponse: + r"""List triggers + + List triggers owned by the authenticated caller. + + + :param page_size: Maximum number of triggers to return. + :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 + :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.PlatformTriggersListRequest( + page_size=page_size, + cursor=cursor, + ) + + req = self._build_request_async( + method="GET", + path="/api/triggers", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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-triggers-list", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Triggers"], + extensions={ + "x-glean-experimental": { + "id": "e3554987-e043-4561-889a-a1117b1bce06", + "introduced": "2026-07-06", + }, + "x-visibility": "Public", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.PlatformTriggerListResponse, http_res) + if utils.match_response( + http_res, ["400", "401", "403", "408", "429"], "application/problem+json" + ): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + if utils.match_response(http_res, ["500", "503"], "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + 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) + + raise errors.GleanError("Unexpected response received", http_res) + + def get( + self, + *, + trigger_id: str, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.PlatformTriggerGetResponse: + r"""Get trigger + + Retrieve a trigger owned by the authenticated caller. + + + :param trigger_id: ID of the trigger to retrieve. + :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.PlatformTriggersGetRequest( + trigger_id=trigger_id, + ) + + req = self._build_request( + method="GET", + path="/api/triggers/{trigger_id}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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-triggers-get", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Triggers"], + extensions={ + "x-glean-experimental": { + "id": "46de62cb-ba31-4f71-9646-649c1d604816", + "introduced": "2026-07-06", + }, + "x-visibility": "Public", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.PlatformTriggerGetResponse, http_res) + if utils.match_response( + http_res, + ["400", "401", "403", "404", "408", "429"], + "application/problem+json", + ): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + if utils.match_response(http_res, ["500", "503"], "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + 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) + + raise errors.GleanError("Unexpected response received", http_res) + + async def get_async( + self, + *, + trigger_id: str, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.PlatformTriggerGetResponse: + r"""Get trigger + + Retrieve a trigger owned by the authenticated caller. + + + :param trigger_id: ID of the trigger to retrieve. + :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.PlatformTriggersGetRequest( + trigger_id=trigger_id, + ) + + req = self._build_request_async( + method="GET", + path="/api/triggers/{trigger_id}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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-triggers-get", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Triggers"], + extensions={ + "x-glean-experimental": { + "id": "46de62cb-ba31-4f71-9646-649c1d604816", + "introduced": "2026-07-06", + }, + "x-visibility": "Public", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.PlatformTriggerGetResponse, http_res) + if utils.match_response( + http_res, + ["400", "401", "403", "404", "408", "429"], + "application/problem+json", + ): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + if utils.match_response(http_res, ["500", "503"], "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + 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) + + raise errors.GleanError("Unexpected response received", http_res) + + def update( + self, + *, + trigger_id: str, + status: Optional[models.PlatformTriggerStatus] = None, + description: Optional[str] = None, + inputs: Optional[Mapping[str, Any]] = None, + delivery: Optional[ + Union[ + models.PlatformTriggerDelivery, models.PlatformTriggerDeliveryTypedDict + ] + ] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.PlatformTriggerGetResponse: + r"""Update trigger + + Update a trigger. + + + :param trigger_id: ID of the trigger to update. + :param status: Current trigger lifecycle state. + :param description: Optional note describing this trigger. + :param inputs: Values for the preset's inputs. + :param delivery: + :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.PlatformTriggersUpdateRequest( + trigger_id=trigger_id, + platform_trigger_update_request=models.PlatformTriggerUpdateRequest( + status=status, + description=description, + inputs=utils.unmarshal(inputs, Optional[Dict[str, Any]]), + delivery=utils.get_pydantic_model( + delivery, Optional[models.PlatformTriggerDelivery] + ), + ), + ) + + req = self._build_request( + method="PATCH", + path="/api/triggers/{trigger_id}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=True, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request.platform_trigger_update_request, + False, + False, + "json", + models.PlatformTriggerUpdateRequest, + ), + 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-triggers-update", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Triggers"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-glean-experimental": { + "id": "3eb4c709-bd5c-4019-b913-0db36c766350", + "introduced": "2026-07-06", + }, + "x-visibility": "Public", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.PlatformTriggerGetResponse, http_res) + if utils.match_response( + http_res, + ["400", "401", "403", "404", "408", "413", "429"], + "application/problem+json", + ): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + if utils.match_response(http_res, ["500", "503"], "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + 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) + + raise errors.GleanError("Unexpected response received", http_res) + + async def update_async( + self, + *, + trigger_id: str, + status: Optional[models.PlatformTriggerStatus] = None, + description: Optional[str] = None, + inputs: Optional[Mapping[str, Any]] = None, + delivery: Optional[ + Union[ + models.PlatformTriggerDelivery, models.PlatformTriggerDeliveryTypedDict + ] + ] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.PlatformTriggerGetResponse: + r"""Update trigger + + Update a trigger. + + + :param trigger_id: ID of the trigger to update. + :param status: Current trigger lifecycle state. + :param description: Optional note describing this trigger. + :param inputs: Values for the preset's inputs. + :param delivery: + :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.PlatformTriggersUpdateRequest( + trigger_id=trigger_id, + platform_trigger_update_request=models.PlatformTriggerUpdateRequest( + status=status, + description=description, + inputs=utils.unmarshal(inputs, Optional[Dict[str, Any]]), + delivery=utils.get_pydantic_model( + delivery, Optional[models.PlatformTriggerDelivery] + ), + ), + ) + + req = self._build_request_async( + method="PATCH", + path="/api/triggers/{trigger_id}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=True, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request.platform_trigger_update_request, + False, + False, + "json", + models.PlatformTriggerUpdateRequest, + ), + 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-triggers-update", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Triggers"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-glean-experimental": { + "id": "3eb4c709-bd5c-4019-b913-0db36c766350", + "introduced": "2026-07-06", + }, + "x-visibility": "Public", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.PlatformTriggerGetResponse, http_res) + if utils.match_response( + http_res, + ["400", "401", "403", "404", "408", "413", "429"], + "application/problem+json", + ): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + if utils.match_response(http_res, ["500", "503"], "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + 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) + + raise errors.GleanError("Unexpected response received", http_res) + + def delete( + self, + *, + trigger_id: str, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ): + r"""Delete trigger + + Delete a trigger. + + + :param trigger_id: ID of the trigger to delete. + :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.PlatformTriggersDeleteRequest( + trigger_id=trigger_id, + ) + + req = self._build_request( + method="DELETE", + path="/api/triggers/{trigger_id}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/problem+json", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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-triggers-delete", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Triggers"], + extensions={ + "x-glean-experimental": { + "id": "e6564ed7-8b4b-4708-918b-eed97110859f", + "introduced": "2026-07-06", + }, + "x-visibility": "Public", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "204", "*"): + return + if utils.match_response( + http_res, + ["400", "401", "403", "404", "408", "429"], + "application/problem+json", + ): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + if utils.match_response(http_res, ["500", "503"], "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + 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) + + raise errors.GleanError("Unexpected response received", http_res) + + async def delete_async( + self, + *, + trigger_id: str, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ): + r"""Delete trigger + + Delete a trigger. + + + :param trigger_id: ID of the trigger to delete. + :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.PlatformTriggersDeleteRequest( + trigger_id=trigger_id, + ) + + req = self._build_request_async( + method="DELETE", + path="/api/triggers/{trigger_id}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/problem+json", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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-triggers-delete", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Triggers"], + extensions={ + "x-glean-experimental": { + "id": "e6564ed7-8b4b-4708-918b-eed97110859f", + "introduced": "2026-07-06", + }, + "x-visibility": "Public", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "204", "*"): + return + if utils.match_response( + http_res, + ["400", "401", "403", "404", "408", "429"], + "application/problem+json", + ): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + if utils.match_response(http_res, ["500", "503"], "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + 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) + + raise errors.GleanError("Unexpected response received", http_res) + + def search_events( + self, + *, + trigger_id: str, + page_size: Optional[int] = 10, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.PlatformTriggerEventSearchResponse: + r"""Search events for a trigger + + Search recent content events an existing trigger matches. Read-only — no webhook delivery is made. Covers the last seven days. + + + :param trigger_id: ID of the trigger whose events to search. + :param page_size: Maximum number of events to return. + :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.PlatformTriggersEventsSearchRequest( + trigger_id=trigger_id, + platform_trigger_event_search_request=models.PlatformTriggerEventSearchRequest( + page_size=page_size, + ), + ) + + req = self._build_request( + method="POST", + path="/api/triggers/{trigger_id}/events/search", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request.platform_trigger_event_search_request + if request is not None + else None, + False, + True, + "json", + Optional[models.PlatformTriggerEventSearchRequest], + ), + 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-triggers-events-search", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Triggers"], + extensions={ + "x-glean-experimental": { + "id": "c734a377-3dec-4ee2-9ec5-3848a8384f03", + "introduced": "2026-08-07", + }, + "x-visibility": "Public", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response( + models.PlatformTriggerEventSearchResponse, http_res + ) + if utils.match_response( + http_res, + ["400", "401", "403", "404", "408", "413", "429"], + "application/problem+json", + ): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + if utils.match_response(http_res, ["500", "503"], "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + 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) + + raise errors.GleanError("Unexpected response received", http_res) + + async def search_events_async( + self, + *, + trigger_id: str, + page_size: Optional[int] = 10, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.PlatformTriggerEventSearchResponse: + r"""Search events for a trigger + + Search recent content events an existing trigger matches. Read-only — no webhook delivery is made. Covers the last seven days. + + + :param trigger_id: ID of the trigger whose events to search. + :param page_size: Maximum number of events to return. + :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.PlatformTriggersEventsSearchRequest( + trigger_id=trigger_id, + platform_trigger_event_search_request=models.PlatformTriggerEventSearchRequest( + page_size=page_size, + ), + ) + + req = self._build_request_async( + method="POST", + path="/api/triggers/{trigger_id}/events/search", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request.platform_trigger_event_search_request + if request is not None + else None, + False, + True, + "json", + Optional[models.PlatformTriggerEventSearchRequest], + ), + 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-triggers-events-search", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Triggers"], + extensions={ + "x-glean-experimental": { + "id": "c734a377-3dec-4ee2-9ec5-3848a8384f03", + "introduced": "2026-08-07", + }, + "x-visibility": "Public", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response( + models.PlatformTriggerEventSearchResponse, http_res + ) + if utils.match_response( + http_res, + ["400", "401", "403", "404", "408", "413", "429"], + "application/problem+json", + ): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + if utils.match_response(http_res, ["500", "503"], "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + 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) + + raise errors.GleanError("Unexpected response received", http_res) + + def list_presets( + self, + *, + datasource: Optional[str] = None, + page_size: Optional[int] = 50, + cursor: Optional[str] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.PlatformTriggerPresetListResponse: + r"""List trigger presets + + List the trigger presets available to the caller. A preset is a curated content-trigger template (e.g. a new Jira ticket) which is passed when creating a trigger. + + + :param datasource: Restrict results to presets for a single datasource (e.g. github). + :param page_size: Maximum number of presets to return. + :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 + :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.PlatformTriggerPresetsListRequest( + datasource=datasource, + page_size=page_size, + cursor=cursor, + ) + + req = self._build_request( + method="GET", + path="/api/trigger-presets", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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-trigger-presets-list", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Triggers"], + extensions={ + "x-glean-experimental": { + "id": "f5b16196-0d4c-42f0-89bf-40313398728e", + "introduced": "2026-07-22", + }, + "x-visibility": "Public", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response( + models.PlatformTriggerPresetListResponse, http_res + ) + if utils.match_response( + http_res, ["400", "401", "403", "408", "429"], "application/problem+json" + ): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + if utils.match_response(http_res, ["500", "503"], "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + 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) + + raise errors.GleanError("Unexpected response received", http_res) + + async def list_presets_async( + self, + *, + datasource: Optional[str] = None, + page_size: Optional[int] = 50, + cursor: Optional[str] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.PlatformTriggerPresetListResponse: + r"""List trigger presets + + List the trigger presets available to the caller. A preset is a curated content-trigger template (e.g. a new Jira ticket) which is passed when creating a trigger. + + + :param datasource: Restrict results to presets for a single datasource (e.g. github). + :param page_size: Maximum number of presets to return. + :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 + :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.PlatformTriggerPresetsListRequest( + datasource=datasource, + page_size=page_size, + cursor=cursor, + ) + + req = self._build_request_async( + method="GET", + path="/api/trigger-presets", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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-trigger-presets-list", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Triggers"], + extensions={ + "x-glean-experimental": { + "id": "f5b16196-0d4c-42f0-89bf-40313398728e", + "introduced": "2026-07-22", + }, + "x-visibility": "Public", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response( + models.PlatformTriggerPresetListResponse, http_res + ) + if utils.match_response( + http_res, ["400", "401", "403", "408", "429"], "application/problem+json" + ): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + if utils.match_response(http_res, ["500", "503"], "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + 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) + + raise errors.GleanError("Unexpected response received", http_res) + + def get_preset( + self, + *, + preset_id: str, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.PlatformTriggerPresetGetResponse: + r"""Get trigger preset + + Retrieve a single trigger preset by id. + + + :param preset_id: ID of the preset to retrieve. + :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.PlatformTriggerPresetsGetRequest( + preset_id=preset_id, + ) + + req = self._build_request( + method="GET", + path="/api/trigger-presets/{preset_id}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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-trigger-presets-get", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Triggers"], + extensions={ + "x-glean-experimental": { + "id": "5277167d-909b-4eee-95d1-8958b07016bb", + "introduced": "2026-07-22", + }, + "x-visibility": "Public", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response( + models.PlatformTriggerPresetGetResponse, http_res + ) + if utils.match_response( + http_res, + ["400", "401", "403", "404", "408", "429"], + "application/problem+json", + ): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + if utils.match_response(http_res, ["500", "503"], "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + 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) + + raise errors.GleanError("Unexpected response received", http_res) + + async def get_preset_async( + self, + *, + preset_id: str, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.PlatformTriggerPresetGetResponse: + r"""Get trigger preset + + Retrieve a single trigger preset by id. + + + :param preset_id: ID of the preset to retrieve. + :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.PlatformTriggerPresetsGetRequest( + preset_id=preset_id, + ) + + req = self._build_request_async( + method="GET", + path="/api/trigger-presets/{preset_id}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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-trigger-presets-get", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Triggers"], + extensions={ + "x-glean-experimental": { + "id": "5277167d-909b-4eee-95d1-8958b07016bb", + "introduced": "2026-07-22", + }, + "x-visibility": "Public", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response( + models.PlatformTriggerPresetGetResponse, http_res + ) + if utils.match_response( + http_res, + ["400", "401", "403", "404", "408", "429"], + "application/problem+json", + ): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + if utils.match_response(http_res, ["500", "503"], "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + 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) + + raise errors.GleanError("Unexpected response received", http_res) + + def list_preset_input_values( + self, + *, + preset_id: str, + field: str, + query: Optional[str] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.PlatformTriggerPresetInputValueListResponse: + r"""Search trigger preset input values + + Return up to 300 selectable values for a single picklist input on a preset. Results are intended for typeahead selection and are not cursor-paginated. When `is_truncated` is true, refine `query` to narrow the result set. + + + :param preset_id: ID of the preset the input belongs to. + :param field: Field identifier of the input whose values to list. + :param query: Prefix filter over the input's option values, for typeahead. Matching is on the option value, not its display name. + + :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.PlatformTriggerPresetsInputValuesListRequest( + preset_id=preset_id, + field=field, + query=query, + ) + + req = self._build_request( + method="GET", + path="/api/trigger-presets/{preset_id}/input-values", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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-trigger-presets-input-values-list", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Triggers"], + extensions={ + "x-glean-experimental": { + "id": "24c5675d-a57a-48cb-9d71-3dece296f28c", + "introduced": "2026-08-06", + }, + "x-visibility": "Public", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response( + models.PlatformTriggerPresetInputValueListResponse, http_res + ) + if utils.match_response( + http_res, + ["400", "401", "403", "404", "408", "429"], + "application/problem+json", + ): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + if utils.match_response(http_res, ["500", "503"], "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + 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) + + raise errors.GleanError("Unexpected response received", http_res) + + async def list_preset_input_values_async( + self, + *, + preset_id: str, + field: str, + query: Optional[str] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.PlatformTriggerPresetInputValueListResponse: + r"""Search trigger preset input values + + Return up to 300 selectable values for a single picklist input on a preset. Results are intended for typeahead selection and are not cursor-paginated. When `is_truncated` is true, refine `query` to narrow the result set. + + + :param preset_id: ID of the preset the input belongs to. + :param field: Field identifier of the input whose values to list. + :param query: Prefix filter over the input's option values, for typeahead. Matching is on the option value, not its display name. + + :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.PlatformTriggerPresetsInputValuesListRequest( + preset_id=preset_id, + field=field, + query=query, + ) + + req = self._build_request_async( + method="GET", + path="/api/trigger-presets/{preset_id}/input-values", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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-trigger-presets-input-values-list", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Triggers"], + extensions={ + "x-glean-experimental": { + "id": "24c5675d-a57a-48cb-9d71-3dece296f28c", + "introduced": "2026-08-06", + }, + "x-visibility": "Public", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response( + models.PlatformTriggerPresetInputValueListResponse, http_res + ) + if utils.match_response( + http_res, + ["400", "401", "403", "404", "408", "429"], + "application/problem+json", + ): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + if utils.match_response(http_res, ["500", "503"], "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + 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) + + raise errors.GleanError("Unexpected response received", http_res) + + def search_preset_events( + self, + *, + preset_id: str, + inputs: Optional[Mapping[str, str]] = None, + page_size: Optional[int] = 10, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.PlatformTriggerEventSearchResponse: + r"""Search events for a trigger preset + + Search recent content events an unsaved trigger built from this preset would match, to preview it before creating the trigger. Read-only — no trigger is created and no webhook delivery is made. Covers the last seven days. + + + :param preset_id: ID of the preset to preview. + :param inputs: Values for the preset's input fields, keyed by field name. + + :param page_size: Maximum number of events to return. + :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.PlatformTriggerPresetsEventsSearchRequest( + preset_id=preset_id, + platform_trigger_preset_event_search_request=models.PlatformTriggerPresetEventSearchRequest( + inputs=utils.unmarshal(inputs, Optional[Dict[str, str]]), + page_size=page_size, + ), + ) + + req = self._build_request( + method="POST", + path="/api/trigger-presets/{preset_id}/events/search", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request.platform_trigger_preset_event_search_request + if request is not None + else None, + False, + True, + "json", + Optional[models.PlatformTriggerPresetEventSearchRequest], + ), + 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-trigger-presets-events-search", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Triggers"], + extensions={ + "x-glean-experimental": { + "id": "a48efd80-78d6-46de-9f23-5b8c63ecd157", + "introduced": "2026-08-12", + }, + "x-visibility": "Public", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response( + models.PlatformTriggerEventSearchResponse, http_res + ) + if utils.match_response( + http_res, + ["400", "401", "403", "404", "408", "413", "429"], + "application/problem+json", + ): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + if utils.match_response(http_res, ["500", "503"], "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + 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) + + raise errors.GleanError("Unexpected response received", http_res) + + async def search_preset_events_async( + self, + *, + preset_id: str, + inputs: Optional[Mapping[str, str]] = None, + page_size: Optional[int] = 10, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.PlatformTriggerEventSearchResponse: + r"""Search events for a trigger preset + + Search recent content events an unsaved trigger built from this preset would match, to preview it before creating the trigger. Read-only — no trigger is created and no webhook delivery is made. Covers the last seven days. + + + :param preset_id: ID of the preset to preview. + :param inputs: Values for the preset's input fields, keyed by field name. + + :param page_size: Maximum number of events to return. + :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.PlatformTriggerPresetsEventsSearchRequest( + preset_id=preset_id, + platform_trigger_preset_event_search_request=models.PlatformTriggerPresetEventSearchRequest( + inputs=utils.unmarshal(inputs, Optional[Dict[str, str]]), + page_size=page_size, + ), + ) + + req = self._build_request_async( + method="POST", + path="/api/trigger-presets/{preset_id}/events/search", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request.platform_trigger_preset_event_search_request + if request is not None + else None, + False, + True, + "json", + Optional[models.PlatformTriggerPresetEventSearchRequest], + ), + 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-trigger-presets-events-search", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Triggers"], + extensions={ + "x-glean-experimental": { + "id": "a48efd80-78d6-46de-9f23-5b8c63ecd157", + "introduced": "2026-08-12", + }, + "x-visibility": "Public", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response( + models.PlatformTriggerEventSearchResponse, http_res + ) + if utils.match_response( + http_res, + ["400", "401", "403", "404", "408", "413", "429"], + "application/problem+json", + ): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + if utils.match_response(http_res, ["500", "503"], "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res + ) + raise errors.PlatformProblemDetailError(response_data, http_res) + 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) + + raise errors.GleanError("Unexpected response received", http_res) diff --git a/src/glean/api_client/types/__init__.py b/src/glean/api_client/types/__init__.py index fc76fe0c..faa26813 100644 --- a/src/glean/api_client/types/__init__.py +++ b/src/glean/api_client/types/__init__.py @@ -1,5 +1,6 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" +from .base64fileinput import Base64EncodedString, Base64FileInput from .basemodel import ( BaseModel, Nullable, @@ -11,6 +12,8 @@ ) __all__ = [ + "Base64EncodedString", + "Base64FileInput", "BaseModel", "Nullable", "OptionalNullable", diff --git a/src/glean/api_client/types/base64fileinput.py b/src/glean/api_client/types/base64fileinput.py new file mode 100644 index 00000000..862566fe --- /dev/null +++ b/src/glean/api_client/types/base64fileinput.py @@ -0,0 +1,43 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations + +import base64 +import io +from os import PathLike +from typing import IO, Any, Union + +from pydantic.functional_validators import BeforeValidator +from typing_extensions import Annotated + + +Base64FileInput = Union[IO[bytes], PathLike[str]] + + +def encode_base64_file_input(value: Any) -> Any: + """Convert PathLike or IO[bytes] inputs to a base64 string. All standard binary streams + that inherit from io.IOBase are handled. Other values pass through. + """ + if isinstance(value, (PathLike, io.IOBase)): + if isinstance(value, PathLike): + with open(value, "rb") as fh: + binary = fh.read() + else: + # Restore position after reading: pydantic may validate the same stream more than once. + position = value.tell() if value.seekable() else None + binary = value.read() + if position is not None: + value.seek(position) + if isinstance(binary, str): + binary = binary.encode() + if not isinstance(binary, (bytes, bytearray)): + raise TypeError( + f"Base64FileInput expected binary IO returning bytes; got {type(binary).__name__}" + ) + return base64.b64encode(binary).decode("ascii") + return value + + +# Non-str inputs are converted to base64 by the BeforeValidator at construction time. +# Callers can also pass a pre-encoded base64 str. +Base64EncodedString = Annotated[str, BeforeValidator(encode_base64_file_input)] diff --git a/src/glean/api_client/utils/__init__.py b/src/glean/api_client/utils/__init__.py index f4525b20..c48a36ca 100644 --- a/src/glean/api_client/utils/__init__.py +++ b/src/glean/api_client/utils/__init__.py @@ -1,25 +1,21 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" -from typing import TYPE_CHECKING, Callable, TypeVar -from importlib import import_module +from typing import Any, TYPE_CHECKING, Callable, TypeVar import asyncio -import builtins -import sys + +from .dynamic_imports import lazy_getattr, lazy_dir _T = TypeVar("_T") async def run_sync_in_thread(func: Callable[..., _T], *args) -> _T: """Run a synchronous function in a thread pool to avoid blocking the event loop.""" - if sys.version_info >= (3, 9): - return await asyncio.to_thread(func, *args) - loop = asyncio.get_event_loop() - return await loop.run_in_executor(None, func, *args) + return await asyncio.to_thread(func, *args) if TYPE_CHECKING: from .annotations import get_discriminator - from .datetimes import parse_datetime + from .datetimes import parse_datetime, parse_duration from .enums import OpenEnumMeta from .headers import get_headers, get_response_headers from .metadata import ( @@ -75,6 +71,7 @@ async def run_sync_in_thread(func: Callable[..., _T], *args) -> _T: "get_default_logger", "get_discriminator", "parse_datetime", + "parse_duration", "get_global_from_env", "get_headers", "get_pydantic_model", @@ -128,6 +125,7 @@ async def run_sync_in_thread(func: Callable[..., _T], *args) -> _T: "get_default_logger": ".logger", "get_discriminator": ".annotations", "parse_datetime": ".datetimes", + "parse_duration": ".datetimes", "get_global_from_env": ".values", "get_headers": ".headers", "get_pydantic_model": ".serializers", @@ -172,38 +170,11 @@ async def run_sync_in_thread(func: Callable[..., _T], *args) -> _T: } -def dynamic_import(modname, retries=3): - for attempt in range(retries): - try: - return import_module(modname, __package__) - except KeyError: - # Clear any half-initialized module and retry - sys.modules.pop(modname, None) - if attempt == retries - 1: - break - raise KeyError(f"Failed to import module '{modname}' after {retries} attempts") - - -def __getattr__(attr_name: str) -> object: - module_name = _dynamic_imports.get(attr_name) - if module_name is None: - raise AttributeError( - f"no {attr_name} found in _dynamic_imports, module name -> {__name__} " - ) - - try: - module = dynamic_import(module_name) - return getattr(module, attr_name) - except ImportError as e: - raise ImportError( - f"Failed to import {attr_name} from {module_name}: {e}" - ) from e - except AttributeError as e: - raise AttributeError( - f"Failed to get {attr_name} from {module_name}: {e}" - ) from e +def __getattr__(attr_name: str) -> Any: + return lazy_getattr( + attr_name, package=__package__, dynamic_imports=_dynamic_imports + ) def __dir__(): - lazy_attrs = builtins.list(_dynamic_imports.keys()) - return builtins.sorted(lazy_attrs) + return lazy_dir(dynamic_imports=_dynamic_imports) diff --git a/src/glean/api_client/utils/datetimes.py b/src/glean/api_client/utils/datetimes.py index a6c52cd6..adad2476 100644 --- a/src/glean/api_client/utils/datetimes.py +++ b/src/glean/api_client/utils/datetimes.py @@ -1,8 +1,10 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" -from datetime import datetime +from datetime import datetime, timedelta import sys +from pydantic import TypeAdapter + def parse_datetime(datetime_string: str) -> datetime: """ @@ -21,3 +23,15 @@ def parse_datetime(datetime_string: str) -> datetime: datetime_string = datetime_string[:-1] + "+00:00" return datetime.fromisoformat(datetime_string) + + +_DURATION_ADAPTER = TypeAdapter(timedelta) + + +def parse_duration(duration_string: str) -> timedelta: + """ + Convert an ISO 8601 duration string (e.g. "PT1H30M") into a timedelta. + The standard library has no ISO 8601 duration parser, so this delegates to + pydantic, which is already a runtime dependency of the SDK. + """ + return _DURATION_ADAPTER.validate_python(duration_string) diff --git a/src/glean/api_client/utils/dynamic_imports.py b/src/glean/api_client/utils/dynamic_imports.py new file mode 100644 index 00000000..673edf82 --- /dev/null +++ b/src/glean/api_client/utils/dynamic_imports.py @@ -0,0 +1,54 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from importlib import import_module +import builtins +import sys + + +def dynamic_import(package, modname, retries=3): + """Import a module relative to package, retrying on KeyError from half-initialized modules.""" + for attempt in range(retries): + try: + return import_module(modname, package) + except KeyError: + sys.modules.pop(modname, None) + if attempt == retries - 1: + break + raise KeyError(f"Failed to import module '{modname}' after {retries} attempts") + + +def lazy_getattr(attr_name, *, package, dynamic_imports, sub_packages=None): + """Module-level __getattr__ that lazily loads from a dynamic_imports mapping. + + Args: + attr_name: The attribute being looked up. + package: The caller's __package__ (for relative imports). + dynamic_imports: Dict mapping attribute names to relative module paths. + sub_packages: Optional list of subpackage names to lazy-load. + """ + module_name = dynamic_imports.get(attr_name) + if module_name is not None: + try: + module = dynamic_import(package, module_name) + return getattr(module, attr_name) + except ImportError as e: + raise ImportError( + f"Failed to import {attr_name} from {module_name}: {e}" + ) from e + except AttributeError as e: + raise AttributeError( + f"Failed to get {attr_name} from {module_name}: {e}" + ) from e + + if sub_packages and attr_name in sub_packages: + return import_module(f".{attr_name}", package) + + raise AttributeError(f"module '{package}' has no attribute '{attr_name}'") + + +def lazy_dir(*, dynamic_imports, sub_packages=None): + """Module-level __dir__ that lists lazily-loadable attributes.""" + lazy_attrs = builtins.list(dynamic_imports.keys()) + if sub_packages: + lazy_attrs.extend(sub_packages) + return builtins.sorted(lazy_attrs) diff --git a/src/glean/api_client/utils/eventstreaming.py b/src/glean/api_client/utils/eventstreaming.py index 0969899b..a8d4fe5c 100644 --- a/src/glean/api_client/utils/eventstreaming.py +++ b/src/glean/api_client/utils/eventstreaming.py @@ -2,9 +2,12 @@ import re import json +from dataclasses import dataclass, asdict from typing import ( + Any, Callable, Generic, + List, TypeVar, Optional, Generator, @@ -22,6 +25,7 @@ class EventStream(Generic[T]): client_ref: Optional[object] response: httpx.Response generator: Generator[T, None, None] + _closed: bool def __init__( self, @@ -29,21 +33,31 @@ def __init__( decoder: Callable[[str], T], sentinel: Optional[str] = None, client_ref: Optional[object] = None, + data_required: bool = True, ): self.response = response - self.generator = stream_events(response, decoder, sentinel) + self.generator = stream_events( + response, decoder, sentinel, data_required=data_required + ) self.client_ref = client_ref + self._closed = False def __iter__(self): return self def __next__(self): + if self._closed: + raise StopIteration return next(self.generator) def __enter__(self): return self def __exit__(self, exc_type, exc_val, exc_tb): + self.close() + + def close(self): + self._closed = True self.response.close() @@ -53,6 +67,7 @@ class EventStreamAsync(Generic[T]): client_ref: Optional[object] response: httpx.Response generator: AsyncGenerator[T, None] + _closed: bool def __init__( self, @@ -60,181 +75,244 @@ def __init__( decoder: Callable[[str], T], sentinel: Optional[str] = None, client_ref: Optional[object] = None, + data_required: bool = True, ): self.response = response - self.generator = stream_events_async(response, decoder, sentinel) + self.generator = stream_events_async( + response, decoder, sentinel, data_required=data_required + ) self.client_ref = client_ref + self._closed = False def __aiter__(self): return self async def __anext__(self): + if self._closed: + raise StopAsyncIteration return await self.generator.__anext__() async def __aenter__(self): return self async def __aexit__(self, exc_type, exc_val, exc_tb): + await self.close() + + async def close(self): + self._closed = True await self.response.aclose() +@dataclass class ServerEvent: id: Optional[str] = None event: Optional[str] = None - data: Optional[str] = None + data: Any = None retry: Optional[int] = None MESSAGE_BOUNDARIES = [ b"\r\n\r\n", - b"\n\n", + b"\r\n\r", + b"\r\n\n", + b"\r\r\n", + b"\n\r\n", b"\r\r", + b"\n\r", + b"\n\n", ] +MAX_BOUNDARY_LEN = max(len(b) for b in MESSAGE_BOUNDARIES) + +UTF8_BOM = b"\xef\xbb\xbf" async def stream_events_async( response: httpx.Response, decoder: Callable[[str], T], sentinel: Optional[str] = None, + data_required: bool = True, ) -> AsyncGenerator[T, None]: - buffer = bytearray() - position = 0 - discard = False - async for chunk in response.aiter_bytes(): - # We've encountered the sentinel value and should no longer process - # incoming data. Instead we throw new data away until the server closes - # the connection. - if discard: - continue - - buffer += chunk - for i in range(position, len(buffer)): - char = buffer[i : i + 1] - seq: Optional[bytes] = None - if char in [b"\r", b"\n"]: - for boundary in MESSAGE_BOUNDARIES: - seq = _peek_sequence(i, buffer, boundary) - if seq is not None: - break - if seq is None: - continue - - block = buffer[position:i] - position = i + len(seq) - event, discard = _parse_event(block, decoder, sentinel) - if event is not None: - yield event - - if position > 0: - buffer = buffer[position:] - position = 0 - - event, discard = _parse_event(buffer, decoder, sentinel) - if event is not None: - yield event + try: + buffer = bytearray() + position = 0 + event_id: Optional[str] = None + async for chunk in response.aiter_bytes(): + if len(buffer) == 0 and chunk.startswith(UTF8_BOM): + chunk = chunk[len(UTF8_BOM) :] + old_len = len(buffer) + buffer += chunk + search_start = max(position, old_len - MAX_BOUNDARY_LEN + 1) + for i in range(search_start, len(buffer)): + char = buffer[i : i + 1] + seq: Optional[bytes] = None + if char in [b"\r", b"\n"]: + for boundary in MESSAGE_BOUNDARIES: + seq = _peek_sequence(i, buffer, boundary) + if seq is not None: + break + if seq is None: + continue + + block = buffer[position:i] + position = i + len(seq) + event, discard, event_id = _parse_event( + raw=block, + decoder=decoder, + sentinel=sentinel, + event_id=event_id, + data_required=data_required, + ) + if event is not None: + yield event + if discard: + return + + if position > 0: + buffer = buffer[position:] + position = 0 + + event, discard, _ = _parse_event( + raw=buffer, + decoder=decoder, + sentinel=sentinel, + event_id=event_id, + data_required=data_required, + ) + if event is not None: + yield event + finally: + await response.aclose() def stream_events( response: httpx.Response, decoder: Callable[[str], T], sentinel: Optional[str] = None, + data_required: bool = True, ) -> Generator[T, None, None]: - buffer = bytearray() - position = 0 - discard = False - for chunk in response.iter_bytes(): - # We've encountered the sentinel value and should no longer process - # incoming data. Instead we throw new data away until the server closes - # the connection. - if discard: - continue - - buffer += chunk - for i in range(position, len(buffer)): - char = buffer[i : i + 1] - seq: Optional[bytes] = None - if char in [b"\r", b"\n"]: - for boundary in MESSAGE_BOUNDARIES: - seq = _peek_sequence(i, buffer, boundary) - if seq is not None: - break - if seq is None: - continue - - block = buffer[position:i] - position = i + len(seq) - event, discard = _parse_event(block, decoder, sentinel) - if event is not None: - yield event - - if position > 0: - buffer = buffer[position:] - position = 0 - - event, discard = _parse_event(buffer, decoder, sentinel) - if event is not None: - yield event + try: + buffer = bytearray() + position = 0 + event_id: Optional[str] = None + for chunk in response.iter_bytes(): + if len(buffer) == 0 and chunk.startswith(UTF8_BOM): + chunk = chunk[len(UTF8_BOM) :] + old_len = len(buffer) + buffer += chunk + search_start = max(position, old_len - MAX_BOUNDARY_LEN + 1) + for i in range(search_start, len(buffer)): + char = buffer[i : i + 1] + seq: Optional[bytes] = None + if char in [b"\r", b"\n"]: + for boundary in MESSAGE_BOUNDARIES: + seq = _peek_sequence(i, buffer, boundary) + if seq is not None: + break + if seq is None: + continue + + block = buffer[position:i] + position = i + len(seq) + event, discard, event_id = _parse_event( + raw=block, + decoder=decoder, + sentinel=sentinel, + event_id=event_id, + data_required=data_required, + ) + if event is not None: + yield event + if discard: + return + + if position > 0: + buffer = buffer[position:] + position = 0 + + event, discard, _ = _parse_event( + raw=buffer, + decoder=decoder, + sentinel=sentinel, + event_id=event_id, + data_required=data_required, + ) + if event is not None: + yield event + finally: + response.close() def _parse_event( - raw: bytearray, decoder: Callable[[str], T], sentinel: Optional[str] = None -) -> Tuple[Optional[T], bool]: + *, + raw: bytearray, + decoder: Callable[[str], T], + sentinel: Optional[str] = None, + event_id: Optional[str] = None, + data_required: bool = True, +) -> Tuple[Optional[T], bool, Optional[str]]: block = raw.decode() lines = re.split(r"\r?\n|\r", block) publish = False event = ServerEvent() - data = "" + data_parts: List[str] = [] for line in lines: if not line: continue delim = line.find(":") - if delim <= 0: + if delim == 0: continue - field = line[0:delim] - value = line[delim + 1 :] if delim < len(line) - 1 else "" - if len(value) and value[0] == " ": - value = value[1:] + field = line + value = "" + if delim > 0: + field = line[0:delim] + value = line[delim + 1 :] if delim < len(line) - 1 else "" + if len(value) and value[0] == " ": + value = value[1:] if field == "event": event.event = value publish = True elif field == "data": - data += value + "\n" + data_parts.append(value) publish = True elif field == "id": - event.id = value publish = True + if "\x00" not in value: + event_id = value elif field == "retry": - event.retry = int(value) if value.isdigit() else None + if value.isdigit(): + event.retry = int(value) publish = True - if sentinel and data == f"{sentinel}\n": - return None, True + event.id = event_id + has_data = bool(data_parts) + data = "\n".join(data_parts) - if data: - data = data[:-1] - event.data = data + if sentinel and has_data and data == sentinel: + return None, True, event_id - data_is_primitive = ( - data.isnumeric() or data == "true" or data == "false" or data == "null" - ) - data_is_json = ( - data.startswith("{") or data.startswith("[") or data.startswith('"') - ) + # Skip data-less events when data is required + if not has_data and publish and data_required: + return None, False, event_id - if data_is_primitive or data_is_json: - try: - event.data = json.loads(data) - except Exception: - pass + if has_data: + try: + event.data = json.loads(data) + except json.JSONDecodeError: + event.data = data out = None if publish: - out = decoder(json.dumps(event.__dict__)) - - return out, False + out_dict = { + k: v + for k, v in asdict(event).items() + if v is not None or (k == "data" and has_data) + } + out = decoder(json.dumps(out_dict)) + + return out, False, event_id def _peek_sequence(position: int, buffer: bytearray, sequence: bytes): diff --git a/src/glean/api_client/utils/forms.py b/src/glean/api_client/utils/forms.py index 1e550bd5..193f2649 100644 --- a/src/glean/api_client/utils/forms.py +++ b/src/glean/api_client/utils/forms.py @@ -1,5 +1,6 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" +import io from typing import ( Any, Dict, @@ -103,6 +104,10 @@ def _extract_file_properties(file_obj: Any) -> Tuple[str, Any, Any]: if file_metadata.content: content = getattr(file_obj, file_field_name, None) + if isinstance(content, io.TextIOBase): + content = content.read().encode( + getattr(content, "encoding", None) or "utf-8" + ) elif file_field_name == "content_type": content_type = getattr(file_obj, file_field_name, None) else: diff --git a/src/glean/api_client/utils/metadata.py b/src/glean/api_client/utils/metadata.py index 173b3e5c..5abddd58 100644 --- a/src/glean/api_client/utils/metadata.py +++ b/src/glean/api_client/utils/metadata.py @@ -15,6 +15,7 @@ class SecurityMetadata: scheme_type: Optional[str] = None sub_type: Optional[str] = None field_name: Optional[str] = None + composite: bool = False def get_field_name(self, default: str) -> str: return self.field_name or default diff --git a/src/glean/api_client/utils/requestbodies.py b/src/glean/api_client/utils/requestbodies.py index 1de32b6d..591415af 100644 --- a/src/glean/api_client/utils/requestbodies.py +++ b/src/glean/api_client/utils/requestbodies.py @@ -46,6 +46,7 @@ def serialize_request_body( if re.match(r"^(application|text)\/([^+]+\+)*json.*", media_type) is not None: serialized_request_body.content = marshal_json(request_body, request_body_type) + elif re.match(r"^multipart\/.*", media_type) is not None: ( serialized_request_body.media_type, diff --git a/src/glean/api_client/utils/retries.py b/src/glean/api_client/utils/retries.py index 88a91b10..c7418a62 100644 --- a/src/glean/api_client/utils/retries.py +++ b/src/glean/api_client/utils/retries.py @@ -11,10 +11,13 @@ class BackoffStrategy: + """Exponential backoff strategy configuration.""" + initial_interval: int max_interval: int exponent: float max_elapsed_time: int + jitter_ms: Optional[int] def __init__( self, @@ -22,24 +25,63 @@ def __init__( max_interval: int, exponent: float, max_elapsed_time: int, + jitter_ms: Optional[int] = None, ): + """Initialize a backoff strategy. + + Args: + initial_interval: Initial retry interval in milliseconds. + max_interval: Maximum retry interval in milliseconds. + exponent: Base of the exponential backoff; the interval grows as + ``initial_interval * exponent ** retries``. + max_elapsed_time: Maximum total elapsed time in milliseconds. + jitter_ms: Additive jitter bound in milliseconds. When set, adds a random + value in ``[0, jitter_ms]`` to each computed backoff interval (default + ``+[0, 1s]``). + + Note: + When a response carries a ``Retry-After`` or ``retry-after-ms`` header, + that delay is used as-is and the sleep-shaping parameters + (``initial_interval``, ``max_interval``, ``exponent``, ``jitter_ms``) are + ignored for that attempt. + """ + if jitter_ms is not None and jitter_ms < 0: + raise ValueError("jitter_ms must be >= 0") self.initial_interval = initial_interval self.max_interval = max_interval self.exponent = exponent self.max_elapsed_time = max_elapsed_time + self.jitter_ms = jitter_ms class RetryConfig: + """Runtime retry configuration.""" + strategy: str backoff: BackoffStrategy retry_connection_errors: bool + status_codes_override: Optional[List[str]] def __init__( - self, strategy: str, backoff: BackoffStrategy, retry_connection_errors: bool + self, + strategy: str, + backoff: BackoffStrategy, + retry_connection_errors: bool, + status_codes_override: Optional[List[str]] = None, ): + """Initialize a retry configuration. + + Args: + strategy: Retry strategy: ``"none"`` or ``"backoff"``. + backoff: Backoff parameters. + retry_connection_errors: Whether to also retry transport-level connection errors. + status_codes_override: Retryable HTTP status codes that take precedence over the + per-operation defaults when non-empty. + """ self.strategy = strategy self.backoff = backoff self.retry_connection_errors = retry_connection_errors + self.status_codes_override = status_codes_override class Retries: @@ -48,7 +90,7 @@ class Retries: def __init__(self, config: RetryConfig, status_codes: List[str]): self.config = config - self.status_codes = status_codes + self.status_codes = config.status_codes_override or status_codes class TemporaryError(Exception): @@ -67,6 +109,18 @@ def __init__(self, inner: Exception): self.inner = inner +_TRANSPORT_ERROR_NAMES = frozenset({"NetworkError", "TimeoutException"}) +_TRANSPORT_ERROR_BASES = frozenset({"TransportError", "RequestError", "HTTPError"}) + + +def _is_transport_error(exception: BaseException) -> bool: + """Report whether an exception is a connection or timeout failure.""" + if isinstance(exception, (httpx.NetworkError, httpx.TimeoutException)): + return True + names = {base.__name__ for base in type(exception).__mro__} + return bool(names & _TRANSPORT_ERROR_NAMES) and _TRANSPORT_ERROR_BASES <= names + + def _parse_retry_after_header(response: httpx.Response) -> Optional[int]: """Parse Retry-After header from response. @@ -93,12 +147,28 @@ def _parse_retry_after_header(response: httpx.Response) -> Optional[int]: return None +def _parse_retry_after_ms_header(response: httpx.Response) -> Optional[int]: + retry_after_ms_header = response.headers.get("retry-after-ms") + if not retry_after_ms_header: + return None + + try: + milliseconds = float(retry_after_ms_header) + if milliseconds >= 0: + return round(milliseconds) + except (OverflowError, ValueError): + pass + + return None + + def _get_sleep_interval( exception: Exception, initial_interval: int, max_interval: int, exponent: float, retries: int, + jitter_ms: Optional[int] = None, ) -> float: """Get sleep interval for retry with exponential backoff. @@ -108,6 +178,7 @@ def _get_sleep_interval( max_interval: Maximum retry interval in milliseconds. exponent: Base for exponential backoff calculation. retries: Current retry attempt count. + jitter_ms: Additive jitter bound in ms; see ``BackoffStrategy.jitter_ms``. Returns: Sleep interval in seconds. @@ -119,7 +190,11 @@ def _get_sleep_interval( ): return exception.retry_after / 1000 - sleep = (initial_interval / 1000) * exponent**retries + random.uniform(0, 1) + sleep = (initial_interval / 1000) * exponent**retries + if jitter_ms is not None: + sleep += random.uniform(0, jitter_ms / 1000) + else: + sleep += random.uniform(0, 1) return min(sleep, max_interval / 1000) @@ -144,19 +219,15 @@ def do_request() -> httpx.Response: if res.status_code == parsed_code: raise TemporaryError(res) - except httpx.ConnectError as exception: - if retries.config.retry_connection_errors: - raise - - raise PermanentError(exception) from exception - except httpx.TimeoutException as exception: - if retries.config.retry_connection_errors: - raise - - raise PermanentError(exception) from exception except TemporaryError: raise except Exception as exception: + if ( + _is_transport_error(exception) + and retries.config.retry_connection_errors + ): + raise + raise PermanentError(exception) from exception return res @@ -167,6 +238,7 @@ def do_request() -> httpx.Response: retries.config.backoff.max_interval, retries.config.backoff.exponent, retries.config.backoff.max_elapsed_time, + retries.config.backoff.jitter_ms, ) return func() @@ -193,19 +265,15 @@ async def do_request() -> httpx.Response: if res.status_code == parsed_code: raise TemporaryError(res) - except httpx.ConnectError as exception: - if retries.config.retry_connection_errors: - raise - - raise PermanentError(exception) from exception - except httpx.TimeoutException as exception: - if retries.config.retry_connection_errors: - raise - - raise PermanentError(exception) from exception except TemporaryError: raise except Exception as exception: + if ( + _is_transport_error(exception) + and retries.config.retry_connection_errors + ): + raise + raise PermanentError(exception) from exception return res @@ -216,6 +284,7 @@ async def do_request() -> httpx.Response: retries.config.backoff.max_interval, retries.config.backoff.exponent, retries.config.backoff.max_elapsed_time, + retries.config.backoff.jitter_ms, ) return await func() @@ -227,6 +296,7 @@ def retry_with_backoff( max_interval=60000, exponent=1.5, max_elapsed_time=3600000, + jitter_ms=None, ): start = round(time.time() * 1000) retries = 0 @@ -244,8 +314,17 @@ def retry_with_backoff( raise + if isinstance(exception, TemporaryError): + retry_after_ms = _parse_retry_after_ms_header(exception.response) + if retry_after_ms is not None: + exception.retry_after = retry_after_ms sleep = _get_sleep_interval( - exception, initial_interval, max_interval, exponent, retries + exception, + initial_interval, + max_interval, + exponent, + retries, + jitter_ms=jitter_ms, ) time.sleep(sleep) retries += 1 @@ -257,6 +336,7 @@ async def retry_with_backoff_async( max_interval=60000, exponent=1.5, max_elapsed_time=3600000, + jitter_ms=None, ): start = round(time.time() * 1000) retries = 0 @@ -274,8 +354,17 @@ async def retry_with_backoff_async( raise + if isinstance(exception, TemporaryError): + retry_after_ms = _parse_retry_after_ms_header(exception.response) + if retry_after_ms is not None: + exception.retry_after = retry_after_ms sleep = _get_sleep_interval( - exception, initial_interval, max_interval, exponent, retries + exception, + initial_interval, + max_interval, + exponent, + retries, + jitter_ms=jitter_ms, ) await asyncio.sleep(sleep) retries += 1 diff --git a/src/glean/api_client/utils/security.py b/src/glean/api_client/utils/security.py index 9a8b701e..4a272f16 100644 --- a/src/glean/api_client/utils/security.py +++ b/src/glean/api_client/utils/security.py @@ -19,7 +19,9 @@ import os -def get_security(security: Any) -> Tuple[Dict[str, str], Dict[str, List[str]]]: +def get_security( + security: Any, allowed_fields: Optional[List[str]] = None +) -> Tuple[Dict[str, str], Dict[str, List[str]]]: headers: Dict[str, str] = {} query_params: Dict[str, List[str]] = {} @@ -30,7 +32,14 @@ def get_security(security: Any) -> Tuple[Dict[str, str], Dict[str, List[str]]]: raise TypeError("security must be a pydantic model") sec_fields: Dict[str, FieldInfo] = security.__class__.model_fields - for name in sec_fields: + sec_field_names = ( + list(sec_fields.keys()) if allowed_fields is None else allowed_fields + ) + + for name in sec_field_names: + if name not in sec_fields: + continue + sec_field = sec_fields[name] value = getattr(security, name) @@ -52,6 +61,9 @@ def get_security(security: Any) -> Tuple[Dict[str, str], Dict[str, List[str]]]: else: _parse_security_scheme(headers, query_params, metadata, name, value) + if not metadata.composite: + return headers, query_params + return headers, query_params @@ -77,15 +89,24 @@ def _parse_security_option( raise TypeError("security option must be a pydantic model") opt_fields: Dict[str, FieldInfo] = option.__class__.model_fields + for name in opt_fields: opt_field = opt_fields[name] metadata = find_field_metadata(opt_field, SecurityMetadata) if metadata is None or not metadata.scheme: continue - _parse_security_scheme( - headers, query_params, metadata, name, getattr(option, name) - ) + + value = getattr(option, name) + if ( + metadata.scheme_type == "http" + and metadata.sub_type == "basic" + and not isinstance(value, BaseModel) + ): + _parse_basic_auth_scheme(headers, option) + return + + _parse_security_scheme(headers, query_params, metadata, name, value) def _parse_security_scheme( @@ -153,6 +174,8 @@ def _parse_security_scheme_value( elif scheme_type == "http": if sub_type == "bearer": headers[header_name] = _apply_bearer(value) + elif sub_type == "basic": + headers[header_name] = value elif sub_type == "custom": return else: diff --git a/src/glean/api_client/utils/serializers.py b/src/glean/api_client/utils/serializers.py index 14321eb4..1031ed93 100644 --- a/src/glean/api_client/utils/serializers.py +++ b/src/glean/api_client/utils/serializers.py @@ -4,7 +4,7 @@ import functools import json import typing -from typing import Any, Dict, List, Tuple, Union, get_args +from typing import Any, Dict, Iterable, List, Mapping, Tuple, Union, get_args import typing_extensions from typing_extensions import get_origin @@ -17,8 +17,7 @@ def serialize_decimal(as_str: bool): def serialize(d): - # Optional[T] is a Union[T, None] - if is_union(type(d)) and type(None) in get_args(type(d)) and d is None: + if d is None: return None if isinstance(d, Unset): return d @@ -46,8 +45,7 @@ def validate_decimal(d): def serialize_float(as_str: bool): def serialize(f): - # Optional[T] is a Union[T, None] - if is_union(type(f)) and type(None) in get_args(type(f)) and f is None: + if f is None: return None if isinstance(f, Unset): return f @@ -75,8 +73,7 @@ def validate_float(f): def serialize_int(as_str: bool): def serialize(i): - # Optional[T] is a Union[T, None] - if is_union(type(i)) and type(None) in get_args(type(i)) and i is None: + if i is None: return None if isinstance(i, Unset): return i @@ -104,8 +101,7 @@ def validate_int(b): def validate_const(v): def validate(c): - # Optional[T] is a Union[T, None] - if is_union(type(c)) and type(None) in get_args(type(c)) and c is None: + if c is None: return None if v != c: @@ -117,10 +113,12 @@ def validate(c): def unmarshal_json(raw, typ: Any) -> Any: - return unmarshal(from_json(raw), typ) + return unmarshal(from_json(raw), typ, coerce_iterables=False) -def unmarshal(val, typ: Any) -> Any: +def unmarshal(val, typ: Any, coerce_iterables: bool = True) -> Any: + if coerce_iterables: + val = _coerce_iterables_for_type(val, typ) unmarshaller = create_model( "Unmarshaller", body=(typ, ...), @@ -197,9 +195,88 @@ def get_pydantic_model(data: Any, typ: Any) -> Any: if not _contains_pydantic_model(data): return unmarshal(data, typ) + return _coerce_iterables_for_type(data, typ) + + +def _coerce_iterables_for_type(data: Any, typ: Any) -> Any: + if data is None or isinstance(data, (BaseModel, Unset)): + return data + + typ = _resolve_type_alias(typ) + origin = get_origin(typ) + + if _is_annotated_type(origin): + args = get_args(typ) + return _coerce_iterables_for_type(data, args[0]) if args else data + + if is_union(origin): + for arg in (arg for arg in get_args(typ) if arg is not type(None)): + coerced = _coerce_iterables_for_type(data, arg) + if coerced is not data: + return coerced + return data + + if _is_list_type(typ): + item_type = get_args(typ)[0] if get_args(typ) else Any + if isinstance(data, (str, bytes, bytearray, Mapping)): + return data + if isinstance(data, Iterable): + return [_coerce_iterables_for_type(item, item_type) for item in data] + return data + + if _is_mapping_type(typ): + value_type = get_args(typ)[1] if len(get_args(typ)) > 1 else Any + if isinstance(data, Mapping): + return { + key: _coerce_iterables_for_type(value, value_type) + for key, value in data.items() + } + return data + + if _is_pydantic_model_type(typ) and isinstance(data, Mapping): + coerced = None + for field_name, field in typ.model_fields.items(): + field_type = field.annotation + for key in (field_name, field.alias): + if key is not None and key in data: + value = data[key] if coerced is None else coerced[key] + coerced_value = _coerce_iterables_for_type(value, field_type) + if coerced_value is not value: + if coerced is None: + coerced = dict(data) + coerced[key] = coerced_value + return coerced if coerced is not None else data + return data +def _resolve_type_alias(typ: Any) -> Any: + return getattr(typ, "__value__", typ) + + +def _is_annotated_type(origin: Any) -> bool: + return any( + origin is typing_obj + for typing_obj in _get_typing_objects_by_name_of("Annotated") + ) + + +def _is_list_type(typ: Any) -> bool: + typ = _resolve_type_alias(typ) + return typ is list or get_origin(typ) is list + + +def _is_mapping_type(typ: Any) -> bool: + typ = _resolve_type_alias(typ) + origin = get_origin(typ) + mapping_origin = get_origin(Mapping[Any, Any]) + return typ in (dict, Dict, Mapping) or origin in (dict, Mapping, mapping_origin) + + +def _is_pydantic_model_type(typ: Any) -> bool: + return isinstance(typ, type) and issubclass(typ, BaseModel) + + def _contains_pydantic_model(data: Any) -> bool: if isinstance(data, BaseModel): return True diff --git a/src/glean/api_client/utils/values.py b/src/glean/api_client/utils/values.py index dae01a44..ac217f47 100644 --- a/src/glean/api_client/utils/values.py +++ b/src/glean/api_client/utils/values.py @@ -52,9 +52,11 @@ def match_status_codes(status_codes: List[str], status_code: int) -> bool: T = TypeVar("T") + def cast_partial(typ): return partial(cast, typ) + def get_global_from_env( value: Optional[T], env_key: str, type_cast: Callable[[str], T] ) -> Optional[T]: diff --git a/src/glean/api_client/visibilityoverrides.py b/src/glean/api_client/visibilityoverrides.py index 96f9e5d3..7c608e8c 100644 --- a/src/glean/api_client/visibilityoverrides.py +++ b/src/glean/api_client/visibilityoverrides.py @@ -6,14 +6,14 @@ from glean.api_client.types import OptionalNullable, UNSET from glean.api_client.utils import get_security_from_env from glean.api_client.utils.unmarshal_json_response import unmarshal_json_response -from typing import List, Mapping, Optional, Union +from typing import Iterable, List, Mapping, Optional, Union class Visibilityoverrides(BaseSDK): def list( self, *, - doc_ids: Optional[List[str]] = None, + doc_ids: Optional[Iterable[str]] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -40,7 +40,7 @@ def list( base_url = self._get_url(base_url, url_variables) request = models.GetdocvisibilityRequest( - doc_ids=doc_ids, + doc_ids=utils.unmarshal(doc_ids, Optional[List[str]]), ) req = self._build_request( @@ -77,9 +77,11 @@ def list( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Governance"], + extensions={"x-visibility": "Public"}, ), request=req, - error_status_codes=["403", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -99,7 +101,7 @@ def list( async def list_async( self, *, - doc_ids: Optional[List[str]] = None, + doc_ids: Optional[Iterable[str]] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -126,7 +128,7 @@ async def list_async( base_url = self._get_url(base_url, url_variables) request = models.GetdocvisibilityRequest( - doc_ids=doc_ids, + doc_ids=utils.unmarshal(doc_ids, Optional[List[str]]), ) req = self._build_request_async( @@ -163,9 +165,11 @@ async def list_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Governance"], + extensions={"x-visibility": "Public"}, ), request=req, - error_status_codes=["403", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -187,8 +191,8 @@ def create( *, visibility_overrides: Optional[ Union[ - List[models.DocumentVisibilityOverride], - List[models.DocumentVisibilityOverrideTypedDict], + Iterable[models.DocumentVisibilityOverride], + Iterable[models.DocumentVisibilityOverrideTypedDict], ] ] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, @@ -263,9 +267,11 @@ def create( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Governance"], + extensions={"x-visibility": "Public"}, ), request=req, - error_status_codes=["403", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -287,8 +293,8 @@ async def create_async( *, visibility_overrides: Optional[ Union[ - List[models.DocumentVisibilityOverride], - List[models.DocumentVisibilityOverrideTypedDict], + Iterable[models.DocumentVisibilityOverride], + Iterable[models.DocumentVisibilityOverrideTypedDict], ] ] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, @@ -363,9 +369,11 @@ async def create_async( security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), + tags=["Governance"], + extensions={"x-visibility": "Public"}, ), request=req, - error_status_codes=["403", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/tests/mockserver/go.mod b/tests/mockserver/go.mod index 38b2d5e8..8b924407 100644 --- a/tests/mockserver/go.mod +++ b/tests/mockserver/go.mod @@ -1,15 +1,16 @@ module mockserver -go 1.22 +go 1.25.10 require ( github.com/ericlagergren/decimal v0.0.0-20221120152707-495c53812d05 github.com/go-pkgz/expirable-cache/v3 v3.0.0 github.com/gorilla/mux v1.8.1 + github.com/stretchr/testify v1.9.0 ) require ( github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/stretchr/testify v1.9.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/tests/mockserver/go.sum b/tests/mockserver/go.sum index fa86a5fc..37327eda 100644 --- a/tests/mockserver/go.sum +++ b/tests/mockserver/go.sum @@ -12,5 +12,7 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRI github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/tests/mockserver/internal/handler/generated_handlers.go b/tests/mockserver/internal/handler/generated_handlers.go index baa0c72f..8e541a71 100644 --- a/tests/mockserver/internal/handler/generated_handlers.go +++ b/tests/mockserver/internal/handler/generated_handlers.go @@ -12,12 +12,42 @@ import ( // GeneratedHandlers returns all generated handlers. func GeneratedHandlers(ctx context.Context, dir *logging.HTTPFileDirectory, rt *tracking.RequestTracker) []*GeneratedHandler { return []*GeneratedHandler{ + NewGeneratedHandler(ctx, http.MethodDelete, "/rest/api/index/custom-metadata/schema/{groupName}", pathDeleteRestAPIIndexCustomMetadataSchemaGroupName(dir, rt)), + NewGeneratedHandler(ctx, http.MethodDelete, "/rest/api/index/document/{docId}/custom-metadata/{groupName}", pathDeleteRestAPIIndexDocumentDocIDCustomMetadataGroupName(dir, rt)), + NewGeneratedHandler(ctx, http.MethodGet, "/api/agents/{agent_id}", pathGetAPIAgentsAgentID(dir, rt)), + NewGeneratedHandler(ctx, http.MethodGet, "/api/agents/{agent_id}/schemas", pathGetAPIAgentsAgentIDSchemas(dir, rt)), + NewGeneratedHandler(ctx, http.MethodGet, "/api/search/filters", pathGetAPISearchFilters(dir, rt)), + NewGeneratedHandler(ctx, http.MethodGet, "/api/skills", pathGetAPISkills(dir, rt)), + NewGeneratedHandler(ctx, http.MethodGet, "/api/skills/{skill_id}", pathGetAPISkillsSkillID(dir, rt)), + NewGeneratedHandler(ctx, http.MethodGet, "/api/skills/{skill_id}/content", pathGetAPISkillsSkillIDContent(dir, rt)), + NewGeneratedHandler(ctx, http.MethodGet, "/api/skills/{skill_id}/versions", pathGetAPISkillsSkillIDVersions(dir, rt)), + NewGeneratedHandler(ctx, http.MethodGet, "/api/skills/{skill_id}/versions/{version}", pathGetAPISkillsSkillIDVersionsVersion(dir, rt)), + NewGeneratedHandler(ctx, http.MethodGet, "/api/skills/{skill_id}/versions/{version}/content", pathGetAPISkillsSkillIDVersionsVersionContent(dir, rt)), + NewGeneratedHandler(ctx, http.MethodGet, "/api/trigger-presets", pathGetAPITriggerPresets(dir, rt)), + NewGeneratedHandler(ctx, http.MethodGet, "/api/trigger-presets/{preset_id}", pathGetAPITriggerPresetsPresetID(dir, rt)), + NewGeneratedHandler(ctx, http.MethodGet, "/api/trigger-presets/{preset_id}/input-values", pathGetAPITriggerPresetsPresetIDInputValues(dir, rt)), + NewGeneratedHandler(ctx, http.MethodGet, "/api/triggers", pathGetAPITriggers(dir, rt)), + NewGeneratedHandler(ctx, http.MethodGet, "/api/triggers/{trigger_id}", pathGetAPITriggersTriggerID(dir, rt)), + NewGeneratedHandler(ctx, http.MethodGet, "/rest/api/index/custom-metadata/schema/{groupName}", pathGetRestAPIIndexCustomMetadataSchemaGroupName(dir, rt)), + NewGeneratedHandler(ctx, http.MethodGet, "/rest/api/v1/actions/actionpack/{actionPackId}/auth", pathGetRestAPIV1ActionsActionpackActionPackIDAuth(dir, rt)), NewGeneratedHandler(ctx, http.MethodGet, "/rest/api/v1/agents/{agent_id}", pathGetRestAPIV1AgentsAgentID(dir, rt)), NewGeneratedHandler(ctx, http.MethodGet, "/rest/api/v1/agents/{agent_id}/schemas", pathGetRestAPIV1AgentsAgentIDSchemas(dir, rt)), + NewGeneratedHandler(ctx, http.MethodGet, "/rest/api/v1/chat-files/{fileId}", pathGetRestAPIV1ChatFilesFileID(dir, rt)), + NewGeneratedHandler(ctx, http.MethodGet, "/rest/api/v1/configure/datasources/{datasourceId}/instances/{instanceId}", pathGetRestAPIV1ConfigureDatasourcesDatasourceIDInstancesInstanceID(dir, rt)), + NewGeneratedHandler(ctx, http.MethodGet, "/rest/api/v1/datasource/{datasourceInstanceId}/credentialstatus", pathGetRestAPIV1DatasourceDatasourceInstanceIDCredentialstatus(dir, rt)), NewGeneratedHandler(ctx, http.MethodGet, "/rest/api/v1/governance/data/findings/exports", pathGetRestAPIV1GovernanceDataFindingsExports(dir, rt)), NewGeneratedHandler(ctx, http.MethodGet, "/rest/api/v1/governance/data/policies", pathGetRestAPIV1GovernanceDataPolicies(dir, rt)), NewGeneratedHandler(ctx, http.MethodGet, "/rest/api/v1/governance/data/policies/{id}", pathGetRestAPIV1GovernanceDataPoliciesID(dir, rt)), + NewGeneratedHandler(ctx, http.MethodGet, "/rest/api/v1/people/{person_id}/photo", pathGetRestAPIV1PeoplePersonIDPhoto(dir, rt)), + NewGeneratedHandler(ctx, http.MethodGet, "/rest/api/v1/tool-servers/{serverId}/auth", pathGetRestAPIV1ToolServersServerIDAuth(dir, rt)), + NewGeneratedHandler(ctx, http.MethodGet, "/rest/api/v1/tool-servers/{serverId}/tools", pathGetRestAPIV1ToolServersServerIDTools(dir, rt)), NewGeneratedHandler(ctx, http.MethodGet, "/rest/api/v1/tools/list", pathGetRestAPIV1ToolsList(dir, rt)), + NewGeneratedHandler(ctx, http.MethodPatch, "/api/skills/{skill_id}", pathPatchAPISkillsSkillID(dir, rt)), + NewGeneratedHandler(ctx, http.MethodPatch, "/api/triggers/{trigger_id}", pathPatchAPITriggersTriggerID(dir, rt)), + NewGeneratedHandler(ctx, http.MethodPatch, "/rest/api/v1/configure/datasources/{datasourceId}/instances/{instanceId}", pathPatchRestAPIV1ConfigureDatasourcesDatasourceIDInstancesInstanceID(dir, rt)), + NewGeneratedHandler(ctx, http.MethodPost, "/api/agents/search", pathPostAPIAgentsSearch(dir, rt)), + NewGeneratedHandler(ctx, http.MethodPost, "/api/agents/{agent_id}/runs", pathPostAPIAgentsAgentIDRuns(dir, rt)), + NewGeneratedHandler(ctx, http.MethodPost, "/api/chat", pathPostAPIChat(dir, rt)), NewGeneratedHandler(ctx, http.MethodPost, "/api/index/v1/adddatasource", pathPostAPIIndexV1Adddatasource(dir, rt)), NewGeneratedHandler(ctx, http.MethodPost, "/api/index/v1/betausers", pathPostAPIIndexV1Betausers(dir, rt)), NewGeneratedHandler(ctx, http.MethodPost, "/api/index/v1/bulkindexdocuments", pathPostAPIIndexV1Bulkindexdocuments(dir, rt)), @@ -25,6 +55,10 @@ func GeneratedHandlers(ctx context.Context, dir *logging.HTTPFileDirectory, rt * NewGeneratedHandler(ctx, http.MethodPost, "/api/index/v1/bulkindexmemberships", pathPostAPIIndexV1Bulkindexmemberships(dir, rt)), NewGeneratedHandler(ctx, http.MethodPost, "/api/index/v1/bulkindexusers", pathPostAPIIndexV1Bulkindexusers(dir, rt)), NewGeneratedHandler(ctx, http.MethodPost, "/api/index/v1/checkdocumentaccess", pathPostAPIIndexV1Checkdocumentaccess(dir, rt)), + NewGeneratedHandler(ctx, http.MethodPost, "/api/index/v1/debug/{datasource}/document", pathPostAPIIndexV1DebugDatasourceDocument(dir, rt)), + NewGeneratedHandler(ctx, http.MethodPost, "/api/index/v1/debug/{datasource}/document/events", pathPostAPIIndexV1DebugDatasourceDocumentEvents(dir, rt)), + NewGeneratedHandler(ctx, http.MethodPost, "/api/index/v1/debug/{datasource}/documents", pathPostAPIIndexV1DebugDatasourceDocuments(dir, rt)), + NewGeneratedHandler(ctx, http.MethodPost, "/api/index/v1/debug/{datasource}/user", pathPostAPIIndexV1DebugDatasourceUser(dir, rt)), NewGeneratedHandler(ctx, http.MethodPost, "/api/index/v1/deletedocument", pathPostAPIIndexV1Deletedocument(dir, rt)), NewGeneratedHandler(ctx, http.MethodPost, "/api/index/v1/deletegroup", pathPostAPIIndexV1Deletegroup(dir, rt)), NewGeneratedHandler(ctx, http.MethodPost, "/api/index/v1/deletemembership", pathPostAPIIndexV1Deletemembership(dir, rt)), @@ -43,17 +77,33 @@ func GeneratedHandlers(ctx context.Context, dir *logging.HTTPFileDirectory, rt * NewGeneratedHandler(ctx, http.MethodPost, "/api/index/v1/processallmemberships", pathPostAPIIndexV1Processallmemberships(dir, rt)), NewGeneratedHandler(ctx, http.MethodPost, "/api/index/v1/rotatetoken", pathPostAPIIndexV1Rotatetoken(dir, rt)), NewGeneratedHandler(ctx, http.MethodPost, "/api/index/v1/updatepermissions", pathPostAPIIndexV1Updatepermissions(dir, rt)), + NewGeneratedHandler(ctx, http.MethodPost, "/api/search", pathPostAPISearch(dir, rt)), + NewGeneratedHandler(ctx, http.MethodPost, "/api/skills", pathPostAPISkills(dir, rt)), + NewGeneratedHandler(ctx, http.MethodPost, "/api/skills/import", pathPostAPISkillsImport(dir, rt)), + NewGeneratedHandler(ctx, http.MethodPost, "/api/skills/sources/preview", pathPostAPISkillsSourcesPreview(dir, rt)), + NewGeneratedHandler(ctx, http.MethodPost, "/api/skills/validation", pathPostAPISkillsValidation(dir, rt)), + NewGeneratedHandler(ctx, http.MethodPost, "/api/skills/{skill_id}/sync", pathPostAPISkillsSkillIDSync(dir, rt)), + NewGeneratedHandler(ctx, http.MethodPost, "/api/skills/{skill_id}/versions", pathPostAPISkillsSkillIDVersions(dir, rt)), + NewGeneratedHandler(ctx, http.MethodPost, "/api/trigger-presets/{preset_id}/events/search", pathPostAPITriggerPresetsPresetIDEventsSearch(dir, rt)), + NewGeneratedHandler(ctx, http.MethodPost, "/api/triggers", pathPostAPITriggers(dir, rt)), + NewGeneratedHandler(ctx, http.MethodPost, "/api/triggers/{trigger_id}/events/search", pathPostAPITriggersTriggerIDEventsSearch(dir, rt)), + NewGeneratedHandler(ctx, http.MethodPost, "/rest/api/index/submissions/{datasourceInstance}/{type}", pathPostRestAPIIndexSubmissionsDatasourceInstanceType(dir, rt)), + NewGeneratedHandler(ctx, http.MethodPost, "/rest/api/v1/actions/actionpack/{actionPackId}/auth", pathPostRestAPIV1ActionsActionpackActionPackIDAuth(dir, rt)), NewGeneratedHandler(ctx, http.MethodPost, "/rest/api/v1/activity", pathPostRestAPIV1Activity(dir, rt)), NewGeneratedHandler(ctx, http.MethodPost, "/rest/api/v1/addcollectionitems", pathPostRestAPIV1Addcollectionitems(dir, rt)), NewGeneratedHandler(ctx, http.MethodPost, "/rest/api/v1/addverificationreminder", pathPostRestAPIV1Addverificationreminder(dir, rt)), NewGeneratedHandler(ctx, http.MethodPost, "/rest/api/v1/adminsearch", pathPostRestAPIV1Adminsearch(dir, rt)), + NewGeneratedHandler(ctx, http.MethodPost, "/rest/api/v1/agents", pathPostRestAPIV1Agents(dir, rt)), + NewGeneratedHandler(ctx, http.MethodPost, "/rest/api/v1/agents/{agent_id}/import", pathPostRestAPIV1AgentsAgentIDImport(dir, rt)), NewGeneratedHandler(ctx, http.MethodPost, "/rest/api/v1/autocomplete", pathPostRestAPIV1Autocomplete(dir, rt)), NewGeneratedHandler(ctx, http.MethodPost, "/rest/api/v1/chat", pathPostRestAPIV1Chat(dir, rt)), + NewGeneratedHandler(ctx, http.MethodPost, "/rest/api/v1/checkdatasourceauth", pathPostRestAPIV1Checkdatasourceauth(dir, rt)), NewGeneratedHandler(ctx, http.MethodPost, "/rest/api/v1/createannouncement", pathPostRestAPIV1Createannouncement(dir, rt)), NewGeneratedHandler(ctx, http.MethodPost, "/rest/api/v1/createanswer", pathPostRestAPIV1Createanswer(dir, rt)), NewGeneratedHandler(ctx, http.MethodPost, "/rest/api/v1/createauthtoken", pathPostRestAPIV1Createauthtoken(dir, rt)), NewGeneratedHandler(ctx, http.MethodPost, "/rest/api/v1/createcollection", pathPostRestAPIV1Createcollection(dir, rt)), NewGeneratedHandler(ctx, http.MethodPost, "/rest/api/v1/createshortcut", pathPostRestAPIV1Createshortcut(dir, rt)), + NewGeneratedHandler(ctx, http.MethodPost, "/rest/api/v1/datasource/{datasourceInstanceId}/credentials", pathPostRestAPIV1DatasourceDatasourceInstanceIDCredentials(dir, rt)), NewGeneratedHandler(ctx, http.MethodPost, "/rest/api/v1/deleteallchats", pathPostRestAPIV1Deleteallchats(dir, rt)), NewGeneratedHandler(ctx, http.MethodPost, "/rest/api/v1/deleteannouncement", pathPostRestAPIV1Deleteannouncement(dir, rt)), NewGeneratedHandler(ctx, http.MethodPost, "/rest/api/v1/deleteanswer", pathPostRestAPIV1Deleteanswer(dir, rt)), @@ -92,10 +142,13 @@ func GeneratedHandlers(ctx context.Context, dir *logging.HTTPFileDirectory, rt * NewGeneratedHandler(ctx, http.MethodPost, "/rest/api/v1/recommendations", pathPostRestAPIV1Recommendations(dir, rt)), NewGeneratedHandler(ctx, http.MethodPost, "/rest/api/v1/search", pathPostRestAPIV1Search(dir, rt)), NewGeneratedHandler(ctx, http.MethodPost, "/rest/api/v1/summarize", pathPostRestAPIV1Summarize(dir, rt)), + NewGeneratedHandler(ctx, http.MethodPost, "/rest/api/v1/tool-servers/{serverId}/auth", pathPostRestAPIV1ToolServersServerIDAuth(dir, rt)), NewGeneratedHandler(ctx, http.MethodPost, "/rest/api/v1/tools/call", pathPostRestAPIV1ToolsCall(dir, rt)), NewGeneratedHandler(ctx, http.MethodPost, "/rest/api/v1/unpin", pathPostRestAPIV1Unpin(dir, rt)), NewGeneratedHandler(ctx, http.MethodPost, "/rest/api/v1/updateannouncement", pathPostRestAPIV1Updateannouncement(dir, rt)), NewGeneratedHandler(ctx, http.MethodPost, "/rest/api/v1/updateshortcut", pathPostRestAPIV1Updateshortcut(dir, rt)), NewGeneratedHandler(ctx, http.MethodPost, "/rest/api/v1/verify", pathPostRestAPIV1Verify(dir, rt)), + NewGeneratedHandler(ctx, http.MethodPut, "/rest/api/index/custom-metadata/schema/{groupName}", pathPutRestAPIIndexCustomMetadataSchemaGroupName(dir, rt)), + NewGeneratedHandler(ctx, http.MethodPut, "/rest/api/index/document/{docId}/custom-metadata/{groupName}", pathPutRestAPIIndexDocumentDocIDCustomMetadataGroupName(dir, rt)), } } diff --git a/tests/mockserver/internal/handler/pathdeleterestapiindexcustommetadataschemagroupname.go b/tests/mockserver/internal/handler/pathdeleterestapiindexcustommetadataschemagroupname.go new file mode 100644 index 00000000..1aa2e9f6 --- /dev/null +++ b/tests/mockserver/internal/handler/pathdeleterestapiindexcustommetadataschemagroupname.go @@ -0,0 +1,65 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package handler + +import ( + "fmt" + "log" + "mockserver/internal/handler/assert" + "mockserver/internal/logging" + "mockserver/internal/sdk/models/components" + "mockserver/internal/sdk/types" + "mockserver/internal/sdk/utils" + "mockserver/internal/tracking" + "net/http" +) + +func pathDeleteRestAPIIndexCustomMetadataSchemaGroupName(dir *logging.HTTPFileDirectory, rt *tracking.RequestTracker) http.HandlerFunc { + return func(w http.ResponseWriter, req *http.Request) { + test := req.Header.Get("x-speakeasy-test-name") + instanceID := req.Header.Get("x-speakeasy-test-instance-id") + + count := rt.GetRequestCount(test, instanceID) + + switch fmt.Sprintf("%s[%d]", test, count) { + case "delete_/rest/api/index/custom-metadata/schema/{groupName}[0]": + dir.HandlerFunc("delete_/rest/api/index/custom-metadata/schema/{groupName}", testDeleteRestAPIIndexCustomMetadataSchemaGroupNameDeleteRestAPIIndexCustomMetadataSchemaGroupName0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testDeleteRestAPIIndexCustomMetadataSchemaGroupNameDeleteRestAPIIndexCustomMetadataSchemaGroupName0(w http.ResponseWriter, req *http.Request) { + if err := assert.SecurityAuthorizationHeader(req, false, "Bearer"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusUnauthorized) + return + } + 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 + } + if err := assert.HeaderExists(req, "User-Agent"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + var respBody *components.SuccessResponse = &components.SuccessResponse{ + Success: types.Bool(true), + } + respBodyBytes, err := utils.MarshalJSON(respBody, "", true) + + if err != nil { + http.Error( + w, + "Unable to encode response body as JSON: "+err.Error(), + http.StatusInternalServerError, + ) + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + _, _ = w.Write(respBodyBytes) +} diff --git a/tests/mockserver/internal/handler/pathdeleterestapiindexdocumentdocidcustommetadatagroupname.go b/tests/mockserver/internal/handler/pathdeleterestapiindexdocumentdocidcustommetadatagroupname.go new file mode 100644 index 00000000..ff7097f8 --- /dev/null +++ b/tests/mockserver/internal/handler/pathdeleterestapiindexdocumentdocidcustommetadatagroupname.go @@ -0,0 +1,65 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package handler + +import ( + "fmt" + "log" + "mockserver/internal/handler/assert" + "mockserver/internal/logging" + "mockserver/internal/sdk/models/components" + "mockserver/internal/sdk/types" + "mockserver/internal/sdk/utils" + "mockserver/internal/tracking" + "net/http" +) + +func pathDeleteRestAPIIndexDocumentDocIDCustomMetadataGroupName(dir *logging.HTTPFileDirectory, rt *tracking.RequestTracker) http.HandlerFunc { + return func(w http.ResponseWriter, req *http.Request) { + test := req.Header.Get("x-speakeasy-test-name") + instanceID := req.Header.Get("x-speakeasy-test-instance-id") + + count := rt.GetRequestCount(test, instanceID) + + switch fmt.Sprintf("%s[%d]", test, count) { + case "delete_/rest/api/index/document/{docId}/custom-metadata/{groupName}[0]": + dir.HandlerFunc("delete_/rest/api/index/document/{docId}/custom-metadata/{groupName}", testDeleteRestAPIIndexDocumentDocIDCustomMetadataGroupNameDeleteRestAPIIndexDocumentDocIDCustomMetadataGroupName0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testDeleteRestAPIIndexDocumentDocIDCustomMetadataGroupNameDeleteRestAPIIndexDocumentDocIDCustomMetadataGroupName0(w http.ResponseWriter, req *http.Request) { + if err := assert.SecurityAuthorizationHeader(req, false, "Bearer"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusUnauthorized) + return + } + 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 + } + if err := assert.HeaderExists(req, "User-Agent"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + var respBody *components.SuccessResponse = &components.SuccessResponse{ + Success: types.Bool(true), + } + respBodyBytes, err := utils.MarshalJSON(respBody, "", true) + + if err != nil { + http.Error( + w, + "Unable to encode response body as JSON: "+err.Error(), + http.StatusInternalServerError, + ) + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + _, _ = w.Write(respBodyBytes) +} diff --git a/tests/mockserver/internal/handler/pathgetapiagentsagentid.go b/tests/mockserver/internal/handler/pathgetapiagentsagentid.go new file mode 100644 index 00000000..821cdaf9 --- /dev/null +++ b/tests/mockserver/internal/handler/pathgetapiagentsagentid.go @@ -0,0 +1,69 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package handler + +import ( + "fmt" + "log" + "mockserver/internal/handler/assert" + "mockserver/internal/logging" + "mockserver/internal/sdk/models/components" + "mockserver/internal/sdk/utils" + "mockserver/internal/tracking" + "net/http" +) + +func pathGetAPIAgentsAgentID(dir *logging.HTTPFileDirectory, rt *tracking.RequestTracker) http.HandlerFunc { + return func(w http.ResponseWriter, req *http.Request) { + test := req.Header.Get("x-speakeasy-test-name") + instanceID := req.Header.Get("x-speakeasy-test-instance-id") + + count := rt.GetRequestCount(test, instanceID) + + switch fmt.Sprintf("%s[%d]", test, count) { + case "platform-agents-get[0]": + dir.HandlerFunc("platform-agents-get", testPlatformAgentsGetPlatformAgentsGet0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testPlatformAgentsGetPlatformAgentsGet0(w http.ResponseWriter, req *http.Request) { + if err := assert.SecurityAuthorizationHeader(req, false, "Bearer"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusUnauthorized) + return + } + 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 + } + if err := assert.HeaderExists(req, "User-Agent"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + var respBody *components.PlatformAgentGetResponse = &components.PlatformAgentGetResponse{ + Agent: components.PlatformAgent{ + AgentID: "mho4lwzylcozgoc2", + Name: "HR Policy Agent", + Capabilities: components.PlatformAgentCapabilities{}, + }, + RequestID: "", + } + respBodyBytes, err := utils.MarshalJSON(respBody, "", true) + + if err != nil { + http.Error( + w, + "Unable to encode response body as JSON: "+err.Error(), + http.StatusInternalServerError, + ) + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + _, _ = w.Write(respBodyBytes) +} diff --git a/tests/mockserver/internal/handler/pathgetapiagentsagentidschemas.go b/tests/mockserver/internal/handler/pathgetapiagentsagentidschemas.go new file mode 100644 index 00000000..a9212f1d --- /dev/null +++ b/tests/mockserver/internal/handler/pathgetapiagentsagentidschemas.go @@ -0,0 +1,71 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package handler + +import ( + "fmt" + "log" + "mockserver/internal/handler/assert" + "mockserver/internal/logging" + "mockserver/internal/sdk/models/components" + "mockserver/internal/sdk/utils" + "mockserver/internal/tracking" + "net/http" +) + +func pathGetAPIAgentsAgentIDSchemas(dir *logging.HTTPFileDirectory, rt *tracking.RequestTracker) http.HandlerFunc { + return func(w http.ResponseWriter, req *http.Request) { + test := req.Header.Get("x-speakeasy-test-name") + instanceID := req.Header.Get("x-speakeasy-test-instance-id") + + count := rt.GetRequestCount(test, instanceID) + + switch fmt.Sprintf("%s[%d]", test, count) { + case "platform-agents-get-schemas[0]": + dir.HandlerFunc("platform-agents-get-schemas", testPlatformAgentsGetSchemasPlatformAgentsGetSchemas0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testPlatformAgentsGetSchemasPlatformAgentsGetSchemas0(w http.ResponseWriter, req *http.Request) { + if err := assert.SecurityAuthorizationHeader(req, false, "Bearer"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusUnauthorized) + return + } + 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 + } + if err := assert.HeaderExists(req, "User-Agent"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + var respBody *components.PlatformAgentSchemasResponse = &components.PlatformAgentSchemasResponse{ + AgentID: "", + InputSchema: map[string]any{}, + OutputSchema: map[string]any{ + "key": "", + "key1": "", + "key2": "", + }, + RequestID: "", + } + respBodyBytes, err := utils.MarshalJSON(respBody, "", true) + + if err != nil { + http.Error( + w, + "Unable to encode response body as JSON: "+err.Error(), + http.StatusInternalServerError, + ) + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + _, _ = w.Write(respBodyBytes) +} diff --git a/tests/mockserver/internal/handler/pathgetapisearchfilters.go b/tests/mockserver/internal/handler/pathgetapisearchfilters.go new file mode 100644 index 00000000..61dfb292 --- /dev/null +++ b/tests/mockserver/internal/handler/pathgetapisearchfilters.go @@ -0,0 +1,65 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package handler + +import ( + "fmt" + "log" + "mockserver/internal/handler/assert" + "mockserver/internal/logging" + "mockserver/internal/sdk/models/components" + "mockserver/internal/sdk/utils" + "mockserver/internal/tracking" + "net/http" +) + +func pathGetAPISearchFilters(dir *logging.HTTPFileDirectory, rt *tracking.RequestTracker) http.HandlerFunc { + return func(w http.ResponseWriter, req *http.Request) { + test := req.Header.Get("x-speakeasy-test-name") + instanceID := req.Header.Get("x-speakeasy-test-instance-id") + + count := rt.GetRequestCount(test, instanceID) + + switch fmt.Sprintf("%s[%d]", test, count) { + case "platform-search-filters[0]": + dir.HandlerFunc("platform-search-filters", testPlatformSearchFiltersPlatformSearchFilters0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testPlatformSearchFiltersPlatformSearchFilters0(w http.ResponseWriter, req *http.Request) { + if err := assert.SecurityAuthorizationHeader(req, false, "Bearer"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusUnauthorized) + return + } + 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 + } + if err := assert.HeaderExists(req, "User-Agent"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + var respBody *components.PlatformSearchFiltersResponse = &components.PlatformSearchFiltersResponse{ + Datasources: []components.PlatformDatasourceFilterInfo{}, + RequestID: "", + } + respBodyBytes, err := utils.MarshalJSON(respBody, "", true) + + if err != nil { + http.Error( + w, + "Unable to encode response body as JSON: "+err.Error(), + http.StatusInternalServerError, + ) + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + _, _ = w.Write(respBodyBytes) +} diff --git a/tests/mockserver/internal/handler/pathgetapiskills.go b/tests/mockserver/internal/handler/pathgetapiskills.go new file mode 100644 index 00000000..7baa51e7 --- /dev/null +++ b/tests/mockserver/internal/handler/pathgetapiskills.go @@ -0,0 +1,68 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package handler + +import ( + "fmt" + "log" + "mockserver/internal/handler/assert" + "mockserver/internal/logging" + "mockserver/internal/sdk/models/components" + "mockserver/internal/sdk/types" + "mockserver/internal/sdk/utils" + "mockserver/internal/tracking" + "net/http" +) + +func pathGetAPISkills(dir *logging.HTTPFileDirectory, rt *tracking.RequestTracker) http.HandlerFunc { + return func(w http.ResponseWriter, req *http.Request) { + test := req.Header.Get("x-speakeasy-test-name") + instanceID := req.Header.Get("x-speakeasy-test-instance-id") + + count := rt.GetRequestCount(test, instanceID) + + switch fmt.Sprintf("%s[%d]", test, count) { + case "platform-skills-list[0]": + dir.HandlerFunc("platform-skills-list", testPlatformSkillsListPlatformSkillsList0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testPlatformSkillsListPlatformSkillsList0(w http.ResponseWriter, req *http.Request) { + if err := assert.SecurityAuthorizationHeader(req, false, "Bearer"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusUnauthorized) + return + } + 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 + } + if err := assert.HeaderExists(req, "User-Agent"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + var respBody *components.PlatformSkillsListResponse = &components.PlatformSkillsListResponse{ + Skills: []components.PlatformSkill{}, + HasMore: true, + NextCursor: types.String(""), + RequestID: "", + } + respBodyBytes, err := utils.MarshalJSON(respBody, "", true) + + if err != nil { + http.Error( + w, + "Unable to encode response body as JSON: "+err.Error(), + http.StatusInternalServerError, + ) + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + _, _ = w.Write(respBodyBytes) +} diff --git a/tests/mockserver/internal/handler/pathgetapiskillsskillid.go b/tests/mockserver/internal/handler/pathgetapiskillsskillid.go new file mode 100644 index 00000000..4f097d84 --- /dev/null +++ b/tests/mockserver/internal/handler/pathgetapiskillsskillid.go @@ -0,0 +1,79 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package handler + +import ( + "fmt" + "log" + "mockserver/internal/handler/assert" + "mockserver/internal/logging" + "mockserver/internal/sdk/models/components" + "mockserver/internal/sdk/types" + "mockserver/internal/sdk/utils" + "mockserver/internal/tracking" + "net/http" +) + +func pathGetAPISkillsSkillID(dir *logging.HTTPFileDirectory, rt *tracking.RequestTracker) http.HandlerFunc { + return func(w http.ResponseWriter, req *http.Request) { + test := req.Header.Get("x-speakeasy-test-name") + instanceID := req.Header.Get("x-speakeasy-test-instance-id") + + count := rt.GetRequestCount(test, instanceID) + + switch fmt.Sprintf("%s[%d]", test, count) { + case "platform-skills-get[0]": + dir.HandlerFunc("platform-skills-get", testPlatformSkillsGetPlatformSkillsGet0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testPlatformSkillsGetPlatformSkillsGet0(w http.ResponseWriter, req *http.Request) { + if err := assert.SecurityAuthorizationHeader(req, false, "Bearer"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusUnauthorized) + return + } + 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 + } + if err := assert.HeaderExists(req, "User-Agent"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + var respBody *components.PlatformSkillGetResponse = &components.PlatformSkillGetResponse{ + Skill: components.PlatformSkill{ + ID: "", + DisplayName: "Chad_Herzog", + Description: "whenever up aha controvert", + LatestVersion: 151495, + LatestMinorVersion: 170771, + Status: components.PlatformSkillStatusDisabled, + Origin: components.PlatformSkillOriginCustom, + Owner: components.PlatformPersonReference{ + Name: "", + }, + CreatedAt: types.MustTimeFromString("2024-12-25T16:41:00.099Z"), + UpdatedAt: types.MustTimeFromString("2026-12-07T21:59:59.375Z"), + }, + RequestID: "", + } + respBodyBytes, err := utils.MarshalJSON(respBody, "", true) + + if err != nil { + http.Error( + w, + "Unable to encode response body as JSON: "+err.Error(), + http.StatusInternalServerError, + ) + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + _, _ = w.Write(respBodyBytes) +} diff --git a/tests/mockserver/internal/handler/pathgetapiskillsskillidcontent.go b/tests/mockserver/internal/handler/pathgetapiskillsskillidcontent.go new file mode 100644 index 00000000..4a1564dd --- /dev/null +++ b/tests/mockserver/internal/handler/pathgetapiskillsskillidcontent.go @@ -0,0 +1,51 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package handler + +import ( + "fmt" + "log" + "mockserver/internal/handler/assert" + "mockserver/internal/handler/values" + "mockserver/internal/logging" + "mockserver/internal/tracking" + "net/http" +) + +func pathGetAPISkillsSkillIDContent(dir *logging.HTTPFileDirectory, rt *tracking.RequestTracker) http.HandlerFunc { + return func(w http.ResponseWriter, req *http.Request) { + test := req.Header.Get("x-speakeasy-test-name") + instanceID := req.Header.Get("x-speakeasy-test-instance-id") + + count := rt.GetRequestCount(test, instanceID) + + switch fmt.Sprintf("%s[%d]", test, count) { + case "platform-skills-get-content[0]": + dir.HandlerFunc("platform-skills-get-content", testPlatformSkillsGetContentPlatformSkillsGetContent0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testPlatformSkillsGetContentPlatformSkillsGetContent0(w http.ResponseWriter, req *http.Request) { + if err := assert.SecurityAuthorizationHeader(req, false, "Bearer"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusUnauthorized) + return + } + if err := assert.AcceptHeader(req, []string{"application/octet-stream"}); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + if err := assert.HeaderExists(req, "User-Agent"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + respBodyBytes := values.ReadFileToBytes("./testdata/example.file") + w.Header().Set("Content-Type", "application/octet-stream") + w.WriteHeader(http.StatusOK) + _, _ = w.Write(respBodyBytes) +} diff --git a/tests/mockserver/internal/handler/pathgetapiskillsskillidversions.go b/tests/mockserver/internal/handler/pathgetapiskillsskillidversions.go new file mode 100644 index 00000000..878e7567 --- /dev/null +++ b/tests/mockserver/internal/handler/pathgetapiskillsskillidversions.go @@ -0,0 +1,68 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package handler + +import ( + "fmt" + "log" + "mockserver/internal/handler/assert" + "mockserver/internal/logging" + "mockserver/internal/sdk/models/components" + "mockserver/internal/sdk/types" + "mockserver/internal/sdk/utils" + "mockserver/internal/tracking" + "net/http" +) + +func pathGetAPISkillsSkillIDVersions(dir *logging.HTTPFileDirectory, rt *tracking.RequestTracker) http.HandlerFunc { + return func(w http.ResponseWriter, req *http.Request) { + test := req.Header.Get("x-speakeasy-test-name") + instanceID := req.Header.Get("x-speakeasy-test-instance-id") + + count := rt.GetRequestCount(test, instanceID) + + switch fmt.Sprintf("%s[%d]", test, count) { + case "platform-skills-list-versions[0]": + dir.HandlerFunc("platform-skills-list-versions", testPlatformSkillsListVersionsPlatformSkillsListVersions0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testPlatformSkillsListVersionsPlatformSkillsListVersions0(w http.ResponseWriter, req *http.Request) { + if err := assert.SecurityAuthorizationHeader(req, false, "Bearer"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusUnauthorized) + return + } + 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 + } + if err := assert.HeaderExists(req, "User-Agent"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + var respBody *components.PlatformSkillVersionsListResponse = &components.PlatformSkillVersionsListResponse{ + Versions: []components.PlatformSkillVersion{}, + HasMore: false, + NextCursor: types.String(""), + RequestID: "", + } + respBodyBytes, err := utils.MarshalJSON(respBody, "", true) + + if err != nil { + http.Error( + w, + "Unable to encode response body as JSON: "+err.Error(), + http.StatusInternalServerError, + ) + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + _, _ = w.Write(respBodyBytes) +} diff --git a/tests/mockserver/internal/handler/pathgetapiskillsskillidversionsversion.go b/tests/mockserver/internal/handler/pathgetapiskillsskillidversionsversion.go new file mode 100644 index 00000000..48e1aa94 --- /dev/null +++ b/tests/mockserver/internal/handler/pathgetapiskillsskillidversionsversion.go @@ -0,0 +1,76 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package handler + +import ( + "fmt" + "log" + "mockserver/internal/handler/assert" + "mockserver/internal/logging" + "mockserver/internal/sdk/models/components" + "mockserver/internal/sdk/types" + "mockserver/internal/sdk/utils" + "mockserver/internal/tracking" + "net/http" +) + +func pathGetAPISkillsSkillIDVersionsVersion(dir *logging.HTTPFileDirectory, rt *tracking.RequestTracker) http.HandlerFunc { + return func(w http.ResponseWriter, req *http.Request) { + test := req.Header.Get("x-speakeasy-test-name") + instanceID := req.Header.Get("x-speakeasy-test-instance-id") + + count := rt.GetRequestCount(test, instanceID) + + switch fmt.Sprintf("%s[%d]", test, count) { + case "platform-skills-get-version[0]": + dir.HandlerFunc("platform-skills-get-version", testPlatformSkillsGetVersionPlatformSkillsGetVersion0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testPlatformSkillsGetVersionPlatformSkillsGetVersion0(w http.ResponseWriter, req *http.Request) { + if err := assert.SecurityAuthorizationHeader(req, false, "Bearer"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusUnauthorized) + return + } + 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 + } + if err := assert.HeaderExists(req, "User-Agent"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + var respBody *components.PlatformSkillVersionGetResponse = &components.PlatformSkillVersionGetResponse{ + Version: components.PlatformSkillVersion{ + SkillID: "", + Version: 81632, + MinorVersion: 646412, + IsLatest: false, + CreatedBy: components.PlatformPersonReference{ + Name: "", + }, + CreatedAt: types.MustTimeFromString("2025-02-17T18:47:57.025Z"), + UpdatedAt: types.MustTimeFromString("2024-12-19T03:10:35.770Z"), + }, + RequestID: "", + } + respBodyBytes, err := utils.MarshalJSON(respBody, "", true) + + if err != nil { + http.Error( + w, + "Unable to encode response body as JSON: "+err.Error(), + http.StatusInternalServerError, + ) + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + _, _ = w.Write(respBodyBytes) +} diff --git a/tests/mockserver/internal/handler/pathgetapiskillsskillidversionsversioncontent.go b/tests/mockserver/internal/handler/pathgetapiskillsskillidversionsversioncontent.go new file mode 100644 index 00000000..ccccbef0 --- /dev/null +++ b/tests/mockserver/internal/handler/pathgetapiskillsskillidversionsversioncontent.go @@ -0,0 +1,51 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package handler + +import ( + "fmt" + "log" + "mockserver/internal/handler/assert" + "mockserver/internal/handler/values" + "mockserver/internal/logging" + "mockserver/internal/tracking" + "net/http" +) + +func pathGetAPISkillsSkillIDVersionsVersionContent(dir *logging.HTTPFileDirectory, rt *tracking.RequestTracker) http.HandlerFunc { + return func(w http.ResponseWriter, req *http.Request) { + test := req.Header.Get("x-speakeasy-test-name") + instanceID := req.Header.Get("x-speakeasy-test-instance-id") + + count := rt.GetRequestCount(test, instanceID) + + switch fmt.Sprintf("%s[%d]", test, count) { + case "platform-skills-get-version-content[0]": + dir.HandlerFunc("platform-skills-get-version-content", testPlatformSkillsGetVersionContentPlatformSkillsGetVersionContent0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testPlatformSkillsGetVersionContentPlatformSkillsGetVersionContent0(w http.ResponseWriter, req *http.Request) { + if err := assert.SecurityAuthorizationHeader(req, false, "Bearer"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusUnauthorized) + return + } + if err := assert.AcceptHeader(req, []string{"application/octet-stream"}); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + if err := assert.HeaderExists(req, "User-Agent"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + respBodyBytes := values.ReadFileToBytes("./testdata/example.file") + w.Header().Set("Content-Type", "application/octet-stream") + w.WriteHeader(http.StatusOK) + _, _ = w.Write(respBodyBytes) +} diff --git a/tests/mockserver/internal/handler/pathgetapitriggerpresets.go b/tests/mockserver/internal/handler/pathgetapitriggerpresets.go new file mode 100644 index 00000000..ef94fda9 --- /dev/null +++ b/tests/mockserver/internal/handler/pathgetapitriggerpresets.go @@ -0,0 +1,67 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package handler + +import ( + "fmt" + "log" + "mockserver/internal/handler/assert" + "mockserver/internal/logging" + "mockserver/internal/sdk/models/components" + "mockserver/internal/sdk/utils" + "mockserver/internal/tracking" + "net/http" +) + +func pathGetAPITriggerPresets(dir *logging.HTTPFileDirectory, rt *tracking.RequestTracker) http.HandlerFunc { + return func(w http.ResponseWriter, req *http.Request) { + test := req.Header.Get("x-speakeasy-test-name") + instanceID := req.Header.Get("x-speakeasy-test-instance-id") + + count := rt.GetRequestCount(test, instanceID) + + switch fmt.Sprintf("%s[%d]", test, count) { + case "platform-trigger-presets-list[0]": + dir.HandlerFunc("platform-trigger-presets-list", testPlatformTriggerPresetsListPlatformTriggerPresetsList0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testPlatformTriggerPresetsListPlatformTriggerPresetsList0(w http.ResponseWriter, req *http.Request) { + if err := assert.SecurityAuthorizationHeader(req, false, "Bearer"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusUnauthorized) + return + } + 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 + } + if err := assert.HeaderExists(req, "User-Agent"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + var respBody *components.PlatformTriggerPresetListResponse = &components.PlatformTriggerPresetListResponse{ + Results: []components.PlatformTriggerPresetSummary{}, + HasMore: false, + NextCursor: nil, + RequestID: "", + } + respBodyBytes, err := utils.MarshalJSON(respBody, "", true) + + if err != nil { + http.Error( + w, + "Unable to encode response body as JSON: "+err.Error(), + http.StatusInternalServerError, + ) + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + _, _ = w.Write(respBodyBytes) +} diff --git a/tests/mockserver/internal/handler/pathgetapitriggerpresetspresetid.go b/tests/mockserver/internal/handler/pathgetapitriggerpresetspresetid.go new file mode 100644 index 00000000..d7ae3c35 --- /dev/null +++ b/tests/mockserver/internal/handler/pathgetapitriggerpresetspresetid.go @@ -0,0 +1,72 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package handler + +import ( + "fmt" + "log" + "mockserver/internal/handler/assert" + "mockserver/internal/logging" + "mockserver/internal/sdk/models/components" + "mockserver/internal/sdk/types" + "mockserver/internal/sdk/utils" + "mockserver/internal/tracking" + "net/http" +) + +func pathGetAPITriggerPresetsPresetID(dir *logging.HTTPFileDirectory, rt *tracking.RequestTracker) http.HandlerFunc { + return func(w http.ResponseWriter, req *http.Request) { + test := req.Header.Get("x-speakeasy-test-name") + instanceID := req.Header.Get("x-speakeasy-test-instance-id") + + count := rt.GetRequestCount(test, instanceID) + + switch fmt.Sprintf("%s[%d]", test, count) { + case "platform-trigger-presets-get[0]": + dir.HandlerFunc("platform-trigger-presets-get", testPlatformTriggerPresetsGetPlatformTriggerPresetsGet0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testPlatformTriggerPresetsGetPlatformTriggerPresetsGet0(w http.ResponseWriter, req *http.Request) { + if err := assert.SecurityAuthorizationHeader(req, false, "Bearer"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusUnauthorized) + return + } + 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 + } + if err := assert.HeaderExists(req, "User-Agent"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + var respBody *components.PlatformTriggerPresetGetResponse = &components.PlatformTriggerPresetGetResponse{ + TriggerPreset: components.PlatformTriggerPreset{ + PresetID: "GITHUB_1", + Datasource: "github", + DisplayName: "Review requested from me", + Description: types.String("A review is requested from the trigger creator on a pull request"), + Inputs: []components.PlatformTriggerPresetInput{}, + }, + RequestID: "", + } + respBodyBytes, err := utils.MarshalJSON(respBody, "", true) + + if err != nil { + http.Error( + w, + "Unable to encode response body as JSON: "+err.Error(), + http.StatusInternalServerError, + ) + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + _, _ = w.Write(respBodyBytes) +} diff --git a/tests/mockserver/internal/handler/pathgetapitriggerpresetspresetidinputvalues.go b/tests/mockserver/internal/handler/pathgetapitriggerpresetspresetidinputvalues.go new file mode 100644 index 00000000..78b89ebb --- /dev/null +++ b/tests/mockserver/internal/handler/pathgetapitriggerpresetspresetidinputvalues.go @@ -0,0 +1,71 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package handler + +import ( + "fmt" + "log" + "mockserver/internal/handler/assert" + "mockserver/internal/logging" + "mockserver/internal/sdk/models/components" + "mockserver/internal/sdk/utils" + "mockserver/internal/tracking" + "net/http" +) + +func pathGetAPITriggerPresetsPresetIDInputValues(dir *logging.HTTPFileDirectory, rt *tracking.RequestTracker) http.HandlerFunc { + return func(w http.ResponseWriter, req *http.Request) { + test := req.Header.Get("x-speakeasy-test-name") + instanceID := req.Header.Get("x-speakeasy-test-instance-id") + + count := rt.GetRequestCount(test, instanceID) + + switch fmt.Sprintf("%s[%d]", test, count) { + case "platform-trigger-presets-input-values-list[0]": + dir.HandlerFunc("platform-trigger-presets-input-values-list", testPlatformTriggerPresetsInputValuesListPlatformTriggerPresetsInputValuesList0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testPlatformTriggerPresetsInputValuesListPlatformTriggerPresetsInputValuesList0(w http.ResponseWriter, req *http.Request) { + if err := assert.SecurityAuthorizationHeader(req, false, "Bearer"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusUnauthorized) + return + } + 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 + } + if err := assert.HeaderExists(req, "User-Agent"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + var respBody *components.PlatformTriggerPresetInputValueListResponse = &components.PlatformTriggerPresetInputValueListResponse{ + Results: []components.PlatformTriggerPresetInputValue{ + components.PlatformTriggerPresetInputValue{ + Value: "acme/payments-api", + DisplayName: "acme/payments-api", + }, + }, + IsTruncated: false, + RequestID: "", + } + respBodyBytes, err := utils.MarshalJSON(respBody, "", true) + + if err != nil { + http.Error( + w, + "Unable to encode response body as JSON: "+err.Error(), + http.StatusInternalServerError, + ) + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + _, _ = w.Write(respBodyBytes) +} diff --git a/tests/mockserver/internal/handler/pathgetapitriggers.go b/tests/mockserver/internal/handler/pathgetapitriggers.go new file mode 100644 index 00000000..04c4bdc1 --- /dev/null +++ b/tests/mockserver/internal/handler/pathgetapitriggers.go @@ -0,0 +1,68 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package handler + +import ( + "fmt" + "log" + "mockserver/internal/handler/assert" + "mockserver/internal/logging" + "mockserver/internal/sdk/models/components" + "mockserver/internal/sdk/types" + "mockserver/internal/sdk/utils" + "mockserver/internal/tracking" + "net/http" +) + +func pathGetAPITriggers(dir *logging.HTTPFileDirectory, rt *tracking.RequestTracker) http.HandlerFunc { + return func(w http.ResponseWriter, req *http.Request) { + test := req.Header.Get("x-speakeasy-test-name") + instanceID := req.Header.Get("x-speakeasy-test-instance-id") + + count := rt.GetRequestCount(test, instanceID) + + switch fmt.Sprintf("%s[%d]", test, count) { + case "platform-triggers-list[0]": + dir.HandlerFunc("platform-triggers-list", testPlatformTriggersListPlatformTriggersList0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testPlatformTriggersListPlatformTriggersList0(w http.ResponseWriter, req *http.Request) { + if err := assert.SecurityAuthorizationHeader(req, false, "Bearer"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusUnauthorized) + return + } + 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 + } + if err := assert.HeaderExists(req, "User-Agent"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + var respBody *components.PlatformTriggerListResponse = &components.PlatformTriggerListResponse{ + Results: []components.PlatformTrigger{}, + HasMore: true, + NextCursor: types.String(""), + RequestID: "", + } + respBodyBytes, err := utils.MarshalJSON(respBody, "", true) + + if err != nil { + http.Error( + w, + "Unable to encode response body as JSON: "+err.Error(), + http.StatusInternalServerError, + ) + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + _, _ = w.Write(respBodyBytes) +} diff --git a/tests/mockserver/internal/handler/pathgetapitriggerstriggerid.go b/tests/mockserver/internal/handler/pathgetapitriggerstriggerid.go new file mode 100644 index 00000000..0ad3c036 --- /dev/null +++ b/tests/mockserver/internal/handler/pathgetapitriggerstriggerid.go @@ -0,0 +1,79 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package handler + +import ( + "fmt" + "log" + "mockserver/internal/handler/assert" + "mockserver/internal/logging" + "mockserver/internal/sdk/models/components" + "mockserver/internal/sdk/types" + "mockserver/internal/sdk/utils" + "mockserver/internal/tracking" + "net/http" +) + +func pathGetAPITriggersTriggerID(dir *logging.HTTPFileDirectory, rt *tracking.RequestTracker) http.HandlerFunc { + return func(w http.ResponseWriter, req *http.Request) { + test := req.Header.Get("x-speakeasy-test-name") + instanceID := req.Header.Get("x-speakeasy-test-instance-id") + + count := rt.GetRequestCount(test, instanceID) + + switch fmt.Sprintf("%s[%d]", test, count) { + case "platform-triggers-get[0]": + dir.HandlerFunc("platform-triggers-get", testPlatformTriggersGetPlatformTriggersGet0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testPlatformTriggersGetPlatformTriggersGet0(w http.ResponseWriter, req *http.Request) { + if err := assert.SecurityAuthorizationHeader(req, false, "Bearer"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusUnauthorized) + return + } + 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 + } + if err := assert.HeaderExists(req, "User-Agent"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + var respBody *components.PlatformTriggerGetResponse = &components.PlatformTriggerGetResponse{ + Trigger: components.PlatformTrigger{ + TriggerID: "trigger_test_123", + PresetID: "GITHUB_1", + Description: types.String("Reviews I am tagged on, sent to my team's review channel"), + Status: components.PlatformTriggerStatusEnabled, + Inputs: map[string]any{ + "repository": "acme/payments-api", + }, + Delivery: components.PlatformTriggerDeliveryOutput{ + WebhookURL: "https://customer.app/webhook", + }, + CreatedAt: types.MustTimeFromString("2024-01-06T01:37:37.232Z"), + UpdatedAt: types.MustTimeFromString("2025-07-02T01:19:47.126Z"), + }, + RequestID: "", + } + respBodyBytes, err := utils.MarshalJSON(respBody, "", true) + + if err != nil { + http.Error( + w, + "Unable to encode response body as JSON: "+err.Error(), + http.StatusInternalServerError, + ) + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + _, _ = w.Write(respBodyBytes) +} diff --git a/tests/mockserver/internal/handler/pathgetrestapiindexcustommetadataschemagroupname.go b/tests/mockserver/internal/handler/pathgetrestapiindexcustommetadataschemagroupname.go new file mode 100644 index 00000000..2c4b02fd --- /dev/null +++ b/tests/mockserver/internal/handler/pathgetrestapiindexcustommetadataschemagroupname.go @@ -0,0 +1,64 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package handler + +import ( + "fmt" + "log" + "mockserver/internal/handler/assert" + "mockserver/internal/logging" + "mockserver/internal/sdk/models/components" + "mockserver/internal/sdk/utils" + "mockserver/internal/tracking" + "net/http" +) + +func pathGetRestAPIIndexCustomMetadataSchemaGroupName(dir *logging.HTTPFileDirectory, rt *tracking.RequestTracker) http.HandlerFunc { + return func(w http.ResponseWriter, req *http.Request) { + test := req.Header.Get("x-speakeasy-test-name") + instanceID := req.Header.Get("x-speakeasy-test-instance-id") + + count := rt.GetRequestCount(test, instanceID) + + switch fmt.Sprintf("%s[%d]", test, count) { + case "get_/rest/api/index/custom-metadata/schema/{groupName}[0]": + dir.HandlerFunc("get_/rest/api/index/custom-metadata/schema/{groupName}", testGetRestAPIIndexCustomMetadataSchemaGroupNameGetRestAPIIndexCustomMetadataSchemaGroupName0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testGetRestAPIIndexCustomMetadataSchemaGroupNameGetRestAPIIndexCustomMetadataSchemaGroupName0(w http.ResponseWriter, req *http.Request) { + if err := assert.SecurityAuthorizationHeader(req, false, "Bearer"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusUnauthorized) + return + } + 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 + } + if err := assert.HeaderExists(req, "User-Agent"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + var respBody *components.CustomMetadataSchema = &components.CustomMetadataSchema{ + MetadataKeys: []components.CustomMetadataPropertyDefinition{}, + } + respBodyBytes, err := utils.MarshalJSON(respBody, "", true) + + if err != nil { + http.Error( + w, + "Unable to encode response body as JSON: "+err.Error(), + http.StatusInternalServerError, + ) + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + _, _ = w.Write(respBodyBytes) +} diff --git a/tests/mockserver/internal/handler/pathgetrestapiv1actionsactionpackactionpackidauth.go b/tests/mockserver/internal/handler/pathgetrestapiv1actionsactionpackactionpackidauth.go new file mode 100644 index 00000000..97d3b63e --- /dev/null +++ b/tests/mockserver/internal/handler/pathgetrestapiv1actionsactionpackactionpackidauth.go @@ -0,0 +1,67 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package handler + +import ( + "fmt" + "log" + "mockserver/internal/handler/assert" + "mockserver/internal/logging" + "mockserver/internal/sdk/models/components" + "mockserver/internal/sdk/utils" + "mockserver/internal/tracking" + "net/http" +) + +func pathGetRestAPIV1ActionsActionpackActionPackIDAuth(dir *logging.HTTPFileDirectory, rt *tracking.RequestTracker) http.HandlerFunc { + return func(w http.ResponseWriter, req *http.Request) { + test := req.Header.Get("x-speakeasy-test-name") + instanceID := req.Header.Get("x-speakeasy-test-instance-id") + + count := rt.GetRequestCount(test, instanceID) + + switch fmt.Sprintf("%s[%d]", test, count) { + case "getActionPackAuthStatus[0]": + dir.HandlerFunc("getActionPackAuthStatus", testGetActionPackAuthStatusGetActionPackAuthStatus0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testGetActionPackAuthStatusGetActionPackAuthStatus0(w http.ResponseWriter, req *http.Request) { + if err := assert.SecurityAuthorizationHeader(req, false, "Bearer"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusUnauthorized) + return + } + 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 + } + if err := assert.HeaderExists(req, "User-Agent"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + var respBody *components.ActionPackAuthStatusResponse = &components.ActionPackAuthStatusResponse{ + ActionPack: components.ActionPackAuthStatus{ + Authenticated: true, + AuthType: components.ActionAuthTypeAuthUserOauth, + }, + } + respBodyBytes, err := utils.MarshalJSON(respBody, "", true) + + if err != nil { + http.Error( + w, + "Unable to encode response body as JSON: "+err.Error(), + http.StatusInternalServerError, + ) + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + _, _ = w.Write(respBodyBytes) +} diff --git a/tests/mockserver/internal/handler/pathgetrestapiv1chatfilesfileid.go b/tests/mockserver/internal/handler/pathgetrestapiv1chatfilesfileid.go new file mode 100644 index 00000000..17e141f6 --- /dev/null +++ b/tests/mockserver/internal/handler/pathgetrestapiv1chatfilesfileid.go @@ -0,0 +1,51 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package handler + +import ( + "fmt" + "log" + "mockserver/internal/handler/assert" + "mockserver/internal/handler/values" + "mockserver/internal/logging" + "mockserver/internal/tracking" + "net/http" +) + +func pathGetRestAPIV1ChatFilesFileID(dir *logging.HTTPFileDirectory, rt *tracking.RequestTracker) http.HandlerFunc { + return func(w http.ResponseWriter, req *http.Request) { + test := req.Header.Get("x-speakeasy-test-name") + instanceID := req.Header.Get("x-speakeasy-test-instance-id") + + count := rt.GetRequestCount(test, instanceID) + + switch fmt.Sprintf("%s[%d]", test, count) { + case "getChatFile[0]": + dir.HandlerFunc("getChatFile", testGetChatFileGetChatFile0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testGetChatFileGetChatFile0(w http.ResponseWriter, req *http.Request) { + if err := assert.SecurityAuthorizationHeader(req, false, "Bearer"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusUnauthorized) + return + } + if err := assert.AcceptHeader(req, []string{"application/octet-stream"}); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + if err := assert.HeaderExists(req, "User-Agent"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + respBodyBytes := values.ReadFileToBytes("./testdata/example.file") + w.Header().Set("Content-Type", "application/octet-stream") + w.WriteHeader(http.StatusOK) + _, _ = w.Write(respBodyBytes) +} diff --git a/tests/mockserver/internal/handler/pathgetrestapiv1configuredatasourcesdatasourceidinstancesinstanceid.go b/tests/mockserver/internal/handler/pathgetrestapiv1configuredatasourcesdatasourceidinstancesinstanceid.go new file mode 100644 index 00000000..9344b896 --- /dev/null +++ b/tests/mockserver/internal/handler/pathgetrestapiv1configuredatasourcesdatasourceidinstancesinstanceid.go @@ -0,0 +1,68 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package handler + +import ( + "fmt" + "log" + "mockserver/internal/handler/assert" + "mockserver/internal/logging" + "mockserver/internal/sdk/models/components" + "mockserver/internal/sdk/utils" + "mockserver/internal/tracking" + "net/http" +) + +func pathGetRestAPIV1ConfigureDatasourcesDatasourceIDInstancesInstanceID(dir *logging.HTTPFileDirectory, rt *tracking.RequestTracker) http.HandlerFunc { + return func(w http.ResponseWriter, req *http.Request) { + test := req.Header.Get("x-speakeasy-test-name") + instanceID := req.Header.Get("x-speakeasy-test-instance-id") + + count := rt.GetRequestCount(test, instanceID) + + switch fmt.Sprintf("%s[%d]", test, count) { + case "getDatasourceInstanceConfiguration[0]": + dir.HandlerFunc("getDatasourceInstanceConfiguration", testGetDatasourceInstanceConfigurationGetDatasourceInstanceConfiguration0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testGetDatasourceInstanceConfigurationGetDatasourceInstanceConfiguration0(w http.ResponseWriter, req *http.Request) { + if err := assert.SecurityAuthorizationHeader(req, false, "Bearer"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusUnauthorized) + return + } + 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 + } + if err := assert.HeaderExists(req, "User-Agent"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + var respBody *components.DatasourceConfigurationResponse = &components.DatasourceConfigurationResponse{ + Configuration: components.DatasourceInstanceConfiguration{ + Values: map[string]components.ConfigurationValue{ + "key": components.ConfigurationValue{}, + }, + }, + } + respBodyBytes, err := utils.MarshalJSON(respBody, "", true) + + if err != nil { + http.Error( + w, + "Unable to encode response body as JSON: "+err.Error(), + http.StatusInternalServerError, + ) + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + _, _ = w.Write(respBodyBytes) +} diff --git a/tests/mockserver/internal/handler/pathgetrestapiv1datasourcedatasourceinstanceidcredentialstatus.go b/tests/mockserver/internal/handler/pathgetrestapiv1datasourcedatasourceinstanceidcredentialstatus.go new file mode 100644 index 00000000..92d8c1fa --- /dev/null +++ b/tests/mockserver/internal/handler/pathgetrestapiv1datasourcedatasourceinstanceidcredentialstatus.go @@ -0,0 +1,64 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package handler + +import ( + "fmt" + "log" + "mockserver/internal/handler/assert" + "mockserver/internal/logging" + "mockserver/internal/sdk/models/components" + "mockserver/internal/sdk/utils" + "mockserver/internal/tracking" + "net/http" +) + +func pathGetRestAPIV1DatasourceDatasourceInstanceIDCredentialstatus(dir *logging.HTTPFileDirectory, rt *tracking.RequestTracker) http.HandlerFunc { + return func(w http.ResponseWriter, req *http.Request) { + test := req.Header.Get("x-speakeasy-test-name") + instanceID := req.Header.Get("x-speakeasy-test-instance-id") + + count := rt.GetRequestCount(test, instanceID) + + switch fmt.Sprintf("%s[%d]", test, count) { + case "getDatasourceCredentialStatus[0]": + dir.HandlerFunc("getDatasourceCredentialStatus", testGetDatasourceCredentialStatusGetDatasourceCredentialStatus0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testGetDatasourceCredentialStatusGetDatasourceCredentialStatus0(w http.ResponseWriter, req *http.Request) { + if err := assert.SecurityAuthorizationHeader(req, false, "Bearer"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusUnauthorized) + return + } + 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 + } + if err := assert.HeaderExists(req, "User-Agent"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + var respBody *components.DatasourceCredentialStatusResponse = &components.DatasourceCredentialStatusResponse{ + Status: components.DatasourceCredentialStatusValid, + } + respBodyBytes, err := utils.MarshalJSON(respBody, "", true) + + if err != nil { + http.Error( + w, + "Unable to encode response body as JSON: "+err.Error(), + http.StatusInternalServerError, + ) + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + _, _ = w.Write(respBodyBytes) +} diff --git a/tests/mockserver/internal/handler/pathgetrestapiv1peoplepersonidphoto.go b/tests/mockserver/internal/handler/pathgetrestapiv1peoplepersonidphoto.go new file mode 100644 index 00000000..253b4d87 --- /dev/null +++ b/tests/mockserver/internal/handler/pathgetrestapiv1peoplepersonidphoto.go @@ -0,0 +1,51 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package handler + +import ( + "fmt" + "log" + "mockserver/internal/handler/assert" + "mockserver/internal/handler/values" + "mockserver/internal/logging" + "mockserver/internal/tracking" + "net/http" +) + +func pathGetRestAPIV1PeoplePersonIDPhoto(dir *logging.HTTPFileDirectory, rt *tracking.RequestTracker) http.HandlerFunc { + return func(w http.ResponseWriter, req *http.Request) { + test := req.Header.Get("x-speakeasy-test-name") + instanceID := req.Header.Get("x-speakeasy-test-instance-id") + + count := rt.GetRequestCount(test, instanceID) + + switch fmt.Sprintf("%s[%d]", test, count) { + case "getPersonPhoto[0]": + dir.HandlerFunc("getPersonPhoto", testGetPersonPhotoGetPersonPhoto0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testGetPersonPhotoGetPersonPhoto0(w http.ResponseWriter, req *http.Request) { + if err := assert.SecurityAuthorizationHeader(req, false, "Bearer"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusUnauthorized) + return + } + if err := assert.AcceptHeader(req, []string{"image/jpeg;q=1", "image/png;q=0"}); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + if err := assert.HeaderExists(req, "User-Agent"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + respBodyBytes := values.ReadFileToBytes("./testdata/example.file") + w.Header().Set("Content-Type", "image/png") + w.WriteHeader(http.StatusOK) + _, _ = w.Write(respBodyBytes) +} diff --git a/tests/mockserver/internal/handler/pathgetrestapiv1toolserversserveridauth.go b/tests/mockserver/internal/handler/pathgetrestapiv1toolserversserveridauth.go new file mode 100644 index 00000000..53c86d01 --- /dev/null +++ b/tests/mockserver/internal/handler/pathgetrestapiv1toolserversserveridauth.go @@ -0,0 +1,65 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package handler + +import ( + "fmt" + "log" + "mockserver/internal/handler/assert" + "mockserver/internal/logging" + "mockserver/internal/sdk/models/components" + "mockserver/internal/sdk/utils" + "mockserver/internal/tracking" + "net/http" +) + +func pathGetRestAPIV1ToolServersServerIDAuth(dir *logging.HTTPFileDirectory, rt *tracking.RequestTracker) http.HandlerFunc { + return func(w http.ResponseWriter, req *http.Request) { + test := req.Header.Get("x-speakeasy-test-name") + instanceID := req.Header.Get("x-speakeasy-test-instance-id") + + count := rt.GetRequestCount(test, instanceID) + + switch fmt.Sprintf("%s[%d]", test, count) { + case "getToolServerAuthStatus[0]": + dir.HandlerFunc("getToolServerAuthStatus", testGetToolServerAuthStatusGetToolServerAuthStatus0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testGetToolServerAuthStatusGetToolServerAuthStatus0(w http.ResponseWriter, req *http.Request) { + if err := assert.SecurityAuthorizationHeader(req, false, "Bearer"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusUnauthorized) + return + } + 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 + } + if err := assert.HeaderExists(req, "User-Agent"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + var respBody *components.ToolServerAuthStatusResponse = &components.ToolServerAuthStatusResponse{ + AuthStatus: components.ToolServerAuthStatusAuthorized, + AuthType: components.ActionAuthTypeAuthNone, + } + respBodyBytes, err := utils.MarshalJSON(respBody, "", true) + + if err != nil { + http.Error( + w, + "Unable to encode response body as JSON: "+err.Error(), + http.StatusInternalServerError, + ) + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + _, _ = w.Write(respBodyBytes) +} diff --git a/tests/mockserver/internal/handler/pathgetrestapiv1toolserversserveridtools.go b/tests/mockserver/internal/handler/pathgetrestapiv1toolserversserveridtools.go new file mode 100644 index 00000000..71a41e80 --- /dev/null +++ b/tests/mockserver/internal/handler/pathgetrestapiv1toolserversserveridtools.go @@ -0,0 +1,69 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package handler + +import ( + "fmt" + "log" + "mockserver/internal/handler/assert" + "mockserver/internal/logging" + "mockserver/internal/sdk/models/components" + "mockserver/internal/sdk/utils" + "mockserver/internal/tracking" + "net/http" +) + +func pathGetRestAPIV1ToolServersServerIDTools(dir *logging.HTTPFileDirectory, rt *tracking.RequestTracker) http.HandlerFunc { + return func(w http.ResponseWriter, req *http.Request) { + test := req.Header.Get("x-speakeasy-test-name") + instanceID := req.Header.Get("x-speakeasy-test-instance-id") + + count := rt.GetRequestCount(test, instanceID) + + switch fmt.Sprintf("%s[%d]", test, count) { + case "getToolServerTools[0]": + dir.HandlerFunc("getToolServerTools", testGetToolServerToolsGetToolServerTools0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testGetToolServerToolsGetToolServerTools0(w http.ResponseWriter, req *http.Request) { + if err := assert.SecurityAuthorizationHeader(req, false, "Bearer"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusUnauthorized) + return + } + 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 + } + if err := assert.HeaderExists(req, "User-Agent"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + var respBody *components.ToolDefinitionsResponse = &components.ToolDefinitionsResponse{ + Tools: []components.ToolDefinition{ + components.ToolDefinition{ + ServerID: "", + Name: "", + }, + }, + } + respBodyBytes, err := utils.MarshalJSON(respBody, "", true) + + if err != nil { + http.Error( + w, + "Unable to encode response body as JSON: "+err.Error(), + http.StatusInternalServerError, + ) + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + _, _ = w.Write(respBodyBytes) +} diff --git a/tests/mockserver/internal/handler/pathpatchapiskillsskillid.go b/tests/mockserver/internal/handler/pathpatchapiskillsskillid.go new file mode 100644 index 00000000..2b4d9db5 --- /dev/null +++ b/tests/mockserver/internal/handler/pathpatchapiskillsskillid.go @@ -0,0 +1,84 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package handler + +import ( + "fmt" + "log" + "mockserver/internal/handler/assert" + "mockserver/internal/logging" + "mockserver/internal/sdk/models/components" + "mockserver/internal/sdk/types" + "mockserver/internal/sdk/utils" + "mockserver/internal/tracking" + "net/http" +) + +func pathPatchAPISkillsSkillID(dir *logging.HTTPFileDirectory, rt *tracking.RequestTracker) http.HandlerFunc { + return func(w http.ResponseWriter, req *http.Request) { + test := req.Header.Get("x-speakeasy-test-name") + instanceID := req.Header.Get("x-speakeasy-test-instance-id") + + count := rt.GetRequestCount(test, instanceID) + + switch fmt.Sprintf("%s[%d]", test, count) { + case "platform-skills-update[0]": + dir.HandlerFunc("platform-skills-update", testPlatformSkillsUpdatePlatformSkillsUpdate0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testPlatformSkillsUpdatePlatformSkillsUpdate0(w http.ResponseWriter, req *http.Request) { + if err := assert.SecurityAuthorizationHeader(req, false, "Bearer"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusUnauthorized) + return + } + if err := assert.ContentType(req, "application/json", true); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + 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 + } + if err := assert.HeaderExists(req, "User-Agent"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + var respBody *components.PlatformSkillUpdateResponse = &components.PlatformSkillUpdateResponse{ + Skill: components.PlatformSkill{ + ID: "", + DisplayName: "Afton14", + Description: "taut netsuke duh sonata boastfully elegantly management come", + LatestVersion: 425795, + LatestMinorVersion: 741364, + Status: components.PlatformSkillStatusDisabled, + Origin: components.PlatformSkillOriginCustom, + Owner: components.PlatformPersonReference{ + Name: "", + }, + CreatedAt: types.MustTimeFromString("2024-12-20T01:31:39.364Z"), + UpdatedAt: types.MustTimeFromString("2025-12-04T02:59:37.124Z"), + }, + RequestID: "", + } + respBodyBytes, err := utils.MarshalJSON(respBody, "", true) + + if err != nil { + http.Error( + w, + "Unable to encode response body as JSON: "+err.Error(), + http.StatusInternalServerError, + ) + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + _, _ = w.Write(respBodyBytes) +} diff --git a/tests/mockserver/internal/handler/pathpatchapitriggerstriggerid.go b/tests/mockserver/internal/handler/pathpatchapitriggerstriggerid.go new file mode 100644 index 00000000..8f7f2744 --- /dev/null +++ b/tests/mockserver/internal/handler/pathpatchapitriggerstriggerid.go @@ -0,0 +1,84 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package handler + +import ( + "fmt" + "log" + "mockserver/internal/handler/assert" + "mockserver/internal/logging" + "mockserver/internal/sdk/models/components" + "mockserver/internal/sdk/types" + "mockserver/internal/sdk/utils" + "mockserver/internal/tracking" + "net/http" +) + +func pathPatchAPITriggersTriggerID(dir *logging.HTTPFileDirectory, rt *tracking.RequestTracker) http.HandlerFunc { + return func(w http.ResponseWriter, req *http.Request) { + test := req.Header.Get("x-speakeasy-test-name") + instanceID := req.Header.Get("x-speakeasy-test-instance-id") + + count := rt.GetRequestCount(test, instanceID) + + switch fmt.Sprintf("%s[%d]", test, count) { + case "platform-triggers-update[0]": + dir.HandlerFunc("platform-triggers-update", testPlatformTriggersUpdatePlatformTriggersUpdate0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testPlatformTriggersUpdatePlatformTriggersUpdate0(w http.ResponseWriter, req *http.Request) { + if err := assert.SecurityAuthorizationHeader(req, false, "Bearer"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusUnauthorized) + return + } + if err := assert.ContentType(req, "application/json", true); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + 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 + } + if err := assert.HeaderExists(req, "User-Agent"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + var respBody *components.PlatformTriggerGetResponse = &components.PlatformTriggerGetResponse{ + Trigger: components.PlatformTrigger{ + TriggerID: "trigger_test_123", + PresetID: "GITHUB_1", + Description: types.String("Reviews I am tagged on, sent to my team's review channel"), + Status: components.PlatformTriggerStatusEnabled, + Inputs: map[string]any{ + "repository": "acme/payments-api", + }, + Delivery: components.PlatformTriggerDeliveryOutput{ + WebhookURL: "https://customer.app/webhook", + }, + CreatedAt: types.MustTimeFromString("2026-09-03T11:57:47.699Z"), + UpdatedAt: types.MustTimeFromString("2026-01-25T02:15:09.513Z"), + }, + RequestID: "", + } + respBodyBytes, err := utils.MarshalJSON(respBody, "", true) + + if err != nil { + http.Error( + w, + "Unable to encode response body as JSON: "+err.Error(), + http.StatusInternalServerError, + ) + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + _, _ = w.Write(respBodyBytes) +} diff --git a/tests/mockserver/internal/handler/pathpatchrestapiv1configuredatasourcesdatasourceidinstancesinstanceid.go b/tests/mockserver/internal/handler/pathpatchrestapiv1configuredatasourcesdatasourceidinstancesinstanceid.go new file mode 100644 index 00000000..40105d8d --- /dev/null +++ b/tests/mockserver/internal/handler/pathpatchrestapiv1configuredatasourcesdatasourceidinstancesinstanceid.go @@ -0,0 +1,71 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package handler + +import ( + "fmt" + "log" + "mockserver/internal/handler/assert" + "mockserver/internal/logging" + "mockserver/internal/sdk/models/components" + "mockserver/internal/sdk/utils" + "mockserver/internal/tracking" + "net/http" +) + +func pathPatchRestAPIV1ConfigureDatasourcesDatasourceIDInstancesInstanceID(dir *logging.HTTPFileDirectory, rt *tracking.RequestTracker) http.HandlerFunc { + return func(w http.ResponseWriter, req *http.Request) { + test := req.Header.Get("x-speakeasy-test-name") + instanceID := req.Header.Get("x-speakeasy-test-instance-id") + + count := rt.GetRequestCount(test, instanceID) + + switch fmt.Sprintf("%s[%d]", test, count) { + case "updateDatasourceInstanceConfiguration[0]": + dir.HandlerFunc("updateDatasourceInstanceConfiguration", testUpdateDatasourceInstanceConfigurationUpdateDatasourceInstanceConfiguration0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testUpdateDatasourceInstanceConfigurationUpdateDatasourceInstanceConfiguration0(w http.ResponseWriter, req *http.Request) { + if err := assert.SecurityAuthorizationHeader(req, false, "Bearer"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusUnauthorized) + return + } + if err := assert.ContentType(req, "application/json", true); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + 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 + } + if err := assert.HeaderExists(req, "User-Agent"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + var respBody *components.DatasourceConfigurationResponse = &components.DatasourceConfigurationResponse{ + Configuration: components.DatasourceInstanceConfiguration{ + Values: map[string]components.ConfigurationValue{}, + }, + } + respBodyBytes, err := utils.MarshalJSON(respBody, "", true) + + if err != nil { + http.Error( + w, + "Unable to encode response body as JSON: "+err.Error(), + http.StatusInternalServerError, + ) + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + _, _ = w.Write(respBodyBytes) +} diff --git a/tests/mockserver/internal/handler/pathpostapiagentsagentidruns.go b/tests/mockserver/internal/handler/pathpostapiagentsagentidruns.go new file mode 100644 index 00000000..93595d14 --- /dev/null +++ b/tests/mockserver/internal/handler/pathpostapiagentsagentidruns.go @@ -0,0 +1,85 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package handler + +import ( + "fmt" + "log" + "mockserver/internal/handler/assert" + "mockserver/internal/logging" + "mockserver/internal/sdk/models/components" + "mockserver/internal/sdk/utils" + "mockserver/internal/tracking" + "net/http" +) + +func pathPostAPIAgentsAgentIDRuns(dir *logging.HTTPFileDirectory, rt *tracking.RequestTracker) http.HandlerFunc { + return func(w http.ResponseWriter, req *http.Request) { + test := req.Header.Get("x-speakeasy-test-name") + instanceID := req.Header.Get("x-speakeasy-test-instance-id") + + count := rt.GetRequestCount(test, instanceID) + + switch fmt.Sprintf("%s[%d]", test, count) { + case "platform-agents-create-run[0]": + dir.HandlerFunc("platform-agents-create-run", testPlatformAgentsCreateRunPlatformAgentsCreateRun0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testPlatformAgentsCreateRunPlatformAgentsCreateRun0(w http.ResponseWriter, req *http.Request) { + if err := assert.SecurityAuthorizationHeader(req, false, "Bearer"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusUnauthorized) + return + } + if err := assert.ContentType(req, "application/json", true); err != nil { + log.Printf("assertion error: %s\n", err) + 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 { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + if err := assert.HeaderExists(req, "User-Agent"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + var respBody *components.PlatformAgentRunWaitResponse = &components.PlatformAgentRunWaitResponse{ + Run: &components.PlatformAgentRun{ + AgentID: "", + Messages: []components.PlatformMessage{ + components.PlatformMessage{ + Role: components.PlatformMessageRoleUser, + Content: []components.PlatformMessageTextBlock{}, + }, + }, + Status: components.PlatformAgentExecutionStatusError, + }, + Messages: []components.PlatformMessage{ + components.PlatformMessage{ + Role: components.PlatformMessageRoleUser, + Content: []components.PlatformMessageTextBlock{}, + }, + }, + RequestID: "", + } + respBodyBytes, err := utils.MarshalJSON(respBody, "", true) + + if err != nil { + http.Error( + w, + "Unable to encode response body as JSON: "+err.Error(), + http.StatusInternalServerError, + ) + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + _, _ = w.Write(respBodyBytes) +} diff --git a/tests/mockserver/internal/handler/pathpostapiagentssearch.go b/tests/mockserver/internal/handler/pathpostapiagentssearch.go new file mode 100644 index 00000000..da7d08b0 --- /dev/null +++ b/tests/mockserver/internal/handler/pathpostapiagentssearch.go @@ -0,0 +1,70 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package handler + +import ( + "fmt" + "log" + "mockserver/internal/handler/assert" + "mockserver/internal/logging" + "mockserver/internal/sdk/models/components" + "mockserver/internal/sdk/utils" + "mockserver/internal/tracking" + "net/http" +) + +func pathPostAPIAgentsSearch(dir *logging.HTTPFileDirectory, rt *tracking.RequestTracker) http.HandlerFunc { + return func(w http.ResponseWriter, req *http.Request) { + test := req.Header.Get("x-speakeasy-test-name") + instanceID := req.Header.Get("x-speakeasy-test-instance-id") + + count := rt.GetRequestCount(test, instanceID) + + switch fmt.Sprintf("%s[%d]", test, count) { + case "platform-agents-search[0]": + dir.HandlerFunc("platform-agents-search", testPlatformAgentsSearchPlatformAgentsSearch0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testPlatformAgentsSearchPlatformAgentsSearch0(w http.ResponseWriter, req *http.Request) { + if err := assert.SecurityAuthorizationHeader(req, false, "Bearer"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusUnauthorized) + return + } + if err := assert.ContentType(req, "application/json", true); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + 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 + } + if err := assert.HeaderExists(req, "User-Agent"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + var respBody *components.PlatformAgentsSearchResponse = &components.PlatformAgentsSearchResponse{ + Agents: []components.PlatformAgent{}, + RequestID: "", + } + respBodyBytes, err := utils.MarshalJSON(respBody, "", true) + + if err != nil { + http.Error( + w, + "Unable to encode response body as JSON: "+err.Error(), + http.StatusInternalServerError, + ) + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + _, _ = w.Write(respBodyBytes) +} diff --git a/tests/mockserver/internal/handler/pathpostapichat.go b/tests/mockserver/internal/handler/pathpostapichat.go new file mode 100644 index 00000000..7a5ec745 --- /dev/null +++ b/tests/mockserver/internal/handler/pathpostapichat.go @@ -0,0 +1,87 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package handler + +import ( + "fmt" + "log" + "mockserver/internal/handler/assert" + "mockserver/internal/logging" + "mockserver/internal/sdk/models/components" + "mockserver/internal/sdk/types" + "mockserver/internal/sdk/utils" + "mockserver/internal/tracking" + "net/http" +) + +func pathPostAPIChat(dir *logging.HTTPFileDirectory, rt *tracking.RequestTracker) http.HandlerFunc { + return func(w http.ResponseWriter, req *http.Request) { + test := req.Header.Get("x-speakeasy-test-name") + instanceID := req.Header.Get("x-speakeasy-test-instance-id") + + count := rt.GetRequestCount(test, instanceID) + + switch fmt.Sprintf("%s[%d]", test, count) { + case "platform-chat-create[0]": + dir.HandlerFunc("platform-chat-create", testPlatformChatCreatePlatformChatCreate0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testPlatformChatCreatePlatformChatCreate0(w http.ResponseWriter, req *http.Request) { + if err := assert.SecurityAuthorizationHeader(req, false, "Bearer"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusUnauthorized) + return + } + if err := assert.ContentType(req, "application/json", true); err != nil { + log.Printf("assertion error: %s\n", err) + 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 { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + if err := assert.HeaderExists(req, "User-Agent"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + var respBody *components.PlatformChatCompletedResponse = &components.PlatformChatCompletedResponse{ + ID: "", + Object: components.ObjectResponse, + CreatedAt: types.MustTimeFromString("2026-05-19T05:32:52.505Z"), + Status: components.PlatformChatCompletedResponseStatusCompleted, + Output: []components.PlatformChatOutputMessage{ + components.PlatformChatOutputMessage{ + Type: components.PlatformChatOutputMessageTypeMessage, + Role: components.PlatformChatOutputMessageRoleAssistant, + Content: []components.PlatformChatOutputTextContent{ + components.PlatformChatOutputTextContent{ + Type: components.PlatformChatOutputTextContentTypeOutputText, + Text: "", + }, + }, + }, + }, + Store: false, + RequestID: "", + } + respBodyBytes, err := utils.MarshalJSON(respBody, "", true) + + if err != nil { + http.Error( + w, + "Unable to encode response body as JSON: "+err.Error(), + http.StatusInternalServerError, + ) + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + _, _ = w.Write(respBodyBytes) +} diff --git a/tests/mockserver/internal/handler/pathpostapiindexv1debugdatasourcedocument.go b/tests/mockserver/internal/handler/pathpostapiindexv1debugdatasourcedocument.go new file mode 100644 index 00000000..bc55c2aa --- /dev/null +++ b/tests/mockserver/internal/handler/pathpostapiindexv1debugdatasourcedocument.go @@ -0,0 +1,76 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package handler + +import ( + "fmt" + "log" + "mockserver/internal/handler/assert" + "mockserver/internal/logging" + "mockserver/internal/sdk/models/components" + "mockserver/internal/sdk/types" + "mockserver/internal/sdk/utils" + "mockserver/internal/tracking" + "net/http" +) + +func pathPostAPIIndexV1DebugDatasourceDocument(dir *logging.HTTPFileDirectory, rt *tracking.RequestTracker) http.HandlerFunc { + return func(w http.ResponseWriter, req *http.Request) { + test := req.Header.Get("x-speakeasy-test-name") + instanceID := req.Header.Get("x-speakeasy-test-instance-id") + + count := rt.GetRequestCount(test, instanceID) + + switch fmt.Sprintf("%s[%d]", test, count) { + case "post_/api/index/v1/debug/{datasource}/document[0]": + dir.HandlerFunc("post_/api/index/v1/debug/{datasource}/document", testPostAPIIndexV1DebugDatasourceDocumentPostAPIIndexV1DebugDatasourceDocument0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testPostAPIIndexV1DebugDatasourceDocumentPostAPIIndexV1DebugDatasourceDocument0(w http.ResponseWriter, req *http.Request) { + if err := assert.SecurityAuthorizationHeader(req, false, "Bearer"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusUnauthorized) + return + } + if err := assert.ContentType(req, "application/json", true); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + 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 + } + if err := assert.HeaderExists(req, "User-Agent"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + var respBody *components.DebugDocumentResponse = &components.DebugDocumentResponse{ + Status: &components.DocumentStatusResponse{ + UploadStatus: types.String("UPLOADED"), + LastUploadedAt: types.String("2021-08-06T17:58:01.000Z"), + IndexingStatus: types.String("INDEXED"), + LastIndexedAt: types.String("2021-08-06T17:58:01.000Z"), + PermissionIdentityStatus: types.String("UPLOADED"), + }, + } + respBodyBytes, err := utils.MarshalJSON(respBody, "", true) + + if err != nil { + http.Error( + w, + "Unable to encode response body as JSON: "+err.Error(), + http.StatusInternalServerError, + ) + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + _, _ = w.Write(respBodyBytes) +} diff --git a/tests/mockserver/internal/handler/pathpostapiindexv1debugdatasourcedocumentevents.go b/tests/mockserver/internal/handler/pathpostapiindexv1debugdatasourcedocumentevents.go new file mode 100644 index 00000000..84c2b224 --- /dev/null +++ b/tests/mockserver/internal/handler/pathpostapiindexv1debugdatasourcedocumentevents.go @@ -0,0 +1,75 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package handler + +import ( + "fmt" + "log" + "mockserver/internal/handler/assert" + "mockserver/internal/logging" + "mockserver/internal/sdk/models/components" + "mockserver/internal/sdk/types" + "mockserver/internal/sdk/utils" + "mockserver/internal/tracking" + "net/http" +) + +func pathPostAPIIndexV1DebugDatasourceDocumentEvents(dir *logging.HTTPFileDirectory, rt *tracking.RequestTracker) http.HandlerFunc { + return func(w http.ResponseWriter, req *http.Request) { + test := req.Header.Get("x-speakeasy-test-name") + instanceID := req.Header.Get("x-speakeasy-test-instance-id") + + count := rt.GetRequestCount(test, instanceID) + + switch fmt.Sprintf("%s[%d]", test, count) { + case "post_/api/index/v1/debug/{datasource}/document/events[0]": + dir.HandlerFunc("post_/api/index/v1/debug/{datasource}/document/events", testPostAPIIndexV1DebugDatasourceDocumentEventsPostAPIIndexV1DebugDatasourceDocumentEvents0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testPostAPIIndexV1DebugDatasourceDocumentEventsPostAPIIndexV1DebugDatasourceDocumentEvents0(w http.ResponseWriter, req *http.Request) { + if err := assert.SecurityAuthorizationHeader(req, false, "Bearer"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusUnauthorized) + return + } + if err := assert.ContentType(req, "application/json", true); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + 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 + } + if err := assert.HeaderExists(req, "User-Agent"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + var respBody *components.DebugDocumentLifecycleResponse = &components.DebugDocumentLifecycleResponse{ + LifeCycleEvents: []components.LifeCycleEvent{ + components.LifeCycleEvent{ + Event: components.LifeCycleEventEventIndexed.ToPointer(), + Timestamp: types.String("2021-08-06T17:58:01.000Z"), + }, + }, + } + respBodyBytes, err := utils.MarshalJSON(respBody, "", true) + + if err != nil { + http.Error( + w, + "Unable to encode response body as JSON: "+err.Error(), + http.StatusInternalServerError, + ) + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + _, _ = w.Write(respBodyBytes) +} diff --git a/tests/mockserver/internal/handler/pathpostapiindexv1debugdatasourcedocuments.go b/tests/mockserver/internal/handler/pathpostapiindexv1debugdatasourcedocuments.go new file mode 100644 index 00000000..93cd1880 --- /dev/null +++ b/tests/mockserver/internal/handler/pathpostapiindexv1debugdatasourcedocuments.go @@ -0,0 +1,82 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package handler + +import ( + "fmt" + "log" + "mockserver/internal/handler/assert" + "mockserver/internal/logging" + "mockserver/internal/sdk/models/components" + "mockserver/internal/sdk/types" + "mockserver/internal/sdk/utils" + "mockserver/internal/tracking" + "net/http" +) + +func pathPostAPIIndexV1DebugDatasourceDocuments(dir *logging.HTTPFileDirectory, rt *tracking.RequestTracker) http.HandlerFunc { + return func(w http.ResponseWriter, req *http.Request) { + test := req.Header.Get("x-speakeasy-test-name") + instanceID := req.Header.Get("x-speakeasy-test-instance-id") + + count := rt.GetRequestCount(test, instanceID) + + switch fmt.Sprintf("%s[%d]", test, count) { + case "post_/api/index/v1/debug/{datasource}/documents[0]": + dir.HandlerFunc("post_/api/index/v1/debug/{datasource}/documents", testPostAPIIndexV1DebugDatasourceDocumentsPostAPIIndexV1DebugDatasourceDocuments0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testPostAPIIndexV1DebugDatasourceDocumentsPostAPIIndexV1DebugDatasourceDocuments0(w http.ResponseWriter, req *http.Request) { + if err := assert.SecurityAuthorizationHeader(req, false, "Bearer"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusUnauthorized) + return + } + if err := assert.ContentType(req, "application/json", true); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + 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 + } + if err := assert.HeaderExists(req, "User-Agent"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + var respBody *components.DebugDocumentsResponse = &components.DebugDocumentsResponse{ + DocumentStatuses: []components.DebugDocumentsResponseItem{ + components.DebugDocumentsResponseItem{ + DebugInfo: &components.DebugDocumentResponse{ + Status: &components.DocumentStatusResponse{ + UploadStatus: types.String("UPLOADED"), + LastUploadedAt: types.String("2021-08-06T17:58:01.000Z"), + IndexingStatus: types.String("INDEXED"), + LastIndexedAt: types.String("2021-08-06T17:58:01.000Z"), + PermissionIdentityStatus: types.String("UPLOADED"), + }, + }, + }, + }, + } + respBodyBytes, err := utils.MarshalJSON(respBody, "", true) + + if err != nil { + http.Error( + w, + "Unable to encode response body as JSON: "+err.Error(), + http.StatusInternalServerError, + ) + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + _, _ = w.Write(respBodyBytes) +} diff --git a/tests/mockserver/internal/handler/pathpostapiindexv1debugdatasourceuser.go b/tests/mockserver/internal/handler/pathpostapiindexv1debugdatasourceuser.go new file mode 100644 index 00000000..d7b771b1 --- /dev/null +++ b/tests/mockserver/internal/handler/pathpostapiindexv1debugdatasourceuser.go @@ -0,0 +1,74 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package handler + +import ( + "fmt" + "log" + "mockserver/internal/handler/assert" + "mockserver/internal/logging" + "mockserver/internal/sdk/models/components" + "mockserver/internal/sdk/types" + "mockserver/internal/sdk/utils" + "mockserver/internal/tracking" + "net/http" +) + +func pathPostAPIIndexV1DebugDatasourceUser(dir *logging.HTTPFileDirectory, rt *tracking.RequestTracker) http.HandlerFunc { + return func(w http.ResponseWriter, req *http.Request) { + test := req.Header.Get("x-speakeasy-test-name") + instanceID := req.Header.Get("x-speakeasy-test-instance-id") + + count := rt.GetRequestCount(test, instanceID) + + switch fmt.Sprintf("%s[%d]", test, count) { + case "post_/api/index/v1/debug/{datasource}/user[0]": + dir.HandlerFunc("post_/api/index/v1/debug/{datasource}/user", testPostAPIIndexV1DebugDatasourceUserPostAPIIndexV1DebugDatasourceUser0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testPostAPIIndexV1DebugDatasourceUserPostAPIIndexV1DebugDatasourceUser0(w http.ResponseWriter, req *http.Request) { + if err := assert.SecurityAuthorizationHeader(req, false, "Bearer"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusUnauthorized) + return + } + if err := assert.ContentType(req, "application/json", true); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + 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 + } + if err := assert.HeaderExists(req, "User-Agent"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + var respBody *components.DebugUserResponse = &components.DebugUserResponse{ + Status: &components.UserStatusResponse{ + IsActiveUser: types.Bool(true), + UploadStatus: components.UploadStatusEnumUploaded.ToPointer(), + LastUploadedAt: types.String("2021-08-06T17:58:01.000Z"), + }, + } + respBodyBytes, err := utils.MarshalJSON(respBody, "", true) + + if err != nil { + http.Error( + w, + "Unable to encode response body as JSON: "+err.Error(), + http.StatusInternalServerError, + ) + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + _, _ = w.Write(respBodyBytes) +} diff --git a/tests/mockserver/internal/handler/pathpostapisearch.go b/tests/mockserver/internal/handler/pathpostapisearch.go new file mode 100644 index 00000000..1e3fe6a9 --- /dev/null +++ b/tests/mockserver/internal/handler/pathpostapisearch.go @@ -0,0 +1,74 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package handler + +import ( + "fmt" + "log" + "mockserver/internal/handler/assert" + "mockserver/internal/logging" + "mockserver/internal/sdk/models/components" + "mockserver/internal/sdk/types" + "mockserver/internal/sdk/utils" + "mockserver/internal/tracking" + "net/http" +) + +func pathPostAPISearch(dir *logging.HTTPFileDirectory, rt *tracking.RequestTracker) http.HandlerFunc { + return func(w http.ResponseWriter, req *http.Request) { + test := req.Header.Get("x-speakeasy-test-name") + instanceID := req.Header.Get("x-speakeasy-test-instance-id") + + count := rt.GetRequestCount(test, instanceID) + + switch fmt.Sprintf("%s[%d]", test, count) { + case "platform-search[0]": + dir.HandlerFunc("platform-search", testPlatformSearchPlatformSearch0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testPlatformSearchPlatformSearch0(w http.ResponseWriter, req *http.Request) { + if err := assert.SecurityAuthorizationHeader(req, false, "Bearer"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusUnauthorized) + return + } + if err := assert.ContentType(req, "application/json", true); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + 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 + } + if err := assert.HeaderExists(req, "User-Agent"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + var respBody *components.PlatformSearchResponse = &components.PlatformSearchResponse{ + Results: []components.PlatformResult{}, + HasMore: false, + NextCursor: types.String(""), + RequestID: "", + Warnings: []components.PlatformWarning{}, + } + respBodyBytes, err := utils.MarshalJSON(respBody, "", true) + + if err != nil { + http.Error( + w, + "Unable to encode response body as JSON: "+err.Error(), + http.StatusInternalServerError, + ) + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + _, _ = w.Write(respBodyBytes) +} diff --git a/tests/mockserver/internal/handler/pathpostapiskills.go b/tests/mockserver/internal/handler/pathpostapiskills.go new file mode 100644 index 00000000..dfe54aaf --- /dev/null +++ b/tests/mockserver/internal/handler/pathpostapiskills.go @@ -0,0 +1,84 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package handler + +import ( + "fmt" + "log" + "mockserver/internal/handler/assert" + "mockserver/internal/logging" + "mockserver/internal/sdk/models/components" + "mockserver/internal/sdk/types" + "mockserver/internal/sdk/utils" + "mockserver/internal/tracking" + "net/http" +) + +func pathPostAPISkills(dir *logging.HTTPFileDirectory, rt *tracking.RequestTracker) http.HandlerFunc { + return func(w http.ResponseWriter, req *http.Request) { + test := req.Header.Get("x-speakeasy-test-name") + instanceID := req.Header.Get("x-speakeasy-test-instance-id") + + count := rt.GetRequestCount(test, instanceID) + + switch fmt.Sprintf("%s[%d]", test, count) { + case "platform-skills-create[0]": + dir.HandlerFunc("platform-skills-create", testPlatformSkillsCreatePlatformSkillsCreate0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testPlatformSkillsCreatePlatformSkillsCreate0(w http.ResponseWriter, req *http.Request) { + if err := assert.SecurityAuthorizationHeader(req, false, "Bearer"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusUnauthorized) + return + } + if err := assert.ContentType(req, "multipart/form-data", true); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + 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 + } + if err := assert.HeaderExists(req, "User-Agent"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + var respBody *components.PlatformSkillCreateResponse = &components.PlatformSkillCreateResponse{ + Skill: components.PlatformSkill{ + ID: "", + DisplayName: "Merl18", + Description: "rural ugh unexpectedly excepting livid", + LatestVersion: 504149, + LatestMinorVersion: 106110, + Status: components.PlatformSkillStatusDisabled, + Origin: components.PlatformSkillOriginCustom, + Owner: components.PlatformPersonReference{ + Name: "", + }, + CreatedAt: types.MustTimeFromString("2025-01-04T03:16:16.951Z"), + UpdatedAt: types.MustTimeFromString("2025-09-10T16:05:46.046Z"), + }, + RequestID: "", + } + respBodyBytes, err := utils.MarshalJSON(respBody, "", true) + + if err != nil { + http.Error( + w, + "Unable to encode response body as JSON: "+err.Error(), + http.StatusInternalServerError, + ) + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + _, _ = w.Write(respBodyBytes) +} diff --git a/tests/mockserver/internal/handler/pathpostapiskillsimport.go b/tests/mockserver/internal/handler/pathpostapiskillsimport.go new file mode 100644 index 00000000..cdcc73da --- /dev/null +++ b/tests/mockserver/internal/handler/pathpostapiskillsimport.go @@ -0,0 +1,70 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package handler + +import ( + "fmt" + "log" + "mockserver/internal/handler/assert" + "mockserver/internal/logging" + "mockserver/internal/sdk/models/components" + "mockserver/internal/sdk/utils" + "mockserver/internal/tracking" + "net/http" +) + +func pathPostAPISkillsImport(dir *logging.HTTPFileDirectory, rt *tracking.RequestTracker) http.HandlerFunc { + return func(w http.ResponseWriter, req *http.Request) { + test := req.Header.Get("x-speakeasy-test-name") + instanceID := req.Header.Get("x-speakeasy-test-instance-id") + + count := rt.GetRequestCount(test, instanceID) + + switch fmt.Sprintf("%s[%d]", test, count) { + case "platform-skills-import[0]": + dir.HandlerFunc("platform-skills-import", testPlatformSkillsImportPlatformSkillsImport0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testPlatformSkillsImportPlatformSkillsImport0(w http.ResponseWriter, req *http.Request) { + if err := assert.SecurityAuthorizationHeader(req, false, "Bearer"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusUnauthorized) + return + } + if err := assert.ContentType(req, "application/json", true); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + 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 + } + if err := assert.HeaderExists(req, "User-Agent"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + var respBody *components.PlatformSkillImportResponse = &components.PlatformSkillImportResponse{ + Skills: []components.PlatformSkill{}, + RequestID: "", + } + respBodyBytes, err := utils.MarshalJSON(respBody, "", true) + + if err != nil { + http.Error( + w, + "Unable to encode response body as JSON: "+err.Error(), + http.StatusInternalServerError, + ) + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + _, _ = w.Write(respBodyBytes) +} diff --git a/tests/mockserver/internal/handler/pathpostapiskillsskillidsync.go b/tests/mockserver/internal/handler/pathpostapiskillsskillidsync.go new file mode 100644 index 00000000..0cab544f --- /dev/null +++ b/tests/mockserver/internal/handler/pathpostapiskillsskillidsync.go @@ -0,0 +1,67 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package handler + +import ( + "fmt" + "log" + "mockserver/internal/handler/assert" + "mockserver/internal/logging" + "mockserver/internal/sdk/models/components" + "mockserver/internal/sdk/utils" + "mockserver/internal/tracking" + "net/http" +) + +func pathPostAPISkillsSkillIDSync(dir *logging.HTTPFileDirectory, rt *tracking.RequestTracker) http.HandlerFunc { + return func(w http.ResponseWriter, req *http.Request) { + test := req.Header.Get("x-speakeasy-test-name") + instanceID := req.Header.Get("x-speakeasy-test-instance-id") + + count := rt.GetRequestCount(test, instanceID) + + switch fmt.Sprintf("%s[%d]", test, count) { + case "platform-skills-sync[0]": + dir.HandlerFunc("platform-skills-sync", testPlatformSkillsSyncPlatformSkillsSync0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testPlatformSkillsSyncPlatformSkillsSync0(w http.ResponseWriter, req *http.Request) { + if err := assert.SecurityAuthorizationHeader(req, false, "Bearer"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusUnauthorized) + return + } + 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 + } + if err := assert.HeaderExists(req, "User-Agent"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + var respBody *components.PlatformSkillSyncResponse = &components.PlatformSkillSyncResponse{ + SyncStatus: components.PlatformSkillSyncResultStatusUpToDate, + CommitSha: "", + Updated: false, + RequestID: "", + } + respBodyBytes, err := utils.MarshalJSON(respBody, "", true) + + if err != nil { + http.Error( + w, + "Unable to encode response body as JSON: "+err.Error(), + http.StatusInternalServerError, + ) + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + _, _ = w.Write(respBodyBytes) +} diff --git a/tests/mockserver/internal/handler/pathpostapiskillsskillidversions.go b/tests/mockserver/internal/handler/pathpostapiskillsskillidversions.go new file mode 100644 index 00000000..1f3d1fde --- /dev/null +++ b/tests/mockserver/internal/handler/pathpostapiskillsskillidversions.go @@ -0,0 +1,81 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package handler + +import ( + "fmt" + "log" + "mockserver/internal/handler/assert" + "mockserver/internal/logging" + "mockserver/internal/sdk/models/components" + "mockserver/internal/sdk/types" + "mockserver/internal/sdk/utils" + "mockserver/internal/tracking" + "net/http" +) + +func pathPostAPISkillsSkillIDVersions(dir *logging.HTTPFileDirectory, rt *tracking.RequestTracker) http.HandlerFunc { + return func(w http.ResponseWriter, req *http.Request) { + test := req.Header.Get("x-speakeasy-test-name") + instanceID := req.Header.Get("x-speakeasy-test-instance-id") + + count := rt.GetRequestCount(test, instanceID) + + switch fmt.Sprintf("%s[%d]", test, count) { + case "platform-skills-create-version[0]": + dir.HandlerFunc("platform-skills-create-version", testPlatformSkillsCreateVersionPlatformSkillsCreateVersion0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testPlatformSkillsCreateVersionPlatformSkillsCreateVersion0(w http.ResponseWriter, req *http.Request) { + if err := assert.SecurityAuthorizationHeader(req, false, "Bearer"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusUnauthorized) + return + } + if err := assert.ContentType(req, "multipart/form-data", true); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + 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 + } + if err := assert.HeaderExists(req, "User-Agent"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + var respBody *components.PlatformSkillVersionCreateResponse = &components.PlatformSkillVersionCreateResponse{ + Version: components.PlatformSkillVersion{ + SkillID: "", + Version: 375506, + MinorVersion: 600322, + IsLatest: false, + CreatedBy: components.PlatformPersonReference{ + Name: "", + }, + CreatedAt: types.MustTimeFromString("2026-09-27T14:37:09.109Z"), + UpdatedAt: types.MustTimeFromString("2024-05-30T08:59:58.715Z"), + }, + RequestID: "", + } + respBodyBytes, err := utils.MarshalJSON(respBody, "", true) + + if err != nil { + http.Error( + w, + "Unable to encode response body as JSON: "+err.Error(), + http.StatusInternalServerError, + ) + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + _, _ = w.Write(respBodyBytes) +} diff --git a/tests/mockserver/internal/handler/pathpostapiskillssourcespreview.go b/tests/mockserver/internal/handler/pathpostapiskillssourcespreview.go new file mode 100644 index 00000000..11e0efca --- /dev/null +++ b/tests/mockserver/internal/handler/pathpostapiskillssourcespreview.go @@ -0,0 +1,77 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package handler + +import ( + "fmt" + "log" + "mockserver/internal/handler/assert" + "mockserver/internal/logging" + "mockserver/internal/sdk/models/components" + "mockserver/internal/sdk/utils" + "mockserver/internal/tracking" + "net/http" +) + +func pathPostAPISkillsSourcesPreview(dir *logging.HTTPFileDirectory, rt *tracking.RequestTracker) http.HandlerFunc { + return func(w http.ResponseWriter, req *http.Request) { + test := req.Header.Get("x-speakeasy-test-name") + instanceID := req.Header.Get("x-speakeasy-test-instance-id") + + count := rt.GetRequestCount(test, instanceID) + + switch fmt.Sprintf("%s[%d]", test, count) { + case "platform-skills-preview-source[0]": + dir.HandlerFunc("platform-skills-preview-source", testPlatformSkillsPreviewSourcePlatformSkillsPreviewSource0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testPlatformSkillsPreviewSourcePlatformSkillsPreviewSource0(w http.ResponseWriter, req *http.Request) { + if err := assert.SecurityAuthorizationHeader(req, false, "Bearer"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusUnauthorized) + return + } + if err := assert.ContentType(req, "application/json", true); err != nil { + log.Printf("assertion error: %s\n", err) + 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 { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + if err := assert.HeaderExists(req, "User-Agent"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + var respBody *components.PlatformSkillSourcePreviewResponse = &components.PlatformSkillSourcePreviewResponse{ + Skills: []components.PlatformSkillSourcePreview{}, + Failures: []components.PlatformSkillSourcePreviewFailure{ + components.PlatformSkillSourcePreviewFailure{ + SourceURL: "https://slimy-availability.org", + Code: components.PlatformSkillSourcePreviewFailureCodeSkillFetchFailed, + Detail: "", + }, + }, + RequestID: "", + } + respBodyBytes, err := utils.MarshalJSON(respBody, "", true) + + if err != nil { + http.Error( + w, + "Unable to encode response body as JSON: "+err.Error(), + http.StatusInternalServerError, + ) + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + _, _ = w.Write(respBodyBytes) +} diff --git a/tests/mockserver/internal/handler/pathpostapiskillsvalidation.go b/tests/mockserver/internal/handler/pathpostapiskillsvalidation.go new file mode 100644 index 00000000..2048ae91 --- /dev/null +++ b/tests/mockserver/internal/handler/pathpostapiskillsvalidation.go @@ -0,0 +1,75 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package handler + +import ( + "fmt" + "log" + "mockserver/internal/handler/assert" + "mockserver/internal/logging" + "mockserver/internal/sdk/models/components" + "mockserver/internal/sdk/utils" + "mockserver/internal/tracking" + "net/http" +) + +func pathPostAPISkillsValidation(dir *logging.HTTPFileDirectory, rt *tracking.RequestTracker) http.HandlerFunc { + return func(w http.ResponseWriter, req *http.Request) { + test := req.Header.Get("x-speakeasy-test-name") + instanceID := req.Header.Get("x-speakeasy-test-instance-id") + + count := rt.GetRequestCount(test, instanceID) + + switch fmt.Sprintf("%s[%d]", test, count) { + case "platform-skills-validate[0]": + dir.HandlerFunc("platform-skills-validate", testPlatformSkillsValidatePlatformSkillsValidate0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testPlatformSkillsValidatePlatformSkillsValidate0(w http.ResponseWriter, req *http.Request) { + if err := assert.SecurityAuthorizationHeader(req, false, "Bearer"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusUnauthorized) + return + } + if err := assert.ContentType(req, "multipart/form-data", true); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + 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 + } + if err := assert.HeaderExists(req, "User-Agent"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + var respBody *components.PlatformSkillValidationResponse = &components.PlatformSkillValidationResponse{ + Metadata: components.PlatformSkillValidationMetadata{ + DisplayName: "Hattie10", + Description: "overburden actual impact", + }, + Files: []components.PlatformSkillValidationFile{}, + Warnings: []components.PlatformWarning{}, + RequestID: "", + } + respBodyBytes, err := utils.MarshalJSON(respBody, "", true) + + if err != nil { + http.Error( + w, + "Unable to encode response body as JSON: "+err.Error(), + http.StatusInternalServerError, + ) + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + _, _ = w.Write(respBodyBytes) +} diff --git a/tests/mockserver/internal/handler/pathpostapitriggerpresetspresetideventssearch.go b/tests/mockserver/internal/handler/pathpostapitriggerpresetspresetideventssearch.go new file mode 100644 index 00000000..83a0e25f --- /dev/null +++ b/tests/mockserver/internal/handler/pathpostapitriggerpresetspresetideventssearch.go @@ -0,0 +1,83 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package handler + +import ( + "fmt" + "log" + "mockserver/internal/handler/assert" + "mockserver/internal/logging" + "mockserver/internal/sdk/models/components" + "mockserver/internal/sdk/types" + "mockserver/internal/sdk/utils" + "mockserver/internal/tracking" + "net/http" +) + +func pathPostAPITriggerPresetsPresetIDEventsSearch(dir *logging.HTTPFileDirectory, rt *tracking.RequestTracker) http.HandlerFunc { + return func(w http.ResponseWriter, req *http.Request) { + test := req.Header.Get("x-speakeasy-test-name") + instanceID := req.Header.Get("x-speakeasy-test-instance-id") + + count := rt.GetRequestCount(test, instanceID) + + switch fmt.Sprintf("%s[%d]", test, count) { + case "platform-trigger-presets-events-search[0]": + dir.HandlerFunc("platform-trigger-presets-events-search", testPlatformTriggerPresetsEventsSearchPlatformTriggerPresetsEventsSearch0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testPlatformTriggerPresetsEventsSearchPlatformTriggerPresetsEventsSearch0(w http.ResponseWriter, req *http.Request) { + if err := assert.SecurityAuthorizationHeader(req, false, "Bearer"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusUnauthorized) + return + } + if err := assert.ContentType(req, "application/json", false); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + 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 + } + if err := assert.HeaderExists(req, "User-Agent"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + var respBody *components.PlatformTriggerEventSearchResponse = &components.PlatformTriggerEventSearchResponse{ + Results: []components.PlatformTriggerEvent{ + components.PlatformTriggerEvent{ + EventType: components.PlatformTriggerEventTypeDocumentChange, + Datasource: "GITHUB", + Reason: components.PlatformTriggerEventReasonReviewRequested, + DocType: "pull", + DocID: "", + ViewURL: "https://prickly-cutover.info/", + Title: "", + EventTime: types.MustTimeFromString("2025-04-15T15:45:31.544Z"), + }, + }, + HasMore: false, + RequestID: "", + } + respBodyBytes, err := utils.MarshalJSON(respBody, "", true) + + if err != nil { + http.Error( + w, + "Unable to encode response body as JSON: "+err.Error(), + http.StatusInternalServerError, + ) + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + _, _ = w.Write(respBodyBytes) +} diff --git a/tests/mockserver/internal/handler/pathpostapitriggers.go b/tests/mockserver/internal/handler/pathpostapitriggers.go new file mode 100644 index 00000000..7a0ab74b --- /dev/null +++ b/tests/mockserver/internal/handler/pathpostapitriggers.go @@ -0,0 +1,85 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package handler + +import ( + "fmt" + "log" + "mockserver/internal/handler/assert" + "mockserver/internal/logging" + "mockserver/internal/sdk/models/components" + "mockserver/internal/sdk/types" + "mockserver/internal/sdk/utils" + "mockserver/internal/tracking" + "net/http" +) + +func pathPostAPITriggers(dir *logging.HTTPFileDirectory, rt *tracking.RequestTracker) http.HandlerFunc { + return func(w http.ResponseWriter, req *http.Request) { + test := req.Header.Get("x-speakeasy-test-name") + instanceID := req.Header.Get("x-speakeasy-test-instance-id") + + count := rt.GetRequestCount(test, instanceID) + + switch fmt.Sprintf("%s[%d]", test, count) { + case "platform-triggers-create[0]": + dir.HandlerFunc("platform-triggers-create", testPlatformTriggersCreatePlatformTriggersCreate0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testPlatformTriggersCreatePlatformTriggersCreate0(w http.ResponseWriter, req *http.Request) { + if err := assert.SecurityAuthorizationHeader(req, false, "Bearer"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusUnauthorized) + return + } + if err := assert.ContentType(req, "application/json", true); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + 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 + } + if err := assert.HeaderExists(req, "User-Agent"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + var respBody *components.PlatformTriggerCreateResponse = &components.PlatformTriggerCreateResponse{ + Trigger: components.PlatformTriggerWithSecret{ + TriggerID: "trigger_test_123", + PresetID: "GITHUB_1", + Description: types.String("Reviews I am tagged on, sent to my team's review channel"), + Status: components.PlatformTriggerStatusEnabled, + Inputs: map[string]any{ + "repository": "acme/payments-api", + }, + Delivery: components.PlatformTriggerDeliveryOutput{ + WebhookURL: "https://customer.app/webhook", + }, + CreatedAt: types.MustTimeFromString("2025-08-17T18:19:46.877Z"), + UpdatedAt: types.MustTimeFromString("2024-09-14T03:27:40.201Z"), + SigningSecret: "whsec_xxx", + }, + RequestID: "", + } + respBodyBytes, err := utils.MarshalJSON(respBody, "", true) + + if err != nil { + http.Error( + w, + "Unable to encode response body as JSON: "+err.Error(), + http.StatusInternalServerError, + ) + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusCreated) + _, _ = w.Write(respBodyBytes) +} diff --git a/tests/mockserver/internal/handler/pathpostapitriggerstriggerideventssearch.go b/tests/mockserver/internal/handler/pathpostapitriggerstriggerideventssearch.go new file mode 100644 index 00000000..f3569228 --- /dev/null +++ b/tests/mockserver/internal/handler/pathpostapitriggerstriggerideventssearch.go @@ -0,0 +1,83 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package handler + +import ( + "fmt" + "log" + "mockserver/internal/handler/assert" + "mockserver/internal/logging" + "mockserver/internal/sdk/models/components" + "mockserver/internal/sdk/types" + "mockserver/internal/sdk/utils" + "mockserver/internal/tracking" + "net/http" +) + +func pathPostAPITriggersTriggerIDEventsSearch(dir *logging.HTTPFileDirectory, rt *tracking.RequestTracker) http.HandlerFunc { + return func(w http.ResponseWriter, req *http.Request) { + test := req.Header.Get("x-speakeasy-test-name") + instanceID := req.Header.Get("x-speakeasy-test-instance-id") + + count := rt.GetRequestCount(test, instanceID) + + switch fmt.Sprintf("%s[%d]", test, count) { + case "platform-triggers-events-search[0]": + dir.HandlerFunc("platform-triggers-events-search", testPlatformTriggersEventsSearchPlatformTriggersEventsSearch0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testPlatformTriggersEventsSearchPlatformTriggersEventsSearch0(w http.ResponseWriter, req *http.Request) { + if err := assert.SecurityAuthorizationHeader(req, false, "Bearer"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusUnauthorized) + return + } + if err := assert.ContentType(req, "application/json", false); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + 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 + } + if err := assert.HeaderExists(req, "User-Agent"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + var respBody *components.PlatformTriggerEventSearchResponse = &components.PlatformTriggerEventSearchResponse{ + Results: []components.PlatformTriggerEvent{ + components.PlatformTriggerEvent{ + EventType: components.PlatformTriggerEventTypeDocumentChange, + Datasource: "GITHUB", + Reason: components.PlatformTriggerEventReasonReviewRequested, + DocType: "pull", + DocID: "", + ViewURL: "https://silent-omelet.biz", + Title: "", + EventTime: types.MustTimeFromString("2024-06-12T22:23:25.274Z"), + }, + }, + HasMore: false, + RequestID: "", + } + respBodyBytes, err := utils.MarshalJSON(respBody, "", true) + + if err != nil { + http.Error( + w, + "Unable to encode response body as JSON: "+err.Error(), + http.StatusInternalServerError, + ) + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + _, _ = w.Write(respBodyBytes) +} diff --git a/tests/mockserver/internal/handler/pathpostrestapiindexsubmissionsdatasourceinstancetype.go b/tests/mockserver/internal/handler/pathpostrestapiindexsubmissionsdatasourceinstancetype.go new file mode 100644 index 00000000..d4978bcc --- /dev/null +++ b/tests/mockserver/internal/handler/pathpostrestapiindexsubmissionsdatasourceinstancetype.go @@ -0,0 +1,69 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package handler + +import ( + "fmt" + "log" + "mockserver/internal/handler/assert" + "mockserver/internal/logging" + "mockserver/internal/sdk/models/operations" + "mockserver/internal/sdk/utils" + "mockserver/internal/tracking" + "net/http" +) + +func pathPostRestAPIIndexSubmissionsDatasourceInstanceType(dir *logging.HTTPFileDirectory, rt *tracking.RequestTracker) http.HandlerFunc { + return func(w http.ResponseWriter, req *http.Request) { + test := req.Header.Get("x-speakeasy-test-name") + instanceID := req.Header.Get("x-speakeasy-test-instance-id") + + count := rt.GetRequestCount(test, instanceID) + + switch fmt.Sprintf("%s[%d]", test, count) { + case "post_/rest/api/index/submissions/{datasourceInstance}/{type}[0]": + dir.HandlerFunc("post_/rest/api/index/submissions/{datasourceInstance}/{type}", testPostRestAPIIndexSubmissionsDatasourceInstanceTypePostRestAPIIndexSubmissionsDatasourceInstanceType0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testPostRestAPIIndexSubmissionsDatasourceInstanceTypePostRestAPIIndexSubmissionsDatasourceInstanceType0(w http.ResponseWriter, req *http.Request) { + if err := assert.SecurityAuthorizationHeader(req, false, "Bearer"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusUnauthorized) + return + } + if err := assert.ContentType(req, "application/json", true); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + 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 + } + if err := assert.HeaderExists(req, "User-Agent"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + var respBody *operations.PostRestAPIIndexSubmissionsDatasourceInstanceTypeResponseBody = &operations.PostRestAPIIndexSubmissionsDatasourceInstanceTypeResponseBody{ + RequestID: "", + } + respBodyBytes, err := utils.MarshalJSON(respBody, "", true) + + if err != nil { + http.Error( + w, + "Unable to encode response body as JSON: "+err.Error(), + http.StatusInternalServerError, + ) + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusAccepted) + _, _ = w.Write(respBodyBytes) +} diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1actionsactionpackactionpackidauth.go b/tests/mockserver/internal/handler/pathpostrestapiv1actionsactionpackactionpackidauth.go new file mode 100644 index 00000000..5ae4ea12 --- /dev/null +++ b/tests/mockserver/internal/handler/pathpostrestapiv1actionsactionpackactionpackidauth.go @@ -0,0 +1,69 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package handler + +import ( + "fmt" + "log" + "mockserver/internal/handler/assert" + "mockserver/internal/logging" + "mockserver/internal/sdk/models/components" + "mockserver/internal/sdk/utils" + "mockserver/internal/tracking" + "net/http" +) + +func pathPostRestAPIV1ActionsActionpackActionPackIDAuth(dir *logging.HTTPFileDirectory, rt *tracking.RequestTracker) http.HandlerFunc { + return func(w http.ResponseWriter, req *http.Request) { + test := req.Header.Get("x-speakeasy-test-name") + instanceID := req.Header.Get("x-speakeasy-test-instance-id") + + count := rt.GetRequestCount(test, instanceID) + + switch fmt.Sprintf("%s[%d]", test, count) { + case "authorizeActionPack[0]": + dir.HandlerFunc("authorizeActionPack", testAuthorizeActionPackAuthorizeActionPack0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testAuthorizeActionPackAuthorizeActionPack0(w http.ResponseWriter, req *http.Request) { + if err := assert.SecurityAuthorizationHeader(req, false, "Bearer"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusUnauthorized) + return + } + if err := assert.ContentType(req, "application/json", true); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + 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 + } + if err := assert.HeaderExists(req, "User-Agent"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + var respBody *components.AuthorizeActionPackResponse = &components.AuthorizeActionPackResponse{ + RedirectURL: "https://unconscious-diversity.net", + } + respBodyBytes, err := utils.MarshalJSON(respBody, "", true) + + if err != nil { + http.Error( + w, + "Unable to encode response body as JSON: "+err.Error(), + http.StatusInternalServerError, + ) + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + _, _ = w.Write(respBodyBytes) +} diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1addcollectionitems.go b/tests/mockserver/internal/handler/pathpostrestapiv1addcollectionitems.go index 03677407..363e9896 100644 --- a/tests/mockserver/internal/handler/pathpostrestapiv1addcollectionitems.go +++ b/tests/mockserver/internal/handler/pathpostrestapiv1addcollectionitems.go @@ -302,7 +302,7 @@ func testAddcollectionitemsAddcollectionitems0(w http.ResponseWriter, req *http. Snippets: []components.SearchResultSnippet{ components.SearchResultSnippet{ MimeType: types.String("mimeType"), - Snippet: "snippet", + Snippet: types.String("snippet"), }, }, }, diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1addverificationreminder.go b/tests/mockserver/internal/handler/pathpostrestapiv1addverificationreminder.go index fc2edd30..238a63f7 100644 --- a/tests/mockserver/internal/handler/pathpostrestapiv1addverificationreminder.go +++ b/tests/mockserver/internal/handler/pathpostrestapiv1addverificationreminder.go @@ -284,7 +284,7 @@ func testAddverificationreminderAddverificationreminder0(w http.ResponseWriter, Snippets: []components.SearchResultSnippet{ components.SearchResultSnippet{ MimeType: types.String("mimeType"), - Snippet: "snippet", + Snippet: types.String("snippet"), }, }, }, diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1adminsearch.go b/tests/mockserver/internal/handler/pathpostrestapiv1adminsearch.go index 89975fde..26fdfdd7 100644 --- a/tests/mockserver/internal/handler/pathpostrestapiv1adminsearch.go +++ b/tests/mockserver/internal/handler/pathpostrestapiv1adminsearch.go @@ -60,7 +60,7 @@ func testAdminsearchAdminsearch0(w http.ResponseWriter, req *http.Request) { Snippets: []components.SearchResultSnippet{ components.SearchResultSnippet{ MimeType: types.String("mimeType"), - Snippet: "snippet", + Snippet: types.String("snippet"), }, }, }, @@ -70,7 +70,7 @@ func testAdminsearchAdminsearch0(w http.ResponseWriter, req *http.Request) { Snippets: []components.SearchResultSnippet{}, }, }, - GleanDataError: &components.GleanDataError{ + ErrorInfo: &components.GleanDataError{ ErrorMessages: []components.ErrorMessage{ components.ErrorMessage{ Source: types.String("gmail"), diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1agents.go b/tests/mockserver/internal/handler/pathpostrestapiv1agents.go new file mode 100644 index 00000000..6c1367d6 --- /dev/null +++ b/tests/mockserver/internal/handler/pathpostrestapiv1agents.go @@ -0,0 +1,82 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package handler + +import ( + "fmt" + "log" + "mockserver/internal/handler/assert" + "mockserver/internal/logging" + "mockserver/internal/sdk/models/components" + "mockserver/internal/sdk/utils" + "mockserver/internal/tracking" + "net/http" +) + +func pathPostRestAPIV1Agents(dir *logging.HTTPFileDirectory, rt *tracking.RequestTracker) http.HandlerFunc { + return func(w http.ResponseWriter, req *http.Request) { + test := req.Header.Get("x-speakeasy-test-name") + instanceID := req.Header.Get("x-speakeasy-test-instance-id") + + count := rt.GetRequestCount(test, instanceID) + + switch fmt.Sprintf("%s[%d]", test, count) { + case "createAgent[0]": + dir.HandlerFunc("createAgent", testCreateAgentCreateAgent0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testCreateAgentCreateAgent0(w http.ResponseWriter, req *http.Request) { + if err := assert.SecurityAuthorizationHeader(req, false, "Bearer"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusUnauthorized) + return + } + if err := assert.ContentType(req, "application/json", true); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + 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 + } + if err := assert.HeaderExists(req, "User-Agent"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + var respBody *components.WorkflowResult = &components.WorkflowResult{ + Workflow: components.Workflow{ + Author: &components.Person{ + Name: "George Clooney", + ObfuscatedID: "abc123", + }, + LastDraftSavedBy: &components.Person{ + Name: "George Clooney", + ObfuscatedID: "abc123", + }, + LastUpdatedBy: &components.Person{ + Name: "George Clooney", + ObfuscatedID: "abc123", + }, + }, + } + respBodyBytes, err := utils.MarshalJSON(respBody, "", true) + + if err != nil { + http.Error( + w, + "Unable to encode response body as JSON: "+err.Error(), + http.StatusInternalServerError, + ) + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + _, _ = w.Write(respBodyBytes) +} diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1agentsagentidimport.go b/tests/mockserver/internal/handler/pathpostrestapiv1agentsagentidimport.go new file mode 100644 index 00000000..1b96791e --- /dev/null +++ b/tests/mockserver/internal/handler/pathpostrestapiv1agentsagentidimport.go @@ -0,0 +1,84 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package handler + +import ( + "fmt" + "log" + "mockserver/internal/handler/assert" + "mockserver/internal/logging" + "mockserver/internal/sdk/models/components" + "mockserver/internal/sdk/utils" + "mockserver/internal/tracking" + "net/http" +) + +func pathPostRestAPIV1AgentsAgentIDImport(dir *logging.HTTPFileDirectory, rt *tracking.RequestTracker) http.HandlerFunc { + return func(w http.ResponseWriter, req *http.Request) { + test := req.Header.Get("x-speakeasy-test-name") + instanceID := req.Header.Get("x-speakeasy-test-instance-id") + + count := rt.GetRequestCount(test, instanceID) + + switch fmt.Sprintf("%s[%d]", test, count) { + case "importAgent[0]": + dir.HandlerFunc("importAgent", testImportAgentImportAgent0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testImportAgentImportAgent0(w http.ResponseWriter, req *http.Request) { + if err := assert.SecurityAuthorizationHeader(req, false, "Bearer"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusUnauthorized) + return + } + if err := assert.ContentType(req, "multipart/form-data", true); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + 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 + } + if err := assert.HeaderExists(req, "User-Agent"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + var respBody *components.ImportAgentResponse = &components.ImportAgentResponse{ + WorkflowResult: &components.WorkflowResult{ + Workflow: components.Workflow{ + Author: &components.Person{ + Name: "George Clooney", + ObfuscatedID: "abc123", + }, + LastDraftSavedBy: &components.Person{ + Name: "George Clooney", + ObfuscatedID: "abc123", + }, + LastUpdatedBy: &components.Person{ + Name: "George Clooney", + ObfuscatedID: "abc123", + }, + }, + }, + } + respBodyBytes, err := utils.MarshalJSON(respBody, "", true) + + if err != nil { + http.Error( + w, + "Unable to encode response body as JSON: "+err.Error(), + http.StatusInternalServerError, + ) + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + _, _ = w.Write(respBodyBytes) +} diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1checkdatasourceauth.go b/tests/mockserver/internal/handler/pathpostrestapiv1checkdatasourceauth.go new file mode 100644 index 00000000..41731f5c --- /dev/null +++ b/tests/mockserver/internal/handler/pathpostrestapiv1checkdatasourceauth.go @@ -0,0 +1,70 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package handler + +import ( + "fmt" + "log" + "mockserver/internal/handler/assert" + "mockserver/internal/logging" + "mockserver/internal/sdk/models/components" + "mockserver/internal/sdk/types" + "mockserver/internal/sdk/utils" + "mockserver/internal/tracking" + "net/http" +) + +func pathPostRestAPIV1Checkdatasourceauth(dir *logging.HTTPFileDirectory, rt *tracking.RequestTracker) http.HandlerFunc { + return func(w http.ResponseWriter, req *http.Request) { + test := req.Header.Get("x-speakeasy-test-name") + instanceID := req.Header.Get("x-speakeasy-test-instance-id") + + count := rt.GetRequestCount(test, instanceID) + + switch fmt.Sprintf("%s[%d]", test, count) { + case "checkdatasourceauth[0]": + dir.HandlerFunc("checkdatasourceauth", testCheckdatasourceauthCheckdatasourceauth0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testCheckdatasourceauthCheckdatasourceauth0(w http.ResponseWriter, req *http.Request) { + if err := assert.SecurityAuthorizationHeader(req, false, "Bearer"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusUnauthorized) + return + } + 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 + } + if err := assert.HeaderExists(req, "User-Agent"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + var respBody *components.CheckDatasourceAuthResponse = &components.CheckDatasourceAuthResponse{ + UnauthorizedDatasourceInstances: []components.UnauthorizedDatasourceInstance{ + components.UnauthorizedDatasourceInstance{ + DatasourceInstance: types.String("slack_0"), + DisplayName: types.String("Slack"), + }, + }, + } + respBodyBytes, err := utils.MarshalJSON(respBody, "", true) + + if err != nil { + http.Error( + w, + "Unable to encode response body as JSON: "+err.Error(), + http.StatusInternalServerError, + ) + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + _, _ = w.Write(respBodyBytes) +} diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1createannouncement.go b/tests/mockserver/internal/handler/pathpostrestapiv1createannouncement.go index ef59636d..1efad5a3 100644 --- a/tests/mockserver/internal/handler/pathpostrestapiv1createannouncement.go +++ b/tests/mockserver/internal/handler/pathpostrestapiv1createannouncement.go @@ -171,7 +171,7 @@ func testCreateannouncementCreateannouncement0(w http.ResponseWriter, req *http. Snippets: []components.SearchResultSnippet{ components.SearchResultSnippet{ MimeType: types.String("mimeType"), - Snippet: "snippet", + Snippet: types.String("snippet"), }, }, }, diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1createanswer.go b/tests/mockserver/internal/handler/pathpostrestapiv1createanswer.go index a9011900..31b8c1ca 100644 --- a/tests/mockserver/internal/handler/pathpostrestapiv1createanswer.go +++ b/tests/mockserver/internal/handler/pathpostrestapiv1createanswer.go @@ -802,7 +802,7 @@ func testCreateanswerCreateanswer0(w http.ResponseWriter, req *http.Request) { Snippets: []components.SearchResultSnippet{ components.SearchResultSnippet{ MimeType: types.String("mimeType"), - Snippet: "snippet", + Snippet: types.String("snippet"), }, }, MustIncludeSuggestions: &components.QuerySuggestionList{ @@ -1006,7 +1006,7 @@ func testCreateanswerCreateanswer0(w http.ResponseWriter, req *http.Request) { Snippets: []components.SearchResultSnippet{ components.SearchResultSnippet{ MimeType: types.String("mimeType"), - Snippet: "snippet", + Snippet: types.String("snippet"), }, }, MustIncludeSuggestions: &components.QuerySuggestionList{ diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1createcollection.go b/tests/mockserver/internal/handler/pathpostrestapiv1createcollection.go index 371b9023..469bd6e6 100644 --- a/tests/mockserver/internal/handler/pathpostrestapiv1createcollection.go +++ b/tests/mockserver/internal/handler/pathpostrestapiv1createcollection.go @@ -125,9 +125,11 @@ func testCreatecollectionCreatecollection0(w http.ResponseWriter, req *http.Requ "Backend", "Networking", }, - Status: types.String("[\"Done\"]"), + Status: types.String("Done"), CustomData: map[string]components.CustomDataValue{ - "someCustomField": components.CustomDataValue{}, + "someCustomField": components.CustomDataValue{ + StringValue: types.String("someCustomValue"), + }, }, }, }, @@ -149,9 +151,11 @@ func testCreatecollectionCreatecollection0(w http.ResponseWriter, req *http.Requ "Backend", "Networking", }, - Status: types.String("[\"Done\"]"), + Status: types.String("Done"), CustomData: map[string]components.CustomDataValue{ - "someCustomField": components.CustomDataValue{}, + "someCustomField": components.CustomDataValue{ + StringValue: types.String("someCustomValue"), + }, }, }, }, @@ -172,9 +176,11 @@ func testCreatecollectionCreatecollection0(w http.ResponseWriter, req *http.Requ "Backend", "Networking", }, - Status: types.String("[\"Done\"]"), + Status: types.String("Done"), CustomData: map[string]components.CustomDataValue{ - "someCustomField": components.CustomDataValue{}, + "someCustomField": components.CustomDataValue{ + StringValue: types.String("someCustomValue"), + }, }, }, }, @@ -207,9 +213,11 @@ func testCreatecollectionCreatecollection0(w http.ResponseWriter, req *http.Requ "Backend", "Networking", }, - Status: types.String("[\"Done\"]"), + Status: types.String("Done"), CustomData: map[string]components.CustomDataValue{ - "someCustomField": components.CustomDataValue{}, + "someCustomField": components.CustomDataValue{ + StringValue: types.String("someCustomValue"), + }, }, }, }, @@ -231,9 +239,11 @@ func testCreatecollectionCreatecollection0(w http.ResponseWriter, req *http.Requ "Backend", "Networking", }, - Status: types.String("[\"Done\"]"), + Status: types.String("Done"), CustomData: map[string]components.CustomDataValue{ - "someCustomField": components.CustomDataValue{}, + "someCustomField": components.CustomDataValue{ + StringValue: types.String("someCustomValue"), + }, }, }, }, @@ -254,9 +264,11 @@ func testCreatecollectionCreatecollection0(w http.ResponseWriter, req *http.Requ "Backend", "Networking", }, - Status: types.String("[\"Done\"]"), + Status: types.String("Done"), CustomData: map[string]components.CustomDataValue{ - "someCustomField": components.CustomDataValue{}, + "someCustomField": components.CustomDataValue{ + StringValue: types.String("someCustomValue"), + }, }, }, }, diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1datasourcedatasourceinstanceidcredentials.go b/tests/mockserver/internal/handler/pathpostrestapiv1datasourcedatasourceinstanceidcredentials.go new file mode 100644 index 00000000..af37421f --- /dev/null +++ b/tests/mockserver/internal/handler/pathpostrestapiv1datasourcedatasourceinstanceidcredentials.go @@ -0,0 +1,69 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package handler + +import ( + "fmt" + "log" + "mockserver/internal/handler/assert" + "mockserver/internal/logging" + "mockserver/internal/sdk/models/components" + "mockserver/internal/sdk/utils" + "mockserver/internal/tracking" + "net/http" +) + +func pathPostRestAPIV1DatasourceDatasourceInstanceIDCredentials(dir *logging.HTTPFileDirectory, rt *tracking.RequestTracker) http.HandlerFunc { + return func(w http.ResponseWriter, req *http.Request) { + test := req.Header.Get("x-speakeasy-test-name") + instanceID := req.Header.Get("x-speakeasy-test-instance-id") + + count := rt.GetRequestCount(test, instanceID) + + switch fmt.Sprintf("%s[%d]", test, count) { + case "rotateDatasourceCredentials[0]": + dir.HandlerFunc("rotateDatasourceCredentials", testRotateDatasourceCredentialsRotateDatasourceCredentials0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testRotateDatasourceCredentialsRotateDatasourceCredentials0(w http.ResponseWriter, req *http.Request) { + if err := assert.SecurityAuthorizationHeader(req, false, "Bearer"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusUnauthorized) + return + } + if err := assert.ContentType(req, "application/json", true); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + 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 + } + if err := assert.HeaderExists(req, "User-Agent"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + var respBody *components.DatasourceCredentialStatusResponse = &components.DatasourceCredentialStatusResponse{ + Status: components.DatasourceCredentialStatusMissing, + } + respBodyBytes, err := utils.MarshalJSON(respBody, "", true) + + if err != nil { + http.Error( + w, + "Unable to encode response body as JSON: "+err.Error(), + http.StatusInternalServerError, + ) + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + _, _ = w.Write(respBodyBytes) +} diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1deletecollectionitem.go b/tests/mockserver/internal/handler/pathpostrestapiv1deletecollectionitem.go index e50723dc..592a00df 100644 --- a/tests/mockserver/internal/handler/pathpostrestapiv1deletecollectionitem.go +++ b/tests/mockserver/internal/handler/pathpostrestapiv1deletecollectionitem.go @@ -286,7 +286,7 @@ func testDeletecollectionitemDeletecollectionitem0(w http.ResponseWriter, req *h Snippets: []components.SearchResultSnippet{ components.SearchResultSnippet{ MimeType: types.String("mimeType"), - Snippet: "snippet", + Snippet: types.String("snippet"), }, }, }, diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1editanswer.go b/tests/mockserver/internal/handler/pathpostrestapiv1editanswer.go index 79841ead..c4e632d1 100644 --- a/tests/mockserver/internal/handler/pathpostrestapiv1editanswer.go +++ b/tests/mockserver/internal/handler/pathpostrestapiv1editanswer.go @@ -795,7 +795,7 @@ func testEditanswerEditanswer0(w http.ResponseWriter, req *http.Request) { Snippets: []components.SearchResultSnippet{ components.SearchResultSnippet{ MimeType: types.String("mimeType"), - Snippet: "snippet", + Snippet: types.String("snippet"), }, }, MustIncludeSuggestions: &components.QuerySuggestionList{ @@ -999,7 +999,7 @@ func testEditanswerEditanswer0(w http.ResponseWriter, req *http.Request) { Snippets: []components.SearchResultSnippet{ components.SearchResultSnippet{ MimeType: types.String("mimeType"), - Snippet: "snippet", + Snippet: types.String("snippet"), }, }, MustIncludeSuggestions: &components.QuerySuggestionList{ diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1editcollectionitem.go b/tests/mockserver/internal/handler/pathpostrestapiv1editcollectionitem.go index 30f68b62..54ec38a4 100644 --- a/tests/mockserver/internal/handler/pathpostrestapiv1editcollectionitem.go +++ b/tests/mockserver/internal/handler/pathpostrestapiv1editcollectionitem.go @@ -333,7 +333,7 @@ func testEditcollectionitemEditcollectionitem0(w http.ResponseWriter, req *http. Snippets: []components.SearchResultSnippet{ components.SearchResultSnippet{ MimeType: types.String("mimeType"), - Snippet: "snippet", + Snippet: types.String("snippet"), }, }, }, diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1editpin.go b/tests/mockserver/internal/handler/pathpostrestapiv1editpin.go index 21ab451c..b1279495 100644 --- a/tests/mockserver/internal/handler/pathpostrestapiv1editpin.go +++ b/tests/mockserver/internal/handler/pathpostrestapiv1editpin.go @@ -302,7 +302,7 @@ func testEditpinEditpin0(w http.ResponseWriter, req *http.Request) { Snippets: []components.SearchResultSnippet{ components.SearchResultSnippet{ MimeType: types.String("mimeType"), - Snippet: "snippet", + Snippet: types.String("snippet"), }, }, }, diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1getanswer.go b/tests/mockserver/internal/handler/pathpostrestapiv1getanswer.go index 479093cc..abb763dd 100644 --- a/tests/mockserver/internal/handler/pathpostrestapiv1getanswer.go +++ b/tests/mockserver/internal/handler/pathpostrestapiv1getanswer.go @@ -366,7 +366,7 @@ func testGetanswerGetanswer0(w http.ResponseWriter, req *http.Request) { Snippets: []components.SearchResultSnippet{ components.SearchResultSnippet{ MimeType: types.String("mimeType"), - Snippet: "snippet", + Snippet: types.String("snippet"), }, }, }, diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1getchat.go b/tests/mockserver/internal/handler/pathpostrestapiv1getchat.go index 020eb777..87401958 100644 --- a/tests/mockserver/internal/handler/pathpostrestapiv1getchat.go +++ b/tests/mockserver/internal/handler/pathpostrestapiv1getchat.go @@ -254,7 +254,7 @@ func testGetchatGetchat0(w http.ResponseWriter, req *http.Request) { }, }, }, - Snippet: "", + Snippet: types.String(""), }, }, }, diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1getcollection.go b/tests/mockserver/internal/handler/pathpostrestapiv1getcollection.go index 73d2c0af..5d34142e 100644 --- a/tests/mockserver/internal/handler/pathpostrestapiv1getcollection.go +++ b/tests/mockserver/internal/handler/pathpostrestapiv1getcollection.go @@ -335,7 +335,7 @@ func testGetcollectionGetcollection0(w http.ResponseWriter, req *http.Request) { Snippets: []components.SearchResultSnippet{ components.SearchResultSnippet{ MimeType: types.String("mimeType"), - Snippet: "snippet", + Snippet: types.String("snippet"), }, }, }, diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1getdocumentsbyfacets.go b/tests/mockserver/internal/handler/pathpostrestapiv1getdocumentsbyfacets.go index f0bc0e67..4952b77e 100644 --- a/tests/mockserver/internal/handler/pathpostrestapiv1getdocumentsbyfacets.go +++ b/tests/mockserver/internal/handler/pathpostrestapiv1getdocumentsbyfacets.go @@ -164,7 +164,7 @@ func testGetdocumentsbyfacetsGetdocumentsbyfacets0(w http.ResponseWriter, req *h Snippets: []components.SearchResultSnippet{ components.SearchResultSnippet{ MimeType: types.String("mimeType"), - Snippet: "snippet", + Snippet: types.String("snippet"), }, }, }, diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1getpin.go b/tests/mockserver/internal/handler/pathpostrestapiv1getpin.go index 211f85f5..fe2aa283 100644 --- a/tests/mockserver/internal/handler/pathpostrestapiv1getpin.go +++ b/tests/mockserver/internal/handler/pathpostrestapiv1getpin.go @@ -343,7 +343,7 @@ func testGetpinGetpin0(w http.ResponseWriter, req *http.Request) { Snippets: []components.SearchResultSnippet{ components.SearchResultSnippet{ MimeType: types.String("mimeType"), - Snippet: "snippet", + Snippet: types.String("snippet"), }, }, }, diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1insights.go b/tests/mockserver/internal/handler/pathpostrestapiv1insights.go index 02d5ac19..6e9737ca 100644 --- a/tests/mockserver/internal/handler/pathpostrestapiv1insights.go +++ b/tests/mockserver/internal/handler/pathpostrestapiv1insights.go @@ -52,5158 +52,6 @@ func testInsightsInsights0(w http.ResponseWriter, req *http.Request) { return } var respBody *components.InsightsResponse = &components.InsightsResponse{ - Users: &components.UserInsightsResponse{ - ActivityInsights: []components.UserActivityInsight{ - components.UserActivityInsight{ - User: components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - RelatedDocuments: []components.RelatedDocuments{ - components.RelatedDocuments{ - QuerySuggestion: &components.QuerySuggestion{ - Query: "app:github type:pull author:mortimer", - SearchProviderInfo: &components.SearchProviderInfo{ - Name: types.String("Google"), - SearchLinkURLTemplate: types.String("https://www.google.com/search?q={query}&hl=en"), - }, - Label: types.String("Mortimer's PRs"), - Datasource: types.String("github"), - RequestOptions: &components.SearchRequestOptions{ - DatasourceFilter: types.String("JIRA"), - DatasourcesFilter: []string{ - "JIRA", - }, - QueryOverridesFacetFilters: types.Bool(true), - FacetFilters: []components.FacetFilter{ - components.FacetFilter{ - FieldName: types.String("type"), - Values: []components.FacetFilterValue{ - components.FacetFilterValue{ - Value: types.String("Spreadsheet"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - components.FacetFilterValue{ - Value: types.String("Presentation"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - }, - }, - }, - FacetFilterSets: []components.FacetFilterSet{ - components.FacetFilterSet{ - Filters: []components.FacetFilter{ - components.FacetFilter{ - FieldName: types.String("type"), - Values: []components.FacetFilterValue{ - components.FacetFilterValue{ - Value: types.String("Spreadsheet"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - components.FacetFilterValue{ - Value: types.String("Presentation"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - }, - }, - }, - }, - components.FacetFilterSet{ - Filters: []components.FacetFilter{ - components.FacetFilter{ - FieldName: types.String("type"), - Values: []components.FacetFilterValue{ - components.FacetFilterValue{ - Value: types.String("Spreadsheet"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - components.FacetFilterValue{ - Value: types.String("Presentation"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - }, - }, - }, - }, - }, - FacetBucketSize: 450824, - AuthTokens: []components.AuthToken{ - components.AuthToken{ - AccessToken: "123abc", - Datasource: "gmail", - Scope: types.String("email profile https://www.googleapis.com/auth/gmail.readonly"), - TokenType: types.String("Bearer"), - AuthUser: types.String("1"), - }, - }, - }, - Ranges: []components.TextRange{ - components.TextRange{ - StartIndex: 213457, - Document: &components.Document{ - Metadata: &components.DocumentMetadata{ - Datasource: types.String("datasource"), - ObjectType: types.String("Feature Request"), - Container: types.String("container"), - ParentID: types.String("JIRA_EN-1337"), - MimeType: types.String("mimeType"), - DocumentID: types.String("documentId"), - CreateTime: types.MustNewTimeFromString("2000-01-23T04:56:07.000Z"), - UpdateTime: types.MustNewTimeFromString("2000-01-23T04:56:07.000Z"), - Components: []string{ - "Backend", - "Networking", - }, - Status: types.String("[\"Done\"]"), - Pins: []components.PinDocument{ - components.PinDocument{ - AudienceFilters: []components.FacetFilter{ - components.FacetFilter{ - FieldName: types.String("type"), - Values: []components.FacetFilterValue{ - components.FacetFilterValue{ - Value: types.String("Spreadsheet"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - components.FacetFilterValue{ - Value: types.String("Presentation"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - }, - }, - }, - DocumentID: "", - }, - components.PinDocument{ - AudienceFilters: []components.FacetFilter{ - components.FacetFilter{ - FieldName: types.String("type"), - Values: []components.FacetFilterValue{ - components.FacetFilterValue{ - Value: types.String("Spreadsheet"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - components.FacetFilterValue{ - Value: types.String("Presentation"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - }, - }, - }, - DocumentID: "", - }, - components.PinDocument{ - AudienceFilters: []components.FacetFilter{ - components.FacetFilter{ - FieldName: types.String("type"), - Values: []components.FacetFilterValue{ - components.FacetFilterValue{ - Value: types.String("Spreadsheet"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - components.FacetFilterValue{ - Value: types.String("Presentation"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - }, - }, - }, - DocumentID: "", - }, - }, - Collections: []components.Collection{ - components.Collection{ - Name: "", - Description: "yahoo disapprove glum ugh roundabout middle ha rise readily", - AddedRoles: []components.UserRoleSpecification{ - components.UserRoleSpecification{ - Role: components.UserRoleVerifier, - }, - components.UserRoleSpecification{ - Role: components.UserRoleOwner, - }, - components.UserRoleSpecification{ - Role: components.UserRoleEditor, - }, - }, - RemovedRoles: []components.UserRoleSpecification{ - components.UserRoleSpecification{ - Role: components.UserRoleViewer, - }, - components.UserRoleSpecification{ - Role: components.UserRoleVerifier, - }, - components.UserRoleSpecification{ - Role: components.UserRoleViewer, - }, - }, - AudienceFilters: []components.FacetFilter{ - components.FacetFilter{ - FieldName: types.String("type"), - Values: []components.FacetFilterValue{ - components.FacetFilterValue{ - Value: types.String("Spreadsheet"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - components.FacetFilterValue{ - Value: types.String("Presentation"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - }, - }, - }, - ID: 237994, - Items: []components.CollectionItem{ - components.CollectionItem{ - CollectionID: 256758, - ItemType: components.CollectionItemItemTypeCollection, - }, - components.CollectionItem{ - CollectionID: 783459, - ItemType: components.CollectionItemItemTypeURL, - }, - components.CollectionItem{ - CollectionID: 188420, - ItemType: components.CollectionItemItemTypeText, - }, - }, - Roles: []components.UserRoleSpecification{ - components.UserRoleSpecification{ - Role: components.UserRoleVerifier, - }, - components.UserRoleSpecification{ - Role: components.UserRoleViewer, - }, - }, - }, - components.Collection{ - Name: "", - Description: "bell unabashedly unwilling disk", - AudienceFilters: []components.FacetFilter{ - components.FacetFilter{ - FieldName: types.String("type"), - Values: []components.FacetFilterValue{ - components.FacetFilterValue{ - Value: types.String("Spreadsheet"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - components.FacetFilterValue{ - Value: types.String("Presentation"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - }, - }, - }, - ID: 698722, - }, - }, - Interactions: &components.DocumentInteractions{ - Reacts: []components.Reaction{ - components.Reaction{}, - components.Reaction{}, - }, - Shares: []components.Share{ - components.Share{ - NumDaysAgo: 365275, - }, - components.Share{ - NumDaysAgo: 790898, - }, - }, - }, - Verification: &components.Verification{ - State: components.StateUnverified, - Metadata: &components.VerificationMetadata{ - Reminders: []components.Reminder{ - components.Reminder{ - Assignee: components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - }, - RemindAt: 856562, - }, - components.Reminder{ - Assignee: components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - }, - RemindAt: 328633, - }, - }, - LastReminder: &components.Reminder{ - RemindAt: 287673, - }, - }, - }, - CustomData: map[string]components.CustomDataValue{ - "someCustomField": components.CustomDataValue{}, - }, - }, - }, - }, - }, - InputDetails: &components.SearchRequestInputDetails{ - HasCopyPaste: types.Bool(true), - }, - }, - Results: []components.SearchResult{ - components.SearchResult{ - Title: types.String("title"), - URL: "https://example.com/foo/bar", - NativeAppURL: types.String("slack://foo/bar"), - Snippets: []components.SearchResultSnippet{ - components.SearchResultSnippet{ - MimeType: types.String("mimeType"), - Snippet: "snippet", - }, - }, - }, - }, - }, - components.RelatedDocuments{ - QuerySuggestion: &components.QuerySuggestion{ - Query: "app:github type:pull author:mortimer", - SearchProviderInfo: &components.SearchProviderInfo{ - Name: types.String("Google"), - SearchLinkURLTemplate: types.String("https://www.google.com/search?q={query}&hl=en"), - }, - Label: types.String("Mortimer's PRs"), - Datasource: types.String("github"), - RequestOptions: &components.SearchRequestOptions{ - DatasourceFilter: types.String("JIRA"), - DatasourcesFilter: []string{ - "JIRA", - }, - QueryOverridesFacetFilters: types.Bool(true), - FacetFilters: []components.FacetFilter{ - components.FacetFilter{ - FieldName: types.String("type"), - Values: []components.FacetFilterValue{ - components.FacetFilterValue{ - Value: types.String("Spreadsheet"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - components.FacetFilterValue{ - Value: types.String("Presentation"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - }, - }, - }, - FacetFilterSets: []components.FacetFilterSet{ - components.FacetFilterSet{ - Filters: []components.FacetFilter{ - components.FacetFilter{ - FieldName: types.String("type"), - Values: []components.FacetFilterValue{ - components.FacetFilterValue{ - Value: types.String("Spreadsheet"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - components.FacetFilterValue{ - Value: types.String("Presentation"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - }, - }, - }, - }, - components.FacetFilterSet{ - Filters: []components.FacetFilter{ - components.FacetFilter{ - FieldName: types.String("type"), - Values: []components.FacetFilterValue{ - components.FacetFilterValue{ - Value: types.String("Spreadsheet"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - components.FacetFilterValue{ - Value: types.String("Presentation"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - }, - }, - }, - }, - components.FacetFilterSet{ - Filters: []components.FacetFilter{ - components.FacetFilter{ - FieldName: types.String("type"), - Values: []components.FacetFilterValue{ - components.FacetFilterValue{ - Value: types.String("Spreadsheet"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - components.FacetFilterValue{ - Value: types.String("Presentation"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - }, - }, - }, - }, - }, - FacetBucketSize: 140875, - AuthTokens: []components.AuthToken{ - components.AuthToken{ - AccessToken: "123abc", - Datasource: "gmail", - Scope: types.String("email profile https://www.googleapis.com/auth/gmail.readonly"), - TokenType: types.String("Bearer"), - AuthUser: types.String("1"), - }, - }, - }, - InputDetails: &components.SearchRequestInputDetails{ - HasCopyPaste: types.Bool(true), - }, - }, - }, - components.RelatedDocuments{ - QuerySuggestion: &components.QuerySuggestion{ - Query: "app:github type:pull author:mortimer", - SearchProviderInfo: &components.SearchProviderInfo{ - Name: types.String("Google"), - SearchLinkURLTemplate: types.String("https://www.google.com/search?q={query}&hl=en"), - }, - Label: types.String("Mortimer's PRs"), - Datasource: types.String("github"), - RequestOptions: &components.SearchRequestOptions{ - DatasourceFilter: types.String("JIRA"), - DatasourcesFilter: []string{ - "JIRA", - }, - QueryOverridesFacetFilters: types.Bool(true), - FacetFilters: []components.FacetFilter{ - components.FacetFilter{ - FieldName: types.String("type"), - Values: []components.FacetFilterValue{ - components.FacetFilterValue{ - Value: types.String("Spreadsheet"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - components.FacetFilterValue{ - Value: types.String("Presentation"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - }, - }, - }, - FacetFilterSets: []components.FacetFilterSet{ - components.FacetFilterSet{ - Filters: []components.FacetFilter{ - components.FacetFilter{ - FieldName: types.String("type"), - Values: []components.FacetFilterValue{ - components.FacetFilterValue{ - Value: types.String("Spreadsheet"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - components.FacetFilterValue{ - Value: types.String("Presentation"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - }, - }, - }, - }, - components.FacetFilterSet{ - Filters: []components.FacetFilter{ - components.FacetFilter{ - FieldName: types.String("type"), - Values: []components.FacetFilterValue{ - components.FacetFilterValue{ - Value: types.String("Spreadsheet"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - components.FacetFilterValue{ - Value: types.String("Presentation"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - }, - }, - }, - }, - }, - FacetBucketSize: 210313, - AuthTokens: []components.AuthToken{ - components.AuthToken{ - AccessToken: "123abc", - Datasource: "gmail", - Scope: types.String("email profile https://www.googleapis.com/auth/gmail.readonly"), - TokenType: types.String("Bearer"), - AuthUser: types.String("1"), - }, - }, - }, - InputDetails: &components.SearchRequestInputDetails{ - HasCopyPaste: types.Bool(true), - }, - }, - }, - }, - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{ - Suggestions: []components.QuerySuggestion{ - components.QuerySuggestion{ - Query: "app:github type:pull author:mortimer", - Label: types.String("Mortimer's PRs"), - Datasource: types.String("github"), - }, - }, - }, - InviteInfo: &components.InviteInfo{ - Invites: []components.ChannelInviteInfo{ - components.ChannelInviteInfo{}, - components.ChannelInviteInfo{}, - }, - }, - CustomFields: []components.CustomFieldData{ - components.CustomFieldData{ - Label: "", - Values: []components.CustomFieldValue{ - components.CreateCustomFieldValueCustomFieldValueStr( - components.CustomFieldValueStr{}, - ), - }, - Displayable: types.Bool(true), - }, - }, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Activity: components.ActivityEnumSearch, - }, - components.UserActivityInsight{ - User: components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Activity: components.ActivityEnumAll, - }, - }, - InactiveInsights: []components.UserActivityInsight{ - components.UserActivityInsight{ - User: components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Activity: components.ActivityEnumSearch, - }, - components.UserActivityInsight{ - User: components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Activity: components.ActivityEnumSearch, - }, - components.UserActivityInsight{ - User: components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Activity: components.ActivityEnumAll, - }, - }, - }, - Content: &components.ContentInsightsResponse{ - DocumentInsights: []components.DocumentInsight{ - components.DocumentInsight{ - Document: components.Document{ - Metadata: &components.DocumentMetadata{ - Datasource: types.String("datasource"), - ObjectType: types.String("Feature Request"), - Container: types.String("container"), - ParentID: types.String("JIRA_EN-1337"), - MimeType: types.String("mimeType"), - DocumentID: types.String("documentId"), - CreateTime: types.MustNewTimeFromString("2000-01-23T04:56:07.000Z"), - UpdateTime: types.MustNewTimeFromString("2000-01-23T04:56:07.000Z"), - Author: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Owner: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Components: []string{ - "Backend", - "Networking", - }, - Status: types.String("[\"Done\"]"), - AssignedTo: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - UpdatedBy: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Interactions: &components.DocumentInteractions{}, - Verification: &components.Verification{ - State: components.StateDeprecated, - Metadata: &components.VerificationMetadata{ - LastVerifier: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - LastReminder: &components.Reminder{ - Assignee: components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Requestor: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - RemindAt: 783566, - }, - }, - }, - CustomData: map[string]components.CustomDataValue{ - "someCustomField": components.CustomDataValue{}, - }, - ContactPerson: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - }, - }, - }, - components.DocumentInsight{ - Document: components.Document{ - Metadata: &components.DocumentMetadata{ - Datasource: types.String("datasource"), - ObjectType: types.String("Feature Request"), - Container: types.String("container"), - ParentID: types.String("JIRA_EN-1337"), - MimeType: types.String("mimeType"), - DocumentID: types.String("documentId"), - CreateTime: types.MustNewTimeFromString("2000-01-23T04:56:07.000Z"), - UpdateTime: types.MustNewTimeFromString("2000-01-23T04:56:07.000Z"), - Author: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Owner: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Components: []string{ - "Backend", - "Networking", - }, - Status: types.String("[\"Done\"]"), - AssignedTo: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - UpdatedBy: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Interactions: &components.DocumentInteractions{}, - Verification: &components.Verification{ - State: components.StateDeprecated, - Metadata: &components.VerificationMetadata{ - LastVerifier: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - LastReminder: &components.Reminder{ - Assignee: components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Requestor: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - RemindAt: 519998, - }, - }, - }, - CustomData: map[string]components.CustomDataValue{ - "someCustomField": components.CustomDataValue{}, - }, - ContactPerson: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - }, - }, - }, - components.DocumentInsight{ - Document: components.Document{ - Metadata: &components.DocumentMetadata{ - Datasource: types.String("datasource"), - ObjectType: types.String("Feature Request"), - Container: types.String("container"), - ParentID: types.String("JIRA_EN-1337"), - MimeType: types.String("mimeType"), - DocumentID: types.String("documentId"), - CreateTime: types.MustNewTimeFromString("2000-01-23T04:56:07.000Z"), - UpdateTime: types.MustNewTimeFromString("2000-01-23T04:56:07.000Z"), - Author: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Owner: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Components: []string{ - "Backend", - "Networking", - }, - Status: types.String("[\"Done\"]"), - AssignedTo: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - UpdatedBy: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Interactions: &components.DocumentInteractions{}, - Verification: &components.Verification{ - State: components.StateVerified, - Metadata: &components.VerificationMetadata{ - LastVerifier: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - LastReminder: &components.Reminder{ - Assignee: components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Requestor: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - RemindAt: 500839, - }, - }, - }, - CustomData: map[string]components.CustomDataValue{ - "someCustomField": components.CustomDataValue{}, - }, - ContactPerson: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - Collections: &components.ContentInsightsResponse{ - DocumentInsights: []components.DocumentInsight{ - components.DocumentInsight{ - Document: components.Document{ - Metadata: &components.DocumentMetadata{ - Datasource: types.String("datasource"), - ObjectType: types.String("Feature Request"), - Container: types.String("container"), - ParentID: types.String("JIRA_EN-1337"), - MimeType: types.String("mimeType"), - DocumentID: types.String("documentId"), - CreateTime: types.MustNewTimeFromString("2000-01-23T04:56:07.000Z"), - UpdateTime: types.MustNewTimeFromString("2000-01-23T04:56:07.000Z"), - Author: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Owner: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Components: []string{ - "Backend", - "Networking", - }, - Status: types.String("[\"Done\"]"), - AssignedTo: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - UpdatedBy: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Interactions: &components.DocumentInteractions{}, - Verification: &components.Verification{ - State: components.StateDeprecated, - Metadata: &components.VerificationMetadata{ - LastVerifier: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - LastReminder: &components.Reminder{ - Assignee: components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Requestor: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - RemindAt: 609810, - }, - }, - }, - CustomData: map[string]components.CustomDataValue{ - "someCustomField": components.CustomDataValue{}, - }, - ContactPerson: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - }, - }, - }, - components.DocumentInsight{ - Document: components.Document{ - Metadata: &components.DocumentMetadata{ - Datasource: types.String("datasource"), - ObjectType: types.String("Feature Request"), - Container: types.String("container"), - ParentID: types.String("JIRA_EN-1337"), - MimeType: types.String("mimeType"), - DocumentID: types.String("documentId"), - CreateTime: types.MustNewTimeFromString("2000-01-23T04:56:07.000Z"), - UpdateTime: types.MustNewTimeFromString("2000-01-23T04:56:07.000Z"), - Author: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Owner: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Components: []string{ - "Backend", - "Networking", - }, - Status: types.String("[\"Done\"]"), - AssignedTo: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - UpdatedBy: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Interactions: &components.DocumentInteractions{}, - Verification: &components.Verification{ - State: components.StateVerified, - Metadata: &components.VerificationMetadata{ - LastVerifier: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - LastReminder: &components.Reminder{ - Assignee: components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Requestor: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - RemindAt: 413854, - }, - }, - }, - CustomData: map[string]components.CustomDataValue{ - "someCustomField": components.CustomDataValue{}, - }, - ContactPerson: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - }, - }, - }, - components.DocumentInsight{ - Document: components.Document{ - Metadata: &components.DocumentMetadata{ - Datasource: types.String("datasource"), - ObjectType: types.String("Feature Request"), - Container: types.String("container"), - ParentID: types.String("JIRA_EN-1337"), - MimeType: types.String("mimeType"), - DocumentID: types.String("documentId"), - CreateTime: types.MustNewTimeFromString("2000-01-23T04:56:07.000Z"), - UpdateTime: types.MustNewTimeFromString("2000-01-23T04:56:07.000Z"), - Author: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Owner: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Components: []string{ - "Backend", - "Networking", - }, - Status: types.String("[\"Done\"]"), - AssignedTo: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - UpdatedBy: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Interactions: &components.DocumentInteractions{}, - Verification: &components.Verification{ - State: components.StateUnverified, - Metadata: &components.VerificationMetadata{ - LastVerifier: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - LastReminder: &components.Reminder{ - Assignee: components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Requestor: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - RemindAt: 150399, - }, - }, - }, - CustomData: map[string]components.CustomDataValue{ - "someCustomField": components.CustomDataValue{}, - }, - ContactPerson: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - CollectionsV2: &components.ContentInsightsResponse{ - DocumentInsights: []components.DocumentInsight{ - components.DocumentInsight{ - Document: components.Document{ - Metadata: &components.DocumentMetadata{ - Datasource: types.String("datasource"), - ObjectType: types.String("Feature Request"), - Container: types.String("container"), - ParentID: types.String("JIRA_EN-1337"), - MimeType: types.String("mimeType"), - DocumentID: types.String("documentId"), - CreateTime: types.MustNewTimeFromString("2000-01-23T04:56:07.000Z"), - UpdateTime: types.MustNewTimeFromString("2000-01-23T04:56:07.000Z"), - Author: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Owner: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Components: []string{ - "Backend", - "Networking", - }, - Status: types.String("[\"Done\"]"), - AssignedTo: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - UpdatedBy: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Interactions: &components.DocumentInteractions{}, - Verification: &components.Verification{ - State: components.StateUnverified, - Metadata: &components.VerificationMetadata{ - LastVerifier: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - LastReminder: &components.Reminder{ - Assignee: components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Requestor: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - RemindAt: 148964, - }, - }, - }, - CustomData: map[string]components.CustomDataValue{ - "someCustomField": components.CustomDataValue{}, - }, - ContactPerson: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - }, - }, - }, - components.DocumentInsight{ - Document: components.Document{ - Metadata: &components.DocumentMetadata{ - Datasource: types.String("datasource"), - ObjectType: types.String("Feature Request"), - Container: types.String("container"), - ParentID: types.String("JIRA_EN-1337"), - MimeType: types.String("mimeType"), - DocumentID: types.String("documentId"), - CreateTime: types.MustNewTimeFromString("2000-01-23T04:56:07.000Z"), - UpdateTime: types.MustNewTimeFromString("2000-01-23T04:56:07.000Z"), - Author: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Owner: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Components: []string{ - "Backend", - "Networking", - }, - Status: types.String("[\"Done\"]"), - AssignedTo: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - UpdatedBy: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Interactions: &components.DocumentInteractions{}, - Verification: &components.Verification{ - State: components.StateUnverified, - Metadata: &components.VerificationMetadata{ - LastVerifier: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - LastReminder: &components.Reminder{ - Assignee: components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Requestor: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - RemindAt: 541220, - }, - }, - }, - CustomData: map[string]components.CustomDataValue{ - "someCustomField": components.CustomDataValue{}, - }, - ContactPerson: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - }, - }, - }, - components.DocumentInsight{ - Document: components.Document{ - Metadata: &components.DocumentMetadata{ - Datasource: types.String("datasource"), - ObjectType: types.String("Feature Request"), - Container: types.String("container"), - ParentID: types.String("JIRA_EN-1337"), - MimeType: types.String("mimeType"), - DocumentID: types.String("documentId"), - CreateTime: types.MustNewTimeFromString("2000-01-23T04:56:07.000Z"), - UpdateTime: types.MustNewTimeFromString("2000-01-23T04:56:07.000Z"), - Author: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Owner: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Components: []string{ - "Backend", - "Networking", - }, - Status: types.String("[\"Done\"]"), - AssignedTo: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - UpdatedBy: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Interactions: &components.DocumentInteractions{}, - Verification: &components.Verification{ - State: components.StateUnverified, - Metadata: &components.VerificationMetadata{ - LastVerifier: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - LastReminder: &components.Reminder{ - Assignee: components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Requestor: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - RemindAt: 222075, - }, - }, - }, - CustomData: map[string]components.CustomDataValue{ - "someCustomField": components.CustomDataValue{}, - }, - ContactPerson: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - Announcements: &components.ContentInsightsResponse{ - DocumentInsights: []components.DocumentInsight{ - components.DocumentInsight{ - Document: components.Document{ - Metadata: &components.DocumentMetadata{ - Datasource: types.String("datasource"), - ObjectType: types.String("Feature Request"), - Container: types.String("container"), - ParentID: types.String("JIRA_EN-1337"), - MimeType: types.String("mimeType"), - DocumentID: types.String("documentId"), - CreateTime: types.MustNewTimeFromString("2000-01-23T04:56:07.000Z"), - UpdateTime: types.MustNewTimeFromString("2000-01-23T04:56:07.000Z"), - Author: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Owner: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Components: []string{ - "Backend", - "Networking", - }, - Status: types.String("[\"Done\"]"), - AssignedTo: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - UpdatedBy: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Interactions: &components.DocumentInteractions{}, - Verification: &components.Verification{ - State: components.StateUnverified, - Metadata: &components.VerificationMetadata{ - LastVerifier: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - LastReminder: &components.Reminder{ - Assignee: components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Requestor: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - RemindAt: 15843, - }, - }, - }, - CustomData: map[string]components.CustomDataValue{ - "someCustomField": components.CustomDataValue{}, - }, - ContactPerson: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - Answers: &components.ContentInsightsResponse{ - DocumentInsights: []components.DocumentInsight{ - components.DocumentInsight{ - Document: components.Document{ - Metadata: &components.DocumentMetadata{ - Datasource: types.String("datasource"), - ObjectType: types.String("Feature Request"), - Container: types.String("container"), - ParentID: types.String("JIRA_EN-1337"), - MimeType: types.String("mimeType"), - DocumentID: types.String("documentId"), - CreateTime: types.MustNewTimeFromString("2000-01-23T04:56:07.000Z"), - UpdateTime: types.MustNewTimeFromString("2000-01-23T04:56:07.000Z"), - Author: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Owner: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Components: []string{ - "Backend", - "Networking", - }, - Status: types.String("[\"Done\"]"), - AssignedTo: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - UpdatedBy: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Interactions: &components.DocumentInteractions{}, - Verification: &components.Verification{ - State: components.StateDeprecated, - Metadata: &components.VerificationMetadata{ - LastVerifier: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - LastReminder: &components.Reminder{ - Assignee: components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Requestor: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - RemindAt: 39567, - }, - }, - }, - CustomData: map[string]components.CustomDataValue{ - "someCustomField": components.CustomDataValue{}, - }, - ContactPerson: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - }, - }, - }, - components.DocumentInsight{ - Document: components.Document{ - Metadata: &components.DocumentMetadata{ - Datasource: types.String("datasource"), - ObjectType: types.String("Feature Request"), - Container: types.String("container"), - ParentID: types.String("JIRA_EN-1337"), - MimeType: types.String("mimeType"), - DocumentID: types.String("documentId"), - CreateTime: types.MustNewTimeFromString("2000-01-23T04:56:07.000Z"), - UpdateTime: types.MustNewTimeFromString("2000-01-23T04:56:07.000Z"), - Author: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Owner: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Components: []string{ - "Backend", - "Networking", - }, - Status: types.String("[\"Done\"]"), - AssignedTo: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - UpdatedBy: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Interactions: &components.DocumentInteractions{}, - Verification: &components.Verification{ - State: components.StateDeprecated, - Metadata: &components.VerificationMetadata{ - LastVerifier: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - LastReminder: &components.Reminder{ - Assignee: components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Requestor: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - RemindAt: 892341, - }, - }, - }, - CustomData: map[string]components.CustomDataValue{ - "someCustomField": components.CustomDataValue{}, - }, - ContactPerson: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - }, - }, - }, - components.DocumentInsight{ - Document: components.Document{ - Metadata: &components.DocumentMetadata{ - Datasource: types.String("datasource"), - ObjectType: types.String("Feature Request"), - Container: types.String("container"), - ParentID: types.String("JIRA_EN-1337"), - MimeType: types.String("mimeType"), - DocumentID: types.String("documentId"), - CreateTime: types.MustNewTimeFromString("2000-01-23T04:56:07.000Z"), - UpdateTime: types.MustNewTimeFromString("2000-01-23T04:56:07.000Z"), - Author: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Owner: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Components: []string{ - "Backend", - "Networking", - }, - Status: types.String("[\"Done\"]"), - AssignedTo: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - UpdatedBy: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Interactions: &components.DocumentInteractions{}, - Verification: &components.Verification{ - State: components.StateUnverified, - Metadata: &components.VerificationMetadata{ - LastVerifier: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - LastReminder: &components.Reminder{ - Assignee: components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Requestor: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - RemindAt: 486092, - }, - }, - }, - CustomData: map[string]components.CustomDataValue{ - "someCustomField": components.CustomDataValue{}, - }, - ContactPerson: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - Ai: &components.AiInsightsResponse{ - AssistantInsights: []components.UserActivityInsight{ - components.UserActivityInsight{ - User: components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Activity: components.ActivityEnumSearch, - }, - }, - }, - AiApps: &components.AiAppsInsightsResponse{ - AiAppInsights: []components.UserActivityInsight{ - components.UserActivityInsight{ - User: components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Activity: components.ActivityEnumSearch, - }, - components.UserActivityInsight{ - User: components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Activity: components.ActivityEnumAll, - }, - }, - }, GleanAssist: &components.GleanAssistInsightsResponse{ ActivityInsights: []components.UserActivityInsight{ components.UserActivityInsight{ diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1listanswers.go b/tests/mockserver/internal/handler/pathpostrestapiv1listanswers.go index b2a5979d..ca9c40ec 100644 --- a/tests/mockserver/internal/handler/pathpostrestapiv1listanswers.go +++ b/tests/mockserver/internal/handler/pathpostrestapiv1listanswers.go @@ -278,7 +278,7 @@ func testListanswersListanswers0(w http.ResponseWriter, req *http.Request) { Snippets: []components.SearchResultSnippet{ components.SearchResultSnippet{ MimeType: types.String("mimeType"), - Snippet: "snippet", + Snippet: types.String("snippet"), }, }, }, diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1listchats.go b/tests/mockserver/internal/handler/pathpostrestapiv1listchats.go index 536c92db..572a0c4e 100644 --- a/tests/mockserver/internal/handler/pathpostrestapiv1listchats.go +++ b/tests/mockserver/internal/handler/pathpostrestapiv1listchats.go @@ -344,7 +344,7 @@ func testListchatsListchats0(w http.ResponseWriter, req *http.Request) { Snippets: []components.SearchResultSnippet{ components.SearchResultSnippet{ MimeType: types.String("mimeType"), - Snippet: "snippet", + Snippet: types.String("snippet"), }, }, }, diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1listcollections.go b/tests/mockserver/internal/handler/pathpostrestapiv1listcollections.go index b9d78920..bf011d22 100644 --- a/tests/mockserver/internal/handler/pathpostrestapiv1listcollections.go +++ b/tests/mockserver/internal/handler/pathpostrestapiv1listcollections.go @@ -286,7 +286,7 @@ func testListcollectionsListcollections0(w http.ResponseWriter, req *http.Reques Snippets: []components.SearchResultSnippet{ components.SearchResultSnippet{ MimeType: types.String("mimeType"), - Snippet: "snippet", + Snippet: types.String("snippet"), }, }, }, diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1listentities.go b/tests/mockserver/internal/handler/pathpostrestapiv1listentities.go index 51b67092..1c590174 100644 --- a/tests/mockserver/internal/handler/pathpostrestapiv1listentities.go +++ b/tests/mockserver/internal/handler/pathpostrestapiv1listentities.go @@ -308,7 +308,7 @@ func testListentitiesListentities0(w http.ResponseWriter, req *http.Request) { Snippets: []components.SearchResultSnippet{ components.SearchResultSnippet{ MimeType: types.String("mimeType"), - Snippet: "snippet", + Snippet: types.String("snippet"), }, }, }, diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1listpins.go b/tests/mockserver/internal/handler/pathpostrestapiv1listpins.go index 5590107d..b23d7ae8 100644 --- a/tests/mockserver/internal/handler/pathpostrestapiv1listpins.go +++ b/tests/mockserver/internal/handler/pathpostrestapiv1listpins.go @@ -316,7 +316,7 @@ func testListpinsListpins0(w http.ResponseWriter, req *http.Request) { Snippets: []components.SearchResultSnippet{ components.SearchResultSnippet{ MimeType: types.String("mimeType"), - Snippet: "snippet", + Snippet: types.String("snippet"), }, }, }, diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1listverifications.go b/tests/mockserver/internal/handler/pathpostrestapiv1listverifications.go index 4cec558e..243e4b83 100644 --- a/tests/mockserver/internal/handler/pathpostrestapiv1listverifications.go +++ b/tests/mockserver/internal/handler/pathpostrestapiv1listverifications.go @@ -268,7 +268,7 @@ func testListverificationsListverifications0(w http.ResponseWriter, req *http.Re Snippets: []components.SearchResultSnippet{ components.SearchResultSnippet{ MimeType: types.String("mimeType"), - Snippet: "snippet", + Snippet: types.String("snippet"), }, }, }, diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1messages.go b/tests/mockserver/internal/handler/pathpostrestapiv1messages.go index ec30c908..bbd8a470 100644 --- a/tests/mockserver/internal/handler/pathpostrestapiv1messages.go +++ b/tests/mockserver/internal/handler/pathpostrestapiv1messages.go @@ -63,7 +63,7 @@ func testMessagesMessages0(w http.ResponseWriter, req *http.Request) { Snippets: []components.SearchResultSnippet{ components.SearchResultSnippet{ MimeType: types.String("mimeType"), - Snippet: "snippet", + Snippet: types.String("snippet"), }, }, }, @@ -6603,7 +6603,7 @@ func testMessagesMessages0(w http.ResponseWriter, req *http.Request) { }, }, }, - GleanDataError: &components.GleanDataError{ + ErrorInfo: &components.GleanDataError{ ErrorMessages: []components.ErrorMessage{ components.ErrorMessage{ Source: types.String("gmail"), diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1people.go b/tests/mockserver/internal/handler/pathpostrestapiv1people.go index 5c63d19b..ac833cc8 100644 --- a/tests/mockserver/internal/handler/pathpostrestapiv1people.go +++ b/tests/mockserver/internal/handler/pathpostrestapiv1people.go @@ -1616,7 +1616,7 @@ func testPeoplePeople0(w http.ResponseWriter, req *http.Request) { Snippets: []components.SearchResultSnippet{ components.SearchResultSnippet{ MimeType: types.String("mimeType"), - Snippet: "snippet", + Snippet: types.String("snippet"), }, }, }, diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1pin.go b/tests/mockserver/internal/handler/pathpostrestapiv1pin.go index 347e0bb1..b137a0a8 100644 --- a/tests/mockserver/internal/handler/pathpostrestapiv1pin.go +++ b/tests/mockserver/internal/handler/pathpostrestapiv1pin.go @@ -328,7 +328,7 @@ func testPinPin0(w http.ResponseWriter, req *http.Request) { Snippets: []components.SearchResultSnippet{ components.SearchResultSnippet{ MimeType: types.String("mimeType"), - Snippet: "snippet", + Snippet: types.String("snippet"), }, }, }, diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1recommendations.go b/tests/mockserver/internal/handler/pathpostrestapiv1recommendations.go index d834c7b1..e9f511ab 100644 --- a/tests/mockserver/internal/handler/pathpostrestapiv1recommendations.go +++ b/tests/mockserver/internal/handler/pathpostrestapiv1recommendations.go @@ -60,7 +60,7 @@ func testRecommendationsRecommendations0(w http.ResponseWriter, req *http.Reques Snippets: []components.SearchResultSnippet{ components.SearchResultSnippet{ MimeType: types.String("mimeType"), - Snippet: "snippet", + Snippet: types.String("snippet"), }, }, }, diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1search.go b/tests/mockserver/internal/handler/pathpostrestapiv1search.go index f2fcf477..f3b2ae98 100644 --- a/tests/mockserver/internal/handler/pathpostrestapiv1search.go +++ b/tests/mockserver/internal/handler/pathpostrestapiv1search.go @@ -60,7 +60,7 @@ func testSearchSearch0(w http.ResponseWriter, req *http.Request) { Snippets: []components.SearchResultSnippet{ components.SearchResultSnippet{ MimeType: types.String("mimeType"), - Snippet: "snippet", + Snippet: types.String("snippet"), }, }, }, @@ -70,7 +70,7 @@ func testSearchSearch0(w http.ResponseWriter, req *http.Request) { Snippets: []components.SearchResultSnippet{}, }, }, - GleanDataError: &components.GleanDataError{ + ErrorInfo: &components.GleanDataError{ ErrorMessages: []components.ErrorMessage{ components.ErrorMessage{ Source: types.String("gmail"), diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1toolserversserveridauth.go b/tests/mockserver/internal/handler/pathpostrestapiv1toolserversserveridauth.go new file mode 100644 index 00000000..93aadc88 --- /dev/null +++ b/tests/mockserver/internal/handler/pathpostrestapiv1toolserversserveridauth.go @@ -0,0 +1,69 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package handler + +import ( + "fmt" + "log" + "mockserver/internal/handler/assert" + "mockserver/internal/logging" + "mockserver/internal/sdk/models/components" + "mockserver/internal/sdk/utils" + "mockserver/internal/tracking" + "net/http" +) + +func pathPostRestAPIV1ToolServersServerIDAuth(dir *logging.HTTPFileDirectory, rt *tracking.RequestTracker) http.HandlerFunc { + return func(w http.ResponseWriter, req *http.Request) { + test := req.Header.Get("x-speakeasy-test-name") + instanceID := req.Header.Get("x-speakeasy-test-instance-id") + + count := rt.GetRequestCount(test, instanceID) + + switch fmt.Sprintf("%s[%d]", test, count) { + case "authorizeToolServer[0]": + dir.HandlerFunc("authorizeToolServer", testAuthorizeToolServerAuthorizeToolServer0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testAuthorizeToolServerAuthorizeToolServer0(w http.ResponseWriter, req *http.Request) { + if err := assert.SecurityAuthorizationHeader(req, false, "Bearer"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusUnauthorized) + return + } + if err := assert.ContentType(req, "application/json", true); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + 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 + } + if err := assert.HeaderExists(req, "User-Agent"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + var respBody *components.AuthorizeToolServerResponse = &components.AuthorizeToolServerResponse{ + AuthorizationURL: "https://shocked-casket.name/", + } + respBodyBytes, err := utils.MarshalJSON(respBody, "", true) + + if err != nil { + http.Error( + w, + "Unable to encode response body as JSON: "+err.Error(), + http.StatusInternalServerError, + ) + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + _, _ = w.Write(respBodyBytes) +} diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1updateannouncement.go b/tests/mockserver/internal/handler/pathpostrestapiv1updateannouncement.go index 89382abe..88346511 100644 --- a/tests/mockserver/internal/handler/pathpostrestapiv1updateannouncement.go +++ b/tests/mockserver/internal/handler/pathpostrestapiv1updateannouncement.go @@ -171,7 +171,7 @@ func testUpdateannouncementUpdateannouncement0(w http.ResponseWriter, req *http. Snippets: []components.SearchResultSnippet{ components.SearchResultSnippet{ MimeType: types.String("mimeType"), - Snippet: "snippet", + Snippet: types.String("snippet"), }, }, }, diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1verify.go b/tests/mockserver/internal/handler/pathpostrestapiv1verify.go index 70b17e95..ab0824f9 100644 --- a/tests/mockserver/internal/handler/pathpostrestapiv1verify.go +++ b/tests/mockserver/internal/handler/pathpostrestapiv1verify.go @@ -290,7 +290,7 @@ func testVerifyVerify0(w http.ResponseWriter, req *http.Request) { Snippets: []components.SearchResultSnippet{ components.SearchResultSnippet{ MimeType: types.String("mimeType"), - Snippet: "snippet", + Snippet: types.String("snippet"), }, }, }, diff --git a/tests/mockserver/internal/handler/pathputrestapiindexcustommetadataschemagroupname.go b/tests/mockserver/internal/handler/pathputrestapiindexcustommetadataschemagroupname.go new file mode 100644 index 00000000..b9aa8f5d --- /dev/null +++ b/tests/mockserver/internal/handler/pathputrestapiindexcustommetadataschemagroupname.go @@ -0,0 +1,70 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package handler + +import ( + "fmt" + "log" + "mockserver/internal/handler/assert" + "mockserver/internal/logging" + "mockserver/internal/sdk/models/components" + "mockserver/internal/sdk/types" + "mockserver/internal/sdk/utils" + "mockserver/internal/tracking" + "net/http" +) + +func pathPutRestAPIIndexCustomMetadataSchemaGroupName(dir *logging.HTTPFileDirectory, rt *tracking.RequestTracker) http.HandlerFunc { + return func(w http.ResponseWriter, req *http.Request) { + test := req.Header.Get("x-speakeasy-test-name") + instanceID := req.Header.Get("x-speakeasy-test-instance-id") + + count := rt.GetRequestCount(test, instanceID) + + switch fmt.Sprintf("%s[%d]", test, count) { + case "put_/rest/api/index/custom-metadata/schema/{groupName}[0]": + dir.HandlerFunc("put_/rest/api/index/custom-metadata/schema/{groupName}", testPutRestAPIIndexCustomMetadataSchemaGroupNamePutRestAPIIndexCustomMetadataSchemaGroupName0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testPutRestAPIIndexCustomMetadataSchemaGroupNamePutRestAPIIndexCustomMetadataSchemaGroupName0(w http.ResponseWriter, req *http.Request) { + if err := assert.SecurityAuthorizationHeader(req, false, "Bearer"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusUnauthorized) + return + } + if err := assert.ContentType(req, "application/json", true); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + 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 + } + if err := assert.HeaderExists(req, "User-Agent"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + var respBody *components.SuccessResponse = &components.SuccessResponse{ + Success: types.Bool(true), + } + respBodyBytes, err := utils.MarshalJSON(respBody, "", true) + + if err != nil { + http.Error( + w, + "Unable to encode response body as JSON: "+err.Error(), + http.StatusInternalServerError, + ) + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + _, _ = w.Write(respBodyBytes) +} diff --git a/tests/mockserver/internal/handler/pathputrestapiindexdocumentdocidcustommetadatagroupname.go b/tests/mockserver/internal/handler/pathputrestapiindexdocumentdocidcustommetadatagroupname.go new file mode 100644 index 00000000..acee8819 --- /dev/null +++ b/tests/mockserver/internal/handler/pathputrestapiindexdocumentdocidcustommetadatagroupname.go @@ -0,0 +1,70 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package handler + +import ( + "fmt" + "log" + "mockserver/internal/handler/assert" + "mockserver/internal/logging" + "mockserver/internal/sdk/models/components" + "mockserver/internal/sdk/types" + "mockserver/internal/sdk/utils" + "mockserver/internal/tracking" + "net/http" +) + +func pathPutRestAPIIndexDocumentDocIDCustomMetadataGroupName(dir *logging.HTTPFileDirectory, rt *tracking.RequestTracker) http.HandlerFunc { + return func(w http.ResponseWriter, req *http.Request) { + test := req.Header.Get("x-speakeasy-test-name") + instanceID := req.Header.Get("x-speakeasy-test-instance-id") + + count := rt.GetRequestCount(test, instanceID) + + switch fmt.Sprintf("%s[%d]", test, count) { + case "put_/rest/api/index/document/{docId}/custom-metadata/{groupName}[0]": + dir.HandlerFunc("put_/rest/api/index/document/{docId}/custom-metadata/{groupName}", testPutRestAPIIndexDocumentDocIDCustomMetadataGroupNamePutRestAPIIndexDocumentDocIDCustomMetadataGroupName0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testPutRestAPIIndexDocumentDocIDCustomMetadataGroupNamePutRestAPIIndexDocumentDocIDCustomMetadataGroupName0(w http.ResponseWriter, req *http.Request) { + if err := assert.SecurityAuthorizationHeader(req, false, "Bearer"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusUnauthorized) + return + } + if err := assert.ContentType(req, "application/json", true); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + 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 + } + if err := assert.HeaderExists(req, "User-Agent"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + var respBody *components.SuccessResponse = &components.SuccessResponse{ + Success: types.Bool(true), + } + respBodyBytes, err := utils.MarshalJSON(respBody, "", true) + + if err != nil { + http.Error( + w, + "Unable to encode response body as JSON: "+err.Error(), + http.StatusInternalServerError, + ) + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + _, _ = w.Write(respBodyBytes) +} diff --git a/tests/mockserver/internal/sdk/models/callbacks/platformtriggerscreate.go b/tests/mockserver/internal/sdk/models/callbacks/platformtriggerscreate.go new file mode 100644 index 00000000..e3e68dc8 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/callbacks/platformtriggerscreate.go @@ -0,0 +1,77 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package callbacks + +import ( + "mockserver/internal/sdk/models/components" +) + +type PlatformTriggersCreateTriggerWebhookEventResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` +} + +func (o *PlatformTriggersCreateTriggerWebhookEventResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +type PlatformTriggersCreateTriggerWebhookEventRequest struct { + // Opaque delivery ID. It remains stable across retries of the same event and can be used as an idempotency key. + WebhookID string `header:"style=simple,explode=false,name=webhook-id"` + // Unix time in seconds when this delivery attempt was signed. + WebhookTimestamp int64 `header:"style=simple,explode=false,name=webhook-timestamp"` + // `v1,` followed by the standard Base64-encoded HMAC-SHA256 digest. To verify it, remove the + // `whsec_` prefix from `signing_secret`, standard-Base64-decode the remainder, and use those + // bytes as the HMAC key. Sign the UTF-8 bytes of `webhook-id + "." + webhook-timestamp + "." + // + raw request body`. Verify the signature against the unmodified request body before + // parsing JSON, and use a constant-time comparison. + // + // Fixed test vector (the raw body is one line with no trailing newline): + // + // - decoded signing key bytes (UTF-8; test only): `test_webhook_signing_secret_1234` + // - `webhook-id`: `81e6dc877ac553ef96ecbc939c1e46431159491991ba55cd131fbd0e3746c6bc` + // - `webhook-timestamp`: `1700000000` + // - `raw request body`: `{"version":"1","trigger_id":"trigger_test_123","datasource":"GITHUB","reason":"REVIEW_REQUESTED","doc_type":"pull","event_type":"DOCUMENT_CHANGE","doc_id":"GITHUB_pull_123","view_url":"https://github.com/acme/payments-api/pull/123","title":"Add retry backoff to the crawler","event_time":"2025-04-23T11:00:00Z"}` + // - `webhook-signature`: `v1,JqvHW0dwAOSLndiwQdXLUS/P+2RvOO8x4sOWgA/w0Gs=` + // + WebhookSignature string `header:"style=simple,explode=false,name=webhook-signature"` + Body components.PlatformTriggerWebhookEvent `request:"mediaType=application/json"` +} + +func (o *PlatformTriggersCreateTriggerWebhookEventRequest) GetWebhookID() string { + if o == nil { + return "" + } + return o.WebhookID +} + +func (o *PlatformTriggersCreateTriggerWebhookEventRequest) GetWebhookTimestamp() int64 { + if o == nil { + return 0 + } + return o.WebhookTimestamp +} + +func (o *PlatformTriggersCreateTriggerWebhookEventRequest) GetWebhookSignature() string { + if o == nil { + return "" + } + return o.WebhookSignature +} + +func (o *PlatformTriggersCreateTriggerWebhookEventRequest) GetBody() components.PlatformTriggerWebhookEvent { + if o == nil { + return components.PlatformTriggerWebhookEvent{} + } + return o.Body +} + +func (o *PlatformTriggersCreateTriggerWebhookEventRequest) GetBodyDocumentChange() *components.PlatformDocumentChangeWebhookEvent { + return o.GetBody().PlatformDocumentChangeWebhookEvent +} + +func (o *PlatformTriggersCreateTriggerWebhookEventRequest) GetBodyContentSchedule() *components.PlatformContentScheduleWebhookEvent { + return o.GetBody().PlatformContentScheduleWebhookEvent +} diff --git a/tests/mockserver/internal/sdk/models/components/accessrequestpermissiondeniedresponseerror.go b/tests/mockserver/internal/sdk/models/components/accessrequestpermissiondeniedresponseerror.go new file mode 100644 index 00000000..bd5d24e4 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/accessrequestpermissiondeniedresponseerror.go @@ -0,0 +1,31 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" +) + +type AccessRequestPermissionDeniedResponseErrorType string + +const ( + AccessRequestPermissionDeniedResponseErrorTypePermissionDenied AccessRequestPermissionDeniedResponseErrorType = "PERMISSION_DENIED" +) + +func (e AccessRequestPermissionDeniedResponseErrorType) ToPointer() *AccessRequestPermissionDeniedResponseErrorType { + return &e +} +func (e *AccessRequestPermissionDeniedResponseErrorType) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "PERMISSION_DENIED": + *e = AccessRequestPermissionDeniedResponseErrorType(v) + return nil + default: + return fmt.Errorf("invalid value for AccessRequestPermissionDeniedResponseErrorType: %v", v) + } +} diff --git a/tests/mockserver/internal/sdk/models/components/actionauthtype.go b/tests/mockserver/internal/sdk/models/components/actionauthtype.go new file mode 100644 index 00000000..4547fc36 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/actionauthtype.go @@ -0,0 +1,41 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" +) + +// ActionAuthType - Authentication mechanism used by an action pack. +// - `AUTH_USER_OAUTH`: Requires per-user OAuth consent to the third-party tool. +// - `AUTH_ADMIN`: Uses a service-account / admin-owned credential. End users do not authorize individually. +// - `AUTH_NONE`: Action pack requires no authentication. +type ActionAuthType string + +const ( + ActionAuthTypeAuthUserOauth ActionAuthType = "AUTH_USER_OAUTH" + ActionAuthTypeAuthAdmin ActionAuthType = "AUTH_ADMIN" + ActionAuthTypeAuthNone ActionAuthType = "AUTH_NONE" +) + +func (e ActionAuthType) ToPointer() *ActionAuthType { + return &e +} +func (e *ActionAuthType) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "AUTH_USER_OAUTH": + fallthrough + case "AUTH_ADMIN": + fallthrough + case "AUTH_NONE": + *e = ActionAuthType(v) + return nil + default: + return fmt.Errorf("invalid value for ActionAuthType: %v", v) + } +} diff --git a/tests/mockserver/internal/sdk/models/components/actionpackauthstatus.go b/tests/mockserver/internal/sdk/models/components/actionpackauthstatus.go new file mode 100644 index 00000000..fb8e700a --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/actionpackauthstatus.go @@ -0,0 +1,28 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type ActionPackAuthStatus struct { + // Whether the calling user is already authenticated to the tool backing the action pack. + Authenticated bool `json:"authenticated"` + // Authentication mechanism used by an action pack. + // - `AUTH_USER_OAUTH`: Requires per-user OAuth consent to the third-party tool. + // - `AUTH_ADMIN`: Uses a service-account / admin-owned credential. End users do not authorize individually. + // - `AUTH_NONE`: Action pack requires no authentication. + // + AuthType ActionAuthType `json:"authType"` +} + +func (o *ActionPackAuthStatus) GetAuthenticated() bool { + if o == nil { + return false + } + return o.Authenticated +} + +func (o *ActionPackAuthStatus) GetAuthType() ActionAuthType { + if o == nil { + return ActionAuthType("") + } + return o.AuthType +} diff --git a/tests/mockserver/internal/sdk/models/components/actionpackauthstatusresponse.go b/tests/mockserver/internal/sdk/models/components/actionpackauthstatusresponse.go new file mode 100644 index 00000000..b5d71982 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/actionpackauthstatusresponse.go @@ -0,0 +1,14 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type ActionPackAuthStatusResponse struct { + ActionPack ActionPackAuthStatus `json:"actionPack"` +} + +func (o *ActionPackAuthStatusResponse) GetActionPack() ActionPackAuthStatus { + if o == nil { + return ActionPackAuthStatus{} + } + return o.ActionPack +} diff --git a/tests/mockserver/internal/sdk/models/components/actionpreview.go b/tests/mockserver/internal/sdk/models/components/actionpreview.go new file mode 100644 index 00000000..facf42ad --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/actionpreview.go @@ -0,0 +1,25 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +// ActionPreview - Preview information for an action being executed. +type ActionPreview struct { + // Markdown preview describing what the action will do. + Markdown *string `json:"markdown,omitempty"` + // Short summary of what this specific tool invocation will do. + Description *string `json:"description,omitempty"` +} + +func (o *ActionPreview) GetMarkdown() *string { + if o == nil { + return nil + } + return o.Markdown +} + +func (o *ActionPreview) GetDescription() *string { + if o == nil { + return nil + } + return o.Description +} diff --git a/tests/mockserver/internal/sdk/models/components/actionsummary.go b/tests/mockserver/internal/sdk/models/components/actionsummary.go new file mode 100644 index 00000000..b2ab4884 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/actionsummary.go @@ -0,0 +1,79 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +// ActionSummary - Represents a minimal summary of an action. +type ActionSummary struct { + // The unique identifier of the action. + ToolID string `json:"tool_id"` + // The display name of the action. + DisplayName string `json:"display_name"` + // The type of tool - RETRIEVAL for read-only operations, ACTION for operations that modify data. + Type *string `json:"type,omitempty"` + // The authentication type required - OAUTH_USER, OAUTH_ADMIN, API_KEY, BASIC_AUTH, DWD (domain-wide delegation), or NONE. + AuthType *string `json:"auth_type,omitempty"` + // For write actions only - REDIRECT (client renders URL) or EXECUTION (external server call). + WriteActionType *string `json:"write_action_type,omitempty"` + // Whether this action has been fully configured and validated. + IsSetupFinished *bool `json:"is_setup_finished,omitempty"` + // Indicates the kind of knowledge a tool would access or modify. + // Company knowledge: + // - Glean search, and any native tools that derive from it (e.g., expert search, code search) + // - Native federated tools to company data sources (e.g., outlook search) + // World knowledge: + // - Platform action like bravewebsearch, geminiwebsearch, etc + // Neutral knowledge: + // - Native tools that don't access or modify content via APIs (e.g., file analyst, think) + // - Platform read or write tools (creator has to determine their knowledge implications) + // + DataSource *string `json:"data_source,omitempty"` +} + +func (o *ActionSummary) GetToolID() string { + if o == nil { + return "" + } + return o.ToolID +} + +func (o *ActionSummary) GetDisplayName() string { + if o == nil { + return "" + } + return o.DisplayName +} + +func (o *ActionSummary) GetType() *string { + if o == nil { + return nil + } + return o.Type +} + +func (o *ActionSummary) GetAuthType() *string { + if o == nil { + return nil + } + return o.AuthType +} + +func (o *ActionSummary) GetWriteActionType() *string { + if o == nil { + return nil + } + return o.WriteActionType +} + +func (o *ActionSummary) GetIsSetupFinished() *bool { + if o == nil { + return nil + } + return o.IsSetupFinished +} + +func (o *ActionSummary) GetDataSource() *string { + if o == nil { + return nil + } + return o.DataSource +} diff --git a/tests/mockserver/internal/sdk/models/components/addcollectionitemserror.go b/tests/mockserver/internal/sdk/models/components/addcollectionitemserror.go index 215308e8..43f93195 100644 --- a/tests/mockserver/internal/sdk/models/components/addcollectionitemserror.go +++ b/tests/mockserver/internal/sdk/models/components/addcollectionitemserror.go @@ -11,6 +11,7 @@ type AddCollectionItemsErrorErrorType string const ( AddCollectionItemsErrorErrorTypeExistingItem AddCollectionItemsErrorErrorType = "EXISTING_ITEM" + AddCollectionItemsErrorErrorTypeCorruptItem AddCollectionItemsErrorErrorType = "CORRUPT_ITEM" ) func (e AddCollectionItemsErrorErrorType) ToPointer() *AddCollectionItemsErrorErrorType { @@ -23,6 +24,8 @@ func (e *AddCollectionItemsErrorErrorType) UnmarshalJSON(data []byte) error { } switch v { case "EXISTING_ITEM": + fallthrough + case "CORRUPT_ITEM": *e = AddCollectionItemsErrorErrorType(v) return nil default: diff --git a/tests/mockserver/internal/sdk/models/components/agentconfig.go b/tests/mockserver/internal/sdk/models/components/agentconfig.go index be2e03e8..679f7f32 100644 --- a/tests/mockserver/internal/sdk/models/components/agentconfig.go +++ b/tests/mockserver/internal/sdk/models/components/agentconfig.go @@ -16,6 +16,7 @@ const ( AgentEnumUniversal AgentEnum = "UNIVERSAL" AgentEnumFast AgentEnum = "FAST" AgentEnumAdvanced AgentEnum = "ADVANCED" + AgentEnumAuto AgentEnum = "AUTO" ) func (e AgentEnum) ToPointer() *AgentEnum { @@ -36,6 +37,8 @@ func (e *AgentEnum) UnmarshalJSON(data []byte) error { case "FAST": fallthrough case "ADVANCED": + fallthrough + case "AUTO": *e = AgentEnum(v) return nil default: diff --git a/tests/mockserver/internal/sdk/models/components/agentrun.go b/tests/mockserver/internal/sdk/models/components/agentrun.go index 23ab5120..dcff6d12 100644 --- a/tests/mockserver/internal/sdk/models/components/agentrun.go +++ b/tests/mockserver/internal/sdk/models/components/agentrun.go @@ -2,11 +2,11 @@ package components -// AgentRun - Payload for creating a run. +// AgentRun - Payload for creating a run. **Important**: If the agent uses an input form trigger, the `input` field is required and must include all fields defined in the form schema. Even fields marked as optional in the UI must be included in the request—use an empty string (`""`) for optional fields without values. Omitting required form fields will result in a 500 error. type AgentRun struct { // The ID of the agent to run. AgentID string `json:"agent_id"` - // The input to the agent. + // The input to the agent. Required when the agent uses an input form trigger. Input map[string]any `json:"input,omitempty"` // The messages to pass an input to the agent. Messages []Message `json:"messages,omitempty"` diff --git a/tests/mockserver/internal/sdk/models/components/agentruncreate.go b/tests/mockserver/internal/sdk/models/components/agentruncreate.go index c095a382..e0f2b034 100644 --- a/tests/mockserver/internal/sdk/models/components/agentruncreate.go +++ b/tests/mockserver/internal/sdk/models/components/agentruncreate.go @@ -2,11 +2,11 @@ package components -// AgentRunCreate - Payload for creating a run. +// AgentRunCreate - Payload for creating a run. **Important**: If the agent uses an input form trigger, the `input` field is required and must include all fields defined in the form schema. Even fields marked as optional in the UI must be included in the request—use an empty string (`""`) for optional fields without values. Omitting required form fields will result in a 500 error. type AgentRunCreate struct { // The ID of the agent to run. AgentID string `json:"agent_id"` - // The input to the agent. + // The input to the agent. Required when the agent uses an input form trigger. Input map[string]any `json:"input,omitempty"` // The messages to pass an input to the agent. Messages []Message `json:"messages,omitempty"` diff --git a/tests/mockserver/internal/sdk/models/components/agentschemas.go b/tests/mockserver/internal/sdk/models/components/agentschemas.go index 4fe8d12d..262d8813 100644 --- a/tests/mockserver/internal/sdk/models/components/agentschemas.go +++ b/tests/mockserver/internal/sdk/models/components/agentschemas.go @@ -14,10 +14,14 @@ type OutputSchema struct { type AgentSchemas struct { // The ID of the agent. AgentID string `json:"agent_id"` + // The name of the agent. + Name *string `json:"name,omitempty"` // The schema for the agent input. In JSON Schema format. InputSchema InputSchema `json:"input_schema"` // The schema for the agent output. In JSON Schema format. OutputSchema OutputSchema `json:"output_schema"` + // List of tools that the agent can invoke. Only included when include_tools query parameter is set to true. + Tools []ActionSummary `json:"tools,omitempty"` } func (o *AgentSchemas) GetAgentID() string { @@ -27,6 +31,13 @@ func (o *AgentSchemas) GetAgentID() string { return o.AgentID } +func (o *AgentSchemas) GetName() *string { + if o == nil { + return nil + } + return o.Name +} + func (o *AgentSchemas) GetInputSchema() InputSchema { if o == nil { return InputSchema{} @@ -40,3 +51,10 @@ func (o *AgentSchemas) GetOutputSchema() OutputSchema { } return o.OutputSchema } + +func (o *AgentSchemas) GetTools() []ActionSummary { + if o == nil { + return nil + } + return o.Tools +} diff --git a/tests/mockserver/internal/sdk/models/components/agentsinsightsv2request.go b/tests/mockserver/internal/sdk/models/components/agentsinsightsv2request.go index 30af15e6..83467d6a 100644 --- a/tests/mockserver/internal/sdk/models/components/agentsinsightsv2request.go +++ b/tests/mockserver/internal/sdk/models/components/agentsinsightsv2request.go @@ -7,7 +7,9 @@ type AgentsInsightsV2Request struct { AgentIds []string `json:"agentIds,omitempty"` // Departments for which Insights are requested. Departments []string `json:"departments,omitempty"` - DayRange *Period `json:"dayRange,omitempty"` + // Manager emails whose teams should be filtered for. Empty array means no filtering. + ManagerEmails []string `json:"managerEmails,omitempty"` + DayRange *Period `json:"dayRange,omitempty"` } func (o *AgentsInsightsV2Request) GetAgentIds() []string { @@ -24,6 +26,13 @@ func (o *AgentsInsightsV2Request) GetDepartments() []string { return o.Departments } +func (o *AgentsInsightsV2Request) GetManagerEmails() []string { + if o == nil { + return nil + } + return o.ManagerEmails +} + func (o *AgentsInsightsV2Request) GetDayRange() *Period { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/components/agentsinsightsv2response.go b/tests/mockserver/internal/sdk/models/components/agentsinsightsv2response.go index 590fe93f..25139a60 100644 --- a/tests/mockserver/internal/sdk/models/components/agentsinsightsv2response.go +++ b/tests/mockserver/internal/sdk/models/components/agentsinsightsv2response.go @@ -3,9 +3,9 @@ package components type AgentsInsightsV2Response struct { - // Number of current Monthly Active Users, in the specified departments. + // Number of current Monthly Active Users. MonthlyActiveUsers *int64 `json:"monthlyActiveUsers,omitempty"` - // Number of current Weekly Active Users, in the specified departments. + // Number of current Weekly Active Users. WeeklyActiveUsers *int64 `json:"weeklyActiveUsers,omitempty"` MonthlyActiveUserTimeseries *LabeledCountInfo `json:"monthlyActiveUserTimeseries,omitempty"` WeeklyActiveUserTimeseries *LabeledCountInfo `json:"weeklyActiveUserTimeseries,omitempty"` @@ -13,11 +13,17 @@ type AgentsInsightsV2Response struct { // Total number of shared agents. SharedAgentsCount *int64 `json:"sharedAgentsCount,omitempty"` TopAgentsInsights []PerAgentInsight `json:"topAgentsInsights,omitempty"` + TopUseCasesInsights []AgentUseCaseInsight `json:"topUseCasesInsights,omitempty"` AgentsUsageByDepartmentInsights []AgentsUsageByDepartmentInsight `json:"agentsUsageByDepartmentInsights,omitempty"` AgentUsersInsights []AgentUsersInsight `json:"agentUsersInsights,omitempty"` - DailyAgentRunsTimeseries *LabeledCountInfo `json:"dailyAgentRunsTimeseries,omitempty"` - UpvotesTimeseries *LabeledCountInfo `json:"upvotesTimeseries,omitempty"` - DownvotesTimeseries *LabeledCountInfo `json:"downvotesTimeseries,omitempty"` + // Insights for agents time saved over the specified time period. + AgentsTimeSavedInsights []AgentsTimeSavedInsight `json:"agentsTimeSavedInsights,omitempty"` + DailyAgentRunsTimeseries *LabeledCountInfo `json:"dailyAgentRunsTimeseries,omitempty"` + SuccessfulRunsTimeseries *LabeledCountInfo `json:"successfulRunsTimeseries,omitempty"` + FailedRunsTimeseries *LabeledCountInfo `json:"failedRunsTimeseries,omitempty"` + PausedRunsTimeseries *LabeledCountInfo `json:"pausedRunsTimeseries,omitempty"` + UpvotesTimeseries *LabeledCountInfo `json:"upvotesTimeseries,omitempty"` + DownvotesTimeseries *LabeledCountInfo `json:"downvotesTimeseries,omitempty"` } func (o *AgentsInsightsV2Response) GetMonthlyActiveUsers() *int64 { @@ -69,6 +75,13 @@ func (o *AgentsInsightsV2Response) GetTopAgentsInsights() []PerAgentInsight { return o.TopAgentsInsights } +func (o *AgentsInsightsV2Response) GetTopUseCasesInsights() []AgentUseCaseInsight { + if o == nil { + return nil + } + return o.TopUseCasesInsights +} + func (o *AgentsInsightsV2Response) GetAgentsUsageByDepartmentInsights() []AgentsUsageByDepartmentInsight { if o == nil { return nil @@ -83,6 +96,13 @@ func (o *AgentsInsightsV2Response) GetAgentUsersInsights() []AgentUsersInsight { return o.AgentUsersInsights } +func (o *AgentsInsightsV2Response) GetAgentsTimeSavedInsights() []AgentsTimeSavedInsight { + if o == nil { + return nil + } + return o.AgentsTimeSavedInsights +} + func (o *AgentsInsightsV2Response) GetDailyAgentRunsTimeseries() *LabeledCountInfo { if o == nil { return nil @@ -90,6 +110,27 @@ func (o *AgentsInsightsV2Response) GetDailyAgentRunsTimeseries() *LabeledCountIn return o.DailyAgentRunsTimeseries } +func (o *AgentsInsightsV2Response) GetSuccessfulRunsTimeseries() *LabeledCountInfo { + if o == nil { + return nil + } + return o.SuccessfulRunsTimeseries +} + +func (o *AgentsInsightsV2Response) GetFailedRunsTimeseries() *LabeledCountInfo { + if o == nil { + return nil + } + return o.FailedRunsTimeseries +} + +func (o *AgentsInsightsV2Response) GetPausedRunsTimeseries() *LabeledCountInfo { + if o == nil { + return nil + } + return o.PausedRunsTimeseries +} + func (o *AgentsInsightsV2Response) GetUpvotesTimeseries() *LabeledCountInfo { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/components/agentstimesavedinsight.go b/tests/mockserver/internal/sdk/models/components/agentstimesavedinsight.go new file mode 100644 index 00000000..2a8e31d9 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/agentstimesavedinsight.go @@ -0,0 +1,69 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type AgentsTimeSavedInsight struct { + // Agent ID + AgentID *string `json:"agentId,omitempty"` + // Agent name + AgentName *string `json:"agentName,omitempty"` + // Defines how to render an icon + Icon *IconConfig `json:"icon,omitempty"` + // Indicates whether the agent has been deleted + IsDeleted *bool `json:"isDeleted,omitempty"` + // Total number of runs for this agent over the specified time period. + RunCount *int64 `json:"runCount,omitempty"` + // Average minutes saved per run for this agent over the specified time period. + MinsPerRun *float32 `json:"minsPerRun,omitempty"` + // Total number of users who provided feedback on time saved for this agent over the specified time period. + FeedbackUserCount *int64 `json:"feedbackUserCount,omitempty"` +} + +func (o *AgentsTimeSavedInsight) GetAgentID() *string { + if o == nil { + return nil + } + return o.AgentID +} + +func (o *AgentsTimeSavedInsight) GetAgentName() *string { + if o == nil { + return nil + } + return o.AgentName +} + +func (o *AgentsTimeSavedInsight) GetIcon() *IconConfig { + if o == nil { + return nil + } + return o.Icon +} + +func (o *AgentsTimeSavedInsight) GetIsDeleted() *bool { + if o == nil { + return nil + } + return o.IsDeleted +} + +func (o *AgentsTimeSavedInsight) GetRunCount() *int64 { + if o == nil { + return nil + } + return o.RunCount +} + +func (o *AgentsTimeSavedInsight) GetMinsPerRun() *float32 { + if o == nil { + return nil + } + return o.MinsPerRun +} + +func (o *AgentsTimeSavedInsight) GetFeedbackUserCount() *int64 { + if o == nil { + return nil + } + return o.FeedbackUserCount +} diff --git a/tests/mockserver/internal/sdk/models/components/agentusecaseinsight.go b/tests/mockserver/internal/sdk/models/components/agentusecaseinsight.go new file mode 100644 index 00000000..3caa1836 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/agentusecaseinsight.go @@ -0,0 +1,78 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type AgentUseCaseInsight struct { + // Use case name + UseCase *string `json:"useCase,omitempty"` + // Total number of runs for this use case over the specified time period. + RunCount *int64 `json:"runCount,omitempty"` + // Percentage change in runs compared to the previous equivalent time period. + Trend *float32 `json:"trend,omitempty"` + // Comma-separated list of the top departments using this use case. + TopDepartments *string `json:"topDepartments,omitempty"` + // ID of the most-used agent for this use case. + TopAgentID *string `json:"topAgentId,omitempty"` + // Name of the most-used agent for this use case. + TopAgentName *string `json:"topAgentName,omitempty"` + // Defines how to render an icon + TopAgentIcon *IconConfig `json:"topAgentIcon,omitempty"` + // Indicates whether the top agent has been deleted. + TopAgentIsDeleted *bool `json:"topAgentIsDeleted,omitempty"` +} + +func (o *AgentUseCaseInsight) GetUseCase() *string { + if o == nil { + return nil + } + return o.UseCase +} + +func (o *AgentUseCaseInsight) GetRunCount() *int64 { + if o == nil { + return nil + } + return o.RunCount +} + +func (o *AgentUseCaseInsight) GetTrend() *float32 { + if o == nil { + return nil + } + return o.Trend +} + +func (o *AgentUseCaseInsight) GetTopDepartments() *string { + if o == nil { + return nil + } + return o.TopDepartments +} + +func (o *AgentUseCaseInsight) GetTopAgentID() *string { + if o == nil { + return nil + } + return o.TopAgentID +} + +func (o *AgentUseCaseInsight) GetTopAgentName() *string { + if o == nil { + return nil + } + return o.TopAgentName +} + +func (o *AgentUseCaseInsight) GetTopAgentIcon() *IconConfig { + if o == nil { + return nil + } + return o.TopAgentIcon +} + +func (o *AgentUseCaseInsight) GetTopAgentIsDeleted() *bool { + if o == nil { + return nil + } + return o.TopAgentIsDeleted +} diff --git a/tests/mockserver/internal/sdk/models/components/aiappactioncounts.go b/tests/mockserver/internal/sdk/models/components/aiappactioncounts.go deleted file mode 100644 index f8307b79..00000000 --- a/tests/mockserver/internal/sdk/models/components/aiappactioncounts.go +++ /dev/null @@ -1,84 +0,0 @@ -// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - -package components - -import ( - "mockserver/internal/sdk/utils" -) - -// AiAppActionCounts - Map from action to frequency. -type AiAppActionCounts struct { - // Total number of Slackbot responses, both proactive and reactive. - TotalSlackbotResponses *int64 `json:"totalSlackbotResponses,omitempty"` - // Total number of Slackbot responses shared publicly (upvoted). - TotalSlackbotResponsesShared *int64 `json:"totalSlackbotResponsesShared,omitempty"` - // Total number of Slackbot responses rejected as not helpful (downvoted). - TotalSlackbotResponsesNotHelpful *int64 `json:"totalSlackbotResponsesNotHelpful,omitempty"` - // Total number of Chat messages sent in requested period. - TotalChatMessages *int64 `json:"totalChatMessages,omitempty"` - // Total number of Chat messages which received upvotes by the user. - TotalUpvotes *int64 `json:"totalUpvotes,omitempty"` - // Total number of Chat messages which received downvotes by the user. - TotalDownvotes *int64 `json:"totalDownvotes,omitempty"` - AdditionalProperties map[string]int64 `additionalProperties:"true" json:"-"` -} - -func (a AiAppActionCounts) MarshalJSON() ([]byte, error) { - return utils.MarshalJSON(a, "", false) -} - -func (a *AiAppActionCounts) UnmarshalJSON(data []byte) error { - if err := utils.UnmarshalJSON(data, &a, "", false, nil); err != nil { - return err - } - return nil -} - -func (o *AiAppActionCounts) GetTotalSlackbotResponses() *int64 { - if o == nil { - return nil - } - return o.TotalSlackbotResponses -} - -func (o *AiAppActionCounts) GetTotalSlackbotResponsesShared() *int64 { - if o == nil { - return nil - } - return o.TotalSlackbotResponsesShared -} - -func (o *AiAppActionCounts) GetTotalSlackbotResponsesNotHelpful() *int64 { - if o == nil { - return nil - } - return o.TotalSlackbotResponsesNotHelpful -} - -func (o *AiAppActionCounts) GetTotalChatMessages() *int64 { - if o == nil { - return nil - } - return o.TotalChatMessages -} - -func (o *AiAppActionCounts) GetTotalUpvotes() *int64 { - if o == nil { - return nil - } - return o.TotalUpvotes -} - -func (o *AiAppActionCounts) GetTotalDownvotes() *int64 { - if o == nil { - return nil - } - return o.TotalDownvotes -} - -func (o *AiAppActionCounts) GetAdditionalProperties() map[string]int64 { - if o == nil { - return nil - } - return o.AdditionalProperties -} diff --git a/tests/mockserver/internal/sdk/models/components/aiappsinsightsresponse.go b/tests/mockserver/internal/sdk/models/components/aiappsinsightsresponse.go deleted file mode 100644 index 8de39cd4..00000000 --- a/tests/mockserver/internal/sdk/models/components/aiappsinsightsresponse.go +++ /dev/null @@ -1,50 +0,0 @@ -// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - -package components - -type AiAppsInsightsResponse struct { - // Unix timestamp of the last activity processed to make the response (in seconds since epoch UTC). - LastLogTimestamp *int64 `json:"lastLogTimestamp,omitempty"` - AiAppInsights []UserActivityInsight `json:"aiAppInsights,omitempty"` - // Total number of active users on the Ai App in the requested period. - TotalActiveUsers *int64 `json:"totalActiveUsers,omitempty"` - // Map from action to frequency. - ActionCounts *AiAppActionCounts `json:"actionCounts,omitempty"` - // list of departments applicable for users tab. - Departments []string `json:"departments,omitempty"` -} - -func (o *AiAppsInsightsResponse) GetLastLogTimestamp() *int64 { - if o == nil { - return nil - } - return o.LastLogTimestamp -} - -func (o *AiAppsInsightsResponse) GetAiAppInsights() []UserActivityInsight { - if o == nil { - return nil - } - return o.AiAppInsights -} - -func (o *AiAppsInsightsResponse) GetTotalActiveUsers() *int64 { - if o == nil { - return nil - } - return o.TotalActiveUsers -} - -func (o *AiAppsInsightsResponse) GetActionCounts() *AiAppActionCounts { - if o == nil { - return nil - } - return o.ActionCounts -} - -func (o *AiAppsInsightsResponse) GetDepartments() []string { - if o == nil { - return nil - } - return o.Departments -} diff --git a/tests/mockserver/internal/sdk/models/components/aiinsightsresponse.go b/tests/mockserver/internal/sdk/models/components/aiinsightsresponse.go deleted file mode 100644 index 478529db..00000000 --- a/tests/mockserver/internal/sdk/models/components/aiinsightsresponse.go +++ /dev/null @@ -1,113 +0,0 @@ -// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - -package components - -type AiInsightsResponse struct { - // Unix timestamp of the last activity processed to make the response (in seconds since epoch UTC). - LastLogTimestamp *int64 `json:"lastLogTimestamp,omitempty"` - AssistantInsights []UserActivityInsight `json:"assistantInsights,omitempty"` - // Total number of Active Assistant users (chat, summary, AIA) in requested period. - TotalActiveAssistantUsers *int64 `json:"totalActiveAssistantUsers,omitempty"` - // Total number of Chat messages sent in requested period. - TotalChatMessages *int64 `json:"totalChatMessages,omitempty"` - // Total number of AI Document Summarizations invoked in the requested period. - TotalAiSummarizations *int64 `json:"totalAiSummarizations,omitempty"` - // Total number of AI Answers generated in the requested period. - TotalAiAnswers *int64 `json:"totalAiAnswers,omitempty"` - // Total number of Chat messages which received upvotes by the user. - TotalUpvotes *int64 `json:"totalUpvotes,omitempty"` - // Total number of Chat messages which received downvotes by the user. - TotalDownvotes *int64 `json:"totalDownvotes,omitempty"` - // Total number of Gleanbot responses, both proactive and reactive. - TotalGleanbotResponses *int64 `json:"totalGleanbotResponses,omitempty"` - // Total number of Gleanbot responses shared publicly (upvoted). - TotalGleanbotResponsesShared *int64 `json:"totalGleanbotResponsesShared,omitempty"` - // Total number of Glean responses rejected as not helpful (downvoted). - TotalGleanbotResponsesNotHelpful *int64 `json:"totalGleanbotResponsesNotHelpful,omitempty"` - // list of departments applicable for users tab. - Departments []string `json:"departments,omitempty"` -} - -func (o *AiInsightsResponse) GetLastLogTimestamp() *int64 { - if o == nil { - return nil - } - return o.LastLogTimestamp -} - -func (o *AiInsightsResponse) GetAssistantInsights() []UserActivityInsight { - if o == nil { - return nil - } - return o.AssistantInsights -} - -func (o *AiInsightsResponse) GetTotalActiveAssistantUsers() *int64 { - if o == nil { - return nil - } - return o.TotalActiveAssistantUsers -} - -func (o *AiInsightsResponse) GetTotalChatMessages() *int64 { - if o == nil { - return nil - } - return o.TotalChatMessages -} - -func (o *AiInsightsResponse) GetTotalAiSummarizations() *int64 { - if o == nil { - return nil - } - return o.TotalAiSummarizations -} - -func (o *AiInsightsResponse) GetTotalAiAnswers() *int64 { - if o == nil { - return nil - } - return o.TotalAiAnswers -} - -func (o *AiInsightsResponse) GetTotalUpvotes() *int64 { - if o == nil { - return nil - } - return o.TotalUpvotes -} - -func (o *AiInsightsResponse) GetTotalDownvotes() *int64 { - if o == nil { - return nil - } - return o.TotalDownvotes -} - -func (o *AiInsightsResponse) GetTotalGleanbotResponses() *int64 { - if o == nil { - return nil - } - return o.TotalGleanbotResponses -} - -func (o *AiInsightsResponse) GetTotalGleanbotResponsesShared() *int64 { - if o == nil { - return nil - } - return o.TotalGleanbotResponsesShared -} - -func (o *AiInsightsResponse) GetTotalGleanbotResponsesNotHelpful() *int64 { - if o == nil { - return nil - } - return o.TotalGleanbotResponsesNotHelpful -} - -func (o *AiInsightsResponse) GetDepartments() []string { - if o == nil { - return nil - } - return o.Departments -} diff --git a/tests/mockserver/internal/sdk/models/components/allowlistoptions.go b/tests/mockserver/internal/sdk/models/components/allowlistoptions.go index cf238c9e..05ea9fc7 100644 --- a/tests/mockserver/internal/sdk/models/components/allowlistoptions.go +++ b/tests/mockserver/internal/sdk/models/components/allowlistoptions.go @@ -2,10 +2,12 @@ package components -// AllowlistOptions - Terms that are allow-listed during the scans. If any finding picked up by a rule exactly matches a term in the allow-list, it will not be counted as a violation. +// AllowlistOptions - Terms and regexes that are allow-listed during the scans. If any finding picked up by a rule exactly matches a term, or matches a regex, in the allow-list, it will not be counted as a violation. type AllowlistOptions struct { // list of words and phrases to consider as whitelisted content Terms []string `json:"terms,omitempty"` + // list of regular expressions whose matches are considered whitelisted content + Regexes []string `json:"regexes,omitempty"` } func (o *AllowlistOptions) GetTerms() []string { @@ -14,3 +16,10 @@ func (o *AllowlistOptions) GetTerms() []string { } return o.Terms } + +func (o *AllowlistOptions) GetRegexes() []string { + if o == nil { + return nil + } + return o.Regexes +} diff --git a/tests/mockserver/internal/sdk/models/components/announcement.go b/tests/mockserver/internal/sdk/models/components/announcement.go index c8744e43..89d299dc 100644 --- a/tests/mockserver/internal/sdk/models/components/announcement.go +++ b/tests/mockserver/internal/sdk/models/components/announcement.go @@ -113,6 +113,8 @@ type Announcement struct { // The opaque id of the associated draft. DraftID *int64 `json:"draftId,omitempty"` Permissions *ObjectPermissions `json:"permissions,omitempty"` + // An opaque token that represents this particular UGC. To be used for `/feedback` reporting. + TrackingToken *string `json:"trackingToken,omitempty"` // The opaque id of the announcement. ID *int64 `json:"id,omitempty"` Author *Person `json:"author,omitempty"` @@ -124,7 +126,8 @@ type Announcement struct { ViewerInfo *AnnouncementViewerInfo `json:"viewerInfo,omitempty"` SourceDocument *Document `json:"sourceDocument,omitempty"` // Whether or not the announcement is published. - IsPublished *bool `json:"isPublished,omitempty"` + IsPublished *bool `json:"isPublished,omitempty"` + FavoriteInfo *FavoriteInfo `json:"favoriteInfo,omitempty"` } func (a Announcement) MarshalJSON() ([]byte, error) { @@ -250,6 +253,13 @@ func (o *Announcement) GetPermissions() *ObjectPermissions { return o.Permissions } +func (o *Announcement) GetTrackingToken() *string { + if o == nil { + return nil + } + return o.TrackingToken +} + func (o *Announcement) GetID() *int64 { if o == nil { return nil @@ -305,3 +315,10 @@ func (o *Announcement) GetIsPublished() *bool { } return o.IsPublished } + +func (o *Announcement) GetFavoriteInfo() *FavoriteInfo { + if o == nil { + return nil + } + return o.FavoriteInfo +} diff --git a/tests/mockserver/internal/sdk/models/components/answer.go b/tests/mockserver/internal/sdk/models/components/answer.go index 6abae5b8..69609f52 100644 --- a/tests/mockserver/internal/sdk/models/components/answer.go +++ b/tests/mockserver/internal/sdk/models/components/answer.go @@ -47,7 +47,7 @@ type Answer struct { BodyText *string `json:"bodyText,omitempty"` // The parent board ID of this Answer, or 0 if it's a floating Answer. Adding Answers to Answer Boards is no longer permitted. // - // Deprecated: This will be removed in a future release, please migrate away from it as soon as possible. + // Deprecated: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Answer Boards no longer supported. BoardID *int64 `json:"boardId,omitempty"` // Filters which restrict who should see the answer. Values are taken from the corresponding filters in people search. AudienceFilters []FacetFilter `json:"audienceFilters,omitempty"` @@ -60,9 +60,11 @@ type Answer struct { SourceDocumentSpec *DocumentSpecUnion `json:"sourceDocumentSpec,omitempty"` SourceType *AnswerSourceType `json:"sourceType,omitempty"` Permissions *ObjectPermissions `json:"permissions,omitempty"` - CombinedAnswerText *StructuredText `json:"combinedAnswerText,omitempty"` - Likes *AnswerLikes `json:"likes,omitempty"` - Author *Person `json:"author,omitempty"` + // An opaque token that represents this particular UGC. To be used for `/feedback` reporting. + TrackingToken *string `json:"trackingToken,omitempty"` + CombinedAnswerText *StructuredText `json:"combinedAnswerText,omitempty"` + Likes *AnswerLikes `json:"likes,omitempty"` + Author *Person `json:"author,omitempty"` // The time the answer was created in ISO format (ISO 8601). CreateTime *time.Time `json:"createTime,omitempty"` // The time the answer was last updated in ISO format (ISO 8601). @@ -178,6 +180,13 @@ func (o *Answer) GetPermissions() *ObjectPermissions { return o.Permissions } +func (o *Answer) GetTrackingToken() *string { + if o == nil { + return nil + } + return o.TrackingToken +} + func (o *Answer) GetCombinedAnswerText() *StructuredText { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/components/answercreationdata.go b/tests/mockserver/internal/sdk/models/components/answercreationdata.go index 4050d341..529ec612 100644 --- a/tests/mockserver/internal/sdk/models/components/answercreationdata.go +++ b/tests/mockserver/internal/sdk/models/components/answercreationdata.go @@ -41,7 +41,7 @@ type AnswerCreationData struct { BodyText *string `json:"bodyText,omitempty"` // The parent board ID of this Answer, or 0 if it's a floating Answer. Adding Answers to Answer Boards is no longer permitted. // - // Deprecated: This will be removed in a future release, please migrate away from it as soon as possible. + // Deprecated: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Answer Boards no longer supported. BoardID *int64 `json:"boardId,omitempty"` // Filters which restrict who should see the answer. Values are taken from the corresponding filters in people search. AudienceFilters []FacetFilter `json:"audienceFilters,omitempty"` diff --git a/tests/mockserver/internal/sdk/models/components/answerresult.go b/tests/mockserver/internal/sdk/models/components/answerresult.go index f5687a60..d23fef57 100644 --- a/tests/mockserver/internal/sdk/models/components/answerresult.go +++ b/tests/mockserver/internal/sdk/models/components/answerresult.go @@ -4,8 +4,11 @@ package components type AnswerResult struct { Answer Answer `json:"answer"` - // An opaque token that represents this particular Answer. To be used for `/feedback` reporting. - TrackingToken *string `json:"trackingToken,omitempty"` + // Use `answer.trackingToken` instead. + // + // Deprecated: Deprecated on 2026-05-07, removal scheduled for 2027-01-15: Use `answer.trackingToken` instead.. + TrackingToken *string `json:"trackingToken,omitempty"` + FavoriteInfo *FavoriteInfo `json:"favoriteInfo,omitempty"` } func (o *AnswerResult) GetAnswer() Answer { @@ -21,3 +24,10 @@ func (o *AnswerResult) GetTrackingToken() *string { } return o.TrackingToken } + +func (o *AnswerResult) GetFavoriteInfo() *FavoriteInfo { + if o == nil { + return nil + } + return o.FavoriteInfo +} diff --git a/tests/mockserver/internal/sdk/models/components/assistantinsightsresponse.go b/tests/mockserver/internal/sdk/models/components/assistantinsightsresponse.go index a997b8f6..34f0d2d2 100644 --- a/tests/mockserver/internal/sdk/models/components/assistantinsightsresponse.go +++ b/tests/mockserver/internal/sdk/models/components/assistantinsightsresponse.go @@ -3,9 +3,9 @@ package components type AssistantInsightsResponse struct { - // Number of current Monthly Active Users, in the specified departments. + // Number of current Monthly Active Users. MonthlyActiveUsers *int64 `json:"monthlyActiveUsers,omitempty"` - // Number of current Weekly Active Users, in the specified departments. + // Number of current Weekly Active Users. WeeklyActiveUsers *int64 `json:"weeklyActiveUsers,omitempty"` // Unix timestamp of the last update for the insights data in the response. LastUpdatedTs *int64 `json:"lastUpdatedTs,omitempty"` diff --git a/tests/mockserver/internal/sdk/models/components/authconfig.go b/tests/mockserver/internal/sdk/models/components/authconfig.go index b1fc3f6b..6e47ddca 100644 --- a/tests/mockserver/internal/sdk/models/components/authconfig.go +++ b/tests/mockserver/internal/sdk/models/components/authconfig.go @@ -109,6 +109,72 @@ func (e *AuthConfigStatus) UnmarshalJSON(data []byte) error { } } +// TokenEndpointAuthMethod - The OAuth 2.0 token endpoint authentication method (RFC 7591). Determines how the client authenticates when exchanging an authorization code for a token. Values use lowercase to match the OAuth 2.0 wire format (RFC 7591 Section 2). +type TokenEndpointAuthMethod string + +const ( + TokenEndpointAuthMethodClientSecretPost TokenEndpointAuthMethod = "client_secret_post" + TokenEndpointAuthMethodClientSecretBasic TokenEndpointAuthMethod = "client_secret_basic" + TokenEndpointAuthMethodNone TokenEndpointAuthMethod = "none" + TokenEndpointAuthMethodPrivateKeyJwt TokenEndpointAuthMethod = "private_key_jwt" +) + +func (e TokenEndpointAuthMethod) ToPointer() *TokenEndpointAuthMethod { + return &e +} +func (e *TokenEndpointAuthMethod) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "client_secret_post": + fallthrough + case "client_secret_basic": + fallthrough + case "none": + fallthrough + case "private_key_jwt": + *e = TokenEndpointAuthMethod(v) + return nil + default: + return fmt.Errorf("invalid value for TokenEndpointAuthMethod: %v", v) + } +} + +// AuthHeaderType - Defines the header structure for sending the API key or token to the server. Defaults to AUTHORIZATION_BEARER. Select the specific header format the server expects for transmitting the key. +type AuthHeaderType string + +const ( + AuthHeaderTypeAuthorizationBearer AuthHeaderType = "AUTHORIZATION_BEARER" + AuthHeaderTypeAuthorizationToken AuthHeaderType = "AUTHORIZATION_TOKEN" + AuthHeaderTypeAuthorizationAPIKey AuthHeaderType = "AUTHORIZATION_API_KEY" + AuthHeaderTypeXAPIKey AuthHeaderType = "X_API_KEY" +) + +func (e AuthHeaderType) ToPointer() *AuthHeaderType { + return &e +} +func (e *AuthHeaderType) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "AUTHORIZATION_BEARER": + fallthrough + case "AUTHORIZATION_TOKEN": + fallthrough + case "AUTHORIZATION_API_KEY": + fallthrough + case "X_API_KEY": + *e = AuthHeaderType(v) + return nil + default: + return fmt.Errorf("invalid value for AuthHeaderType: %v", v) + } +} + // AuthConfig - Config for tool's authentication method. type AuthConfig struct { // Whether or not this tool is hosted on-premise. @@ -134,6 +200,12 @@ type AuthConfig struct { Audiences []string `json:"audiences,omitempty"` // The OAuth provider's endpoint, where access tokens are requested. AuthorizationURL *string `json:"authorization_url,omitempty"` + // The OAuth 2.0 Resource Indicator (RFC 8707) for the protected resource. Discovered from Protected Resource Metadata (RFC 9728) during DCR. Included in authorization and token exchange requests when present. + Resource *string `json:"resource,omitempty"` + // The OAuth 2.0 token endpoint authentication method (RFC 7591). Determines how the client authenticates when exchanging an authorization code for a token. Values use lowercase to match the OAuth 2.0 wire format (RFC 7591 Section 2). + TokenEndpointAuthMethod *TokenEndpointAuthMethod `json:"token_endpoint_auth_method,omitempty"` + // Defines the header structure for sending the API key or token to the server. Defaults to AUTHORIZATION_BEARER. Select the specific header format the server expects for transmitting the key. + AuthHeaderType *AuthHeaderType `json:"authHeaderType,omitempty"` // The time the tool was last authorized in ISO format (ISO 8601). LastAuthorizedAt *time.Time `json:"lastAuthorizedAt,omitempty"` } @@ -212,6 +284,27 @@ func (o *AuthConfig) GetAuthorizationURL() *string { return o.AuthorizationURL } +func (o *AuthConfig) GetResource() *string { + if o == nil { + return nil + } + return o.Resource +} + +func (o *AuthConfig) GetTokenEndpointAuthMethod() *TokenEndpointAuthMethod { + if o == nil { + return nil + } + return o.TokenEndpointAuthMethod +} + +func (o *AuthConfig) GetAuthHeaderType() *AuthHeaderType { + if o == nil { + return nil + } + return o.AuthHeaderType +} + func (o *AuthConfig) GetLastAuthorizedAt() *time.Time { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/components/authcontext.go b/tests/mockserver/internal/sdk/models/components/authcontext.go new file mode 100644 index 00000000..1b2c97ab --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/authcontext.go @@ -0,0 +1,16 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +// AuthContext - Context for authentication responses, containing identifiers for the entity being authenticated. +type AuthContext struct { + // ID of the MCP server (populated when toolType is MCP). + ServerID *string `json:"serverId,omitempty"` +} + +func (o *AuthContext) GetServerID() *string { + if o == nil { + return nil + } + return o.ServerID +} diff --git a/tests/mockserver/internal/sdk/models/components/authorizeactionpackrequest.go b/tests/mockserver/internal/sdk/models/components/authorizeactionpackrequest.go new file mode 100644 index 00000000..dc682969 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/authorizeactionpackrequest.go @@ -0,0 +1,17 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type AuthorizeActionPackRequest struct { + // URL on the customer's domain to redirect the end user's browser back to after the third-party OAuth + // callback completes. Must be present in the tenant's return URL allowlist. + // + ReturnURL string `json:"returnUrl"` +} + +func (o *AuthorizeActionPackRequest) GetReturnURL() string { + if o == nil { + return "" + } + return o.ReturnURL +} diff --git a/tests/mockserver/internal/sdk/models/components/authorizeactionpackresponse.go b/tests/mockserver/internal/sdk/models/components/authorizeactionpackresponse.go new file mode 100644 index 00000000..de205e6f --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/authorizeactionpackresponse.go @@ -0,0 +1,17 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type AuthorizeActionPackResponse struct { + // URL that the customer UI should navigate the end user to in order to begin the third-party OAuth flow. + // After the user consents, control returns to `returnUrl` from the request. + // + RedirectURL string `json:"redirectUrl"` +} + +func (o *AuthorizeActionPackResponse) GetRedirectURL() string { + if o == nil { + return "" + } + return o.RedirectURL +} diff --git a/tests/mockserver/internal/sdk/models/components/authorizetoolserverrequest.go b/tests/mockserver/internal/sdk/models/components/authorizetoolserverrequest.go new file mode 100644 index 00000000..2af86c39 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/authorizetoolserverrequest.go @@ -0,0 +1,17 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type AuthorizeToolServerRequest struct { + // URL to redirect the end user's browser back to after the OAuth flow completes. + // Must be present in the tenant's configured return URL allowlist. + // + ReturnURL string `json:"returnUrl"` +} + +func (o *AuthorizeToolServerRequest) GetReturnURL() string { + if o == nil { + return "" + } + return o.ReturnURL +} diff --git a/tests/mockserver/internal/sdk/models/components/authorizetoolserverresponse.go b/tests/mockserver/internal/sdk/models/components/authorizetoolserverresponse.go new file mode 100644 index 00000000..c5202d3b --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/authorizetoolserverresponse.go @@ -0,0 +1,17 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type AuthorizeToolServerResponse struct { + // URL that the client should navigate the end user to in order to begin the OAuth flow. + // After the user consents, control returns to `returnUrl` from the request. + // + AuthorizationURL string `json:"authorizationUrl"` +} + +func (o *AuthorizeToolServerResponse) GetAuthorizationURL() string { + if o == nil { + return "" + } + return o.AuthorizationURL +} diff --git a/tests/mockserver/internal/sdk/models/components/authstatus.go b/tests/mockserver/internal/sdk/models/components/authstatus.go new file mode 100644 index 00000000..ea2c6627 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/authstatus.go @@ -0,0 +1,44 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" +) + +// AuthStatus - The per-user authorization status for a datasource. +type AuthStatus string + +const ( + AuthStatusDisabled AuthStatus = "DISABLED" + AuthStatusAwaitingAuth AuthStatus = "AWAITING_AUTH" + AuthStatusAuthorized AuthStatus = "AUTHORIZED" + AuthStatusStaleOauth AuthStatus = "STALE_OAUTH" + AuthStatusSegMigration AuthStatus = "SEG_MIGRATION" +) + +func (e AuthStatus) ToPointer() *AuthStatus { + return &e +} +func (e *AuthStatus) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "DISABLED": + fallthrough + case "AWAITING_AUTH": + fallthrough + case "AUTHORIZED": + fallthrough + case "STALE_OAUTH": + fallthrough + case "SEG_MIGRATION": + *e = AuthStatus(v) + return nil + default: + return fmt.Errorf("invalid value for AuthStatus: %v", v) + } +} diff --git a/tests/mockserver/internal/sdk/models/components/autocompleteresponse.go b/tests/mockserver/internal/sdk/models/components/autocompleteresponse.go index 7e2ca2ff..b5b93358 100644 --- a/tests/mockserver/internal/sdk/models/components/autocompleteresponse.go +++ b/tests/mockserver/internal/sdk/models/components/autocompleteresponse.go @@ -10,8 +10,8 @@ type AutocompleteResponse struct { SessionInfo *SessionInfo `json:"sessionInfo,omitempty"` Results []AutocompleteResult `json:"results,omitempty"` // Subsections of the results list from which distinct sections should be created. - Groups []AutocompleteResultGroup `json:"groups,omitempty"` - GleanDataError *GleanDataError `json:"errorInfo,omitempty"` + Groups []AutocompleteResultGroup `json:"groups,omitempty"` + ErrorInfo *GleanDataError `json:"errorInfo,omitempty"` // Time in milliseconds the backend took to respond to the request. BackendTimeMillis *int64 `json:"backendTimeMillis,omitempty"` } @@ -51,11 +51,11 @@ func (o *AutocompleteResponse) GetGroups() []AutocompleteResultGroup { return o.Groups } -func (o *AutocompleteResponse) GetGleanDataError() *GleanDataError { +func (o *AutocompleteResponse) GetErrorInfo() *GleanDataError { if o == nil { return nil } - return o.GleanDataError + return o.ErrorInfo } func (o *AutocompleteResponse) GetBackendTimeMillis() *int64 { diff --git a/tests/mockserver/internal/sdk/models/components/calendarevent.go b/tests/mockserver/internal/sdk/models/components/calendarevent.go index 33ac7433..9086716f 100644 --- a/tests/mockserver/internal/sdk/models/components/calendarevent.go +++ b/tests/mockserver/internal/sdk/models/components/calendarevent.go @@ -5,6 +5,7 @@ package components import ( "encoding/json" "fmt" + "mockserver/internal/sdk/optionalnullable" ) // CalendarEventEventType - The nature of the event, for example "out of office". @@ -44,6 +45,12 @@ type CalendarEvent struct { // A permalink for this calendar event URL string `json:"url"` Attendees *CalendarAttendees `json:"attendees,omitempty"` + // Whether the requesting user is the organizer of this event. + IsOrganizer optionalnullable.OptionalNullable[bool] `json:"isOrganizer,omitempty"` + // The current booking status of the room resource associated with an event. + RoomBookingStatus *CalendarRoomBookingStatus `json:"roomBookingStatus,omitempty"` + // The display name of the room resource associated with this event. + RoomName *string `json:"roomName,omitempty"` // The location that this event is taking place at. Location *string `json:"location,omitempty"` ConferenceData *ConferenceData `json:"conferenceData,omitempty"` @@ -94,6 +101,27 @@ func (o *CalendarEvent) GetAttendees() *CalendarAttendees { return o.Attendees } +func (o *CalendarEvent) GetIsOrganizer() optionalnullable.OptionalNullable[bool] { + if o == nil { + return nil + } + return o.IsOrganizer +} + +func (o *CalendarEvent) GetRoomBookingStatus() *CalendarRoomBookingStatus { + if o == nil { + return nil + } + return o.RoomBookingStatus +} + +func (o *CalendarEvent) GetRoomName() *string { + if o == nil { + return nil + } + return o.RoomName +} + func (o *CalendarEvent) GetLocation() *string { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/components/calendarroombookingstatus.go b/tests/mockserver/internal/sdk/models/components/calendarroombookingstatus.go new file mode 100644 index 00000000..1f0d7819 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/calendarroombookingstatus.go @@ -0,0 +1,41 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" +) + +// CalendarRoomBookingStatus - The current booking status of the room resource associated with an event. +type CalendarRoomBookingStatus string + +const ( + CalendarRoomBookingStatusNone CalendarRoomBookingStatus = "NONE" + CalendarRoomBookingStatusAccepted CalendarRoomBookingStatus = "ACCEPTED" + CalendarRoomBookingStatusDeclined CalendarRoomBookingStatus = "DECLINED" + CalendarRoomBookingStatusPending CalendarRoomBookingStatus = "PENDING" +) + +func (e CalendarRoomBookingStatus) ToPointer() *CalendarRoomBookingStatus { + return &e +} +func (e *CalendarRoomBookingStatus) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "NONE": + fallthrough + case "ACCEPTED": + fallthrough + case "DECLINED": + fallthrough + case "PENDING": + *e = CalendarRoomBookingStatus(v) + return nil + default: + return fmt.Errorf("invalid value for CalendarRoomBookingStatus: %v", v) + } +} diff --git a/tests/mockserver/internal/sdk/models/components/chatfilestatus.go b/tests/mockserver/internal/sdk/models/components/chatfilestatus.go index 7f192a89..95c73786 100644 --- a/tests/mockserver/internal/sdk/models/components/chatfilestatus.go +++ b/tests/mockserver/internal/sdk/models/components/chatfilestatus.go @@ -11,10 +11,11 @@ import ( type ChatFileStatus string const ( - ChatFileStatusProcessing ChatFileStatus = "PROCESSING" - ChatFileStatusProcessed ChatFileStatus = "PROCESSED" - ChatFileStatusFailed ChatFileStatus = "FAILED" - ChatFileStatusDeleted ChatFileStatus = "DELETED" + ChatFileStatusProcessing ChatFileStatus = "PROCESSING" + ChatFileStatusProcessed ChatFileStatus = "PROCESSED" + ChatFileStatusPartiallyProcessed ChatFileStatus = "PARTIALLY_PROCESSED" + ChatFileStatusFailed ChatFileStatus = "FAILED" + ChatFileStatusDeleted ChatFileStatus = "DELETED" ) func (e ChatFileStatus) ToPointer() *ChatFileStatus { @@ -30,6 +31,8 @@ func (e *ChatFileStatus) UnmarshalJSON(data []byte) error { fallthrough case "PROCESSED": fallthrough + case "PARTIALLY_PROCESSED": + fallthrough case "FAILED": fallthrough case "DELETED": diff --git a/tests/mockserver/internal/sdk/models/components/chatmessage.go b/tests/mockserver/internal/sdk/models/components/chatmessage.go index 3e9895b5..3ab0cd39 100644 --- a/tests/mockserver/internal/sdk/models/components/chatmessage.go +++ b/tests/mockserver/internal/sdk/models/components/chatmessage.go @@ -38,15 +38,21 @@ func (e *Author) UnmarshalJSON(data []byte) error { type MessageType string const ( - MessageTypeUpdate MessageType = "UPDATE" - MessageTypeContent MessageType = "CONTENT" - MessageTypeContext MessageType = "CONTEXT" - MessageTypeDebug MessageType = "DEBUG" - MessageTypeDebugExternal MessageType = "DEBUG_EXTERNAL" - MessageTypeError MessageType = "ERROR" - MessageTypeHeading MessageType = "HEADING" - MessageTypeWarning MessageType = "WARNING" - MessageTypeServerTool MessageType = "SERVER_TOOL" + MessageTypeUpdate MessageType = "UPDATE" + MessageTypeContent MessageType = "CONTENT" + MessageTypeContext MessageType = "CONTEXT" + MessageTypeControl MessageType = "CONTROL" + MessageTypeControlStart MessageType = "CONTROL_START" + MessageTypeControlFinish MessageType = "CONTROL_FINISH" + MessageTypeControlCancel MessageType = "CONTROL_CANCEL" + MessageTypeControlRetry MessageType = "CONTROL_RETRY" + MessageTypeControlUnknown MessageType = "CONTROL_UNKNOWN" + MessageTypeDebug MessageType = "DEBUG" + MessageTypeDebugExternal MessageType = "DEBUG_EXTERNAL" + MessageTypeError MessageType = "ERROR" + MessageTypeHeading MessageType = "HEADING" + MessageTypeWarning MessageType = "WARNING" + MessageTypeServerTool MessageType = "SERVER_TOOL" ) func (e MessageType) ToPointer() *MessageType { @@ -64,6 +70,18 @@ func (e *MessageType) UnmarshalJSON(data []byte) error { fallthrough case "CONTEXT": fallthrough + case "CONTROL": + fallthrough + case "CONTROL_START": + fallthrough + case "CONTROL_FINISH": + fallthrough + case "CONTROL_CANCEL": + fallthrough + case "CONTROL_RETRY": + fallthrough + case "CONTROL_UNKNOWN": + fallthrough case "DEBUG": fallthrough case "DEBUG_EXTERNAL": @@ -87,7 +105,9 @@ type ChatMessage struct { // Describes the agent that executes the request. AgentConfig *AgentConfig `json:"agentConfig,omitempty"` Author *Author `default:"USER" json:"author"` - // A list of Citations that were used to generate the response. + // Deprecated: Use inline citations via ChatMessageFragment.citation instead. For detailed reference information, use ChatMessageCitation.referenceRanges. This field is still populated for backward compatibility. + // + // Deprecated: Deprecated on 2026-02-06, removal scheduled for 2026-10-15: Use inline citations via ChatMessageFragment.citation and ChatMessageCitation.referenceRanges instead. This field is still populated for backward compatibility.. Citations []ChatMessageCitation `json:"citations,omitempty"` // IDs of files uploaded in the message that are referenced to generate the answer. UploadedFileIds []string `json:"uploadedFileIds,omitempty"` diff --git a/tests/mockserver/internal/sdk/models/components/chatmessagecitation.go b/tests/mockserver/internal/sdk/models/components/chatmessagecitation.go index fd3e6a32..f06157bc 100644 --- a/tests/mockserver/internal/sdk/models/components/chatmessagecitation.go +++ b/tests/mockserver/internal/sdk/models/components/chatmessagecitation.go @@ -8,8 +8,11 @@ type ChatMessageCitation struct { TrackingToken *string `json:"trackingToken,omitempty"` SourceDocument *Document `json:"sourceDocument,omitempty"` // Structure for file uploaded by a user for Chat. - SourceFile *ChatFile `json:"sourceFile,omitempty"` - SourcePerson *Person `json:"sourcePerson,omitempty"` + SourceFile *ChatFile `json:"sourceFile,omitempty"` + SourcePerson *Person `json:"sourcePerson,omitempty"` + SourceCustomEntity *CustomEntity `json:"sourceCustomEntity,omitempty"` + // A skill cited by Assistant. + SourceSkill *ChatSkill `json:"sourceSkill,omitempty"` // Each reference range and its corresponding snippets ReferenceRanges []ReferenceRange `json:"referenceRanges,omitempty"` } @@ -42,6 +45,20 @@ func (o *ChatMessageCitation) GetSourcePerson() *Person { return o.SourcePerson } +func (o *ChatMessageCitation) GetSourceCustomEntity() *CustomEntity { + if o == nil { + return nil + } + return o.SourceCustomEntity +} + +func (o *ChatMessageCitation) GetSourceSkill() *ChatSkill { + if o == nil { + return nil + } + return o.SourceSkill +} + func (o *ChatMessageCitation) GetReferenceRanges() []ReferenceRange { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/components/chatmessagefragment.go b/tests/mockserver/internal/sdk/models/components/chatmessagefragment.go index 4a0507c9..632727b0 100644 --- a/tests/mockserver/internal/sdk/models/components/chatmessagefragment.go +++ b/tests/mockserver/internal/sdk/models/components/chatmessagefragment.go @@ -14,7 +14,23 @@ type ChatMessageFragment struct { File *ChatFile `json:"file,omitempty"` Action *ToolInfo `json:"action,omitempty"` // Information about the source for a ChatMessage. - Citation *ChatMessageCitation `json:"citation,omitempty"` + Citation *ChatMessageCitation `json:"citation,omitempty"` + ServerToolRequest *ServerToolRequest `json:"serverToolRequest,omitempty"` + // Response to a server tool request. The applicable fields depend on requestType: + // + // For EXECUTION requests: + // - isGranted: whether tool execution is approved + // - reason: optional explanation + // + // For AUTHENTICATION_SUGGESTION requests: + // - isGranted: whether auth completed successfully (true=connected, false=skipped) + // - authContext: contains serverId or actionPackId for identifying the authenticated entity + // - reason: optional explanation for skip + // + // For VOTE_SUGGESTION requests: + // - voted: whether the user voted for this tool + // + ServerToolResponse *ServerToolResponse `json:"serverToolResponse,omitempty"` } func (o *ChatMessageFragment) GetStructuredResults() []StructuredResult { @@ -65,3 +81,17 @@ func (o *ChatMessageFragment) GetCitation() *ChatMessageCitation { } return o.Citation } + +func (o *ChatMessageFragment) GetServerToolRequest() *ServerToolRequest { + if o == nil { + return nil + } + return o.ServerToolRequest +} + +func (o *ChatMessageFragment) GetServerToolResponse() *ServerToolResponse { + if o == nil { + return nil + } + return o.ServerToolResponse +} diff --git a/tests/mockserver/internal/sdk/models/components/chatresponse.go b/tests/mockserver/internal/sdk/models/components/chatresponse.go index a6f51d28..2638334d 100644 --- a/tests/mockserver/internal/sdk/models/components/chatresponse.go +++ b/tests/mockserver/internal/sdk/models/components/chatresponse.go @@ -7,6 +7,8 @@ type ChatResponse struct { Messages []ChatMessage `json:"messages,omitempty"` // The id of the associated Chat the messages belong to, if one exists. ChatID *string `json:"chatId,omitempty"` + // Metadata of a Chat a user had with Glean Assistant. This contains no actual conversational content. + Chat *ChatMetadata `json:"chat,omitempty"` // Follow-up prompts for the user to potentially use FollowUpPrompts []string `json:"followUpPrompts,omitempty"` // Time in milliseconds the backend took to respond to the request. @@ -29,6 +31,13 @@ func (o *ChatResponse) GetChatID() *string { return o.ChatID } +func (o *ChatResponse) GetChat() *ChatMetadata { + if o == nil { + return nil + } + return o.Chat +} + func (o *ChatResponse) GetFollowUpPrompts() []string { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/components/chatskill.go b/tests/mockserver/internal/sdk/models/components/chatskill.go new file mode 100644 index 00000000..33e8680d --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/chatskill.go @@ -0,0 +1,34 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +// ChatSkill - A skill cited by Assistant. +type ChatSkill struct { + // Artifact ID of the skill. + ID string `json:"id"` + // Name of the skill. + Name *string `json:"name,omitempty"` + // URL for viewing the skill. + URL *string `json:"url,omitempty"` +} + +func (o *ChatSkill) GetID() string { + if o == nil { + return "" + } + return o.ID +} + +func (o *ChatSkill) GetName() *string { + if o == nil { + return nil + } + return o.Name +} + +func (o *ChatSkill) GetURL() *string { + if o == nil { + return nil + } + return o.URL +} diff --git a/tests/mockserver/internal/sdk/models/components/chatsuggestion.go b/tests/mockserver/internal/sdk/models/components/chatsuggestion.go index d6c0bfb0..b8269ceb 100644 --- a/tests/mockserver/internal/sdk/models/components/chatsuggestion.go +++ b/tests/mockserver/internal/sdk/models/components/chatsuggestion.go @@ -5,8 +5,12 @@ package components type ChatSuggestion struct { // The actionable chat query to run when the user selects this suggestion. Query *string `json:"query,omitempty"` + // Button text to show for the suggestion action. + Cta *string `json:"cta,omitempty"` // Targeted Glean Chat feature for the suggestion. Feature *string `json:"feature,omitempty"` + // Document IDs that grounded the suggestion. + SourceDocumentIds []string `json:"sourceDocumentIds,omitempty"` } func (o *ChatSuggestion) GetQuery() *string { @@ -16,9 +20,23 @@ func (o *ChatSuggestion) GetQuery() *string { return o.Query } +func (o *ChatSuggestion) GetCta() *string { + if o == nil { + return nil + } + return o.Cta +} + func (o *ChatSuggestion) GetFeature() *string { if o == nil { return nil } return o.Feature } + +func (o *ChatSuggestion) GetSourceDocumentIds() []string { + if o == nil { + return nil + } + return o.SourceDocumentIds +} diff --git a/tests/mockserver/internal/sdk/models/components/checkdatasourceauthresponse.go b/tests/mockserver/internal/sdk/models/components/checkdatasourceauthresponse.go new file mode 100644 index 00000000..978854e6 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/checkdatasourceauthresponse.go @@ -0,0 +1,16 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type CheckDatasourceAuthResponse struct { + // Datasource instances that require per-user OAuth authorization. Empty when all datasources are authorized. + // + UnauthorizedDatasourceInstances []UnauthorizedDatasourceInstance `json:"unauthorizedDatasourceInstances"` +} + +func (o *CheckDatasourceAuthResponse) GetUnauthorizedDatasourceInstances() []UnauthorizedDatasourceInstance { + if o == nil { + return []UnauthorizedDatasourceInstance{} + } + return o.UnauthorizedDatasourceInstances +} diff --git a/tests/mockserver/internal/sdk/models/components/collection.go b/tests/mockserver/internal/sdk/models/components/collection.go index 29d98fc1..74425a96 100644 --- a/tests/mockserver/internal/sdk/models/components/collection.go +++ b/tests/mockserver/internal/sdk/models/components/collection.go @@ -28,6 +28,8 @@ type Collection struct { // The datasource type this Collection can hold. AllowedDatasource *string `json:"allowedDatasource,omitempty"` Permissions *ObjectPermissions `json:"permissions,omitempty"` + // An opaque token that represents this particular UGC. To be used for `/feedback` reporting. + TrackingToken *string `json:"trackingToken,omitempty"` // The unique ID of the Collection. ID int64 `json:"id"` CreateTime *time.Time `json:"createTime,omitempty"` @@ -46,7 +48,8 @@ type Collection struct { // The children Collections of this Collection. Children []Collection `json:"children,omitempty"` // A list of user roles for the Collection. - Roles []UserRoleSpecification `json:"roles,omitempty"` + Roles []UserRoleSpecification `json:"roles,omitempty"` + FavoriteInfo *FavoriteInfo `json:"favoriteInfo,omitempty"` } func (c Collection) MarshalJSON() ([]byte, error) { @@ -137,6 +140,13 @@ func (o *Collection) GetPermissions() *ObjectPermissions { return o.Permissions } +func (o *Collection) GetTrackingToken() *string { + if o == nil { + return nil + } + return o.TrackingToken +} + func (o *Collection) GetID() int64 { if o == nil { return 0 @@ -220,3 +230,10 @@ func (o *Collection) GetRoles() []UserRoleSpecification { } return o.Roles } + +func (o *Collection) GetFavoriteInfo() *FavoriteInfo { + if o == nil { + return nil + } + return o.FavoriteInfo +} diff --git a/tests/mockserver/internal/sdk/models/components/collectionerror.go b/tests/mockserver/internal/sdk/models/components/collectionerror.go index 1cf4a37d..2524a204 100644 --- a/tests/mockserver/internal/sdk/models/components/collectionerror.go +++ b/tests/mockserver/internal/sdk/models/components/collectionerror.go @@ -18,6 +18,7 @@ const ( CollectionErrorErrorCodeHeightViolation CollectionErrorErrorCode = "HEIGHT_VIOLATION" CollectionErrorErrorCodeWidthViolation CollectionErrorErrorCode = "WIDTH_VIOLATION" CollectionErrorErrorCodeNoPermissions CollectionErrorErrorCode = "NO_PERMISSIONS" + CollectionErrorErrorCodeCorruptItem CollectionErrorErrorCode = "CORRUPT_ITEM" ) func (e CollectionErrorErrorCode) ToPointer() *CollectionErrorErrorCode { @@ -42,6 +43,8 @@ func (e *CollectionErrorErrorCode) UnmarshalJSON(data []byte) error { case "WIDTH_VIOLATION": fallthrough case "NO_PERMISSIONS": + fallthrough + case "CORRUPT_ITEM": *e = CollectionErrorErrorCode(v) return nil default: diff --git a/tests/mockserver/internal/sdk/models/components/configurationvalue.go b/tests/mockserver/internal/sdk/models/components/configurationvalue.go new file mode 100644 index 00000000..f6fc2161 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/configurationvalue.go @@ -0,0 +1,25 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +// ConfigurationValue - A single configuration value, either a scalar or a list +type ConfigurationValue struct { + // The configuration value as a string. Only one of value or valueList should be populated. + Value *string `json:"value,omitempty"` + // The configuration value as a list of strings. Only one of value or valueList should be populated. + ValueList []string `json:"valueList,omitempty"` +} + +func (o *ConfigurationValue) GetValue() *string { + if o == nil { + return nil + } + return o.Value +} + +func (o *ConfigurationValue) GetValueList() []string { + if o == nil { + return nil + } + return o.ValueList +} diff --git a/tests/mockserver/internal/sdk/models/components/contentinsightsresponse.go b/tests/mockserver/internal/sdk/models/components/contentinsightsresponse.go deleted file mode 100644 index e417efa7..00000000 --- a/tests/mockserver/internal/sdk/models/components/contentinsightsresponse.go +++ /dev/null @@ -1,51 +0,0 @@ -// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - -package components - -type ContentInsightsResponse struct { - // Unix timestamp of the last activity processed to make the response (in seconds since epoch UTC). - LastLogTimestamp *int64 `json:"lastLogTimestamp,omitempty"` - // Insights for documents. - DocumentInsights []DocumentInsight `json:"documentInsights,omitempty"` - // list of departments applicable for contents tab. - Departments []string `json:"departments,omitempty"` - // Min threshold in size of departments while populating results, otherwise 0. - MinDepartmentSizeThreshold *int64 `json:"minDepartmentSizeThreshold,omitempty"` - // Minimum number of visitors to a document required to be included in insights. - MinVisitorThreshold *int64 `json:"minVisitorThreshold,omitempty"` -} - -func (o *ContentInsightsResponse) GetLastLogTimestamp() *int64 { - if o == nil { - return nil - } - return o.LastLogTimestamp -} - -func (o *ContentInsightsResponse) GetDocumentInsights() []DocumentInsight { - if o == nil { - return nil - } - return o.DocumentInsights -} - -func (o *ContentInsightsResponse) GetDepartments() []string { - if o == nil { - return nil - } - return o.Departments -} - -func (o *ContentInsightsResponse) GetMinDepartmentSizeThreshold() *int64 { - if o == nil { - return nil - } - return o.MinDepartmentSizeThreshold -} - -func (o *ContentInsightsResponse) GetMinVisitorThreshold() *int64 { - if o == nil { - return nil - } - return o.MinVisitorThreshold -} diff --git a/tests/mockserver/internal/sdk/models/components/createworkflowrequest.go b/tests/mockserver/internal/sdk/models/components/createworkflowrequest.go new file mode 100644 index 00000000..277dd8b7 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/createworkflowrequest.go @@ -0,0 +1,33 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type CreateWorkflowRequest struct { + // The name of the workflow. + Name *string `json:"name,omitempty"` + // Used to create a transient workflow. + Transient *bool `json:"transient,omitempty"` + // id of the parent workflow for transient workflows + ParentWorkflowID *string `json:"parentWorkflowId,omitempty"` +} + +func (o *CreateWorkflowRequest) GetName() *string { + if o == nil { + return nil + } + return o.Name +} + +func (o *CreateWorkflowRequest) GetTransient() *bool { + if o == nil { + return nil + } + return o.Transient +} + +func (o *CreateWorkflowRequest) GetParentWorkflowID() *string { + if o == nil { + return nil + } + return o.ParentWorkflowID +} diff --git a/tests/mockserver/internal/sdk/models/components/currentactiveusers.go b/tests/mockserver/internal/sdk/models/components/currentactiveusers.go index f4a046ec..c1398b96 100644 --- a/tests/mockserver/internal/sdk/models/components/currentactiveusers.go +++ b/tests/mockserver/internal/sdk/models/components/currentactiveusers.go @@ -3,9 +3,9 @@ package components type CurrentActiveUsers struct { - // Number of current Monthly Active Users, in the specified departments. + // Number of current Monthly Active Users. MonthlyActiveUsers *int64 `json:"monthlyActiveUsers,omitempty"` - // Number of current Weekly Active Users, in the specified departments. + // Number of current Weekly Active Users. WeeklyActiveUsers *int64 `json:"weeklyActiveUsers,omitempty"` } diff --git a/tests/mockserver/internal/sdk/models/components/customdatasourceconfig.go b/tests/mockserver/internal/sdk/models/components/customdatasourceconfig.go index 070e9e35..4316d060 100644 --- a/tests/mockserver/internal/sdk/models/components/customdatasourceconfig.go +++ b/tests/mockserver/internal/sdk/models/components/customdatasourceconfig.go @@ -30,6 +30,8 @@ const ( DatasourceCategoryEntity DatasourceCategory = "ENTITY" DatasourceCategoryCalendar DatasourceCategory = "CALENDAR" DatasourceCategoryAgents DatasourceCategory = "AGENTS" + DatasourceCategoryAiConversation DatasourceCategory = "AI_CONVERSATION" + DatasourceCategoryAiArtifact DatasourceCategory = "AI_ARTIFACT" ) func (e DatasourceCategory) ToPointer() *DatasourceCategory { @@ -76,6 +78,10 @@ func (e *DatasourceCategory) UnmarshalJSON(data []byte) error { case "CALENDAR": fallthrough case "AGENTS": + fallthrough + case "AI_CONVERSATION": + fallthrough + case "AI_ARTIFACT": *e = DatasourceCategory(v) return nil default: diff --git a/tests/mockserver/internal/sdk/models/components/custommetadatapropertydefinition.go b/tests/mockserver/internal/sdk/models/components/custommetadatapropertydefinition.go new file mode 100644 index 00000000..e3351e45 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/custommetadatapropertydefinition.go @@ -0,0 +1,72 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" +) + +// CustomMetadataPropertyDefinitionPropertyType - The type of metadata key. This governs the search and faceting behavior. +type CustomMetadataPropertyDefinitionPropertyType string + +const ( + CustomMetadataPropertyDefinitionPropertyTypeText CustomMetadataPropertyDefinitionPropertyType = "TEXT" + CustomMetadataPropertyDefinitionPropertyTypePicklist CustomMetadataPropertyDefinitionPropertyType = "PICKLIST" + CustomMetadataPropertyDefinitionPropertyTypeTextlist CustomMetadataPropertyDefinitionPropertyType = "TEXTLIST" + CustomMetadataPropertyDefinitionPropertyTypeMultipicklist CustomMetadataPropertyDefinitionPropertyType = "MULTIPICKLIST" +) + +func (e CustomMetadataPropertyDefinitionPropertyType) ToPointer() *CustomMetadataPropertyDefinitionPropertyType { + return &e +} +func (e *CustomMetadataPropertyDefinitionPropertyType) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "TEXT": + fallthrough + case "PICKLIST": + fallthrough + case "TEXTLIST": + fallthrough + case "MULTIPICKLIST": + *e = CustomMetadataPropertyDefinitionPropertyType(v) + return nil + default: + return fmt.Errorf("invalid value for CustomMetadataPropertyDefinitionPropertyType: %v", v) + } +} + +// CustomMetadataPropertyDefinition - The definition for a key within a Custom Metadata schema. Only the fields applicable to Custom Metadata are exposed. +type CustomMetadataPropertyDefinition struct { + // The name of the metadata key. + Name string `json:"name"` + // The type of metadata key. This governs the search and faceting behavior. + PropertyType CustomMetadataPropertyDefinitionPropertyType `json:"propertyType"` + // If true then the property will not be indexed for retrieval and ranking. + SkipIndexing *bool `json:"skipIndexing,omitempty"` +} + +func (o *CustomMetadataPropertyDefinition) GetName() string { + if o == nil { + return "" + } + return o.Name +} + +func (o *CustomMetadataPropertyDefinition) GetPropertyType() CustomMetadataPropertyDefinitionPropertyType { + if o == nil { + return CustomMetadataPropertyDefinitionPropertyType("") + } + return o.PropertyType +} + +func (o *CustomMetadataPropertyDefinition) GetSkipIndexing() *bool { + if o == nil { + return nil + } + return o.SkipIndexing +} diff --git a/tests/mockserver/internal/sdk/models/components/custommetadataputrequest.go b/tests/mockserver/internal/sdk/models/components/custommetadataputrequest.go new file mode 100644 index 00000000..fe2262c3 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/custommetadataputrequest.go @@ -0,0 +1,16 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +// CustomMetadataPutRequest - Request body for adding or updating custom metadata on a document +type CustomMetadataPutRequest struct { + // Array of custom metadata key-value pairs + CustomMetadata []CustomProperty `json:"customMetadata"` +} + +func (o *CustomMetadataPutRequest) GetCustomMetadata() []CustomProperty { + if o == nil { + return []CustomProperty{} + } + return o.CustomMetadata +} diff --git a/tests/mockserver/internal/sdk/models/components/custommetadataschema.go b/tests/mockserver/internal/sdk/models/components/custommetadataschema.go new file mode 100644 index 00000000..8f4e09bf --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/custommetadataschema.go @@ -0,0 +1,16 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +// CustomMetadataSchema - Schema for custom metadata containing metadata key definitions +type CustomMetadataSchema struct { + // Array of metadata key definitions + MetadataKeys []CustomMetadataPropertyDefinition `json:"metadataKeys"` +} + +func (o *CustomMetadataSchema) GetMetadataKeys() []CustomMetadataPropertyDefinition { + if o == nil { + return []CustomMetadataPropertyDefinition{} + } + return o.MetadataKeys +} diff --git a/tests/mockserver/internal/sdk/models/components/customproperty.go b/tests/mockserver/internal/sdk/models/components/customproperty.go index 8b4884e4..8dc67a97 100644 --- a/tests/mockserver/internal/sdk/models/components/customproperty.go +++ b/tests/mockserver/internal/sdk/models/components/customproperty.go @@ -5,7 +5,7 @@ package components // CustomProperty - Describes the custom properties of the object. type CustomProperty struct { Name *string `json:"name,omitempty"` - // Must either be a string or an array of strings. An integer, boolean, etc. is not valid. When OpenAPI Generator supports `oneOf`, we can semantically enforce this. + // Must be a string, a number (for INT properties), or an array of strings. A boolean is not valid. When OpenAPI Generator supports `oneOf`, we can semantically enforce this. Value any `json:"value,omitempty"` } diff --git a/tests/mockserver/internal/sdk/models/components/datasourceconfigurationresponse.go b/tests/mockserver/internal/sdk/models/components/datasourceconfigurationresponse.go new file mode 100644 index 00000000..0453f9ea --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/datasourceconfigurationresponse.go @@ -0,0 +1,16 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +// DatasourceConfigurationResponse - The greenlisted configuration values for a datasource instance. Only keys that are exposed via the public API greenlist are included. +type DatasourceConfigurationResponse struct { + // Configuration for a datasource instance + Configuration DatasourceInstanceConfiguration `json:"configuration"` +} + +func (o *DatasourceConfigurationResponse) GetConfiguration() DatasourceInstanceConfiguration { + if o == nil { + return DatasourceInstanceConfiguration{} + } + return o.Configuration +} diff --git a/tests/mockserver/internal/sdk/models/components/datasourcecredentialstatus.go b/tests/mockserver/internal/sdk/models/components/datasourcecredentialstatus.go new file mode 100644 index 00000000..1a8b125a --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/datasourcecredentialstatus.go @@ -0,0 +1,44 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" +) + +// DatasourceCredentialStatus - Lifecycle state of the credentials installed for a datasource instance. Mirrors the internal admin Status enum so the handler can surface the same health signals already tracked today. EXPIRING_SOON is represented as VALID_WITH_WARNINGS (with detail in `message`); EXPIRED is surfaced as INVALID plus a non-null `expiresAt` in the past. +type DatasourceCredentialStatus string + +const ( + DatasourceCredentialStatusValid DatasourceCredentialStatus = "VALID" + DatasourceCredentialStatusValidWithWarnings DatasourceCredentialStatus = "VALID_WITH_WARNINGS" + DatasourceCredentialStatusValidating DatasourceCredentialStatus = "VALIDATING" + DatasourceCredentialStatusInvalid DatasourceCredentialStatus = "INVALID" + DatasourceCredentialStatusMissing DatasourceCredentialStatus = "MISSING" +) + +func (e DatasourceCredentialStatus) ToPointer() *DatasourceCredentialStatus { + return &e +} +func (e *DatasourceCredentialStatus) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "VALID": + fallthrough + case "VALID_WITH_WARNINGS": + fallthrough + case "VALIDATING": + fallthrough + case "INVALID": + fallthrough + case "MISSING": + *e = DatasourceCredentialStatus(v) + return nil + default: + return fmt.Errorf("invalid value for DatasourceCredentialStatus: %v", v) + } +} diff --git a/tests/mockserver/internal/sdk/models/components/datasourcecredentialstatusresponse.go b/tests/mockserver/internal/sdk/models/components/datasourcecredentialstatusresponse.go new file mode 100644 index 00000000..3195e113 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/datasourcecredentialstatusresponse.go @@ -0,0 +1,61 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "mockserver/internal/sdk/utils" + "time" +) + +// DatasourceCredentialStatusResponse - Status of the credentials currently installed for a datasource instance. +type DatasourceCredentialStatusResponse struct { + // Lifecycle state of the credentials installed for a datasource instance. Mirrors the internal admin Status enum so the handler can surface the same health signals already tracked today. EXPIRING_SOON is represented as VALID_WITH_WARNINGS (with detail in `message`); EXPIRED is surfaced as INVALID plus a non-null `expiresAt` in the past. + // + Status DatasourceCredentialStatus `json:"status"` + // When the credentials were last rotated. Omitted when not known. + LastRotatedAt *time.Time `json:"lastRotatedAt,omitempty"` + // When the active credentials expire. Omitted when not known or not applicable to this credential type. + // + ExpiresAt *time.Time `json:"expiresAt,omitempty"` + // Optional human-readable detail about the current credential status. + Message *string `json:"message,omitempty"` +} + +func (d DatasourceCredentialStatusResponse) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(d, "", false) +} + +func (d *DatasourceCredentialStatusResponse) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &d, "", false, []string{"status"}); err != nil { + return err + } + return nil +} + +func (o *DatasourceCredentialStatusResponse) GetStatus() DatasourceCredentialStatus { + if o == nil { + return DatasourceCredentialStatus("") + } + return o.Status +} + +func (o *DatasourceCredentialStatusResponse) GetLastRotatedAt() *time.Time { + if o == nil { + return nil + } + return o.LastRotatedAt +} + +func (o *DatasourceCredentialStatusResponse) GetExpiresAt() *time.Time { + if o == nil { + return nil + } + return o.ExpiresAt +} + +func (o *DatasourceCredentialStatusResponse) GetMessage() *string { + if o == nil { + return nil + } + return o.Message +} diff --git a/tests/mockserver/internal/sdk/models/components/datasourceinstanceconfiguration.go b/tests/mockserver/internal/sdk/models/components/datasourceinstanceconfiguration.go new file mode 100644 index 00000000..695fba51 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/datasourceinstanceconfiguration.go @@ -0,0 +1,16 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +// DatasourceInstanceConfiguration - Configuration for a datasource instance +type DatasourceInstanceConfiguration struct { + // A map from configuration key names to their values + Values map[string]ConfigurationValue `json:"values"` +} + +func (o *DatasourceInstanceConfiguration) GetValues() map[string]ConfigurationValue { + if o == nil { + return map[string]ConfigurationValue{} + } + return o.Values +} diff --git a/tests/mockserver/internal/sdk/models/components/debugdocumentlifecyclerequest.go b/tests/mockserver/internal/sdk/models/components/debugdocumentlifecyclerequest.go new file mode 100644 index 00000000..93255bb0 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/debugdocumentlifecyclerequest.go @@ -0,0 +1,43 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +// DebugDocumentLifecycleRequest - Describes the request body of the /debug/{datasource}/document/events API call. +type DebugDocumentLifecycleRequest struct { + // Object type of the document to get lifecycle events for. + ObjectType string `json:"objectType"` + // Glean Document ID within the datasource to get lifecycle events for. + DocID string `json:"docId"` + // The start date for events to be fetched. Cannot be more than 30 days (default 7 days) in the past. + StartDate *string `json:"startDate,omitempty"` + // Max number of events to be fetched. Cannot be more than 100 (default 20). + MaxEvents *int64 `json:"maxEvents,omitempty"` +} + +func (o *DebugDocumentLifecycleRequest) GetObjectType() string { + if o == nil { + return "" + } + return o.ObjectType +} + +func (o *DebugDocumentLifecycleRequest) GetDocID() string { + if o == nil { + return "" + } + return o.DocID +} + +func (o *DebugDocumentLifecycleRequest) GetStartDate() *string { + if o == nil { + return nil + } + return o.StartDate +} + +func (o *DebugDocumentLifecycleRequest) GetMaxEvents() *int64 { + if o == nil { + return nil + } + return o.MaxEvents +} diff --git a/tests/mockserver/internal/sdk/models/components/debugdocumentlifecycleresponse.go b/tests/mockserver/internal/sdk/models/components/debugdocumentlifecycleresponse.go new file mode 100644 index 00000000..343802ed --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/debugdocumentlifecycleresponse.go @@ -0,0 +1,16 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +// DebugDocumentLifecycleResponse - Describes the response body of the /debug/{datasource}/document/events API call +type DebugDocumentLifecycleResponse struct { + // List of lifecycle events corresponding to the document + LifeCycleEvents []LifeCycleEvent `json:"lifeCycleEvents,omitempty"` +} + +func (o *DebugDocumentLifecycleResponse) GetLifeCycleEvents() []LifeCycleEvent { + if o == nil { + return nil + } + return o.LifeCycleEvents +} diff --git a/tests/mockserver/internal/sdk/models/components/dlpconfig.go b/tests/mockserver/internal/sdk/models/components/dlpconfig.go index 3502af7b..23a965fc 100644 --- a/tests/mockserver/internal/sdk/models/components/dlpconfig.go +++ b/tests/mockserver/internal/sdk/models/components/dlpconfig.go @@ -8,11 +8,11 @@ type DlpConfig struct { Version *int64 `json:"version,omitempty"` // DEPRECATED - use `sensitiveContentOptions` instead. // - // Deprecated: This will be removed in a future release, please migrate away from it as soon as possible. + // Deprecated: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use sensitiveContentOptions instead. SensitiveInfoTypes []SensitiveInfoType `json:"sensitiveInfoTypes,omitempty"` // Controls which data-sources and what time-range to include in scans. InputOptions *InputOptions `json:"inputOptions,omitempty"` - // Deprecated: This will be removed in a future release, please migrate away from it as soon as possible. + // Deprecated: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use broadSharingOptions instead. ExternalSharingOptions *ExternalSharingOptions `json:"externalSharingOptions,omitempty"` // Controls how "shared" a document must be to get picked for scans. BroadSharingOptions *SharingOptions `json:"broadSharingOptions,omitempty"` @@ -29,7 +29,7 @@ type DlpConfig struct { RedactQuote *bool `json:"redactQuote,omitempty"` // auto hide documents with findings in the report AutoHideDocs *bool `json:"autoHideDocs,omitempty"` - // Terms that are allow-listed during the scans. If any finding picked up by a rule exactly matches a term in the allow-list, it will not be counted as a violation. + // Terms and regexes that are allow-listed during the scans. If any finding picked up by a rule exactly matches a term, or matches a regex, in the allow-list, it will not be counted as a violation. AllowlistOptions *AllowlistOptions `json:"allowlistOptions,omitempty"` } diff --git a/tests/mockserver/internal/sdk/models/components/dlpexportfindingsrequest.go b/tests/mockserver/internal/sdk/models/components/dlpexportfindingsrequest.go index cf934cbc..77fdbe96 100644 --- a/tests/mockserver/internal/sdk/models/components/dlpexportfindingsrequest.go +++ b/tests/mockserver/internal/sdk/models/components/dlpexportfindingsrequest.go @@ -7,18 +7,19 @@ import ( "fmt" ) -// ExportType - The type of export to perform -type ExportType string +// DlpExportFindingsRequestExportType - The type of export to perform +type DlpExportFindingsRequestExportType string const ( - ExportTypeFindings ExportType = "FINDINGS" - ExportTypeDocuments ExportType = "DOCUMENTS" + DlpExportFindingsRequestExportTypeFindings DlpExportFindingsRequestExportType = "FINDINGS" + DlpExportFindingsRequestExportTypeDocuments DlpExportFindingsRequestExportType = "DOCUMENTS" + DlpExportFindingsRequestExportTypeIssues DlpExportFindingsRequestExportType = "ISSUES" ) -func (e ExportType) ToPointer() *ExportType { +func (e DlpExportFindingsRequestExportType) ToPointer() *DlpExportFindingsRequestExportType { return &e } -func (e *ExportType) UnmarshalJSON(data []byte) error { +func (e *DlpExportFindingsRequestExportType) UnmarshalJSON(data []byte) error { var v string if err := json.Unmarshal(data, &v); err != nil { return err @@ -27,10 +28,12 @@ func (e *ExportType) UnmarshalJSON(data []byte) error { case "FINDINGS": fallthrough case "DOCUMENTS": - *e = ExportType(v) + fallthrough + case "ISSUES": + *e = DlpExportFindingsRequestExportType(v) return nil default: - return fmt.Errorf("invalid value for ExportType: %v", v) + return fmt.Errorf("invalid value for DlpExportFindingsRequestExportType: %v", v) } } @@ -66,8 +69,10 @@ func (e *FieldScope) UnmarshalJSON(data []byte) error { type DlpExportFindingsRequest struct { // The type of export to perform - ExportType *ExportType `json:"exportType,omitempty"` - Filter *DlpFindingFilter `json:"filter,omitempty"` + ExportType *DlpExportFindingsRequestExportType `json:"exportType,omitempty"` + Filter *DlpFindingFilter `json:"filter,omitempty"` + // Filter for DLP issues. Includes document-level filters and issue-specific filters. + IssueFilter *DlpIssueFilter `json:"issueFilter,omitempty"` // The name of the file to export the findings to FileName *string `json:"fileName,omitempty"` // Controls which fields to include in the export @@ -76,7 +81,7 @@ type DlpExportFindingsRequest struct { FieldsToExclude []string `json:"fieldsToExclude,omitempty"` } -func (o *DlpExportFindingsRequest) GetExportType() *ExportType { +func (o *DlpExportFindingsRequest) GetExportType() *DlpExportFindingsRequestExportType { if o == nil { return nil } @@ -90,6 +95,13 @@ func (o *DlpExportFindingsRequest) GetFilter() *DlpFindingFilter { return o.Filter } +func (o *DlpExportFindingsRequest) GetIssueFilter() *DlpIssueFilter { + if o == nil { + return nil + } + return o.IssueFilter +} + func (o *DlpExportFindingsRequest) GetFileName() *string { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/components/dlpfindingfilter.go b/tests/mockserver/internal/sdk/models/components/dlpfindingfilter.go index 89c4da54..f3b7f96f 100644 --- a/tests/mockserver/internal/sdk/models/components/dlpfindingfilter.go +++ b/tests/mockserver/internal/sdk/models/components/dlpfindingfilter.go @@ -9,9 +9,10 @@ type DlpFindingFilter struct { Datasource *string `json:"datasource,omitempty"` Visibility *string `json:"visibility,omitempty"` DocumentIds []string `json:"documentIds,omitempty"` - // Severity levels for DLP findings and analyses. + // Severity levels for DLP findings and analyses. FALSE_POSITIVE ranks below LOW and marks analyses that concluded every flagged entity is a detector false positive. Severity *DlpSeverity `json:"severity,omitempty"` DocumentSeverity []DlpSeverity `json:"documentSeverity,omitempty"` + Statuses []DlpIssueStatus `json:"statuses,omitempty"` TimeRange *TimeRangeFilter `json:"timeRange,omitempty"` Archived *bool `json:"archived,omitempty"` } @@ -72,6 +73,13 @@ func (o *DlpFindingFilter) GetDocumentSeverity() []DlpSeverity { return o.DocumentSeverity } +func (o *DlpFindingFilter) GetStatuses() []DlpIssueStatus { + if o == nil { + return nil + } + return o.Statuses +} + func (o *DlpFindingFilter) GetTimeRange() *TimeRangeFilter { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/components/dlpissuefilter.go b/tests/mockserver/internal/sdk/models/components/dlpissuefilter.go new file mode 100644 index 00000000..600b982d --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/dlpissuefilter.go @@ -0,0 +1,147 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +// DlpIssueFilter - Filter for DLP issues. Includes document-level filters and issue-specific filters. +type DlpIssueFilter struct { + // Text to search for in issue fields. + SearchText *string `json:"searchText,omitempty"` + // Filter by one or more issue statuses. + Statuses []DlpIssueStatus `json:"statuses,omitempty"` + // Filter by a single assignee user ID. Deprecated; use assigneeIds. + // + // Deprecated: This will be removed in a future release, please migrate away from it as soon as possible. + AssigneeID *string `json:"assigneeId,omitempty"` + // Filter by one or more assignee user IDs. Use the sentinel value "UNASSIGNED" to match issues with no assignee. + AssigneeIds []string `json:"assigneeIds,omitempty"` + // Filter by a single built-in info type. Deprecated; use infoTypes. + // + // Deprecated: This will be removed in a future release, please migrate away from it as soon as possible. + InfoType *string `json:"infoType,omitempty"` + // Filter by one or more built-in info types. + InfoTypes []string `json:"infoTypes,omitempty"` + // Filter by a single regex rule ID. Deprecated; use regexIds. + // + // Deprecated: This will be removed in a future release, please migrate away from it as soon as possible. + RegexID *string `json:"regexId,omitempty"` + // Filter by one or more regex rule IDs. + RegexIds []string `json:"regexIds,omitempty"` + // Filter by one or more report/policy IDs. + ReportIds []string `json:"reportIds,omitempty"` + DocID *string `json:"docId,omitempty"` + // Filter by a single datasource. Deprecated; use datasources. + // + // Deprecated: This will be removed in a future release, please migrate away from it as soon as possible. + Datasource *string `json:"datasource,omitempty"` + // Filter by one or more datasources. + Datasources []string `json:"datasources,omitempty"` + Visibility *string `json:"visibility,omitempty"` + // Filter by one or more severity levels. + Severities []DlpSeverity `json:"severities,omitempty"` + TimeRange *TimeRangeFilter `json:"timeRange,omitempty"` +} + +func (o *DlpIssueFilter) GetSearchText() *string { + if o == nil { + return nil + } + return o.SearchText +} + +func (o *DlpIssueFilter) GetStatuses() []DlpIssueStatus { + if o == nil { + return nil + } + return o.Statuses +} + +func (o *DlpIssueFilter) GetAssigneeID() *string { + if o == nil { + return nil + } + return o.AssigneeID +} + +func (o *DlpIssueFilter) GetAssigneeIds() []string { + if o == nil { + return nil + } + return o.AssigneeIds +} + +func (o *DlpIssueFilter) GetInfoType() *string { + if o == nil { + return nil + } + return o.InfoType +} + +func (o *DlpIssueFilter) GetInfoTypes() []string { + if o == nil { + return nil + } + return o.InfoTypes +} + +func (o *DlpIssueFilter) GetRegexID() *string { + if o == nil { + return nil + } + return o.RegexID +} + +func (o *DlpIssueFilter) GetRegexIds() []string { + if o == nil { + return nil + } + return o.RegexIds +} + +func (o *DlpIssueFilter) GetReportIds() []string { + if o == nil { + return nil + } + return o.ReportIds +} + +func (o *DlpIssueFilter) GetDocID() *string { + if o == nil { + return nil + } + return o.DocID +} + +func (o *DlpIssueFilter) GetDatasource() *string { + if o == nil { + return nil + } + return o.Datasource +} + +func (o *DlpIssueFilter) GetDatasources() []string { + if o == nil { + return nil + } + return o.Datasources +} + +func (o *DlpIssueFilter) GetVisibility() *string { + if o == nil { + return nil + } + return o.Visibility +} + +func (o *DlpIssueFilter) GetSeverities() []DlpSeverity { + if o == nil { + return nil + } + return o.Severities +} + +func (o *DlpIssueFilter) GetTimeRange() *TimeRangeFilter { + if o == nil { + return nil + } + return o.TimeRange +} diff --git a/tests/mockserver/internal/sdk/models/components/dlpissuestatus.go b/tests/mockserver/internal/sdk/models/components/dlpissuestatus.go new file mode 100644 index 00000000..24c291ec --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/dlpissuestatus.go @@ -0,0 +1,41 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" +) + +// DlpIssueStatus - Status of a DLP issue. +type DlpIssueStatus string + +const ( + DlpIssueStatusOpen DlpIssueStatus = "OPEN" + DlpIssueStatusClosed DlpIssueStatus = "CLOSED" + DlpIssueStatusInProgress DlpIssueStatus = "IN_PROGRESS" + DlpIssueStatusResolved DlpIssueStatus = "RESOLVED" +) + +func (e DlpIssueStatus) ToPointer() *DlpIssueStatus { + return &e +} +func (e *DlpIssueStatus) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "OPEN": + fallthrough + case "CLOSED": + fallthrough + case "IN_PROGRESS": + fallthrough + case "RESOLVED": + *e = DlpIssueStatus(v) + return nil + default: + return fmt.Errorf("invalid value for DlpIssueStatus: %v", v) + } +} diff --git a/tests/mockserver/internal/sdk/models/components/dlpseverity.go b/tests/mockserver/internal/sdk/models/components/dlpseverity.go index a0c02199..aac78928 100644 --- a/tests/mockserver/internal/sdk/models/components/dlpseverity.go +++ b/tests/mockserver/internal/sdk/models/components/dlpseverity.go @@ -7,14 +7,15 @@ import ( "fmt" ) -// DlpSeverity - Severity levels for DLP findings and analyses. +// DlpSeverity - Severity levels for DLP findings and analyses. FALSE_POSITIVE ranks below LOW and marks analyses that concluded every flagged entity is a detector false positive. type DlpSeverity string const ( - DlpSeverityUnspecified DlpSeverity = "UNSPECIFIED" - DlpSeverityLow DlpSeverity = "LOW" - DlpSeverityMedium DlpSeverity = "MEDIUM" - DlpSeverityHigh DlpSeverity = "HIGH" + DlpSeverityUnspecified DlpSeverity = "UNSPECIFIED" + DlpSeverityLow DlpSeverity = "LOW" + DlpSeverityMedium DlpSeverity = "MEDIUM" + DlpSeverityHigh DlpSeverity = "HIGH" + DlpSeverityFalsePositive DlpSeverity = "FALSE_POSITIVE" ) func (e DlpSeverity) ToPointer() *DlpSeverity { @@ -33,6 +34,8 @@ func (e *DlpSeverity) UnmarshalJSON(data []byte) error { case "MEDIUM": fallthrough case "HIGH": + fallthrough + case "FALSE_POSITIVE": *e = DlpSeverity(v) return nil default: diff --git a/tests/mockserver/internal/sdk/models/components/documentdefinition.go b/tests/mockserver/internal/sdk/models/components/documentdefinition.go index beac1f1c..41db731f 100644 --- a/tests/mockserver/internal/sdk/models/components/documentdefinition.go +++ b/tests/mockserver/internal/sdk/models/components/documentdefinition.go @@ -46,6 +46,8 @@ type DocumentDefinition struct { Status *string `json:"status,omitempty"` // Additional variations of the URL that this document points to. AdditionalUrls []string `json:"additionalUrls,omitempty"` + // A deep link, if available, into the datasource's native application for the user's platform (e.g. slack://channel/message). + NativeAppURL *string `json:"nativeAppUrl,omitempty"` // Comments associated with the document. Comments []CommentDefinition `json:"comments,omitempty"` // Additional metadata properties of the document. These can surface as [facets and operators](https://developers.glean.com/indexing/datasource/custom-properties/operators_and_facets). @@ -199,6 +201,13 @@ func (o *DocumentDefinition) GetAdditionalUrls() []string { return o.AdditionalUrls } +func (o *DocumentDefinition) GetNativeAppURL() *string { + if o == nil { + return nil + } + return o.NativeAppURL +} + func (o *DocumentDefinition) GetComments() []CommentDefinition { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/components/documentinsight.go b/tests/mockserver/internal/sdk/models/components/documentinsight.go deleted file mode 100644 index 3b304aee..00000000 --- a/tests/mockserver/internal/sdk/models/components/documentinsight.go +++ /dev/null @@ -1,30 +0,0 @@ -// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - -package components - -type DocumentInsight struct { - Document Document `json:"document"` - ViewCount *CountInfo `json:"viewCount,omitempty"` - VisitorCount *CountInfo `json:"visitorCount,omitempty"` -} - -func (o *DocumentInsight) GetDocument() Document { - if o == nil { - return Document{} - } - return o.Document -} - -func (o *DocumentInsight) GetViewCount() *CountInfo { - if o == nil { - return nil - } - return o.ViewCount -} - -func (o *DocumentInsight) GetVisitorCount() *CountInfo { - if o == nil { - return nil - } - return o.VisitorCount -} diff --git a/tests/mockserver/internal/sdk/models/components/documentinteractions.go b/tests/mockserver/internal/sdk/models/components/documentinteractions.go index 28bb3af0..5b5e215d 100644 --- a/tests/mockserver/internal/sdk/models/components/documentinteractions.go +++ b/tests/mockserver/internal/sdk/models/components/documentinteractions.go @@ -13,7 +13,7 @@ type DocumentInteractions struct { NumReactions *int64 `json:"numReactions,omitempty"` // To be deprecated in favor of reacts. A (potentially non-exhaustive) list of reactions for the document. // - // Deprecated: This will be removed in a future release, please migrate away from it as soon as possible. + // Deprecated: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use reacts instead. Reactions []string `json:"reactions,omitempty"` Reacts []Reaction `json:"reacts,omitempty"` // Describes instances of someone posting a link to this document in one of our indexed datasources. diff --git a/tests/mockserver/internal/sdk/models/components/documentspecunion.go b/tests/mockserver/internal/sdk/models/components/documentspecunion.go index e6206deb..87e6ac59 100644 --- a/tests/mockserver/internal/sdk/models/components/documentspecunion.go +++ b/tests/mockserver/internal/sdk/models/components/documentspecunion.go @@ -15,6 +15,7 @@ type DocumentSpecUgcType2 string const ( DocumentSpecUgcType2Announcements DocumentSpecUgcType2 = "ANNOUNCEMENTS" DocumentSpecUgcType2Answers DocumentSpecUgcType2 = "ANSWERS" + DocumentSpecUgcType2Artifacts DocumentSpecUgcType2 = "ARTIFACTS" DocumentSpecUgcType2Collections DocumentSpecUgcType2 = "COLLECTIONS" DocumentSpecUgcType2Shortcuts DocumentSpecUgcType2 = "SHORTCUTS" DocumentSpecUgcType2Chats DocumentSpecUgcType2 = "CHATS" @@ -33,6 +34,8 @@ func (e *DocumentSpecUgcType2) UnmarshalJSON(data []byte) error { fallthrough case "ANSWERS": fallthrough + case "ARTIFACTS": + fallthrough case "COLLECTIONS": fallthrough case "SHORTCUTS": diff --git a/tests/mockserver/internal/sdk/models/components/editanswerrequest.go b/tests/mockserver/internal/sdk/models/components/editanswerrequest.go index cf5732f1..c11ee203 100644 --- a/tests/mockserver/internal/sdk/models/components/editanswerrequest.go +++ b/tests/mockserver/internal/sdk/models/components/editanswerrequest.go @@ -45,7 +45,7 @@ type EditAnswerRequest struct { BodyText *string `json:"bodyText,omitempty"` // The parent board ID of this Answer, or 0 if it's a floating Answer. Adding Answers to Answer Boards is no longer permitted. // - // Deprecated: This will be removed in a future release, please migrate away from it as soon as possible. + // Deprecated: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Answer Boards no longer supported. BoardID *int64 `json:"boardId,omitempty"` // Filters which restrict who should see the answer. Values are taken from the corresponding filters in people search. AudienceFilters []FacetFilter `json:"audienceFilters,omitempty"` diff --git a/tests/mockserver/internal/sdk/models/components/editcollectionresponse.go b/tests/mockserver/internal/sdk/models/components/editcollectionresponse.go index ba96dfa1..46b8497b 100644 --- a/tests/mockserver/internal/sdk/models/components/editcollectionresponse.go +++ b/tests/mockserver/internal/sdk/models/components/editcollectionresponse.go @@ -19,6 +19,7 @@ const ( EditCollectionResponseErrorCodeHeightViolation EditCollectionResponseErrorCode = "HEIGHT_VIOLATION" EditCollectionResponseErrorCodeWidthViolation EditCollectionResponseErrorCode = "WIDTH_VIOLATION" EditCollectionResponseErrorCodeNoPermissions EditCollectionResponseErrorCode = "NO_PERMISSIONS" + EditCollectionResponseErrorCodeCorruptItem EditCollectionResponseErrorCode = "CORRUPT_ITEM" ) func (e EditCollectionResponseErrorCode) ToPointer() *EditCollectionResponseErrorCode { @@ -43,6 +44,8 @@ func (e *EditCollectionResponseErrorCode) UnmarshalJSON(data []byte) error { case "WIDTH_VIOLATION": fallthrough case "NO_PERMISSIONS": + fallthrough + case "CORRUPT_ITEM": *e = EditCollectionResponseErrorCode(v) return nil default: @@ -71,6 +74,8 @@ type EditCollectionResponse struct { // The datasource type this Collection can hold. AllowedDatasource *string `json:"allowedDatasource,omitempty"` Permissions *ObjectPermissions `json:"permissions,omitempty"` + // An opaque token that represents this particular UGC. To be used for `/feedback` reporting. + TrackingToken *string `json:"trackingToken,omitempty"` // The unique ID of the Collection. ID int64 `json:"id"` CreateTime *time.Time `json:"createTime,omitempty"` @@ -89,10 +94,11 @@ type EditCollectionResponse struct { // The children Collections of this Collection. Children []Collection `json:"children,omitempty"` // A list of user roles for the Collection. - Roles []UserRoleSpecification `json:"roles,omitempty"` - ErrorCode EditCollectionResponseErrorCode `json:"errorCode"` - Collection *Collection `json:"collection,omitempty"` - Error *CollectionError `json:"error,omitempty"` + Roles []UserRoleSpecification `json:"roles,omitempty"` + FavoriteInfo *FavoriteInfo `json:"favoriteInfo,omitempty"` + ErrorCode EditCollectionResponseErrorCode `json:"errorCode"` + Collection *Collection `json:"collection,omitempty"` + Error *CollectionError `json:"error,omitempty"` } func (e EditCollectionResponse) MarshalJSON() ([]byte, error) { @@ -183,6 +189,13 @@ func (o *EditCollectionResponse) GetPermissions() *ObjectPermissions { return o.Permissions } +func (o *EditCollectionResponse) GetTrackingToken() *string { + if o == nil { + return nil + } + return o.TrackingToken +} + func (o *EditCollectionResponse) GetID() int64 { if o == nil { return 0 @@ -267,6 +280,13 @@ func (o *EditCollectionResponse) GetRoles() []UserRoleSpecification { return o.Roles } +func (o *EditCollectionResponse) GetFavoriteInfo() *FavoriteInfo { + if o == nil { + return nil + } + return o.FavoriteInfo +} + func (o *EditCollectionResponse) GetErrorCode() EditCollectionResponseErrorCode { if o == nil { return EditCollectionResponseErrorCode("") diff --git a/tests/mockserver/internal/sdk/models/components/editworkflowrequest.go b/tests/mockserver/internal/sdk/models/components/editworkflowrequest.go new file mode 100644 index 00000000..4c803a25 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/editworkflowrequest.go @@ -0,0 +1,24 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type EditWorkflowRequest struct { + // The name of the workflow. + Name *string `json:"name,omitempty"` + // The workflow ID we want to update. + ID *string `json:"id,omitempty"` +} + +func (o *EditWorkflowRequest) GetName() *string { + if o == nil { + return nil + } + return o.Name +} + +func (o *EditWorkflowRequest) GetID() *string { + if o == nil { + return nil + } + return o.ID +} diff --git a/tests/mockserver/internal/sdk/models/components/employeeinfodefinition.go b/tests/mockserver/internal/sdk/models/components/employeeinfodefinition.go index d74dd36f..7af253a7 100644 --- a/tests/mockserver/internal/sdk/models/components/employeeinfodefinition.go +++ b/tests/mockserver/internal/sdk/models/components/employeeinfodefinition.go @@ -26,7 +26,7 @@ type EmployeeInfoDefinition struct { PhoneNumber *string `json:"phoneNumber,omitempty"` // The employee's location (city/office name etc). // - // Deprecated: This will be removed in a future release, please migrate away from it as soon as possible. + // Deprecated: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Field is deprecated. Location *string `json:"location,omitempty"` // Detailed location with information about country, state, city etc. StructuredLocation *StructuredLocation `json:"structuredLocation,omitempty"` diff --git a/tests/mockserver/internal/sdk/models/components/exportinfo.go b/tests/mockserver/internal/sdk/models/components/exportinfo.go index 9cd209bf..74fb0752 100644 --- a/tests/mockserver/internal/sdk/models/components/exportinfo.go +++ b/tests/mockserver/internal/sdk/models/components/exportinfo.go @@ -7,6 +7,36 @@ import ( "fmt" ) +// ExportInfoExportType - The type of export to perform +type ExportInfoExportType string + +const ( + ExportInfoExportTypeFindings ExportInfoExportType = "FINDINGS" + ExportInfoExportTypeDocuments ExportInfoExportType = "DOCUMENTS" + ExportInfoExportTypeIssues ExportInfoExportType = "ISSUES" +) + +func (e ExportInfoExportType) ToPointer() *ExportInfoExportType { + return &e +} +func (e *ExportInfoExportType) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "FINDINGS": + fallthrough + case "DOCUMENTS": + fallthrough + case "ISSUES": + *e = ExportInfoExportType(v) + return nil + default: + return fmt.Errorf("invalid value for ExportInfoExportType: %v", v) + } +} + // ExportInfoStatus - The status of the export type ExportInfoStatus string @@ -47,8 +77,12 @@ type ExportInfo struct { // The ID of the export ExportID *string `json:"exportId,omitempty"` // The name of the file to export the findings to - FileName *string `json:"fileName,omitempty"` - Filter *DlpFindingFilter `json:"filter,omitempty"` + FileName *string `json:"fileName,omitempty"` + // The type of export to perform + ExportType *ExportInfoExportType `json:"exportType,omitempty"` + Filter *DlpFindingFilter `json:"filter,omitempty"` + // Filter for DLP issues. Includes document-level filters and issue-specific filters. + IssueFilter *DlpIssueFilter `json:"issueFilter,omitempty"` // The status of the export Status *ExportInfoStatus `json:"status,omitempty"` // The size of the exported file in bytes @@ -90,6 +124,13 @@ func (o *ExportInfo) GetFileName() *string { return o.FileName } +func (o *ExportInfo) GetExportType() *ExportInfoExportType { + if o == nil { + return nil + } + return o.ExportType +} + func (o *ExportInfo) GetFilter() *DlpFindingFilter { if o == nil { return nil @@ -97,6 +138,13 @@ func (o *ExportInfo) GetFilter() *DlpFindingFilter { return o.Filter } +func (o *ExportInfo) GetIssueFilter() *DlpIssueFilter { + if o == nil { + return nil + } + return o.IssueFilter +} + func (o *ExportInfo) GetStatus() *ExportInfoStatus { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/components/externalsharingoptions.go b/tests/mockserver/internal/sdk/models/components/externalsharingoptions.go index 0d0a7b9c..ef958664 100644 --- a/tests/mockserver/internal/sdk/models/components/externalsharingoptions.go +++ b/tests/mockserver/internal/sdk/models/components/externalsharingoptions.go @@ -4,15 +4,15 @@ package components // ExternalSharingOptions - Controls how "shared" a document must be to get picked for scans. // -// Deprecated: This will be removed in a future release, please migrate away from it as soon as possible. +// Deprecated: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use broadSharingOptions instead. type ExternalSharingOptions struct { - // Deprecated: This will be removed in a future release, please migrate away from it as soon as possible. + // Deprecated: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Field is deprecated. Enabled *bool `json:"enabled,omitempty"` // The minimum number of users the document is shared with. Threshold *int64 `json:"threshold,omitempty"` // Documents will be filtered based on how many people have access to it. ThresholdEnabled *bool `json:"thresholdEnabled,omitempty"` - // Deprecated: This will be removed in a future release, please migrate away from it as soon as possible. + // Deprecated: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Field is deprecated. AnyoneWithLinkEnabled *bool `json:"anyoneWithLinkEnabled,omitempty"` // Only users within the organization can access the document. AnyoneInternalEnabled *bool `json:"anyoneInternalEnabled,omitempty"` diff --git a/tests/mockserver/internal/sdk/models/components/facetfiltervalue.go b/tests/mockserver/internal/sdk/models/components/facetfiltervalue.go index 68ba77de..6fa0e3a3 100644 --- a/tests/mockserver/internal/sdk/models/components/facetfiltervalue.go +++ b/tests/mockserver/internal/sdk/models/components/facetfiltervalue.go @@ -48,7 +48,7 @@ type FacetFilterValue struct { RelationType *RelationType `json:"relationType,omitempty"` // DEPRECATED - please use relationType instead // - // Deprecated: This will be removed in a future release, please migrate away from it as soon as possible. + // Deprecated: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use relationType instead. IsNegated *bool `json:"isNegated,omitempty"` } diff --git a/tests/mockserver/internal/sdk/models/components/favoriteinfo.go b/tests/mockserver/internal/sdk/models/components/favoriteinfo.go index 7e46f018..f5acc1c4 100644 --- a/tests/mockserver/internal/sdk/models/components/favoriteinfo.go +++ b/tests/mockserver/internal/sdk/models/components/favoriteinfo.go @@ -2,6 +2,10 @@ package components +import ( + "mockserver/internal/sdk/utils" +) + type FavoriteInfo struct { UgcType *UgcType `json:"ugcType,omitempty"` // Opaque id of the UGC. @@ -12,6 +16,17 @@ type FavoriteInfo struct { FavoritedByUser *bool `json:"favoritedByUser,omitempty"` } +func (f FavoriteInfo) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(f, "", false) +} + +func (f *FavoriteInfo) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &f, "", false, nil); err != nil { + return err + } + return nil +} + func (o *FavoriteInfo) GetUgcType() *UgcType { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/components/feedback.go b/tests/mockserver/internal/sdk/models/components/feedback.go index c7e66678..c89a1ce6 100644 --- a/tests/mockserver/internal/sdk/models/components/feedback.go +++ b/tests/mockserver/internal/sdk/models/components/feedback.go @@ -14,6 +14,8 @@ type FeedbackCategory string const ( FeedbackCategoryAnnouncement FeedbackCategory = "ANNOUNCEMENT" + FeedbackCategoryAnswers FeedbackCategory = "ANSWERS" + FeedbackCategoryArtifacts FeedbackCategory = "ARTIFACTS" FeedbackCategoryAutocomplete FeedbackCategory = "AUTOCOMPLETE" FeedbackCategoryCollections FeedbackCategory = "COLLECTIONS" FeedbackCategoryFeed FeedbackCategory = "FEED" @@ -38,6 +40,10 @@ func (e *FeedbackCategory) UnmarshalJSON(data []byte) error { switch v { case "ANNOUNCEMENT": fallthrough + case "ANSWERS": + fallthrough + case "ARTIFACTS": + fallthrough case "AUTOCOMPLETE": fallthrough case "COLLECTIONS": @@ -66,47 +72,48 @@ func (e *FeedbackCategory) UnmarshalJSON(data []byte) error { } } -// Event - The action the user took within a Glean client with respect to the object referred to by the given `trackingToken`. -type Event string +// FeedbackEvent - The action the user took within a Glean client with respect to the object referred to by the given `trackingToken`. +type FeedbackEvent string const ( - EventClick Event = "CLICK" - EventContainerClick Event = "CONTAINER_CLICK" - EventCopyLink Event = "COPY_LINK" - EventCreate Event = "CREATE" - EventDismiss Event = "DISMISS" - EventDownvote Event = "DOWNVOTE" - EventEmail Event = "EMAIL" - EventExecute Event = "EXECUTE" - EventFilter Event = "FILTER" - EventFirstToken Event = "FIRST_TOKEN" - EventFocusIn Event = "FOCUS_IN" - EventLastToken Event = "LAST_TOKEN" - EventManualFeedback Event = "MANUAL_FEEDBACK" - EventManualFeedbackSideBySide Event = "MANUAL_FEEDBACK_SIDE_BY_SIDE" - EventMarkAsRead Event = "MARK_AS_READ" - EventMessage Event = "MESSAGE" - EventMiddleClick Event = "MIDDLE_CLICK" - EventPageBlur Event = "PAGE_BLUR" - EventPageFocus Event = "PAGE_FOCUS" - EventPageLeave Event = "PAGE_LEAVE" - EventPreview Event = "PREVIEW" - EventRelatedClick Event = "RELATED_CLICK" - EventRightClick Event = "RIGHT_CLICK" - EventSectionClick Event = "SECTION_CLICK" - EventSeen Event = "SEEN" - EventSelect Event = "SELECT" - EventShare Event = "SHARE" - EventShowMore Event = "SHOW_MORE" - EventUpvote Event = "UPVOTE" - EventView Event = "VIEW" - EventVisible Event = "VISIBLE" + FeedbackEventClick FeedbackEvent = "CLICK" + FeedbackEventContainerClick FeedbackEvent = "CONTAINER_CLICK" + FeedbackEventCopyLink FeedbackEvent = "COPY_LINK" + FeedbackEventCreate FeedbackEvent = "CREATE" + FeedbackEventDismiss FeedbackEvent = "DISMISS" + FeedbackEventDownvote FeedbackEvent = "DOWNVOTE" + FeedbackEventEmail FeedbackEvent = "EMAIL" + FeedbackEventExecute FeedbackEvent = "EXECUTE" + FeedbackEventFilter FeedbackEvent = "FILTER" + FeedbackEventFirstToken FeedbackEvent = "FIRST_TOKEN" + FeedbackEventFocusIn FeedbackEvent = "FOCUS_IN" + FeedbackEventLastToken FeedbackEvent = "LAST_TOKEN" + FeedbackEventManualFeedback FeedbackEvent = "MANUAL_FEEDBACK" + FeedbackEventManualFeedbackSideBySide FeedbackEvent = "MANUAL_FEEDBACK_SIDE_BY_SIDE" + FeedbackEventFeedbackTimeSaved FeedbackEvent = "FEEDBACK_TIME_SAVED" + FeedbackEventMarkAsRead FeedbackEvent = "MARK_AS_READ" + FeedbackEventMessage FeedbackEvent = "MESSAGE" + FeedbackEventMiddleClick FeedbackEvent = "MIDDLE_CLICK" + FeedbackEventPageBlur FeedbackEvent = "PAGE_BLUR" + FeedbackEventPageFocus FeedbackEvent = "PAGE_FOCUS" + FeedbackEventPageLeave FeedbackEvent = "PAGE_LEAVE" + FeedbackEventPreview FeedbackEvent = "PREVIEW" + FeedbackEventRelatedClick FeedbackEvent = "RELATED_CLICK" + FeedbackEventRightClick FeedbackEvent = "RIGHT_CLICK" + FeedbackEventSectionClick FeedbackEvent = "SECTION_CLICK" + FeedbackEventSeen FeedbackEvent = "SEEN" + FeedbackEventSelect FeedbackEvent = "SELECT" + FeedbackEventShare FeedbackEvent = "SHARE" + FeedbackEventShowMore FeedbackEvent = "SHOW_MORE" + FeedbackEventUpvote FeedbackEvent = "UPVOTE" + FeedbackEventView FeedbackEvent = "VIEW" + FeedbackEventVisible FeedbackEvent = "VISIBLE" ) -func (e Event) ToPointer() *Event { +func (e FeedbackEvent) ToPointer() *FeedbackEvent { return &e } -func (e *Event) UnmarshalJSON(data []byte) error { +func (e *FeedbackEvent) UnmarshalJSON(data []byte) error { var v string if err := json.Unmarshal(data, &v); err != nil { return err @@ -140,6 +147,8 @@ func (e *Event) UnmarshalJSON(data []byte) error { fallthrough case "MANUAL_FEEDBACK_SIDE_BY_SIDE": fallthrough + case "FEEDBACK_TIME_SAVED": + fallthrough case "MARK_AS_READ": fallthrough case "MESSAGE": @@ -173,10 +182,10 @@ func (e *Event) UnmarshalJSON(data []byte) error { case "VIEW": fallthrough case "VISIBLE": - *e = Event(v) + *e = FeedbackEvent(v) return nil default: - return fmt.Errorf("invalid value for Event: %v", v) + return fmt.Errorf("invalid value for FeedbackEvent: %v", v) } } @@ -214,7 +223,7 @@ type Feedback struct { // A list of server-generated trackingTokens to which this event applies. TrackingTokens []string `json:"trackingTokens"` // The action the user took within a Glean client with respect to the object referred to by the given `trackingToken`. - Event Event `json:"event"` + Event FeedbackEvent `json:"event"` // Position of the element in the case that the client controls order (such as feed and autocomplete). Position *int64 `json:"position,omitempty"` // For type MANUAL_FEEDBACK, contains string of user feedback. For autocomplete, partial query string. For feed, string of user feedback in addition to manual feedback signals extracted from all suggested content. @@ -276,9 +285,9 @@ func (o *Feedback) GetTrackingTokens() []string { return o.TrackingTokens } -func (o *Feedback) GetEvent() Event { +func (o *Feedback) GetEvent() FeedbackEvent { if o == nil { - return Event("") + return FeedbackEvent("") } return o.Event } diff --git a/tests/mockserver/internal/sdk/models/components/feedentry.go b/tests/mockserver/internal/sdk/models/components/feedentry.go index 930d5c91..79fe6b08 100644 --- a/tests/mockserver/internal/sdk/models/components/feedentry.go +++ b/tests/mockserver/internal/sdk/models/components/feedentry.go @@ -90,6 +90,33 @@ const ( JustificationTypeZeroStateAgentSuggestion JustificationType = "ZERO_STATE_AGENT_SUGGESTION" JustificationTypePersonalizedChatSuggestion JustificationType = "PERSONALIZED_CHAT_SUGGESTION" JustificationTypeDailyDigest JustificationType = "DAILY_DIGEST" + JustificationTypePodcast JustificationType = "PODCAST" + JustificationTypeTask JustificationType = "TASK" + JustificationTypePlanMyDay JustificationType = "PLAN_MY_DAY" + JustificationTypeEndMyDay JustificationType = "END_MY_DAY" + JustificationTypeStarterKitExtension JustificationType = "STARTER_KIT_EXTENSION" + JustificationTypeStarterKitOrgChart JustificationType = "STARTER_KIT_ORG_CHART" + JustificationTypeStarterKitAddDoc JustificationType = "STARTER_KIT_ADD_DOC" + JustificationTypeMeetingRecap JustificationType = "MEETING_RECAP" + JustificationTypeMeetingRoom JustificationType = "MEETING_ROOM" + JustificationTypeMeetingPrepAutomation JustificationType = "MEETING_PREP_AUTOMATION" + JustificationTypeActiveDiscussion JustificationType = "ACTIVE_DISCUSSION" + JustificationTypeMidDayCatchUp JustificationType = "MID_DAY_CATCH_UP" + JustificationTypeQuerySuggestion JustificationType = "QUERY_SUGGESTION" + JustificationTypeCoworkCujPromo JustificationType = "COWORK_CUJ_PROMO" + JustificationTypeCardStackPromo JustificationType = "CARD_STACK_PROMO" + JustificationTypeWeeklyMeetings JustificationType = "WEEKLY_MEETINGS" + JustificationTypeFollowUp JustificationType = "FOLLOW_UP" + JustificationTypeMilestoneTimelineCheck JustificationType = "MILESTONE_TIMELINE_CHECK" + JustificationTypeProjectDiscussionDigest JustificationType = "PROJECT_DISCUSSION_DIGEST" + JustificationTypeProjectFocusBlock JustificationType = "PROJECT_FOCUS_BLOCK" + JustificationTypeProjectNextStep JustificationType = "PROJECT_NEXT_STEP" + JustificationTypeDemoCard JustificationType = "DEMO_CARD" + JustificationTypeResolveMeetingConflict JustificationType = "RESOLVE_MEETING_CONFLICT" + JustificationTypeOooPlanner JustificationType = "OOO_PLANNER" + JustificationTypeOooCatchUp JustificationType = "OOO_CATCH_UP" + JustificationTypeAdminHealthCenter JustificationType = "ADMIN_HEALTH_CENTER" + JustificationTypeKnowledgeGap JustificationType = "KNOWLEDGE_GAP" ) func (e JustificationType) ToPointer() *JustificationType { @@ -168,6 +195,60 @@ func (e *JustificationType) UnmarshalJSON(data []byte) error { case "PERSONALIZED_CHAT_SUGGESTION": fallthrough case "DAILY_DIGEST": + fallthrough + case "PODCAST": + fallthrough + case "TASK": + fallthrough + case "PLAN_MY_DAY": + fallthrough + case "END_MY_DAY": + fallthrough + case "STARTER_KIT_EXTENSION": + fallthrough + case "STARTER_KIT_ORG_CHART": + fallthrough + case "STARTER_KIT_ADD_DOC": + fallthrough + case "MEETING_RECAP": + fallthrough + case "MEETING_ROOM": + fallthrough + case "MEETING_PREP_AUTOMATION": + fallthrough + case "ACTIVE_DISCUSSION": + fallthrough + case "MID_DAY_CATCH_UP": + fallthrough + case "QUERY_SUGGESTION": + fallthrough + case "COWORK_CUJ_PROMO": + fallthrough + case "CARD_STACK_PROMO": + fallthrough + case "WEEKLY_MEETINGS": + fallthrough + case "FOLLOW_UP": + fallthrough + case "MILESTONE_TIMELINE_CHECK": + fallthrough + case "PROJECT_DISCUSSION_DIGEST": + fallthrough + case "PROJECT_FOCUS_BLOCK": + fallthrough + case "PROJECT_NEXT_STEP": + fallthrough + case "DEMO_CARD": + fallthrough + case "RESOLVE_MEETING_CONFLICT": + fallthrough + case "OOO_PLANNER": + fallthrough + case "OOO_CATCH_UP": + fallthrough + case "ADMIN_HEALTH_CENTER": + fallthrough + case "KNOWLEDGE_GAP": *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 bfc6576d..b020374c 100644 --- a/tests/mockserver/internal/sdk/models/components/feedrequest.go +++ b/tests/mockserver/internal/sdk/models/components/feedrequest.go @@ -35,6 +35,28 @@ const ( FeedRequestCategoryZeroStateWorkflowSuggestion FeedRequestCategory = "ZERO_STATE_WORKFLOW_SUGGESTION" FeedRequestCategoryPersonalizedChatSuggestion FeedRequestCategory = "PERSONALIZED_CHAT_SUGGESTION" FeedRequestCategoryDailyDigest FeedRequestCategory = "DAILY_DIGEST" + FeedRequestCategoryPodcast FeedRequestCategory = "PODCAST" + FeedRequestCategoryTask FeedRequestCategory = "TASK" + FeedRequestCategoryPlanMyDay FeedRequestCategory = "PLAN_MY_DAY" + FeedRequestCategoryEndMyDay FeedRequestCategory = "END_MY_DAY" + FeedRequestCategoryStarterKit FeedRequestCategory = "STARTER_KIT" + FeedRequestCategoryMeetingPrepAutomation FeedRequestCategory = "MEETING_PREP_AUTOMATION" + FeedRequestCategoryMidDayCatchUp FeedRequestCategory = "MID_DAY_CATCH_UP" + FeedRequestCategoryQuerySuggestion FeedRequestCategory = "QUERY_SUGGESTION" + FeedRequestCategoryCoworkCujPromo FeedRequestCategory = "COWORK_CUJ_PROMO" + FeedRequestCategoryCardStackPromo FeedRequestCategory = "CARD_STACK_PROMO" + FeedRequestCategoryWeeklyMeetings FeedRequestCategory = "WEEKLY_MEETINGS" + FeedRequestCategoryFollowUp FeedRequestCategory = "FOLLOW_UP" + FeedRequestCategoryMilestoneTimelineCheck FeedRequestCategory = "MILESTONE_TIMELINE_CHECK" + FeedRequestCategoryProjectDiscussionDigest FeedRequestCategory = "PROJECT_DISCUSSION_DIGEST" + FeedRequestCategoryProjectFocusBlock FeedRequestCategory = "PROJECT_FOCUS_BLOCK" + FeedRequestCategoryProjectNextStep FeedRequestCategory = "PROJECT_NEXT_STEP" + FeedRequestCategoryDemoCard FeedRequestCategory = "DEMO_CARD" + FeedRequestCategoryResolveMeetingConflict FeedRequestCategory = "RESOLVE_MEETING_CONFLICT" + FeedRequestCategoryOooPlanner FeedRequestCategory = "OOO_PLANNER" + FeedRequestCategoryOooCatchUp FeedRequestCategory = "OOO_CATCH_UP" + FeedRequestCategoryAdminHealthCenter FeedRequestCategory = "ADMIN_HEALTH_CENTER" + FeedRequestCategoryKnowledgeGap FeedRequestCategory = "KNOWLEDGE_GAP" ) func (e FeedRequestCategory) ToPointer() *FeedRequestCategory { @@ -95,6 +117,50 @@ func (e *FeedRequestCategory) UnmarshalJSON(data []byte) error { case "PERSONALIZED_CHAT_SUGGESTION": fallthrough case "DAILY_DIGEST": + fallthrough + case "PODCAST": + fallthrough + case "TASK": + fallthrough + case "PLAN_MY_DAY": + fallthrough + case "END_MY_DAY": + fallthrough + case "STARTER_KIT": + fallthrough + case "MEETING_PREP_AUTOMATION": + fallthrough + case "MID_DAY_CATCH_UP": + fallthrough + case "QUERY_SUGGESTION": + fallthrough + case "COWORK_CUJ_PROMO": + fallthrough + case "CARD_STACK_PROMO": + fallthrough + case "WEEKLY_MEETINGS": + fallthrough + case "FOLLOW_UP": + fallthrough + case "MILESTONE_TIMELINE_CHECK": + fallthrough + case "PROJECT_DISCUSSION_DIGEST": + fallthrough + case "PROJECT_FOCUS_BLOCK": + fallthrough + case "PROJECT_NEXT_STEP": + fallthrough + case "DEMO_CARD": + fallthrough + case "RESOLVE_MEETING_CONFLICT": + fallthrough + case "OOO_PLANNER": + fallthrough + case "OOO_CATCH_UP": + fallthrough + case "ADMIN_HEALTH_CENTER": + fallthrough + case "KNOWLEDGE_GAP": *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 d7955c06..cdb71976 100644 --- a/tests/mockserver/internal/sdk/models/components/feedresult.go +++ b/tests/mockserver/internal/sdk/models/components/feedresult.go @@ -36,6 +36,28 @@ const ( FeedResultCategoryZeroStateWorkflowSuggestion FeedResultCategory = "ZERO_STATE_WORKFLOW_SUGGESTION" FeedResultCategoryPersonalizedChatSuggestion FeedResultCategory = "PERSONALIZED_CHAT_SUGGESTION" FeedResultCategoryDailyDigest FeedResultCategory = "DAILY_DIGEST" + FeedResultCategoryPodcast FeedResultCategory = "PODCAST" + FeedResultCategoryTask FeedResultCategory = "TASK" + FeedResultCategoryPlanMyDay FeedResultCategory = "PLAN_MY_DAY" + FeedResultCategoryEndMyDay FeedResultCategory = "END_MY_DAY" + FeedResultCategoryStarterKit FeedResultCategory = "STARTER_KIT" + FeedResultCategoryMeetingPrepAutomation FeedResultCategory = "MEETING_PREP_AUTOMATION" + FeedResultCategoryMidDayCatchUp FeedResultCategory = "MID_DAY_CATCH_UP" + FeedResultCategoryQuerySuggestion FeedResultCategory = "QUERY_SUGGESTION" + FeedResultCategoryCoworkCujPromo FeedResultCategory = "COWORK_CUJ_PROMO" + FeedResultCategoryCardStackPromo FeedResultCategory = "CARD_STACK_PROMO" + FeedResultCategoryWeeklyMeetings FeedResultCategory = "WEEKLY_MEETINGS" + FeedResultCategoryFollowUp FeedResultCategory = "FOLLOW_UP" + FeedResultCategoryMilestoneTimelineCheck FeedResultCategory = "MILESTONE_TIMELINE_CHECK" + FeedResultCategoryProjectDiscussionDigest FeedResultCategory = "PROJECT_DISCUSSION_DIGEST" + FeedResultCategoryProjectFocusBlock FeedResultCategory = "PROJECT_FOCUS_BLOCK" + FeedResultCategoryProjectNextStep FeedResultCategory = "PROJECT_NEXT_STEP" + FeedResultCategoryDemoCard FeedResultCategory = "DEMO_CARD" + FeedResultCategoryResolveMeetingConflict FeedResultCategory = "RESOLVE_MEETING_CONFLICT" + FeedResultCategoryOooPlanner FeedResultCategory = "OOO_PLANNER" + FeedResultCategoryOooCatchUp FeedResultCategory = "OOO_CATCH_UP" + FeedResultCategoryAdminHealthCenter FeedResultCategory = "ADMIN_HEALTH_CENTER" + FeedResultCategoryKnowledgeGap FeedResultCategory = "KNOWLEDGE_GAP" ) func (e FeedResultCategory) ToPointer() *FeedResultCategory { @@ -96,6 +118,50 @@ func (e *FeedResultCategory) UnmarshalJSON(data []byte) error { case "PERSONALIZED_CHAT_SUGGESTION": fallthrough case "DAILY_DIGEST": + fallthrough + case "PODCAST": + fallthrough + case "TASK": + fallthrough + case "PLAN_MY_DAY": + fallthrough + case "END_MY_DAY": + fallthrough + case "STARTER_KIT": + fallthrough + case "MEETING_PREP_AUTOMATION": + fallthrough + case "MID_DAY_CATCH_UP": + fallthrough + case "QUERY_SUGGESTION": + fallthrough + case "COWORK_CUJ_PROMO": + fallthrough + case "CARD_STACK_PROMO": + fallthrough + case "WEEKLY_MEETINGS": + fallthrough + case "FOLLOW_UP": + fallthrough + case "MILESTONE_TIMELINE_CHECK": + fallthrough + case "PROJECT_DISCUSSION_DIGEST": + fallthrough + case "PROJECT_FOCUS_BLOCK": + fallthrough + case "PROJECT_NEXT_STEP": + fallthrough + case "DEMO_CARD": + fallthrough + case "RESOLVE_MEETING_CONFLICT": + fallthrough + case "OOO_PLANNER": + fallthrough + case "OOO_CATCH_UP": + fallthrough + case "ADMIN_HEALTH_CENTER": + fallthrough + case "KNOWLEDGE_GAP": *e = FeedResultCategory(v) return nil default: @@ -103,6 +169,36 @@ func (e *FeedResultCategory) UnmarshalJSON(data []byte) error { } } +// PlacementReason - Placement source for ranked feed results. ORGANIC means the card was emitted by normal feed ranking. PROMO means the card was inserted by the homepage cards promo framework. PINNED means the card was moved to the head of the ranked stack (e.g. knowledge-gap pilot cards). +type PlacementReason string + +const ( + PlacementReasonOrganic PlacementReason = "ORGANIC" + PlacementReasonPromo PlacementReason = "PROMO" + PlacementReasonPinned PlacementReason = "PINNED" +) + +func (e PlacementReason) ToPointer() *PlacementReason { + return &e +} +func (e *PlacementReason) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "ORGANIC": + fallthrough + case "PROMO": + fallthrough + case "PINNED": + *e = PlacementReason(v) + return nil + default: + return fmt.Errorf("invalid value for PlacementReason: %v", v) + } +} + type FeedResult struct { // Category of the result, one of the requested categories in incoming request. Category FeedResultCategory `json:"category"` @@ -111,6 +207,8 @@ type FeedResult struct { SecondaryEntries []FeedEntry `json:"secondaryEntries,omitempty"` // Rank of the result. Rank is suggested by server. Client side rank may differ. Rank *int64 `json:"rank,omitempty"` + // Placement source for ranked feed results. ORGANIC means the card was emitted by normal feed ranking. PROMO means the card was inserted by the homepage cards promo framework. PINNED means the card was moved to the head of the ranked stack (e.g. knowledge-gap pilot cards). + PlacementReason *PlacementReason `json:"placementReason,omitempty"` } func (o *FeedResult) GetCategory() FeedResultCategory { @@ -140,3 +238,10 @@ func (o *FeedResult) GetRank() *int64 { } return o.Rank } + +func (o *FeedResult) GetPlacementReason() *PlacementReason { + if o == nil { + return nil + } + return o.PlacementReason +} diff --git a/tests/mockserver/internal/sdk/models/components/getcollectionresponse.go b/tests/mockserver/internal/sdk/models/components/getcollectionresponse.go index e8446d27..e02580ca 100644 --- a/tests/mockserver/internal/sdk/models/components/getcollectionresponse.go +++ b/tests/mockserver/internal/sdk/models/components/getcollectionresponse.go @@ -3,11 +3,13 @@ package components type GetCollectionResponse struct { - Collection *Collection `json:"collection,omitempty"` - RootCollection *Collection `json:"rootCollection,omitempty"` - // An opaque token that represents this particular Collection. To be used for `/feedback` reporting. - TrackingToken *string `json:"trackingToken,omitempty"` - Error *CollectionError `json:"error,omitempty"` + Collection *Collection `json:"collection,omitempty"` + RootCollection *Collection `json:"rootCollection,omitempty"` + Error *CollectionError `json:"error,omitempty"` + // Use `collection.trackingToken` instead. + // + // Deprecated: Deprecated on 2026-05-07, removal scheduled for 2027-01-15: Use `collection.trackingToken` instead.. + TrackingToken *string `json:"trackingToken,omitempty"` } func (o *GetCollectionResponse) GetCollection() *Collection { @@ -24,16 +26,16 @@ func (o *GetCollectionResponse) GetRootCollection() *Collection { return o.RootCollection } -func (o *GetCollectionResponse) GetTrackingToken() *string { +func (o *GetCollectionResponse) GetError() *CollectionError { if o == nil { return nil } - return o.TrackingToken + return o.Error } -func (o *GetCollectionResponse) GetError() *CollectionError { +func (o *GetCollectionResponse) GetTrackingToken() *string { if o == nil { return nil } - return o.Error + return o.TrackingToken } diff --git a/tests/mockserver/internal/sdk/models/components/gleandataerror.go b/tests/mockserver/internal/sdk/models/components/gleandataerror.go index 12eecd2e..d549ead5 100644 --- a/tests/mockserver/internal/sdk/models/components/gleandataerror.go +++ b/tests/mockserver/internal/sdk/models/components/gleandataerror.go @@ -10,6 +10,8 @@ type GleanDataError struct { // Indicates results could not be fetched due to invalid operators in the query. InvalidOperators []InvalidOperatorValueError `json:"invalidOperators,omitempty"` ErrorMessages []ErrorMessage `json:"errorMessages,omitempty"` + // Indicates the federated search results could not be fetched due to rate limiting. + FederatedSearchRateLimitError *bool `json:"federatedSearchRateLimitError,omitempty"` } func (o *GleanDataError) GetBadGmailToken() *bool { @@ -39,3 +41,10 @@ func (o *GleanDataError) GetErrorMessages() []ErrorMessage { } return o.ErrorMessages } + +func (o *GleanDataError) GetFederatedSearchRateLimitError() *bool { + if o == nil { + return nil + } + return o.FederatedSearchRateLimitError +} diff --git a/tests/mockserver/internal/sdk/models/components/grouptype.go b/tests/mockserver/internal/sdk/models/components/grouptype.go index 3f25f70b..be69cc6a 100644 --- a/tests/mockserver/internal/sdk/models/components/grouptype.go +++ b/tests/mockserver/internal/sdk/models/components/grouptype.go @@ -11,14 +11,15 @@ import ( type GroupType string const ( - GroupTypeDepartment GroupType = "DEPARTMENT" - GroupTypeAll GroupType = "ALL" - GroupTypeTeam GroupType = "TEAM" - GroupTypeJobTitle GroupType = "JOB_TITLE" - GroupTypeRoleType GroupType = "ROLE_TYPE" - GroupTypeLocation GroupType = "LOCATION" - GroupTypeRegion GroupType = "REGION" - GroupTypeExternalGroup GroupType = "EXTERNAL_GROUP" + GroupTypeDepartment GroupType = "DEPARTMENT" + GroupTypeAll GroupType = "ALL" + GroupTypeTeam GroupType = "TEAM" + GroupTypeJobTitle GroupType = "JOB_TITLE" + GroupTypeRoleType GroupType = "ROLE_TYPE" + GroupTypeLocation GroupType = "LOCATION" + GroupTypeRegion GroupType = "REGION" + GroupTypeExternalGroup GroupType = "EXTERNAL_GROUP" + GroupTypeCollectionAudience GroupType = "COLLECTION_AUDIENCE" ) func (e GroupType) ToPointer() *GroupType { @@ -45,6 +46,8 @@ func (e *GroupType) UnmarshalJSON(data []byte) error { case "REGION": fallthrough case "EXTERNAL_GROUP": + fallthrough + case "COLLECTION_AUDIENCE": *e = GroupType(v) return nil default: diff --git a/tests/mockserver/internal/sdk/models/components/importagentrequest.go b/tests/mockserver/internal/sdk/models/components/importagentrequest.go new file mode 100644 index 00000000..f4d77d24 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/importagentrequest.go @@ -0,0 +1,86 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "io" +) + +type Bundle struct { + FileName string `multipartForm:"name=fileName"` + Content io.Reader `multipartForm:"content"` +} + +func (o *Bundle) GetFileName() string { + if o == nil { + return "" + } + return o.FileName +} + +func (o *Bundle) GetContent() io.Reader { + if o == nil { + return nil + } + return o.Content +} + +type ImportAgentRequest struct { + // Zip of the agent folder (spec.yaml, instructions.md, skills/, subagents/) with symlinks dereferenced. + // + Bundle Bundle `multipartForm:"file,name=bundle"` + // Optional Git commit SHA to associate with this import. + GitCommitSha *string `multipartForm:"name=gitCommitSha"` + // Optional VCS commit author ID to associate with this import. + GitAuthorID *string `multipartForm:"name=gitAuthorId"` + // Optional commit message for the imported version. + CommitMessage *string `multipartForm:"name=commitMessage"` + // Whether the imported version is staged (saved without updating the live version) or published directly to the live version. + // + SyncMode *ImportAgentSyncMode `multipartForm:"name=syncMode"` + // When true, validates and stores a draft preview without publishing (used for PR preview links). Takes precedence over `syncMode`: when `isDraft` is true, `syncMode` is ignored. + // + IsDraft *bool `multipartForm:"name=isDraft"` +} + +func (o *ImportAgentRequest) GetBundle() Bundle { + if o == nil { + return Bundle{} + } + return o.Bundle +} + +func (o *ImportAgentRequest) GetGitCommitSha() *string { + if o == nil { + return nil + } + return o.GitCommitSha +} + +func (o *ImportAgentRequest) GetGitAuthorID() *string { + if o == nil { + return nil + } + return o.GitAuthorID +} + +func (o *ImportAgentRequest) GetCommitMessage() *string { + if o == nil { + return nil + } + return o.CommitMessage +} + +func (o *ImportAgentRequest) GetSyncMode() *ImportAgentSyncMode { + if o == nil { + return nil + } + return o.SyncMode +} + +func (o *ImportAgentRequest) GetIsDraft() *bool { + if o == nil { + return nil + } + return o.IsDraft +} diff --git a/tests/mockserver/internal/sdk/models/components/importagentresponse.go b/tests/mockserver/internal/sdk/models/components/importagentresponse.go new file mode 100644 index 00000000..711f70bd --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/importagentresponse.go @@ -0,0 +1,23 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type ImportAgentResponse struct { + WorkflowResult *WorkflowResult `json:"workflowResult,omitempty"` + // Outcome of the import for the target agent. + Status *ImportAgentStatus `json:"status,omitempty"` +} + +func (o *ImportAgentResponse) GetWorkflowResult() *WorkflowResult { + if o == nil { + return nil + } + return o.WorkflowResult +} + +func (o *ImportAgentResponse) GetStatus() *ImportAgentStatus { + if o == nil { + return nil + } + return o.Status +} diff --git a/tests/mockserver/internal/sdk/models/components/importagentstatus.go b/tests/mockserver/internal/sdk/models/components/importagentstatus.go new file mode 100644 index 00000000..9098ec1e --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/importagentstatus.go @@ -0,0 +1,38 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" +) + +// ImportAgentStatus - Outcome of the import for the target agent. +type ImportAgentStatus string + +const ( + ImportAgentStatusCreated ImportAgentStatus = "CREATED" + ImportAgentStatusUpdated ImportAgentStatus = "UPDATED" + ImportAgentStatusDraftPreview ImportAgentStatus = "DRAFT_PREVIEW" +) + +func (e ImportAgentStatus) ToPointer() *ImportAgentStatus { + return &e +} +func (e *ImportAgentStatus) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "CREATED": + fallthrough + case "UPDATED": + fallthrough + case "DRAFT_PREVIEW": + *e = ImportAgentStatus(v) + return nil + default: + return fmt.Errorf("invalid value for ImportAgentStatus: %v", v) + } +} diff --git a/tests/mockserver/internal/sdk/models/components/importagentsyncmode.go b/tests/mockserver/internal/sdk/models/components/importagentsyncmode.go new file mode 100644 index 00000000..993ad143 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/importagentsyncmode.go @@ -0,0 +1,35 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" +) + +// ImportAgentSyncMode - Whether the imported version is staged (saved without updating the live version) or published directly to the live version. +type ImportAgentSyncMode string + +const ( + ImportAgentSyncModeStaged ImportAgentSyncMode = "STAGED" + ImportAgentSyncModePublished ImportAgentSyncMode = "PUBLISHED" +) + +func (e ImportAgentSyncMode) ToPointer() *ImportAgentSyncMode { + return &e +} +func (e *ImportAgentSyncMode) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "STAGED": + fallthrough + case "PUBLISHED": + *e = ImportAgentSyncMode(v) + return nil + default: + return fmt.Errorf("invalid value for ImportAgentSyncMode: %v", v) + } +} diff --git a/tests/mockserver/internal/sdk/models/components/inputoptions.go b/tests/mockserver/internal/sdk/models/components/inputoptions.go index a39771cd..9ab2cc24 100644 --- a/tests/mockserver/internal/sdk/models/components/inputoptions.go +++ b/tests/mockserver/internal/sdk/models/components/inputoptions.go @@ -74,19 +74,21 @@ func (e *InputOptionsTimePeriodType) UnmarshalJSON(data []byte) error { type InputOptions struct { // list of url regex matching documents excluded from report // - // Deprecated: This will be removed in a future release, please migrate away from it as soon as possible. + // Deprecated: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Field is deprecated. URLGreenlist []string `json:"urlGreenlist,omitempty"` // The types of datasource for which to run the report/policy. DatasourcesType *DatasourcesType `json:"datasourcesType,omitempty"` // List of datasources to consider for report. DEPRECATED - use datasourceInstances instead. // - // Deprecated: This will be removed in a future release, please migrate away from it as soon as possible. + // Deprecated: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use datasourceInstances instead. Datasources []string `json:"datasources,omitempty"` // List of datasource instances to consider for report/policy. DatasourceInstances []string `json:"datasourceInstances,omitempty"` // Type of time period for which to run the report/policy. PAST_DAY is deprecated. TimePeriodType *InputOptionsTimePeriodType `json:"timePeriodType,omitempty"` CustomTimeRange *TimeRange `json:"customTimeRange,omitempty"` + // Subset of document IDs to scan. If empty, all documents matching other scope criteria will be scanned. + SubsetDocIdsToScan []string `json:"subsetDocIdsToScan,omitempty"` } func (o *InputOptions) GetURLGreenlist() []string { @@ -130,3 +132,10 @@ func (o *InputOptions) GetCustomTimeRange() *TimeRange { } return o.CustomTimeRange } + +func (o *InputOptions) GetSubsetDocIdsToScan() []string { + if o == nil { + return nil + } + return o.SubsetDocIdsToScan +} diff --git a/tests/mockserver/internal/sdk/models/components/insightsagentsrequestoptions.go b/tests/mockserver/internal/sdk/models/components/insightsagentsrequestoptions.go deleted file mode 100644 index 6b825aec..00000000 --- a/tests/mockserver/internal/sdk/models/components/insightsagentsrequestoptions.go +++ /dev/null @@ -1,15 +0,0 @@ -// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - -package components - -type InsightsAgentsRequestOptions struct { - // IDs of the Agents for which Insights should be returned. An empty array signifies all. - AgentIds []string `json:"agentIds,omitempty"` -} - -func (o *InsightsAgentsRequestOptions) GetAgentIds() []string { - if o == nil { - return nil - } - return o.AgentIds -} diff --git a/tests/mockserver/internal/sdk/models/components/insightsaiapprequestoptions.go b/tests/mockserver/internal/sdk/models/components/insightsaiapprequestoptions.go deleted file mode 100644 index 7275316c..00000000 --- a/tests/mockserver/internal/sdk/models/components/insightsaiapprequestoptions.go +++ /dev/null @@ -1,15 +0,0 @@ -// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - -package components - -type InsightsAiAppRequestOptions struct { - // IDs of the AI Apps for which Insights should be returned. An empty array signifies all. - AiAppIds []string `json:"aiAppIds,omitempty"` -} - -func (o *InsightsAiAppRequestOptions) GetAiAppIds() []string { - if o == nil { - return nil - } - return o.AiAppIds -} diff --git a/tests/mockserver/internal/sdk/models/components/insightsassistantrequest.go b/tests/mockserver/internal/sdk/models/components/insightsassistantrequest.go index 6d54c660..29a882de 100644 --- a/tests/mockserver/internal/sdk/models/components/insightsassistantrequest.go +++ b/tests/mockserver/internal/sdk/models/components/insightsassistantrequest.go @@ -5,7 +5,9 @@ package components type InsightsAssistantRequest struct { // Departments for which Insights are requested. Departments []string `json:"departments,omitempty"` - DayRange *Period `json:"dayRange,omitempty"` + // Manager emails whose teams should be filtered for. Empty array means no filtering. + ManagerEmails []string `json:"managerEmails,omitempty"` + DayRange *Period `json:"dayRange,omitempty"` } func (o *InsightsAssistantRequest) GetDepartments() []string { @@ -15,6 +17,13 @@ func (o *InsightsAssistantRequest) GetDepartments() []string { return o.Departments } +func (o *InsightsAssistantRequest) GetManagerEmails() []string { + if o == nil { + return nil + } + return o.ManagerEmails +} + func (o *InsightsAssistantRequest) GetDayRange() *Period { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/components/insightschatsummary.go b/tests/mockserver/internal/sdk/models/components/insightschatsummary.go index d60b2e3e..d5fe3dfc 100644 --- a/tests/mockserver/internal/sdk/models/components/insightschatsummary.go +++ b/tests/mockserver/internal/sdk/models/components/insightschatsummary.go @@ -3,9 +3,9 @@ package components type InsightsChatSummary struct { - // Number of current Monthly Active Users, in the specified departments. + // Number of current Monthly Active Users. MonthlyActiveUsers *int64 `json:"monthlyActiveUsers,omitempty"` - // Number of current Weekly Active Users, in the specified departments. + // Number of current Weekly Active Users. WeeklyActiveUsers *int64 `json:"weeklyActiveUsers,omitempty"` // Total number of chats by users over the specified time period. NumChats *int64 `json:"numChats,omitempty"` diff --git a/tests/mockserver/internal/sdk/models/components/insightsoverviewrequest.go b/tests/mockserver/internal/sdk/models/components/insightsoverviewrequest.go index 79e6d2e9..5e903919 100644 --- a/tests/mockserver/internal/sdk/models/components/insightsoverviewrequest.go +++ b/tests/mockserver/internal/sdk/models/components/insightsoverviewrequest.go @@ -5,7 +5,9 @@ package components type InsightsOverviewRequest struct { // Departments for which Insights are requested. Departments []string `json:"departments,omitempty"` - DayRange *Period `json:"dayRange,omitempty"` + // Manager emails whose teams should be filtered for. Empty array means no filtering. + ManagerEmails []string `json:"managerEmails,omitempty"` + DayRange *Period `json:"dayRange,omitempty"` } func (o *InsightsOverviewRequest) GetDepartments() []string { @@ -15,6 +17,13 @@ func (o *InsightsOverviewRequest) GetDepartments() []string { return o.Departments } +func (o *InsightsOverviewRequest) GetManagerEmails() []string { + if o == nil { + return nil + } + return o.ManagerEmails +} + func (o *InsightsOverviewRequest) GetDayRange() *Period { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/components/insightsoverviewresponse.go b/tests/mockserver/internal/sdk/models/components/insightsoverviewresponse.go index 96074649..2e8c2ec9 100644 --- a/tests/mockserver/internal/sdk/models/components/insightsoverviewresponse.go +++ b/tests/mockserver/internal/sdk/models/components/insightsoverviewresponse.go @@ -3,23 +3,29 @@ package components type InsightsOverviewResponse struct { - // Number of current Monthly Active Users, in the specified departments. + // Number of current Monthly Active Users. MonthlyActiveUsers *int64 `json:"monthlyActiveUsers,omitempty"` - // Number of current Weekly Active Users, in the specified departments. + // Number of current Weekly Active Users. WeeklyActiveUsers *int64 `json:"weeklyActiveUsers,omitempty"` // Department name(s). Departments []string `json:"departments,omitempty"` // Number of current employees in the specified departments, according to the Org Chart. EmployeeCount *int64 `json:"employeeCount,omitempty"` // Number of current signed up employees in the specified departments, according to the Org Chart. - TotalSignups *int64 `json:"totalSignups,omitempty"` - SearchSummary *InsightsSearchSummary `json:"searchSummary,omitempty"` - ChatSummary *InsightsChatSummary `json:"chatSummary,omitempty"` - ExtensionSummary *CurrentActiveUsers `json:"extensionSummary,omitempty"` - UgcSummary *CurrentActiveUsers `json:"ugcSummary,omitempty"` + TotalSignups *int64 `json:"totalSignups,omitempty"` + SearchSummary *InsightsSearchSummary `json:"searchSummary,omitempty"` + ChatSummary *InsightsChatSummary `json:"chatSummary,omitempty"` + SearchActiveUsers *CurrentActiveUsers `json:"searchActiveUsers,omitempty"` + AssistantActiveUsers *CurrentActiveUsers `json:"assistantActiveUsers,omitempty"` + AgentsActiveUsers *CurrentActiveUsers `json:"agentsActiveUsers,omitempty"` + McpActiveUsers *CurrentActiveUsers `json:"mcpActiveUsers,omitempty"` + ExtensionSummary *CurrentActiveUsers `json:"extensionSummary,omitempty"` + UgcSummary *CurrentActiveUsers `json:"ugcSummary,omitempty"` // Unix timestamp of the last update for the insights data in the response. LastUpdatedTs *int64 `json:"lastUpdatedTs,omitempty"` // Search session satisfaction rate, over the specified time period in the specified departments. + // + // Deprecated: Deprecated on 2026-05-13, removal scheduled for 2027-01-15: This property is no longer supported. Please contact Support for alternatives.. SearchSessionSatisfaction *float32 `json:"searchSessionSatisfaction,omitempty"` MonthlyActiveUserTimeseries *LabeledCountInfo `json:"monthlyActiveUserTimeseries,omitempty"` WeeklyActiveUserTimeseries *LabeledCountInfo `json:"weeklyActiveUserTimeseries,omitempty"` @@ -33,9 +39,13 @@ type InsightsOverviewResponse struct { AgentsMonthlyActiveUserTimeseries *LabeledCountInfo `json:"agentsMonthlyActiveUserTimeseries,omitempty"` AgentsWeeklyActiveUserTimeseries *LabeledCountInfo `json:"agentsWeeklyActiveUserTimeseries,omitempty"` AgentsDailyActiveUserTimeseries *LabeledCountInfo `json:"agentsDailyActiveUserTimeseries,omitempty"` + McpMonthlyActiveUserTimeseries *LabeledCountInfo `json:"mcpMonthlyActiveUserTimeseries,omitempty"` + McpWeeklyActiveUserTimeseries *LabeledCountInfo `json:"mcpWeeklyActiveUserTimeseries,omitempty"` + McpDailyActiveUserTimeseries *LabeledCountInfo `json:"mcpDailyActiveUserTimeseries,omitempty"` SearchesTimeseries *LabeledCountInfo `json:"searchesTimeseries,omitempty"` AssistantInteractionsTimeseries *LabeledCountInfo `json:"assistantInteractionsTimeseries,omitempty"` AgentRunsTimeseries *LabeledCountInfo `json:"agentRunsTimeseries,omitempty"` + McpCallsTimeseries *LabeledCountInfo `json:"mcpCallsTimeseries,omitempty"` // Counts of search result clicks, by datasource, over the specified time period in the specified departments. SearchDatasourceCounts map[string]int64 `json:"searchDatasourceCounts,omitempty"` // Counts of cited documents in chat, by datasource, over the specified time period in the specified departments. @@ -93,6 +103,34 @@ func (o *InsightsOverviewResponse) GetChatSummary() *InsightsChatSummary { return o.ChatSummary } +func (o *InsightsOverviewResponse) GetSearchActiveUsers() *CurrentActiveUsers { + if o == nil { + return nil + } + return o.SearchActiveUsers +} + +func (o *InsightsOverviewResponse) GetAssistantActiveUsers() *CurrentActiveUsers { + if o == nil { + return nil + } + return o.AssistantActiveUsers +} + +func (o *InsightsOverviewResponse) GetAgentsActiveUsers() *CurrentActiveUsers { + if o == nil { + return nil + } + return o.AgentsActiveUsers +} + +func (o *InsightsOverviewResponse) GetMcpActiveUsers() *CurrentActiveUsers { + if o == nil { + return nil + } + return o.McpActiveUsers +} + func (o *InsightsOverviewResponse) GetExtensionSummary() *CurrentActiveUsers { if o == nil { return nil @@ -205,6 +243,27 @@ func (o *InsightsOverviewResponse) GetAgentsDailyActiveUserTimeseries() *Labeled return o.AgentsDailyActiveUserTimeseries } +func (o *InsightsOverviewResponse) GetMcpMonthlyActiveUserTimeseries() *LabeledCountInfo { + if o == nil { + return nil + } + return o.McpMonthlyActiveUserTimeseries +} + +func (o *InsightsOverviewResponse) GetMcpWeeklyActiveUserTimeseries() *LabeledCountInfo { + if o == nil { + return nil + } + return o.McpWeeklyActiveUserTimeseries +} + +func (o *InsightsOverviewResponse) GetMcpDailyActiveUserTimeseries() *LabeledCountInfo { + if o == nil { + return nil + } + return o.McpDailyActiveUserTimeseries +} + func (o *InsightsOverviewResponse) GetSearchesTimeseries() *LabeledCountInfo { if o == nil { return nil @@ -226,6 +285,13 @@ func (o *InsightsOverviewResponse) GetAgentRunsTimeseries() *LabeledCountInfo { return o.AgentRunsTimeseries } +func (o *InsightsOverviewResponse) GetMcpCallsTimeseries() *LabeledCountInfo { + if o == nil { + return nil + } + return o.McpCallsTimeseries +} + func (o *InsightsOverviewResponse) GetSearchDatasourceCounts() map[string]int64 { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/components/insightsrequest.go b/tests/mockserver/internal/sdk/models/components/insightsrequest.go index 4129c48e..5d275bd5 100644 --- a/tests/mockserver/internal/sdk/models/components/insightsrequest.go +++ b/tests/mockserver/internal/sdk/models/components/insightsrequest.go @@ -2,126 +2,14 @@ package components -import ( - "encoding/json" - "fmt" -) - -type InsightsRequestCategory string - -const ( - InsightsRequestCategoryAgents InsightsRequestCategory = "AGENTS" - InsightsRequestCategoryAgentUsers InsightsRequestCategory = "AGENT_USERS" - InsightsRequestCategoryTopAgents InsightsRequestCategory = "TOP_AGENTS" - InsightsRequestCategoryAgentsUsageByDepartment InsightsRequestCategory = "AGENTS_USAGE_BY_DEPARTMENT" - InsightsRequestCategoryAi InsightsRequestCategory = "AI" - InsightsRequestCategoryAiApps InsightsRequestCategory = "AI_APPS" - InsightsRequestCategoryAnnouncements InsightsRequestCategory = "ANNOUNCEMENTS" - InsightsRequestCategoryAnswers InsightsRequestCategory = "ANSWERS" - InsightsRequestCategoryCollections InsightsRequestCategory = "COLLECTIONS" - InsightsRequestCategoryContent InsightsRequestCategory = "CONTENT" - InsightsRequestCategoryGleanAssist InsightsRequestCategory = "GLEAN_ASSIST" - InsightsRequestCategoryQueries InsightsRequestCategory = "QUERIES" - InsightsRequestCategoryShortcuts InsightsRequestCategory = "SHORTCUTS" - InsightsRequestCategoryUsers InsightsRequestCategory = "USERS" -) - -func (e InsightsRequestCategory) ToPointer() *InsightsRequestCategory { - return &e -} -func (e *InsightsRequestCategory) UnmarshalJSON(data []byte) error { - var v string - if err := json.Unmarshal(data, &v); err != nil { - return err - } - switch v { - case "AGENTS": - fallthrough - case "AGENT_USERS": - fallthrough - case "TOP_AGENTS": - fallthrough - case "AGENTS_USAGE_BY_DEPARTMENT": - fallthrough - case "AI": - fallthrough - case "AI_APPS": - fallthrough - case "ANNOUNCEMENTS": - fallthrough - case "ANSWERS": - fallthrough - case "COLLECTIONS": - fallthrough - case "CONTENT": - fallthrough - case "GLEAN_ASSIST": - fallthrough - case "QUERIES": - fallthrough - case "SHORTCUTS": - fallthrough - case "USERS": - *e = InsightsRequestCategory(v) - return nil - default: - return fmt.Errorf("invalid value for InsightsRequestCategory: %v", v) - } -} - -type AssistantActivityType string - -const ( - AssistantActivityTypeGleanChat AssistantActivityType = "GLEAN_CHAT" - AssistantActivityTypeAiSummary AssistantActivityType = "AI_SUMMARY" - AssistantActivityTypeAiAnswer AssistantActivityType = "AI_ANSWER" - AssistantActivityTypeGleanbotResponse AssistantActivityType = "GLEANBOT_RESPONSE" -) - -func (e AssistantActivityType) ToPointer() *AssistantActivityType { - return &e -} -func (e *AssistantActivityType) UnmarshalJSON(data []byte) error { - var v string - if err := json.Unmarshal(data, &v); err != nil { - return err - } - switch v { - case "GLEAN_CHAT": - fallthrough - case "AI_SUMMARY": - fallthrough - case "AI_ANSWER": - fallthrough - case "GLEANBOT_RESPONSE": - *e = AssistantActivityType(v) - return nil - default: - return fmt.Errorf("invalid value for AssistantActivityType: %v", v) - } -} - type InsightsRequest struct { - OverviewRequest *InsightsOverviewRequest `json:"overviewRequest,omitempty"` - AssistantRequest *InsightsAssistantRequest `json:"assistantRequest,omitempty"` - AgentsRequest *AgentsInsightsV2Request `json:"agentsRequest,omitempty"` + OverviewRequest *InsightsOverviewRequest `json:"overviewRequest,omitempty"` + AssistantRequest *InsightsAssistantRequest `json:"assistantRequest,omitempty"` + AgentsRequest *AgentsInsightsV2Request `json:"agentsRequest,omitempty"` + McpRequest *McpInsightsRequest `json:"mcpRequest,omitempty"` + McpBreakdownRequest *McpBreakdownInsightsRequest `json:"mcpBreakdownRequest,omitempty"` // If true, suppresses the generation of per-user Insights in the response. Default is false. DisablePerUserInsights *bool `json:"disablePerUserInsights,omitempty"` - // Categories of data requested. Request can include single or multiple types. - // - // Deprecated: This will be removed in a future release, please migrate away from it as soon as possible. - Categories []InsightsRequestCategory `json:"categories,omitempty"` - // Departments that the data is requested for. If this is empty, corresponds to whole company. - // - // Deprecated: This will be removed in a future release, please migrate away from it as soon as possible. - Departments []string `json:"departments,omitempty"` - DayRange *Period `json:"dayRange,omitempty"` - AiAppRequestOptions *InsightsAiAppRequestOptions `json:"aiAppRequestOptions,omitempty"` - AgentsRequestOptions *InsightsAgentsRequestOptions `json:"agentsRequestOptions,omitempty"` - // Types of activity that should count in the definition of an Assistant Active User. Affects only insights for AI category. - // - // Deprecated: This will be removed in a future release, please migrate away from it as soon as possible. - AssistantActivityTypes []AssistantActivityType `json:"assistantActivityTypes,omitempty"` } func (o *InsightsRequest) GetOverviewRequest() *InsightsOverviewRequest { @@ -145,51 +33,23 @@ func (o *InsightsRequest) GetAgentsRequest() *AgentsInsightsV2Request { return o.AgentsRequest } -func (o *InsightsRequest) GetDisablePerUserInsights() *bool { +func (o *InsightsRequest) GetMcpRequest() *McpInsightsRequest { if o == nil { return nil } - return o.DisablePerUserInsights + return o.McpRequest } -func (o *InsightsRequest) GetCategories() []InsightsRequestCategory { +func (o *InsightsRequest) GetMcpBreakdownRequest() *McpBreakdownInsightsRequest { if o == nil { return nil } - return o.Categories + return o.McpBreakdownRequest } -func (o *InsightsRequest) GetDepartments() []string { - if o == nil { - return nil - } - return o.Departments -} - -func (o *InsightsRequest) GetDayRange() *Period { - if o == nil { - return nil - } - return o.DayRange -} - -func (o *InsightsRequest) GetAiAppRequestOptions() *InsightsAiAppRequestOptions { - if o == nil { - return nil - } - return o.AiAppRequestOptions -} - -func (o *InsightsRequest) GetAgentsRequestOptions() *InsightsAgentsRequestOptions { - if o == nil { - return nil - } - return o.AgentsRequestOptions -} - -func (o *InsightsRequest) GetAssistantActivityTypes() []AssistantActivityType { +func (o *InsightsRequest) GetDisablePerUserInsights() *bool { if o == nil { return nil } - return o.AssistantActivityTypes + return o.DisablePerUserInsights } diff --git a/tests/mockserver/internal/sdk/models/components/insightsresponse.go b/tests/mockserver/internal/sdk/models/components/insightsresponse.go index e526a92d..9914a52e 100644 --- a/tests/mockserver/internal/sdk/models/components/insightsresponse.go +++ b/tests/mockserver/internal/sdk/models/components/insightsresponse.go @@ -3,138 +3,52 @@ package components type InsightsResponse struct { - // List of timeseries to make charts (if applicable). - // - // Deprecated: This will be removed in a future release, please migrate away from it as soon as possible. - Timeseries []LabeledCountInfo `json:"timeseries,omitempty"` - Users *UserInsightsResponse `json:"users,omitempty"` - Content *ContentInsightsResponse `json:"content,omitempty"` - Queries *QueryInsightsResponse `json:"queries,omitempty"` - Collections *ContentInsightsResponse `json:"collections,omitempty"` - CollectionsV2 *ContentInsightsResponse `json:"collectionsV2,omitempty"` - Shortcuts *ShortcutInsightsResponse `json:"shortcuts,omitempty"` - Announcements *ContentInsightsResponse `json:"announcements,omitempty"` - Answers *ContentInsightsResponse `json:"answers,omitempty"` - Ai *AiInsightsResponse `json:"ai,omitempty"` - AiApps *AiAppsInsightsResponse `json:"aiApps,omitempty"` - GleanAssist *GleanAssistInsightsResponse `json:"gleanAssist,omitempty"` - // list of all departments. - // - // Deprecated: This will be removed in a future release, please migrate away from it as soon as possible. - Departments []string `json:"departments,omitempty"` - OverviewResponse *InsightsOverviewResponse `json:"overviewResponse,omitempty"` - AssistantResponse *AssistantInsightsResponse `json:"assistantResponse,omitempty"` - AgentsResponse *AgentsInsightsV2Response `json:"agentsResponse,omitempty"` + GleanAssist *GleanAssistInsightsResponse `json:"gleanAssist,omitempty"` + OverviewResponse *InsightsOverviewResponse `json:"overviewResponse,omitempty"` + AssistantResponse *AssistantInsightsResponse `json:"assistantResponse,omitempty"` + AgentsResponse *AgentsInsightsV2Response `json:"agentsResponse,omitempty"` + McpResponse *McpInsightsResponse `json:"mcpResponse,omitempty"` + McpBreakdownResponse *McpBreakdownInsightsResponse `json:"mcpBreakdownResponse,omitempty"` } -func (o *InsightsResponse) GetTimeseries() []LabeledCountInfo { - if o == nil { - return nil - } - return o.Timeseries -} - -func (o *InsightsResponse) GetUsers() *UserInsightsResponse { - if o == nil { - return nil - } - return o.Users -} - -func (o *InsightsResponse) GetContent() *ContentInsightsResponse { - if o == nil { - return nil - } - return o.Content -} - -func (o *InsightsResponse) GetQueries() *QueryInsightsResponse { - if o == nil { - return nil - } - return o.Queries -} - -func (o *InsightsResponse) GetCollections() *ContentInsightsResponse { - if o == nil { - return nil - } - return o.Collections -} - -func (o *InsightsResponse) GetCollectionsV2() *ContentInsightsResponse { - if o == nil { - return nil - } - return o.CollectionsV2 -} - -func (o *InsightsResponse) GetShortcuts() *ShortcutInsightsResponse { - if o == nil { - return nil - } - return o.Shortcuts -} - -func (o *InsightsResponse) GetAnnouncements() *ContentInsightsResponse { - if o == nil { - return nil - } - return o.Announcements -} - -func (o *InsightsResponse) GetAnswers() *ContentInsightsResponse { - if o == nil { - return nil - } - return o.Answers -} - -func (o *InsightsResponse) GetAi() *AiInsightsResponse { - if o == nil { - return nil - } - return o.Ai -} - -func (o *InsightsResponse) GetAiApps() *AiAppsInsightsResponse { +func (o *InsightsResponse) GetGleanAssist() *GleanAssistInsightsResponse { if o == nil { return nil } - return o.AiApps + return o.GleanAssist } -func (o *InsightsResponse) GetGleanAssist() *GleanAssistInsightsResponse { +func (o *InsightsResponse) GetOverviewResponse() *InsightsOverviewResponse { if o == nil { return nil } - return o.GleanAssist + return o.OverviewResponse } -func (o *InsightsResponse) GetDepartments() []string { +func (o *InsightsResponse) GetAssistantResponse() *AssistantInsightsResponse { if o == nil { return nil } - return o.Departments + return o.AssistantResponse } -func (o *InsightsResponse) GetOverviewResponse() *InsightsOverviewResponse { +func (o *InsightsResponse) GetAgentsResponse() *AgentsInsightsV2Response { if o == nil { return nil } - return o.OverviewResponse + return o.AgentsResponse } -func (o *InsightsResponse) GetAssistantResponse() *AssistantInsightsResponse { +func (o *InsightsResponse) GetMcpResponse() *McpInsightsResponse { if o == nil { return nil } - return o.AssistantResponse + return o.McpResponse } -func (o *InsightsResponse) GetAgentsResponse() *AgentsInsightsV2Response { +func (o *InsightsResponse) GetMcpBreakdownResponse() *McpBreakdownInsightsResponse { if o == nil { return nil } - return o.AgentsResponse + return o.McpBreakdownResponse } diff --git a/tests/mockserver/internal/sdk/models/components/insightssearchsummary.go b/tests/mockserver/internal/sdk/models/components/insightssearchsummary.go index 23269c55..408d84ba 100644 --- a/tests/mockserver/internal/sdk/models/components/insightssearchsummary.go +++ b/tests/mockserver/internal/sdk/models/components/insightssearchsummary.go @@ -3,9 +3,9 @@ package components type InsightsSearchSummary struct { - // Number of current Monthly Active Users, in the specified departments. + // Number of current Monthly Active Users. MonthlyActiveUsers *int64 `json:"monthlyActiveUsers,omitempty"` - // Number of current Weekly Active Users, in the specified departments. + // Number of current Weekly Active Users. WeeklyActiveUsers *int64 `json:"weeklyActiveUsers,omitempty"` // Total number of searches by users over the specified time period. NumSearches *int64 `json:"numSearches,omitempty"` diff --git a/tests/mockserver/internal/sdk/models/components/inviteinfo.go b/tests/mockserver/internal/sdk/models/components/inviteinfo.go index 84469a16..18cac8b3 100644 --- a/tests/mockserver/internal/sdk/models/components/inviteinfo.go +++ b/tests/mockserver/internal/sdk/models/components/inviteinfo.go @@ -16,11 +16,11 @@ type InviteInfo struct { Inviter *Person `json:"inviter,omitempty"` // The time this person was invited in ISO format (ISO 8601). // - // Deprecated: This will be removed in a future release, please migrate away from it as soon as possible. + // Deprecated: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use ChannelInviteInfo instead. InviteTime *time.Time `json:"inviteTime,omitempty"` // The time this person was reminded in ISO format (ISO 8601) if a reminder was sent. // - // Deprecated: This will be removed in a future release, please migrate away from it as soon as possible. + // Deprecated: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use ChannelInviteInfo instead. ReminderTime *time.Time `json:"reminderTime,omitempty"` } diff --git a/tests/mockserver/internal/sdk/models/components/lifecycleevent.go b/tests/mockserver/internal/sdk/models/components/lifecycleevent.go new file mode 100644 index 00000000..0e3627a7 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/lifecycleevent.go @@ -0,0 +1,62 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" +) + +// LifeCycleEventEvent - Type of event +type LifeCycleEventEvent string + +const ( + LifeCycleEventEventUploaded LifeCycleEventEvent = "UPLOADED" + LifeCycleEventEventIndexed LifeCycleEventEvent = "INDEXED" + LifeCycleEventEventDeletionRequested LifeCycleEventEvent = "DELETION_REQUESTED" + LifeCycleEventEventDeleted LifeCycleEventEvent = "DELETED" +) + +func (e LifeCycleEventEvent) ToPointer() *LifeCycleEventEvent { + return &e +} +func (e *LifeCycleEventEvent) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "UPLOADED": + fallthrough + case "INDEXED": + fallthrough + case "DELETION_REQUESTED": + fallthrough + case "DELETED": + *e = LifeCycleEventEvent(v) + return nil + default: + return fmt.Errorf("invalid value for LifeCycleEventEvent: %v", v) + } +} + +type LifeCycleEvent struct { + // Type of event + Event *LifeCycleEventEvent `json:"event,omitempty"` + // Timestamp of the event + Timestamp *string `json:"timestamp,omitempty"` +} + +func (o *LifeCycleEvent) GetEvent() *LifeCycleEventEvent { + if o == nil { + return nil + } + return o.Event +} + +func (o *LifeCycleEvent) GetTimestamp() *string { + if o == nil { + return nil + } + return o.Timestamp +} diff --git a/tests/mockserver/internal/sdk/models/components/listchatsresponse.go b/tests/mockserver/internal/sdk/models/components/listchatsresponse.go index 9a646b6b..19ca70fc 100644 --- a/tests/mockserver/internal/sdk/models/components/listchatsresponse.go +++ b/tests/mockserver/internal/sdk/models/components/listchatsresponse.go @@ -4,6 +4,8 @@ package components type ListChatsResponse struct { ChatResults []ChatMetadataResult `json:"chatResults,omitempty"` + // An opaque cursor for fetching the next page of results. If empty, there are no more results. + Cursor *string `json:"cursor,omitempty"` } func (o *ListChatsResponse) GetChatResults() []ChatMetadataResult { @@ -12,3 +14,10 @@ func (o *ListChatsResponse) GetChatResults() []ChatMetadataResult { } return o.ChatResults } + +func (o *ListChatsResponse) GetCursor() *string { + if o == nil { + return nil + } + return o.Cursor +} diff --git a/tests/mockserver/internal/sdk/models/components/listentitiesrequest.go b/tests/mockserver/internal/sdk/models/components/listentitiesrequest.go index 339c8ffc..a742d389 100644 --- a/tests/mockserver/internal/sdk/models/components/listentitiesrequest.go +++ b/tests/mockserver/internal/sdk/models/components/listentitiesrequest.go @@ -84,18 +84,18 @@ func (e *ListEntitiesRequestIncludeField) UnmarshalJSON(data []byte) error { } } -// RequestType - The type of request being made. -type RequestType string +// ListEntitiesRequestRequestType - The type of request being made. +type ListEntitiesRequestRequestType string const ( - RequestTypeStandard RequestType = "STANDARD" - RequestTypeFullDirectory RequestType = "FULL_DIRECTORY" + ListEntitiesRequestRequestTypeStandard ListEntitiesRequestRequestType = "STANDARD" + ListEntitiesRequestRequestTypeFullDirectory ListEntitiesRequestRequestType = "FULL_DIRECTORY" ) -func (e RequestType) ToPointer() *RequestType { +func (e ListEntitiesRequestRequestType) ToPointer() *ListEntitiesRequestRequestType { return &e } -func (e *RequestType) UnmarshalJSON(data []byte) error { +func (e *ListEntitiesRequestRequestType) UnmarshalJSON(data []byte) error { var v string if err := json.Unmarshal(data, &v); err != nil { return err @@ -104,10 +104,10 @@ func (e *RequestType) UnmarshalJSON(data []byte) error { case "STANDARD": fallthrough case "FULL_DIRECTORY": - *e = RequestType(v) + *e = ListEntitiesRequestRequestType(v) return nil default: - return fmt.Errorf("invalid value for RequestType: %v", v) + return fmt.Errorf("invalid value for ListEntitiesRequestRequestType: %v", v) } } @@ -129,7 +129,7 @@ type ListEntitiesRequest struct { // A string denoting the search surface from which the endpoint is called. Source *string `json:"source,omitempty"` // The type of request being made. - RequestType *RequestType `default:"STANDARD" json:"requestType"` + RequestType *ListEntitiesRequestRequestType `default:"STANDARD" json:"requestType"` } func (l ListEntitiesRequest) MarshalJSON() ([]byte, error) { @@ -206,7 +206,7 @@ func (o *ListEntitiesRequest) GetSource() *string { return o.Source } -func (o *ListEntitiesRequest) GetRequestType() *RequestType { +func (o *ListEntitiesRequest) GetRequestType() *ListEntitiesRequestRequestType { if o == nil { return nil } diff --git a/tests/mockserver/internal/sdk/models/components/manualfeedbackinfo.go b/tests/mockserver/internal/sdk/models/components/manualfeedbackinfo.go index b31d82d2..a6091270 100644 --- a/tests/mockserver/internal/sdk/models/components/manualfeedbackinfo.go +++ b/tests/mockserver/internal/sdk/models/components/manualfeedbackinfo.go @@ -97,17 +97,23 @@ func (e *ManualFeedbackInfoSource) UnmarshalJSON(data []byte) error { type Issue string const ( - IssueInaccurateResponse Issue = "INACCURATE_RESPONSE" - IssueIncompleteOrNoAnswer Issue = "INCOMPLETE_OR_NO_ANSWER" - IssueIncorrectCitation Issue = "INCORRECT_CITATION" - IssueMissingCitation Issue = "MISSING_CITATION" - IssueOther Issue = "OTHER" - IssueOutdatedResponse Issue = "OUTDATED_RESPONSE" - IssueResultMissing Issue = "RESULT_MISSING" - IssueResultShouldNotAppear Issue = "RESULT_SHOULD_NOT_APPEAR" - IssueResultsHelpful Issue = "RESULTS_HELPFUL" - IssueResultsPoorOrder Issue = "RESULTS_POOR_ORDER" - IssueTooMuchOneKind Issue = "TOO_MUCH_ONE_KIND" + IssueAgentCanvasFailed Issue = "AGENT_CANVAS_FAILED" + IssueAgentClarifyingQuestions Issue = "AGENT_CLARIFYING_QUESTIONS" + IssueAgentIntermediateStepsFailed Issue = "AGENT_INTERMEDIATE_STEPS_FAILED" + IssueAgentToolCallFailed Issue = "AGENT_TOOL_CALL_FAILED" + IssueInaccurateResponse Issue = "INACCURATE_RESPONSE" + IssueIncompleteOrNoAnswer Issue = "INCOMPLETE_OR_NO_ANSWER" + IssueIncorrectCitation Issue = "INCORRECT_CITATION" + IssueMissingCitation Issue = "MISSING_CITATION" + IssueOther Issue = "OTHER" + IssueOutdatedResponse Issue = "OUTDATED_RESPONSE" + IssueResultMissing Issue = "RESULT_MISSING" + IssueResultShouldNotAppear Issue = "RESULT_SHOULD_NOT_APPEAR" + IssueResultsHelpful Issue = "RESULTS_HELPFUL" + IssueResultsPoorOrder Issue = "RESULTS_POOR_ORDER" + IssueTooMuchOneKind Issue = "TOO_MUCH_ONE_KIND" + IssueNotAQuestion Issue = "NOT_A_QUESTION" + IssueUnsureIfCorrect Issue = "UNSURE_IF_CORRECT" ) func (e Issue) ToPointer() *Issue { @@ -119,6 +125,14 @@ func (e *Issue) UnmarshalJSON(data []byte) error { return err } switch v { + case "AGENT_CANVAS_FAILED": + fallthrough + case "AGENT_CLARIFYING_QUESTIONS": + fallthrough + case "AGENT_INTERMEDIATE_STEPS_FAILED": + fallthrough + case "AGENT_TOOL_CALL_FAILED": + fallthrough case "INACCURATE_RESPONSE": fallthrough case "INCOMPLETE_OR_NO_ANSWER": @@ -140,6 +154,10 @@ func (e *Issue) UnmarshalJSON(data []byte) error { case "RESULTS_POOR_ORDER": fallthrough case "TOO_MUCH_ONE_KIND": + fallthrough + case "NOT_A_QUESTION": + fallthrough + case "UNSURE_IF_CORRECT": *e = Issue(v) return nil default: diff --git a/tests/mockserver/internal/sdk/models/components/mcpbreakdowninsightsrequest.go b/tests/mockserver/internal/sdk/models/components/mcpbreakdowninsightsrequest.go new file mode 100644 index 00000000..ef9a081c --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/mcpbreakdowninsightsrequest.go @@ -0,0 +1,115 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" +) + +// BreakdownType - Type of breakdown to return. +type BreakdownType string + +const ( + BreakdownTypeUsers BreakdownType = "USERS" + BreakdownTypeHostApplications BreakdownType = "HOST_APPLICATIONS" + BreakdownTypeTools BreakdownType = "TOOLS" + BreakdownTypeServers BreakdownType = "SERVERS" +) + +func (e BreakdownType) ToPointer() *BreakdownType { + return &e +} +func (e *BreakdownType) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "USERS": + fallthrough + case "HOST_APPLICATIONS": + fallthrough + case "TOOLS": + fallthrough + case "SERVERS": + *e = BreakdownType(v) + return nil + default: + return fmt.Errorf("invalid value for BreakdownType: %v", v) + } +} + +type McpBreakdownInsightsRequest struct { + // Departments for which Insights are requested. + Departments []string `json:"departments,omitempty"` + // Manager user IDs whose teams should be filtered for. Empty array means no filtering. + ManagerIds []string `json:"managerIds,omitempty"` + // Manager emails whose teams should be filtered for. Empty array means no filtering. + ManagerEmails []string `json:"managerEmails,omitempty"` + DayRange *Period `json:"dayRange,omitempty"` + // Type of breakdown to return. + BreakdownType *BreakdownType `json:"breakdownType,omitempty"` + // Host applications to filter by. Empty array means all host applications. + HostApplications []string `json:"hostApplications,omitempty"` + // MCP tools to filter by. Empty array means all tools. + Tools []string `json:"tools,omitempty"` + // MCP servers to filter by. Empty array means all servers. + Servers []string `json:"servers,omitempty"` +} + +func (o *McpBreakdownInsightsRequest) GetDepartments() []string { + if o == nil { + return nil + } + return o.Departments +} + +func (o *McpBreakdownInsightsRequest) GetManagerIds() []string { + if o == nil { + return nil + } + return o.ManagerIds +} + +func (o *McpBreakdownInsightsRequest) GetManagerEmails() []string { + if o == nil { + return nil + } + return o.ManagerEmails +} + +func (o *McpBreakdownInsightsRequest) GetDayRange() *Period { + if o == nil { + return nil + } + return o.DayRange +} + +func (o *McpBreakdownInsightsRequest) GetBreakdownType() *BreakdownType { + if o == nil { + return nil + } + return o.BreakdownType +} + +func (o *McpBreakdownInsightsRequest) GetHostApplications() []string { + if o == nil { + return nil + } + return o.HostApplications +} + +func (o *McpBreakdownInsightsRequest) GetTools() []string { + if o == nil { + return nil + } + return o.Tools +} + +func (o *McpBreakdownInsightsRequest) GetServers() []string { + if o == nil { + return nil + } + return o.Servers +} diff --git a/tests/mockserver/internal/sdk/models/components/mcpbreakdowninsightsresponse.go b/tests/mockserver/internal/sdk/models/components/mcpbreakdowninsightsresponse.go new file mode 100644 index 00000000..8ae55f17 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/mcpbreakdowninsightsresponse.go @@ -0,0 +1,38 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type McpBreakdownInsightsResponse struct { + UsersBreakdown []McpUserBreakdown `json:"usersBreakdown,omitempty"` + HostApplicationsBreakdown []McpHostApplicationBreakdown `json:"hostApplicationsBreakdown,omitempty"` + ToolsBreakdown []McpToolBreakdown `json:"toolsBreakdown,omitempty"` + ServersBreakdown []McpServerBreakdown `json:"serversBreakdown,omitempty"` +} + +func (o *McpBreakdownInsightsResponse) GetUsersBreakdown() []McpUserBreakdown { + if o == nil { + return nil + } + return o.UsersBreakdown +} + +func (o *McpBreakdownInsightsResponse) GetHostApplicationsBreakdown() []McpHostApplicationBreakdown { + if o == nil { + return nil + } + return o.HostApplicationsBreakdown +} + +func (o *McpBreakdownInsightsResponse) GetToolsBreakdown() []McpToolBreakdown { + if o == nil { + return nil + } + return o.ToolsBreakdown +} + +func (o *McpBreakdownInsightsResponse) GetServersBreakdown() []McpServerBreakdown { + if o == nil { + return nil + } + return o.ServersBreakdown +} diff --git a/tests/mockserver/internal/sdk/models/components/mcphostapplicationbreakdown.go b/tests/mockserver/internal/sdk/models/components/mcphostapplicationbreakdown.go new file mode 100644 index 00000000..5b57f57b --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/mcphostapplicationbreakdown.go @@ -0,0 +1,33 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type McpHostApplicationBreakdown struct { + // Host application name. + HostApplication *string `json:"hostApplication,omitempty"` + // Total number of MCP calls made from this host application in the specified time period. + TotalCalls *int64 `json:"totalCalls,omitempty"` + // Total number of active users from this host application in the specified time period. + ActiveUsers *int64 `json:"activeUsers,omitempty"` +} + +func (o *McpHostApplicationBreakdown) GetHostApplication() *string { + if o == nil { + return nil + } + return o.HostApplication +} + +func (o *McpHostApplicationBreakdown) GetTotalCalls() *int64 { + if o == nil { + return nil + } + return o.TotalCalls +} + +func (o *McpHostApplicationBreakdown) GetActiveUsers() *int64 { + if o == nil { + return nil + } + return o.ActiveUsers +} diff --git a/tests/mockserver/internal/sdk/models/components/mcpinsightsrequest.go b/tests/mockserver/internal/sdk/models/components/mcpinsightsrequest.go new file mode 100644 index 00000000..930b2a4e --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/mcpinsightsrequest.go @@ -0,0 +1,41 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type McpInsightsRequest struct { + // Departments for which Insights are requested. + Departments []string `json:"departments,omitempty"` + // Manager user IDs whose teams should be filtered for. Empty array means no filtering. + ManagerIds []string `json:"managerIds,omitempty"` + // Manager emails whose teams should be filtered for. Empty array means no filtering. + ManagerEmails []string `json:"managerEmails,omitempty"` + DayRange *Period `json:"dayRange,omitempty"` +} + +func (o *McpInsightsRequest) GetDepartments() []string { + if o == nil { + return nil + } + return o.Departments +} + +func (o *McpInsightsRequest) GetManagerIds() []string { + if o == nil { + return nil + } + return o.ManagerIds +} + +func (o *McpInsightsRequest) GetManagerEmails() []string { + if o == nil { + return nil + } + return o.ManagerEmails +} + +func (o *McpInsightsRequest) GetDayRange() *Period { + if o == nil { + return nil + } + return o.DayRange +} diff --git a/tests/mockserver/internal/sdk/models/components/mcpinsightsresponse.go b/tests/mockserver/internal/sdk/models/components/mcpinsightsresponse.go new file mode 100644 index 00000000..2d1a08e0 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/mcpinsightsresponse.go @@ -0,0 +1,73 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type McpInsightsResponse struct { + // Number of current Monthly Active Users. + MonthlyActiveUsers *int64 `json:"monthlyActiveUsers,omitempty"` + // Number of current Weekly Active Users. + WeeklyActiveUsers *int64 `json:"weeklyActiveUsers,omitempty"` + // Number of current Daily Active Users. + DailyActiveUsers *int64 `json:"dailyActiveUsers,omitempty"` + MonthlyActiveUserTimeseries *LabeledCountInfo `json:"monthlyActiveUserTimeseries,omitempty"` + WeeklyActiveUserTimeseries *LabeledCountInfo `json:"weeklyActiveUserTimeseries,omitempty"` + DailyActiveUserTimeseries *LabeledCountInfo `json:"dailyActiveUserTimeseries,omitempty"` + OverallDailyActiveUserTimeseries *LabeledCountInfo `json:"overallDailyActiveUserTimeseries,omitempty"` + TopHostApplicationsActiveUserTimeseries []LabeledCountInfo `json:"topHostApplicationsActiveUserTimeseries,omitempty"` +} + +func (o *McpInsightsResponse) GetMonthlyActiveUsers() *int64 { + if o == nil { + return nil + } + return o.MonthlyActiveUsers +} + +func (o *McpInsightsResponse) GetWeeklyActiveUsers() *int64 { + if o == nil { + return nil + } + return o.WeeklyActiveUsers +} + +func (o *McpInsightsResponse) GetDailyActiveUsers() *int64 { + if o == nil { + return nil + } + return o.DailyActiveUsers +} + +func (o *McpInsightsResponse) GetMonthlyActiveUserTimeseries() *LabeledCountInfo { + if o == nil { + return nil + } + return o.MonthlyActiveUserTimeseries +} + +func (o *McpInsightsResponse) GetWeeklyActiveUserTimeseries() *LabeledCountInfo { + if o == nil { + return nil + } + return o.WeeklyActiveUserTimeseries +} + +func (o *McpInsightsResponse) GetDailyActiveUserTimeseries() *LabeledCountInfo { + if o == nil { + return nil + } + return o.DailyActiveUserTimeseries +} + +func (o *McpInsightsResponse) GetOverallDailyActiveUserTimeseries() *LabeledCountInfo { + if o == nil { + return nil + } + return o.OverallDailyActiveUserTimeseries +} + +func (o *McpInsightsResponse) GetTopHostApplicationsActiveUserTimeseries() []LabeledCountInfo { + if o == nil { + return nil + } + return o.TopHostApplicationsActiveUserTimeseries +} diff --git a/tests/mockserver/internal/sdk/models/components/mcpserverbreakdown.go b/tests/mockserver/internal/sdk/models/components/mcpserverbreakdown.go new file mode 100644 index 00000000..6559a26d --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/mcpserverbreakdown.go @@ -0,0 +1,42 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type McpServerBreakdown struct { + // MCP server name. + Server *string `json:"server,omitempty"` + // Total number of MCP calls for this server in the specified time period. + TotalCalls *int64 `json:"totalCalls,omitempty"` + // Total number of active users for this server in the specified time period. + ActiveUsers *int64 `json:"activeUsers,omitempty"` + // Host applications using this server in the specified time period. + HostApplications []string `json:"hostApplications,omitempty"` +} + +func (o *McpServerBreakdown) GetServer() *string { + if o == nil { + return nil + } + return o.Server +} + +func (o *McpServerBreakdown) GetTotalCalls() *int64 { + if o == nil { + return nil + } + return o.TotalCalls +} + +func (o *McpServerBreakdown) GetActiveUsers() *int64 { + if o == nil { + return nil + } + return o.ActiveUsers +} + +func (o *McpServerBreakdown) GetHostApplications() []string { + if o == nil { + return nil + } + return o.HostApplications +} diff --git a/tests/mockserver/internal/sdk/models/components/mcptoolbreakdown.go b/tests/mockserver/internal/sdk/models/components/mcptoolbreakdown.go new file mode 100644 index 00000000..be104ab7 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/mcptoolbreakdown.go @@ -0,0 +1,42 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type McpToolBreakdown struct { + // MCP tool name. + Tool *string `json:"tool,omitempty"` + // Total number of MCP calls for this tool in the specified time period. + TotalCalls *int64 `json:"totalCalls,omitempty"` + // Total number of active users for this tool in the specified time period. + ActiveUsers *int64 `json:"activeUsers,omitempty"` + // Host applications using this tool in the specified time period. + HostApplications []string `json:"hostApplications,omitempty"` +} + +func (o *McpToolBreakdown) GetTool() *string { + if o == nil { + return nil + } + return o.Tool +} + +func (o *McpToolBreakdown) GetTotalCalls() *int64 { + if o == nil { + return nil + } + return o.TotalCalls +} + +func (o *McpToolBreakdown) GetActiveUsers() *int64 { + if o == nil { + return nil + } + return o.ActiveUsers +} + +func (o *McpToolBreakdown) GetHostApplications() []string { + if o == nil { + return nil + } + return o.HostApplications +} diff --git a/tests/mockserver/internal/sdk/models/components/mcpuserbreakdown.go b/tests/mockserver/internal/sdk/models/components/mcpuserbreakdown.go new file mode 100644 index 00000000..73014b6f --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/mcpuserbreakdown.go @@ -0,0 +1,50 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type McpUserBreakdown struct { + Person *Person `json:"person,omitempty"` + // Total number of MCP calls made by this user in the specified time period. + TotalCalls *int64 `json:"totalCalls,omitempty"` + // Host applications used by this user in the specified time period. + HostApplications []string `json:"hostApplications,omitempty"` + // MCP tools used by this user in the specified time period. + Tools []string `json:"tools,omitempty"` + // MCP servers used by this user in the specified time period. + Servers []string `json:"servers,omitempty"` +} + +func (o *McpUserBreakdown) GetPerson() *Person { + if o == nil { + return nil + } + return o.Person +} + +func (o *McpUserBreakdown) GetTotalCalls() *int64 { + if o == nil { + return nil + } + return o.TotalCalls +} + +func (o *McpUserBreakdown) GetHostApplications() []string { + if o == nil { + return nil + } + return o.HostApplications +} + +func (o *McpUserBreakdown) GetTools() []string { + if o == nil { + return nil + } + return o.Tools +} + +func (o *McpUserBreakdown) GetServers() []string { + if o == nil { + return nil + } + return o.Servers +} diff --git a/tests/mockserver/internal/sdk/models/components/objectdefinition.go b/tests/mockserver/internal/sdk/models/components/objectdefinition.go index 9a9c55c6..32a3df40 100644 --- a/tests/mockserver/internal/sdk/models/components/objectdefinition.go +++ b/tests/mockserver/internal/sdk/models/components/objectdefinition.go @@ -29,6 +29,8 @@ const ( DocCategoryEntity DocCategory = "ENTITY" DocCategoryCalendar DocCategory = "CALENDAR" DocCategoryAgents DocCategory = "AGENTS" + DocCategoryAiConversation DocCategory = "AI_CONVERSATION" + DocCategoryAiArtifact DocCategory = "AI_ARTIFACT" ) func (e DocCategory) ToPointer() *DocCategory { @@ -75,6 +77,10 @@ func (e *DocCategory) UnmarshalJSON(data []byte) error { case "CALENDAR": fallthrough case "AGENTS": + fallthrough + case "AI_CONVERSATION": + fallthrough + case "AI_ARTIFACT": *e = DocCategory(v) return nil default: diff --git a/tests/mockserver/internal/sdk/models/components/peragentinsight.go b/tests/mockserver/internal/sdk/models/components/peragentinsight.go index 127d21db..8530b14c 100644 --- a/tests/mockserver/internal/sdk/models/components/peragentinsight.go +++ b/tests/mockserver/internal/sdk/models/components/peragentinsight.go @@ -18,7 +18,8 @@ type PerAgentInsight struct { // Total number of upvotes for this agent over the specified time period. UpvoteCount *int64 `json:"upvoteCount,omitempty"` // Total number of downvotes for this agent over the specified time period. - DownvoteCount *int64 `json:"downvoteCount,omitempty"` + DownvoteCount *int64 `json:"downvoteCount,omitempty"` + Owner *Person `json:"owner,omitempty"` } func (o *PerAgentInsight) GetAgentID() *string { @@ -76,3 +77,10 @@ func (o *PerAgentInsight) GetDownvoteCount() *int64 { } return o.DownvoteCount } + +func (o *PerAgentInsight) GetOwner() *Person { + if o == nil { + return nil + } + return o.Owner +} diff --git a/tests/mockserver/internal/sdk/models/components/personmetadata.go b/tests/mockserver/internal/sdk/models/components/personmetadata.go index da09ade4..7813a6fb 100644 --- a/tests/mockserver/internal/sdk/models/components/personmetadata.go +++ b/tests/mockserver/internal/sdk/models/components/personmetadata.go @@ -54,6 +54,8 @@ type PersonMetadata struct { BusinessUnit *string `json:"businessUnit,omitempty"` // An organizational unit where everyone has a similar task, e.g. `Engineering`. Department *string `json:"department,omitempty"` + // Normalized job-function category assigned by Entity Builder from the source department and, when available, job title. Unlike `department`, which preserves the company-specific organizational unit, this field groups departments into configured categories such as `Engineering`, `Sales`, or `IT`; it may be `Unknown` when the mapping is inconclusive. + JobFunction *string `json:"jobFunction,omitempty"` // Info about the employee's team(s). Teams []PersonTeam `json:"teams,omitempty"` // The number of people in this person's department. @@ -185,6 +187,13 @@ func (o *PersonMetadata) GetDepartment() *string { return o.Department } +func (o *PersonMetadata) GetJobFunction() *string { + if o == nil { + return nil + } + return o.JobFunction +} + func (o *PersonMetadata) GetTeams() []PersonTeam { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/components/peruserinsight.go b/tests/mockserver/internal/sdk/models/components/peruserinsight.go index a300842e..0cda09fd 100644 --- a/tests/mockserver/internal/sdk/models/components/peruserinsight.go +++ b/tests/mockserver/internal/sdk/models/components/peruserinsight.go @@ -20,6 +20,8 @@ type PerUserInsight struct { NumAiAnswers *int64 `json:"numAiAnswers,omitempty"` // Total number of agent runs for this user over the specified time period. NumAgentRuns *int64 `json:"numAgentRuns,omitempty"` + // Total number of MCP calls for this user over the specified time period. + NumMcpCalls *int64 `json:"numMcpCalls,omitempty"` } func (o *PerUserInsight) GetPerson() *Person { @@ -84,3 +86,10 @@ func (o *PerUserInsight) GetNumAgentRuns() *int64 { } return o.NumAgentRuns } + +func (o *PerUserInsight) GetNumMcpCalls() *int64 { + if o == nil { + return nil + } + return o.NumMcpCalls +} diff --git a/tests/mockserver/internal/sdk/models/components/pindocument.go b/tests/mockserver/internal/sdk/models/components/pindocument.go index c2925503..3ccb00d4 100644 --- a/tests/mockserver/internal/sdk/models/components/pindocument.go +++ b/tests/mockserver/internal/sdk/models/components/pindocument.go @@ -15,11 +15,12 @@ type PinDocument struct { // The opaque id of the pin. ID *string `json:"id,omitempty"` // The document which should be a pinned result. - DocumentID string `json:"documentId"` - Attribution *Person `json:"attribution,omitempty"` - UpdatedBy *Person `json:"updatedBy,omitempty"` - CreateTime *time.Time `json:"createTime,omitempty"` - UpdateTime *time.Time `json:"updateTime,omitempty"` + DocumentID string `json:"documentId"` + Attribution *Person `json:"attribution,omitempty"` + UpdatedBy *Person `json:"updatedBy,omitempty"` + CreateTime *time.Time `json:"createTime,omitempty"` + UpdateTime *time.Time `json:"updateTime,omitempty"` + FavoriteInfo *FavoriteInfo `json:"favoriteInfo,omitempty"` } func (p PinDocument) MarshalJSON() ([]byte, error) { @@ -88,3 +89,10 @@ func (o *PinDocument) GetUpdateTime() *time.Time { } return o.UpdateTime } + +func (o *PinDocument) GetFavoriteInfo() *FavoriteInfo { + if o == nil { + return nil + } + return o.FavoriteInfo +} diff --git a/tests/mockserver/internal/sdk/models/components/platformactionsummary.go b/tests/mockserver/internal/sdk/models/components/platformactionsummary.go new file mode 100644 index 00000000..5a56a4c8 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformactionsummary.go @@ -0,0 +1,69 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type PlatformActionSummary struct { + // Unique identifier of the action. + ToolID string `json:"tool_id"` + // Display name of the action. + DisplayName string `json:"display_name"` + // Tool type. + Type *string `json:"type,omitempty"` + // Authentication type required by the action. + AuthType *string `json:"auth_type,omitempty"` + // Write-action execution type. + WriteActionType *string `json:"write_action_type,omitempty"` + // Whether this action has been fully configured. + IsSetupFinished *bool `json:"is_setup_finished,omitempty"` + // Kind of knowledge the action accesses or modifies. + DataSource *string `json:"data_source,omitempty"` +} + +func (o *PlatformActionSummary) GetToolID() string { + if o == nil { + return "" + } + return o.ToolID +} + +func (o *PlatformActionSummary) GetDisplayName() string { + if o == nil { + return "" + } + return o.DisplayName +} + +func (o *PlatformActionSummary) GetType() *string { + if o == nil { + return nil + } + return o.Type +} + +func (o *PlatformActionSummary) GetAuthType() *string { + if o == nil { + return nil + } + return o.AuthType +} + +func (o *PlatformActionSummary) GetWriteActionType() *string { + if o == nil { + return nil + } + return o.WriteActionType +} + +func (o *PlatformActionSummary) GetIsSetupFinished() *bool { + if o == nil { + return nil + } + return o.IsSetupFinished +} + +func (o *PlatformActionSummary) GetDataSource() *string { + if o == nil { + return nil + } + return o.DataSource +} diff --git a/tests/mockserver/internal/sdk/models/components/platformagent.go b/tests/mockserver/internal/sdk/models/components/platformagent.go new file mode 100644 index 00000000..79049da4 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformagent.go @@ -0,0 +1,50 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type PlatformAgent struct { + // ID of the agent. + AgentID string `json:"agent_id"` + // Name of the agent. + Name string `json:"name"` + // Description of the agent. + Description *string `json:"description,omitempty"` + // Agent metadata. + Metadata map[string]any `json:"metadata,omitempty"` + Capabilities PlatformAgentCapabilities `json:"capabilities"` +} + +func (o *PlatformAgent) GetAgentID() string { + if o == nil { + return "" + } + return o.AgentID +} + +func (o *PlatformAgent) GetName() string { + if o == nil { + return "" + } + return o.Name +} + +func (o *PlatformAgent) GetDescription() *string { + if o == nil { + return nil + } + return o.Description +} + +func (o *PlatformAgent) GetMetadata() map[string]any { + if o == nil { + return nil + } + return o.Metadata +} + +func (o *PlatformAgent) GetCapabilities() PlatformAgentCapabilities { + if o == nil { + return PlatformAgentCapabilities{} + } + return o.Capabilities +} diff --git a/tests/mockserver/internal/sdk/models/components/platformagentcapabilities.go b/tests/mockserver/internal/sdk/models/components/platformagentcapabilities.go new file mode 100644 index 00000000..562c8682 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformagentcapabilities.go @@ -0,0 +1,47 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "mockserver/internal/sdk/utils" +) + +type PlatformAgentCapabilities struct { + // Whether the agent supports messages as input. + ApIoMessages *bool `json:"ap.io.messages,omitempty"` + // Whether the agent supports streaming output. + ApIoStreaming *bool `json:"ap.io.streaming,omitempty"` + AdditionalProperties map[string]any `additionalProperties:"true" json:"-"` +} + +func (p PlatformAgentCapabilities) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformAgentCapabilities) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, nil); err != nil { + return err + } + return nil +} + +func (o *PlatformAgentCapabilities) GetApIoMessages() *bool { + if o == nil { + return nil + } + return o.ApIoMessages +} + +func (o *PlatformAgentCapabilities) GetApIoStreaming() *bool { + if o == nil { + return nil + } + return o.ApIoStreaming +} + +func (o *PlatformAgentCapabilities) GetAdditionalProperties() map[string]any { + if o == nil { + return nil + } + return o.AdditionalProperties +} diff --git a/tests/mockserver/internal/sdk/models/components/platformagentexecutionstatus.go b/tests/mockserver/internal/sdk/models/components/platformagentexecutionstatus.go new file mode 100644 index 00000000..c8c2bfb9 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformagentexecutionstatus.go @@ -0,0 +1,35 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" +) + +// PlatformAgentExecutionStatus - Status of the agent run. +type PlatformAgentExecutionStatus string + +const ( + PlatformAgentExecutionStatusError PlatformAgentExecutionStatus = "error" + PlatformAgentExecutionStatusSuccess PlatformAgentExecutionStatus = "success" +) + +func (e PlatformAgentExecutionStatus) ToPointer() *PlatformAgentExecutionStatus { + return &e +} +func (e *PlatformAgentExecutionStatus) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "error": + fallthrough + case "success": + *e = PlatformAgentExecutionStatus(v) + return nil + default: + return fmt.Errorf("invalid value for PlatformAgentExecutionStatus: %v", v) + } +} diff --git a/tests/mockserver/internal/sdk/models/components/platformagentgetresponse.go b/tests/mockserver/internal/sdk/models/components/platformagentgetresponse.go new file mode 100644 index 00000000..3df4f65d --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformagentgetresponse.go @@ -0,0 +1,23 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type PlatformAgentGetResponse struct { + Agent PlatformAgent `json:"agent"` + // Platform-generated request ID for support correlation. + RequestID string `json:"request_id"` +} + +func (o *PlatformAgentGetResponse) GetAgent() PlatformAgent { + if o == nil { + return PlatformAgent{} + } + return o.Agent +} + +func (o *PlatformAgentGetResponse) GetRequestID() string { + if o == nil { + return "" + } + return o.RequestID +} diff --git a/tests/mockserver/internal/sdk/models/components/platformagentrun.go b/tests/mockserver/internal/sdk/models/components/platformagentrun.go new file mode 100644 index 00000000..a3139f71 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformagentrun.go @@ -0,0 +1,51 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type PlatformAgentRun struct { + // ID of the agent being run. + AgentID string `json:"agent_id"` + // Input fields for an input-form triggered agent. + Input map[string]any `json:"input,omitempty"` + // Messages passed to the agent. + Messages []PlatformMessage `json:"messages,omitempty"` + // Metadata passed to the agent. + Metadata map[string]any `json:"metadata,omitempty"` + // Status of the agent run. + Status PlatformAgentExecutionStatus `json:"status"` +} + +func (o *PlatformAgentRun) GetAgentID() string { + if o == nil { + return "" + } + return o.AgentID +} + +func (o *PlatformAgentRun) GetInput() map[string]any { + if o == nil { + return nil + } + return o.Input +} + +func (o *PlatformAgentRun) GetMessages() []PlatformMessage { + if o == nil { + return nil + } + return o.Messages +} + +func (o *PlatformAgentRun) GetMetadata() map[string]any { + if o == nil { + return nil + } + return o.Metadata +} + +func (o *PlatformAgentRun) GetStatus() PlatformAgentExecutionStatus { + if o == nil { + return PlatformAgentExecutionStatus("") + } + return o.Status +} diff --git a/tests/mockserver/internal/sdk/models/components/platformagentruncreaterequest.go b/tests/mockserver/internal/sdk/models/components/platformagentruncreaterequest.go new file mode 100644 index 00000000..d653f4bc --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformagentruncreaterequest.go @@ -0,0 +1,59 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "mockserver/internal/sdk/utils" +) + +// PlatformAgentRunCreateRequest - Request to run an agent. A request MUST supply either `messages` (a non-empty conversation) or `input` (for input-form triggered agents). +type PlatformAgentRunCreateRequest struct { + // Input fields for an input-form triggered agent. + Input map[string]any `json:"input,omitempty"` + // Messages to pass to the agent. When provided, the array MUST contain at least one message and each message MUST specify a valid `role` and non-empty `content`. + // + Messages []PlatformMessage `json:"messages,omitempty"` + // Metadata to pass to the agent. + Metadata map[string]any `json:"metadata,omitempty"` + // Whether to stream the run response as server-sent events. + Stream *bool `default:"false" json:"stream"` +} + +func (p PlatformAgentRunCreateRequest) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformAgentRunCreateRequest) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, nil); err != nil { + return err + } + return nil +} + +func (o *PlatformAgentRunCreateRequest) GetInput() map[string]any { + if o == nil { + return nil + } + return o.Input +} + +func (o *PlatformAgentRunCreateRequest) GetMessages() []PlatformMessage { + if o == nil { + return nil + } + return o.Messages +} + +func (o *PlatformAgentRunCreateRequest) GetMetadata() map[string]any { + if o == nil { + return nil + } + return o.Metadata +} + +func (o *PlatformAgentRunCreateRequest) GetStream() *bool { + if o == nil { + return nil + } + return o.Stream +} diff --git a/tests/mockserver/internal/sdk/models/components/platformagentrunwaitresponse.go b/tests/mockserver/internal/sdk/models/components/platformagentrunwaitresponse.go new file mode 100644 index 00000000..b157f036 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformagentrunwaitresponse.go @@ -0,0 +1,32 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type PlatformAgentRunWaitResponse struct { + Run *PlatformAgentRun `json:"run,omitempty"` + // Messages returned by the completed run. + Messages []PlatformMessage `json:"messages,omitempty"` + // Platform-generated request ID for support correlation. + RequestID string `json:"request_id"` +} + +func (o *PlatformAgentRunWaitResponse) GetRun() *PlatformAgentRun { + if o == nil { + return nil + } + return o.Run +} + +func (o *PlatformAgentRunWaitResponse) GetMessages() []PlatformMessage { + if o == nil { + return nil + } + return o.Messages +} + +func (o *PlatformAgentRunWaitResponse) GetRequestID() string { + if o == nil { + return "" + } + return o.RequestID +} diff --git a/tests/mockserver/internal/sdk/models/components/platformagentschemasresponse.go b/tests/mockserver/internal/sdk/models/components/platformagentschemasresponse.go new file mode 100644 index 00000000..6f9aa5d0 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformagentschemasresponse.go @@ -0,0 +1,60 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type PlatformAgentSchemasResponse struct { + // ID of the agent. + AgentID string `json:"agent_id"` + // Name of the agent. + Name *string `json:"name,omitempty"` + // Agent input schema in JSON Schema format. + InputSchema map[string]any `json:"input_schema"` + // Agent output schema in JSON Schema format. + OutputSchema map[string]any `json:"output_schema"` + // Tools that the agent can invoke, when requested. + Tools []PlatformActionSummary `json:"tools,omitempty"` + // Platform-generated request ID for support correlation. + RequestID string `json:"request_id"` +} + +func (o *PlatformAgentSchemasResponse) GetAgentID() string { + if o == nil { + return "" + } + return o.AgentID +} + +func (o *PlatformAgentSchemasResponse) GetName() *string { + if o == nil { + return nil + } + return o.Name +} + +func (o *PlatformAgentSchemasResponse) GetInputSchema() map[string]any { + if o == nil { + return map[string]any{} + } + return o.InputSchema +} + +func (o *PlatformAgentSchemasResponse) GetOutputSchema() map[string]any { + if o == nil { + return map[string]any{} + } + return o.OutputSchema +} + +func (o *PlatformAgentSchemasResponse) GetTools() []PlatformActionSummary { + if o == nil { + return nil + } + return o.Tools +} + +func (o *PlatformAgentSchemasResponse) GetRequestID() string { + if o == nil { + return "" + } + return o.RequestID +} diff --git a/tests/mockserver/internal/sdk/models/components/platformagentssearchrequest.go b/tests/mockserver/internal/sdk/models/components/platformagentssearchrequest.go new file mode 100644 index 00000000..a74eaf65 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformagentssearchrequest.go @@ -0,0 +1,15 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type PlatformAgentsSearchRequest struct { + // Case-insensitive substring to match against agent names. If omitted or empty, no name filter is applied. + Name *string `json:"name,omitempty"` +} + +func (o *PlatformAgentsSearchRequest) GetName() *string { + if o == nil { + return nil + } + return o.Name +} diff --git a/tests/mockserver/internal/sdk/models/components/platformagentssearchresponse.go b/tests/mockserver/internal/sdk/models/components/platformagentssearchresponse.go new file mode 100644 index 00000000..ba08e943 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformagentssearchresponse.go @@ -0,0 +1,24 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type PlatformAgentsSearchResponse struct { + // Agents matching the search request. + Agents []PlatformAgent `json:"agents"` + // Platform-generated request ID for support correlation. + RequestID string `json:"request_id"` +} + +func (o *PlatformAgentsSearchResponse) GetAgents() []PlatformAgent { + if o == nil { + return []PlatformAgent{} + } + return o.Agents +} + +func (o *PlatformAgentsSearchResponse) GetRequestID() string { + if o == nil { + return "" + } + return o.RequestID +} diff --git a/tests/mockserver/internal/sdk/models/components/platformauthenticationsuggestion.go b/tests/mockserver/internal/sdk/models/components/platformauthenticationsuggestion.go new file mode 100644 index 00000000..58281ae6 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformauthenticationsuggestion.go @@ -0,0 +1,25 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +// PlatformAuthenticationSuggestion - One tool the caller must authorize before the agent can run. +type PlatformAuthenticationSuggestion struct { + // Human-readable tool name. + ToolName *string `json:"tool_name,omitempty"` + // Identifier to POST to `/tool-servers/{serverId}/auth` (Client API) with `returnUrl` in the request body to obtain an `authorizationUrl` to redirect the end user to. + ServerID string `json:"server_id"` +} + +func (o *PlatformAuthenticationSuggestion) GetToolName() *string { + if o == nil { + return nil + } + return o.ToolName +} + +func (o *PlatformAuthenticationSuggestion) GetServerID() string { + if o == nil { + return "" + } + return o.ServerID +} diff --git a/tests/mockserver/internal/sdk/models/components/platformchatcitationannotation.go b/tests/mockserver/internal/sdk/models/components/platformchatcitationannotation.go new file mode 100644 index 00000000..64b253ab --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformchatcitationannotation.go @@ -0,0 +1,75 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" + "mockserver/internal/sdk/optionalnullable" +) + +type PlatformChatCitationAnnotationType string + +const ( + PlatformChatCitationAnnotationTypeCitation PlatformChatCitationAnnotationType = "CITATION" +) + +func (e PlatformChatCitationAnnotationType) ToPointer() *PlatformChatCitationAnnotationType { + return &e +} +func (e *PlatformChatCitationAnnotationType) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "CITATION": + *e = PlatformChatCitationAnnotationType(v) + return nil + default: + return fmt.Errorf("invalid value for PlatformChatCitationAnnotationType: %v", v) + } +} + +type PlatformChatCitationAnnotation struct { + Type PlatformChatCitationAnnotationType `json:"type"` + Sources []PlatformChatCitationSource `json:"sources"` + StartIndex optionalnullable.OptionalNullable[int64] `json:"start_index,omitempty"` + EndIndex optionalnullable.OptionalNullable[int64] `json:"end_index,omitempty"` + Snippets optionalnullable.OptionalNullable[[]PlatformChatCitationSnippet] `json:"snippets,omitempty"` +} + +func (o *PlatformChatCitationAnnotation) GetType() PlatformChatCitationAnnotationType { + if o == nil { + return PlatformChatCitationAnnotationType("") + } + return o.Type +} + +func (o *PlatformChatCitationAnnotation) GetSources() []PlatformChatCitationSource { + if o == nil { + return []PlatformChatCitationSource{} + } + return o.Sources +} + +func (o *PlatformChatCitationAnnotation) GetStartIndex() optionalnullable.OptionalNullable[int64] { + if o == nil { + return nil + } + return o.StartIndex +} + +func (o *PlatformChatCitationAnnotation) GetEndIndex() optionalnullable.OptionalNullable[int64] { + if o == nil { + return nil + } + return o.EndIndex +} + +func (o *PlatformChatCitationAnnotation) GetSnippets() optionalnullable.OptionalNullable[[]PlatformChatCitationSnippet] { + if o == nil { + return nil + } + return o.Snippets +} diff --git a/tests/mockserver/internal/sdk/models/components/platformchatcitationsnippet.go b/tests/mockserver/internal/sdk/models/components/platformchatcitationsnippet.go new file mode 100644 index 00000000..def72755 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformchatcitationsnippet.go @@ -0,0 +1,26 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "mockserver/internal/sdk/optionalnullable" +) + +type PlatformChatCitationSnippet struct { + Text string `json:"text"` + PageNumber optionalnullable.OptionalNullable[int64] `json:"page_number,omitempty"` +} + +func (o *PlatformChatCitationSnippet) GetText() string { + if o == nil { + return "" + } + return o.Text +} + +func (o *PlatformChatCitationSnippet) GetPageNumber() optionalnullable.OptionalNullable[int64] { + if o == nil { + return nil + } + return o.PageNumber +} diff --git a/tests/mockserver/internal/sdk/models/components/platformchatcitationsource.go b/tests/mockserver/internal/sdk/models/components/platformchatcitationsource.go new file mode 100644 index 00000000..596b8663 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformchatcitationsource.go @@ -0,0 +1,147 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "errors" + "fmt" + "mockserver/internal/sdk/utils" +) + +type PlatformChatCitationSourceType string + +const ( + PlatformChatCitationSourceTypeDocument PlatformChatCitationSourceType = "DOCUMENT" + PlatformChatCitationSourceTypePerson PlatformChatCitationSourceType = "PERSON" + PlatformChatCitationSourceTypeFile PlatformChatCitationSourceType = "FILE" + PlatformChatCitationSourceTypeCustomEntity PlatformChatCitationSourceType = "CUSTOM_ENTITY" +) + +// PlatformChatCitationSource - Four-variant citation source union. +type PlatformChatCitationSource struct { + PlatformChatDocumentSource *PlatformChatDocumentSource `queryParam:"inline"` + PlatformChatPersonSource *PlatformChatPersonSource `queryParam:"inline"` + PlatformChatFileSource *PlatformChatFileSource `queryParam:"inline"` + PlatformChatCustomEntitySource *PlatformChatCustomEntitySource `queryParam:"inline"` + + Type PlatformChatCitationSourceType +} + +func CreatePlatformChatCitationSourceDocument(document PlatformChatDocumentSource) PlatformChatCitationSource { + typ := PlatformChatCitationSourceTypeDocument + + return PlatformChatCitationSource{ + PlatformChatDocumentSource: &document, + Type: typ, + } +} + +func CreatePlatformChatCitationSourcePerson(person PlatformChatPersonSource) PlatformChatCitationSource { + typ := PlatformChatCitationSourceTypePerson + + typStr := PlatformChatPersonSourceType(typ) + person.Type = typStr + + return PlatformChatCitationSource{ + PlatformChatPersonSource: &person, + Type: typ, + } +} + +func CreatePlatformChatCitationSourceFile(file PlatformChatFileSource) PlatformChatCitationSource { + typ := PlatformChatCitationSourceTypeFile + + typStr := PlatformChatFileSourceType(typ) + file.Type = typStr + + return PlatformChatCitationSource{ + PlatformChatFileSource: &file, + Type: typ, + } +} + +func CreatePlatformChatCitationSourceCustomEntity(customEntity PlatformChatCustomEntitySource) PlatformChatCitationSource { + typ := PlatformChatCitationSourceTypeCustomEntity + + typStr := PlatformChatCustomEntitySourceType(typ) + customEntity.Type = typStr + + return PlatformChatCitationSource{ + PlatformChatCustomEntitySource: &customEntity, + Type: typ, + } +} + +func (u *PlatformChatCitationSource) UnmarshalJSON(data []byte) error { + + type discriminator struct { + Type string `json:"type"` + } + + dis := new(discriminator) + if err := json.Unmarshal(data, &dis); err != nil { + return fmt.Errorf("could not unmarshal discriminator: %w", err) + } + + switch dis.Type { + case "DOCUMENT": + platformChatDocumentSource := new(PlatformChatDocumentSource) + if err := utils.UnmarshalJSON(data, &platformChatDocumentSource, "", true, nil); err != nil { + return fmt.Errorf("could not unmarshal `%s` into expected (Type == DOCUMENT) type PlatformChatDocumentSource within PlatformChatCitationSource: %w", string(data), err) + } + + u.PlatformChatDocumentSource = platformChatDocumentSource + u.Type = PlatformChatCitationSourceTypeDocument + return nil + case "PERSON": + platformChatPersonSource := new(PlatformChatPersonSource) + if err := utils.UnmarshalJSON(data, &platformChatPersonSource, "", true, nil); err != nil { + return fmt.Errorf("could not unmarshal `%s` into expected (Type == PERSON) type PlatformChatPersonSource within PlatformChatCitationSource: %w", string(data), err) + } + + u.PlatformChatPersonSource = platformChatPersonSource + u.Type = PlatformChatCitationSourceTypePerson + return nil + case "FILE": + platformChatFileSource := new(PlatformChatFileSource) + if err := utils.UnmarshalJSON(data, &platformChatFileSource, "", true, nil); err != nil { + return fmt.Errorf("could not unmarshal `%s` into expected (Type == FILE) type PlatformChatFileSource within PlatformChatCitationSource: %w", string(data), err) + } + + u.PlatformChatFileSource = platformChatFileSource + u.Type = PlatformChatCitationSourceTypeFile + return nil + case "CUSTOM_ENTITY": + platformChatCustomEntitySource := new(PlatformChatCustomEntitySource) + if err := utils.UnmarshalJSON(data, &platformChatCustomEntitySource, "", true, nil); err != nil { + return fmt.Errorf("could not unmarshal `%s` into expected (Type == CUSTOM_ENTITY) type PlatformChatCustomEntitySource within PlatformChatCitationSource: %w", string(data), err) + } + + u.PlatformChatCustomEntitySource = platformChatCustomEntitySource + u.Type = PlatformChatCitationSourceTypeCustomEntity + return nil + } + + return fmt.Errorf("could not unmarshal `%s` into any supported union types for PlatformChatCitationSource", string(data)) +} + +func (u PlatformChatCitationSource) MarshalJSON() ([]byte, error) { + if u.PlatformChatDocumentSource != nil { + return utils.MarshalJSON(u.PlatformChatDocumentSource, "", true) + } + + if u.PlatformChatPersonSource != nil { + return utils.MarshalJSON(u.PlatformChatPersonSource, "", true) + } + + if u.PlatformChatFileSource != nil { + return utils.MarshalJSON(u.PlatformChatFileSource, "", true) + } + + if u.PlatformChatCustomEntitySource != nil { + return utils.MarshalJSON(u.PlatformChatCustomEntitySource, "", true) + } + + return nil, errors.New("could not marshal union type PlatformChatCitationSource: all fields are null") +} diff --git a/tests/mockserver/internal/sdk/models/components/platformchatcompletedresponse.go b/tests/mockserver/internal/sdk/models/components/platformchatcompletedresponse.go new file mode 100644 index 00000000..be4e3712 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformchatcompletedresponse.go @@ -0,0 +1,139 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" + "mockserver/internal/sdk/optionalnullable" + "mockserver/internal/sdk/utils" + "time" +) + +type Object string + +const ( + ObjectResponse Object = "RESPONSE" +) + +func (e Object) ToPointer() *Object { + return &e +} +func (e *Object) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "RESPONSE": + *e = Object(v) + return nil + default: + return fmt.Errorf("invalid value for Object: %v", v) + } +} + +type PlatformChatCompletedResponseStatus string + +const ( + PlatformChatCompletedResponseStatusCompleted PlatformChatCompletedResponseStatus = "COMPLETED" +) + +func (e PlatformChatCompletedResponseStatus) ToPointer() *PlatformChatCompletedResponseStatus { + return &e +} +func (e *PlatformChatCompletedResponseStatus) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "COMPLETED": + *e = PlatformChatCompletedResponseStatus(v) + return nil + default: + return fmt.Errorf("invalid value for PlatformChatCompletedResponseStatus: %v", v) + } +} + +type PlatformChatCompletedResponse struct { + // Platform-owned, non-persisted response envelope identifier in `resp_` form. The same identifier is used for every event in one streamed response. + // + ID string `json:"id"` + Object Object `json:"object"` + // RFC 3339 UTC timestamp when the response was created. + CreatedAt time.Time `json:"created_at"` + Status PlatformChatCompletedResponseStatus `json:"status"` + Output []PlatformChatOutputMessage `json:"output"` + Store bool `json:"store"` + // Present when the interaction was persisted. + ConversationID optionalnullable.OptionalNullable[string] `json:"conversation_id,omitempty"` + RequestID string `json:"request_id"` +} + +func (p PlatformChatCompletedResponse) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformChatCompletedResponse) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"id", "object", "created_at", "status", "output", "store", "request_id"}); err != nil { + return err + } + return nil +} + +func (o *PlatformChatCompletedResponse) GetID() string { + if o == nil { + return "" + } + return o.ID +} + +func (o *PlatformChatCompletedResponse) GetObject() Object { + if o == nil { + return Object("") + } + return o.Object +} + +func (o *PlatformChatCompletedResponse) GetCreatedAt() time.Time { + if o == nil { + return time.Time{} + } + return o.CreatedAt +} + +func (o *PlatformChatCompletedResponse) GetStatus() PlatformChatCompletedResponseStatus { + if o == nil { + return PlatformChatCompletedResponseStatus("") + } + return o.Status +} + +func (o *PlatformChatCompletedResponse) GetOutput() []PlatformChatOutputMessage { + if o == nil { + return []PlatformChatOutputMessage{} + } + return o.Output +} + +func (o *PlatformChatCompletedResponse) GetStore() bool { + if o == nil { + return false + } + return o.Store +} + +func (o *PlatformChatCompletedResponse) GetConversationID() optionalnullable.OptionalNullable[string] { + if o == nil { + return nil + } + return o.ConversationID +} + +func (o *PlatformChatCompletedResponse) GetRequestID() string { + if o == nil { + return "" + } + return o.RequestID +} diff --git a/tests/mockserver/internal/sdk/models/components/platformchatcreaterequest.go b/tests/mockserver/internal/sdk/models/components/platformchatcreaterequest.go new file mode 100644 index 00000000..a5b50b89 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformchatcreaterequest.go @@ -0,0 +1,127 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "errors" + "fmt" + "mockserver/internal/sdk/utils" +) + +type InputType string + +const ( + InputTypeStr InputType = "str" + InputTypeArrayOfPlatformChatInputMessage InputType = "arrayOfPlatformChatInputMessage" +) + +// Input - Either a plain string (single user turn) or a chronological array of `USER`/`ASSISTANT` messages. The final array message must be `USER`. +type Input struct { + Str *string `queryParam:"inline"` + ArrayOfPlatformChatInputMessage []PlatformChatInputMessage `queryParam:"inline"` + + Type InputType +} + +func CreateInputStr(str string) Input { + typ := InputTypeStr + + return Input{ + Str: &str, + Type: typ, + } +} + +func CreateInputArrayOfPlatformChatInputMessage(arrayOfPlatformChatInputMessage []PlatformChatInputMessage) Input { + typ := InputTypeArrayOfPlatformChatInputMessage + + return Input{ + ArrayOfPlatformChatInputMessage: arrayOfPlatformChatInputMessage, + Type: typ, + } +} + +func (u *Input) UnmarshalJSON(data []byte) error { + + var str string = "" + if err := utils.UnmarshalJSON(data, &str, "", true, nil); err == nil { + u.Str = &str + u.Type = InputTypeStr + return nil + } + + var arrayOfPlatformChatInputMessage []PlatformChatInputMessage = []PlatformChatInputMessage{} + if err := utils.UnmarshalJSON(data, &arrayOfPlatformChatInputMessage, "", true, nil); err == nil { + u.ArrayOfPlatformChatInputMessage = arrayOfPlatformChatInputMessage + u.Type = InputTypeArrayOfPlatformChatInputMessage + return nil + } + + return fmt.Errorf("could not unmarshal `%s` into any supported union types for Input", string(data)) +} + +func (u Input) MarshalJSON() ([]byte, error) { + if u.Str != nil { + return utils.MarshalJSON(u.Str, "", true) + } + + if u.ArrayOfPlatformChatInputMessage != nil { + return utils.MarshalJSON(u.ArrayOfPlatformChatInputMessage, "", true) + } + + return nil, errors.New("could not marshal union type Input: all fields are null") +} + +type PlatformChatCreateRequest struct { + // Either a plain string (single user turn) or a chronological array of `USER`/`ASSISTANT` messages. The final array message must be `USER`. + // + Input Input `json:"input"` + // When true, respond with `text/event-stream`. When false or omitted, respond with `application/json`. + // + Stream *bool `default:"false" json:"stream"` + // When true (default), persist the interaction and return a `conversation_id`. When false, run ephemerally with no persistence. + // + Store *bool `default:"true" json:"store"` + // Continue an existing stored conversation. Incompatible with message-array `input` and with `store: false`. + // + ConversationID *string `json:"conversation_id,omitempty"` +} + +func (p PlatformChatCreateRequest) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformChatCreateRequest) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"input"}); err != nil { + return err + } + return nil +} + +func (o *PlatformChatCreateRequest) GetInput() Input { + if o == nil { + return Input{} + } + return o.Input +} + +func (o *PlatformChatCreateRequest) GetStream() *bool { + if o == nil { + return nil + } + return o.Stream +} + +func (o *PlatformChatCreateRequest) GetStore() *bool { + if o == nil { + return nil + } + return o.Store +} + +func (o *PlatformChatCreateRequest) GetConversationID() *string { + if o == nil { + return nil + } + return o.ConversationID +} diff --git a/tests/mockserver/internal/sdk/models/components/platformchatcustomentitysource.go b/tests/mockserver/internal/sdk/models/components/platformchatcustomentitysource.go new file mode 100644 index 00000000..ccd6eac3 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformchatcustomentitysource.go @@ -0,0 +1,94 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" + "mockserver/internal/sdk/utils" +) + +type PlatformChatCustomEntitySourceType string + +const ( + PlatformChatCustomEntitySourceTypeCustomEntity PlatformChatCustomEntitySourceType = "CUSTOM_ENTITY" +) + +func (e PlatformChatCustomEntitySourceType) ToPointer() *PlatformChatCustomEntitySourceType { + return &e +} +func (e *PlatformChatCustomEntitySourceType) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "CUSTOM_ENTITY": + *e = PlatformChatCustomEntitySourceType(v) + return nil + default: + return fmt.Errorf("invalid value for PlatformChatCustomEntitySourceType: %v", v) + } +} + +type PlatformChatCustomEntitySource struct { + Type PlatformChatCustomEntitySourceType `json:"type"` + EntityID string `json:"entity_id"` + Name *string `json:"name,omitempty"` + Title *string `json:"title,omitempty"` + URL *string `json:"url,omitempty"` + Datasource *string `json:"datasource,omitempty"` +} + +func (p PlatformChatCustomEntitySource) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformChatCustomEntitySource) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"type", "entity_id"}); err != nil { + return err + } + return nil +} + +func (o *PlatformChatCustomEntitySource) GetType() PlatformChatCustomEntitySourceType { + if o == nil { + return PlatformChatCustomEntitySourceType("") + } + return o.Type +} + +func (o *PlatformChatCustomEntitySource) GetEntityID() string { + if o == nil { + return "" + } + return o.EntityID +} + +func (o *PlatformChatCustomEntitySource) GetName() *string { + if o == nil { + return nil + } + return o.Name +} + +func (o *PlatformChatCustomEntitySource) GetTitle() *string { + if o == nil { + return nil + } + return o.Title +} + +func (o *PlatformChatCustomEntitySource) GetURL() *string { + if o == nil { + return nil + } + return o.URL +} + +func (o *PlatformChatCustomEntitySource) GetDatasource() *string { + if o == nil { + return nil + } + return o.Datasource +} diff --git a/tests/mockserver/internal/sdk/models/components/platformchatdocumentsource.go b/tests/mockserver/internal/sdk/models/components/platformchatdocumentsource.go new file mode 100644 index 00000000..63d8078f --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformchatdocumentsource.go @@ -0,0 +1,227 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "errors" + "fmt" + "mockserver/internal/sdk/utils" +) + +type PlatformChatDocumentSourceType2 string + +const ( + PlatformChatDocumentSourceType2Document PlatformChatDocumentSourceType2 = "DOCUMENT" +) + +func (e PlatformChatDocumentSourceType2) ToPointer() *PlatformChatDocumentSourceType2 { + return &e +} +func (e *PlatformChatDocumentSourceType2) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "DOCUMENT": + *e = PlatformChatDocumentSourceType2(v) + return nil + default: + return fmt.Errorf("invalid value for PlatformChatDocumentSourceType2: %v", v) + } +} + +type PlatformChatDocumentSourceDocument2 struct { + Type PlatformChatDocumentSourceType2 `json:"type"` + DocumentID *string `json:"document_id,omitempty"` + URL string `json:"url"` + Title *string `json:"title,omitempty"` + Datasource *string `json:"datasource,omitempty"` +} + +func (p PlatformChatDocumentSourceDocument2) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformChatDocumentSourceDocument2) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"type", "url"}); err != nil { + return err + } + return nil +} + +func (o *PlatformChatDocumentSourceDocument2) GetType() PlatformChatDocumentSourceType2 { + if o == nil { + return PlatformChatDocumentSourceType2("") + } + return o.Type +} + +func (o *PlatformChatDocumentSourceDocument2) GetDocumentID() *string { + if o == nil { + return nil + } + return o.DocumentID +} + +func (o *PlatformChatDocumentSourceDocument2) GetURL() string { + if o == nil { + return "" + } + return o.URL +} + +func (o *PlatformChatDocumentSourceDocument2) GetTitle() *string { + if o == nil { + return nil + } + return o.Title +} + +func (o *PlatformChatDocumentSourceDocument2) GetDatasource() *string { + if o == nil { + return nil + } + return o.Datasource +} + +type PlatformChatDocumentSourceType1 string + +const ( + PlatformChatDocumentSourceType1Document PlatformChatDocumentSourceType1 = "DOCUMENT" +) + +func (e PlatformChatDocumentSourceType1) ToPointer() *PlatformChatDocumentSourceType1 { + return &e +} +func (e *PlatformChatDocumentSourceType1) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "DOCUMENT": + *e = PlatformChatDocumentSourceType1(v) + return nil + default: + return fmt.Errorf("invalid value for PlatformChatDocumentSourceType1: %v", v) + } +} + +type PlatformChatDocumentSourceDocument1 struct { + Type PlatformChatDocumentSourceType1 `json:"type"` + DocumentID string `json:"document_id"` + URL *string `json:"url,omitempty"` + Title *string `json:"title,omitempty"` + Datasource *string `json:"datasource,omitempty"` +} + +func (p PlatformChatDocumentSourceDocument1) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformChatDocumentSourceDocument1) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"type", "document_id"}); err != nil { + return err + } + return nil +} + +func (o *PlatformChatDocumentSourceDocument1) GetType() PlatformChatDocumentSourceType1 { + if o == nil { + return PlatformChatDocumentSourceType1("") + } + return o.Type +} + +func (o *PlatformChatDocumentSourceDocument1) GetDocumentID() string { + if o == nil { + return "" + } + return o.DocumentID +} + +func (o *PlatformChatDocumentSourceDocument1) GetURL() *string { + if o == nil { + return nil + } + return o.URL +} + +func (o *PlatformChatDocumentSourceDocument1) GetTitle() *string { + if o == nil { + return nil + } + return o.Title +} + +func (o *PlatformChatDocumentSourceDocument1) GetDatasource() *string { + if o == nil { + return nil + } + return o.Datasource +} + +type PlatformChatDocumentSourceType string + +const ( + PlatformChatDocumentSourceTypePlatformChatDocumentSourceDocument1 PlatformChatDocumentSourceType = "PlatformChatDocumentSource_Document_1" + PlatformChatDocumentSourceTypePlatformChatDocumentSourceDocument2 PlatformChatDocumentSourceType = "PlatformChatDocumentSource_Document_2" +) + +type PlatformChatDocumentSource struct { + PlatformChatDocumentSourceDocument1 *PlatformChatDocumentSourceDocument1 `queryParam:"inline"` + PlatformChatDocumentSourceDocument2 *PlatformChatDocumentSourceDocument2 `queryParam:"inline"` + + Type PlatformChatDocumentSourceType +} + +func CreatePlatformChatDocumentSourcePlatformChatDocumentSourceDocument1(platformChatDocumentSourceDocument1 PlatformChatDocumentSourceDocument1) PlatformChatDocumentSource { + typ := PlatformChatDocumentSourceTypePlatformChatDocumentSourceDocument1 + + return PlatformChatDocumentSource{ + PlatformChatDocumentSourceDocument1: &platformChatDocumentSourceDocument1, + Type: typ, + } +} + +func CreatePlatformChatDocumentSourcePlatformChatDocumentSourceDocument2(platformChatDocumentSourceDocument2 PlatformChatDocumentSourceDocument2) PlatformChatDocumentSource { + typ := PlatformChatDocumentSourceTypePlatformChatDocumentSourceDocument2 + + return PlatformChatDocumentSource{ + PlatformChatDocumentSourceDocument2: &platformChatDocumentSourceDocument2, + Type: typ, + } +} + +func (u *PlatformChatDocumentSource) UnmarshalJSON(data []byte) error { + + var platformChatDocumentSourceDocument1 PlatformChatDocumentSourceDocument1 = PlatformChatDocumentSourceDocument1{} + if err := utils.UnmarshalJSON(data, &platformChatDocumentSourceDocument1, "", true, nil); err == nil { + u.PlatformChatDocumentSourceDocument1 = &platformChatDocumentSourceDocument1 + u.Type = PlatformChatDocumentSourceTypePlatformChatDocumentSourceDocument1 + return nil + } + + var platformChatDocumentSourceDocument2 PlatformChatDocumentSourceDocument2 = PlatformChatDocumentSourceDocument2{} + if err := utils.UnmarshalJSON(data, &platformChatDocumentSourceDocument2, "", true, nil); err == nil { + u.PlatformChatDocumentSourceDocument2 = &platformChatDocumentSourceDocument2 + u.Type = PlatformChatDocumentSourceTypePlatformChatDocumentSourceDocument2 + return nil + } + + return fmt.Errorf("could not unmarshal `%s` into any supported union types for PlatformChatDocumentSource", string(data)) +} + +func (u PlatformChatDocumentSource) MarshalJSON() ([]byte, error) { + if u.PlatformChatDocumentSourceDocument1 != nil { + return utils.MarshalJSON(u.PlatformChatDocumentSourceDocument1, "", true) + } + + if u.PlatformChatDocumentSourceDocument2 != nil { + return utils.MarshalJSON(u.PlatformChatDocumentSourceDocument2, "", true) + } + + return nil, errors.New("could not marshal union type PlatformChatDocumentSource: all fields are null") +} diff --git a/tests/mockserver/internal/sdk/models/components/platformchatfilesource.go b/tests/mockserver/internal/sdk/models/components/platformchatfilesource.go new file mode 100644 index 00000000..67147189 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformchatfilesource.go @@ -0,0 +1,86 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" + "mockserver/internal/sdk/utils" +) + +type PlatformChatFileSourceType string + +const ( + PlatformChatFileSourceTypeFile PlatformChatFileSourceType = "FILE" +) + +func (e PlatformChatFileSourceType) ToPointer() *PlatformChatFileSourceType { + return &e +} +func (e *PlatformChatFileSourceType) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "FILE": + *e = PlatformChatFileSourceType(v) + return nil + default: + return fmt.Errorf("invalid value for PlatformChatFileSourceType: %v", v) + } +} + +type PlatformChatFileSource struct { + Type PlatformChatFileSourceType `json:"type"` + FileID string `json:"file_id"` + Title *string `json:"title,omitempty"` + URL *string `json:"url,omitempty"` + Datasource *string `json:"datasource,omitempty"` +} + +func (p PlatformChatFileSource) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformChatFileSource) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"type", "file_id"}); err != nil { + return err + } + return nil +} + +func (o *PlatformChatFileSource) GetType() PlatformChatFileSourceType { + if o == nil { + return PlatformChatFileSourceType("") + } + return o.Type +} + +func (o *PlatformChatFileSource) GetFileID() string { + if o == nil { + return "" + } + return o.FileID +} + +func (o *PlatformChatFileSource) GetTitle() *string { + if o == nil { + return nil + } + return o.Title +} + +func (o *PlatformChatFileSource) GetURL() *string { + if o == nil { + return nil + } + return o.URL +} + +func (o *PlatformChatFileSource) GetDatasource() *string { + if o == nil { + return nil + } + return o.Datasource +} diff --git a/tests/mockserver/internal/sdk/models/components/platformchatinputmessage.go b/tests/mockserver/internal/sdk/models/components/platformchatinputmessage.go new file mode 100644 index 00000000..97c1e067 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformchatinputmessage.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" +) + +type PlatformChatInputMessageRole string + +const ( + PlatformChatInputMessageRoleUser PlatformChatInputMessageRole = "USER" + PlatformChatInputMessageRoleAssistant PlatformChatInputMessageRole = "ASSISTANT" +) + +func (e PlatformChatInputMessageRole) ToPointer() *PlatformChatInputMessageRole { + return &e +} +func (e *PlatformChatInputMessageRole) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "USER": + fallthrough + case "ASSISTANT": + *e = PlatformChatInputMessageRole(v) + return nil + default: + return fmt.Errorf("invalid value for PlatformChatInputMessageRole: %v", v) + } +} + +type PlatformChatInputMessage struct { + Role PlatformChatInputMessageRole `json:"role"` + Content string `json:"content"` +} + +func (p PlatformChatInputMessage) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformChatInputMessage) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"role", "content"}); err != nil { + return err + } + return nil +} + +func (o *PlatformChatInputMessage) GetRole() PlatformChatInputMessageRole { + if o == nil { + return PlatformChatInputMessageRole("") + } + return o.Role +} + +func (o *PlatformChatInputMessage) GetContent() string { + if o == nil { + return "" + } + return o.Content +} diff --git a/tests/mockserver/internal/sdk/models/components/platformchatoutputmessage.go b/tests/mockserver/internal/sdk/models/components/platformchatoutputmessage.go new file mode 100644 index 00000000..69218f0e --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformchatoutputmessage.go @@ -0,0 +1,81 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" +) + +type PlatformChatOutputMessageType string + +const ( + PlatformChatOutputMessageTypeMessage PlatformChatOutputMessageType = "MESSAGE" +) + +func (e PlatformChatOutputMessageType) ToPointer() *PlatformChatOutputMessageType { + return &e +} +func (e *PlatformChatOutputMessageType) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "MESSAGE": + *e = PlatformChatOutputMessageType(v) + return nil + default: + return fmt.Errorf("invalid value for PlatformChatOutputMessageType: %v", v) + } +} + +type PlatformChatOutputMessageRole string + +const ( + PlatformChatOutputMessageRoleAssistant PlatformChatOutputMessageRole = "ASSISTANT" +) + +func (e PlatformChatOutputMessageRole) ToPointer() *PlatformChatOutputMessageRole { + return &e +} +func (e *PlatformChatOutputMessageRole) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "ASSISTANT": + *e = PlatformChatOutputMessageRole(v) + return nil + default: + return fmt.Errorf("invalid value for PlatformChatOutputMessageRole: %v", v) + } +} + +type PlatformChatOutputMessage struct { + Type PlatformChatOutputMessageType `json:"type"` + Role PlatformChatOutputMessageRole `json:"role"` + Content []PlatformChatOutputTextContent `json:"content"` +} + +func (o *PlatformChatOutputMessage) GetType() PlatformChatOutputMessageType { + if o == nil { + return PlatformChatOutputMessageType("") + } + return o.Type +} + +func (o *PlatformChatOutputMessage) GetRole() PlatformChatOutputMessageRole { + if o == nil { + return PlatformChatOutputMessageRole("") + } + return o.Role +} + +func (o *PlatformChatOutputMessage) GetContent() []PlatformChatOutputTextContent { + if o == nil { + return []PlatformChatOutputTextContent{} + } + return o.Content +} diff --git a/tests/mockserver/internal/sdk/models/components/platformchatoutputtextcontent.go b/tests/mockserver/internal/sdk/models/components/platformchatoutputtextcontent.go new file mode 100644 index 00000000..d5020f5c --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformchatoutputtextcontent.go @@ -0,0 +1,58 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" +) + +type PlatformChatOutputTextContentType string + +const ( + PlatformChatOutputTextContentTypeOutputText PlatformChatOutputTextContentType = "OUTPUT_TEXT" +) + +func (e PlatformChatOutputTextContentType) ToPointer() *PlatformChatOutputTextContentType { + return &e +} +func (e *PlatformChatOutputTextContentType) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "OUTPUT_TEXT": + *e = PlatformChatOutputTextContentType(v) + return nil + default: + return fmt.Errorf("invalid value for PlatformChatOutputTextContentType: %v", v) + } +} + +type PlatformChatOutputTextContent struct { + Type PlatformChatOutputTextContentType `json:"type"` + Text string `json:"text"` + Annotations []PlatformChatCitationAnnotation `json:"annotations,omitempty"` +} + +func (o *PlatformChatOutputTextContent) GetType() PlatformChatOutputTextContentType { + if o == nil { + return PlatformChatOutputTextContentType("") + } + return o.Type +} + +func (o *PlatformChatOutputTextContent) GetText() string { + if o == nil { + return "" + } + return o.Text +} + +func (o *PlatformChatOutputTextContent) GetAnnotations() []PlatformChatCitationAnnotation { + if o == nil { + return nil + } + return o.Annotations +} diff --git a/tests/mockserver/internal/sdk/models/components/platformchatpersonsource.go b/tests/mockserver/internal/sdk/models/components/platformchatpersonsource.go new file mode 100644 index 00000000..9576e866 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformchatpersonsource.go @@ -0,0 +1,78 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" + "mockserver/internal/sdk/utils" +) + +type PlatformChatPersonSourceType string + +const ( + PlatformChatPersonSourceTypePerson PlatformChatPersonSourceType = "PERSON" +) + +func (e PlatformChatPersonSourceType) ToPointer() *PlatformChatPersonSourceType { + return &e +} +func (e *PlatformChatPersonSourceType) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "PERSON": + *e = PlatformChatPersonSourceType(v) + return nil + default: + return fmt.Errorf("invalid value for PlatformChatPersonSourceType: %v", v) + } +} + +type PlatformChatPersonSource struct { + Type PlatformChatPersonSourceType `json:"type"` + PersonID string `json:"person_id"` + Name *string `json:"name,omitempty"` + URL *string `json:"url,omitempty"` +} + +func (p PlatformChatPersonSource) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformChatPersonSource) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"type", "person_id"}); err != nil { + return err + } + return nil +} + +func (o *PlatformChatPersonSource) GetType() PlatformChatPersonSourceType { + if o == nil { + return PlatformChatPersonSourceType("") + } + return o.Type +} + +func (o *PlatformChatPersonSource) GetPersonID() string { + if o == nil { + return "" + } + return o.PersonID +} + +func (o *PlatformChatPersonSource) GetName() *string { + if o == nil { + return nil + } + return o.Name +} + +func (o *PlatformChatPersonSource) GetURL() *string { + if o == nil { + return nil + } + return o.URL +} diff --git a/tests/mockserver/internal/sdk/models/components/platformcontentschedulewebhookevent.go b/tests/mockserver/internal/sdk/models/components/platformcontentschedulewebhookevent.go new file mode 100644 index 00000000..1bd0c5a4 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformcontentschedulewebhookevent.go @@ -0,0 +1,120 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "mockserver/internal/sdk/utils" + "time" +) + +type PlatformContentScheduleWebhookEvent struct { + // Webhook payload schema version. + Version string `json:"version"` + // ID of the Platform trigger that produced the event. + TriggerID string `json:"trigger_id"` + EventType string `json:"event_type"` + // Datasource the event originated from. + Datasource string `json:"datasource"` + // Why the event fired. + Reason string `json:"reason"` + // Datasource-specific object type. + DocType string `json:"doc_type"` + // Identifier of the document the event is about. + DocID string `json:"doc_id"` + // Link to the document in its source system. + ViewURL string `json:"view_url"` + // Title of the document, or the subject for email. + Title string `json:"title"` + // Relevant event time. Document changes use the source-observed time when available and otherwise the document ingestion time; content schedules use the scheduled time. Omitted when no timestamp is available. + EventTime *time.Time `json:"event_time,omitempty"` + // Offset in seconds from the scheduled time at which the trigger fired. + TimeOffsetSeconds int `json:"time_offset_seconds"` +} + +func (p PlatformContentScheduleWebhookEvent) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformContentScheduleWebhookEvent) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"version", "trigger_id", "event_type", "datasource", "reason", "doc_type", "doc_id", "view_url", "title", "time_offset_seconds"}); err != nil { + return err + } + return nil +} + +func (o *PlatformContentScheduleWebhookEvent) GetVersion() string { + if o == nil { + return "" + } + return o.Version +} + +func (o *PlatformContentScheduleWebhookEvent) GetTriggerID() string { + if o == nil { + return "" + } + return o.TriggerID +} + +func (o *PlatformContentScheduleWebhookEvent) GetEventType() string { + if o == nil { + return "" + } + return o.EventType +} + +func (o *PlatformContentScheduleWebhookEvent) GetDatasource() string { + if o == nil { + return "" + } + return o.Datasource +} + +func (o *PlatformContentScheduleWebhookEvent) GetReason() string { + if o == nil { + return "" + } + return o.Reason +} + +func (o *PlatformContentScheduleWebhookEvent) GetDocType() string { + if o == nil { + return "" + } + return o.DocType +} + +func (o *PlatformContentScheduleWebhookEvent) GetDocID() string { + if o == nil { + return "" + } + return o.DocID +} + +func (o *PlatformContentScheduleWebhookEvent) GetViewURL() string { + if o == nil { + return "" + } + return o.ViewURL +} + +func (o *PlatformContentScheduleWebhookEvent) GetTitle() string { + if o == nil { + return "" + } + return o.Title +} + +func (o *PlatformContentScheduleWebhookEvent) GetEventTime() *time.Time { + if o == nil { + return nil + } + return o.EventTime +} + +func (o *PlatformContentScheduleWebhookEvent) GetTimeOffsetSeconds() int { + if o == nil { + return 0 + } + return o.TimeOffsetSeconds +} diff --git a/tests/mockserver/internal/sdk/models/components/platformcontenttype.go b/tests/mockserver/internal/sdk/models/components/platformcontenttype.go new file mode 100644 index 00000000..e96a7c78 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformcontenttype.go @@ -0,0 +1,31 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" +) + +type PlatformContentType string + +const ( + PlatformContentTypeText PlatformContentType = "text" +) + +func (e PlatformContentType) ToPointer() *PlatformContentType { + return &e +} +func (e *PlatformContentType) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "text": + *e = PlatformContentType(v) + return nil + default: + return fmt.Errorf("invalid value for PlatformContentType: %v", v) + } +} diff --git a/tests/mockserver/internal/sdk/models/components/platformdatasourcefilterinfo.go b/tests/mockserver/internal/sdk/models/components/platformdatasourcefilterinfo.go new file mode 100644 index 00000000..e577fb7f --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformdatasourcefilterinfo.go @@ -0,0 +1,26 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type PlatformDatasourceFilterInfo struct { + // Datasource identifier usable in `POST /api/search` `datasources`. + // + Datasource string `json:"datasource"` + // 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. + // + Filters []PlatformFilterFieldInfo `json:"filters"` +} + +func (o *PlatformDatasourceFilterInfo) GetDatasource() string { + if o == nil { + return "" + } + return o.Datasource +} + +func (o *PlatformDatasourceFilterInfo) GetFilters() []PlatformFilterFieldInfo { + if o == nil { + return []PlatformFilterFieldInfo{} + } + return o.Filters +} diff --git a/tests/mockserver/internal/sdk/models/components/platformdocumentchangewebhookevent.go b/tests/mockserver/internal/sdk/models/components/platformdocumentchangewebhookevent.go new file mode 100644 index 00000000..790da9be --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformdocumentchangewebhookevent.go @@ -0,0 +1,129 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "mockserver/internal/sdk/utils" + "time" +) + +type PlatformDocumentChangeWebhookEvent struct { + // Webhook payload schema version. + Version string `json:"version"` + // ID of the Platform trigger that produced the event. + TriggerID string `json:"trigger_id"` + EventType string `json:"event_type"` + // Datasource the event originated from. + Datasource string `json:"datasource"` + // Why the event fired. + Reason string `json:"reason"` + // Datasource-specific object type. + DocType string `json:"doc_type"` + // Identifier of the document the event is about. + DocID string `json:"doc_id"` + // Link to the document in its source system. + ViewURL string `json:"view_url"` + // Title of the document, or the subject for email. + Title string `json:"title"` + // Relevant event time. Document changes use the source-observed time when available and otherwise the document ingestion time; content schedules use the scheduled time. Omitted when no timestamp is available. + EventTime *time.Time `json:"event_time,omitempty"` + // Email body content when the event is for an email document. + Content *string `json:"content,omitempty"` + // Present and true when source content exceeded the delivery size limit. + ContentTruncated *bool `json:"content_truncated,omitempty"` +} + +func (p PlatformDocumentChangeWebhookEvent) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformDocumentChangeWebhookEvent) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"version", "trigger_id", "event_type", "datasource", "reason", "doc_type", "doc_id", "view_url", "title"}); err != nil { + return err + } + return nil +} + +func (o *PlatformDocumentChangeWebhookEvent) GetVersion() string { + if o == nil { + return "" + } + return o.Version +} + +func (o *PlatformDocumentChangeWebhookEvent) GetTriggerID() string { + if o == nil { + return "" + } + return o.TriggerID +} + +func (o *PlatformDocumentChangeWebhookEvent) GetEventType() string { + if o == nil { + return "" + } + return o.EventType +} + +func (o *PlatformDocumentChangeWebhookEvent) GetDatasource() string { + if o == nil { + return "" + } + return o.Datasource +} + +func (o *PlatformDocumentChangeWebhookEvent) GetReason() string { + if o == nil { + return "" + } + return o.Reason +} + +func (o *PlatformDocumentChangeWebhookEvent) GetDocType() string { + if o == nil { + return "" + } + return o.DocType +} + +func (o *PlatformDocumentChangeWebhookEvent) GetDocID() string { + if o == nil { + return "" + } + return o.DocID +} + +func (o *PlatformDocumentChangeWebhookEvent) GetViewURL() string { + if o == nil { + return "" + } + return o.ViewURL +} + +func (o *PlatformDocumentChangeWebhookEvent) GetTitle() string { + if o == nil { + return "" + } + return o.Title +} + +func (o *PlatformDocumentChangeWebhookEvent) GetEventTime() *time.Time { + if o == nil { + return nil + } + return o.EventTime +} + +func (o *PlatformDocumentChangeWebhookEvent) GetContent() *string { + if o == nil { + return nil + } + return o.Content +} + +func (o *PlatformDocumentChangeWebhookEvent) GetContentTruncated() *bool { + if o == nil { + return nil + } + return o.ContentTruncated +} diff --git a/tests/mockserver/internal/sdk/models/components/platformfilter.go b/tests/mockserver/internal/sdk/models/components/platformfilter.go new file mode 100644 index 00000000..c1ab5360 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformfilter.go @@ -0,0 +1,37 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +// PlatformFilter - A single filter criterion. For `EQUALS`, multiple values within a filter are OR'd; for `NOT_EQUALS`, listed values are excluded. Separate filters are AND'd with each other and with inline operators in `query`. Repeated same-field `EQUALS` filters are rejected. +type PlatformFilter struct { + // Filter field name. Built-in names (case-sensitive, lowercase only): `type`, `owner`, `from`, `author`, `channel`, `status`, `assignee`, `reporter`, `component`, `mentions`, and `collection`. Built-ins accept only `EQUALS` and `NOT_EQUALS`. Any other nonblank name is accepted as a custom filter without spelling, existence, or type checks; behavior depends on your connected sources. + // + Field string `json:"field"` + // One or more values to match. Prefer values returned by filter discovery unchanged. For people (`USER`) fields, values may be email addresses or display names. + // + Values []string `json:"values"` + // Comparison operator. Defaults to `EQUALS`. Built-in fields support only `EQUALS` and `NOT_EQUALS`. Range operators (`GT`, `GTE`, `LT`, `LTE`) require exactly one value; express ranges with multiple filters on the same field. Custom fields may support different operators depending on the data source. + // + Operator *PlatformFilterOperator `json:"operator,omitempty"` +} + +func (o *PlatformFilter) GetField() string { + if o == nil { + return "" + } + return o.Field +} + +func (o *PlatformFilter) GetValues() []string { + if o == nil { + return []string{} + } + return o.Values +} + +func (o *PlatformFilter) GetOperator() *PlatformFilterOperator { + if o == nil { + return nil + } + return o.Operator +} diff --git a/tests/mockserver/internal/sdk/models/components/platformfilterfieldinfo.go b/tests/mockserver/internal/sdk/models/components/platformfilterfieldinfo.go new file mode 100644 index 00000000..5b3272e0 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformfilterfieldinfo.go @@ -0,0 +1,45 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type PlatformFilterFieldInfo struct { + // Field name usable in the `filters` array for `POST /api/search`. + Field string `json:"field"` + // 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. + // + Type string `json:"type"` + // Comparison operators supported for this field. Built-in fields expose `EQUALS` and `NOT_EQUALS`. + // + Operators []PlatformFilterOperator `json:"operators"` + // 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. + // + Values []string `json:"values,omitempty"` +} + +func (o *PlatformFilterFieldInfo) GetField() string { + if o == nil { + return "" + } + return o.Field +} + +func (o *PlatformFilterFieldInfo) GetType() string { + if o == nil { + return "" + } + return o.Type +} + +func (o *PlatformFilterFieldInfo) GetOperators() []PlatformFilterOperator { + if o == nil { + return []PlatformFilterOperator{} + } + return o.Operators +} + +func (o *PlatformFilterFieldInfo) GetValues() []string { + if o == nil { + return nil + } + return o.Values +} diff --git a/tests/mockserver/internal/sdk/models/components/platformfilteroperator.go b/tests/mockserver/internal/sdk/models/components/platformfilteroperator.go new file mode 100644 index 00000000..7515a283 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformfilteroperator.go @@ -0,0 +1,47 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" +) + +// PlatformFilterOperator - Supported filter operator. +type PlatformFilterOperator string + +const ( + PlatformFilterOperatorEquals PlatformFilterOperator = "EQUALS" + PlatformFilterOperatorNotEquals PlatformFilterOperator = "NOT_EQUALS" + PlatformFilterOperatorGt PlatformFilterOperator = "GT" + PlatformFilterOperatorGte PlatformFilterOperator = "GTE" + PlatformFilterOperatorLt PlatformFilterOperator = "LT" + PlatformFilterOperatorLte PlatformFilterOperator = "LTE" +) + +func (e PlatformFilterOperator) ToPointer() *PlatformFilterOperator { + return &e +} +func (e *PlatformFilterOperator) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "EQUALS": + fallthrough + case "NOT_EQUALS": + fallthrough + case "GT": + fallthrough + case "GTE": + fallthrough + case "LT": + fallthrough + case "LTE": + *e = PlatformFilterOperator(v) + return nil + default: + return fmt.Errorf("invalid value for PlatformFilterOperator: %v", v) + } +} diff --git a/tests/mockserver/internal/sdk/models/components/platformmessage.go b/tests/mockserver/internal/sdk/models/components/platformmessage.go new file mode 100644 index 00000000..c8062f03 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformmessage.go @@ -0,0 +1,24 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type PlatformMessage struct { + // Role of the message author. + Role PlatformMessageRole `json:"role"` + // Content blocks in the message. + Content []PlatformMessageTextBlock `json:"content"` +} + +func (o *PlatformMessage) GetRole() PlatformMessageRole { + if o == nil { + return PlatformMessageRole("") + } + return o.Role +} + +func (o *PlatformMessage) GetContent() []PlatformMessageTextBlock { + if o == nil { + return []PlatformMessageTextBlock{} + } + return o.Content +} diff --git a/tests/mockserver/internal/sdk/models/components/platformmessagerole.go b/tests/mockserver/internal/sdk/models/components/platformmessagerole.go new file mode 100644 index 00000000..bece7dac --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformmessagerole.go @@ -0,0 +1,35 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" +) + +// PlatformMessageRole - Role of the message author. +type PlatformMessageRole string + +const ( + PlatformMessageRoleUser PlatformMessageRole = "USER" + PlatformMessageRoleGleanAi PlatformMessageRole = "GLEAN_AI" +) + +func (e PlatformMessageRole) ToPointer() *PlatformMessageRole { + return &e +} +func (e *PlatformMessageRole) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "USER": + fallthrough + case "GLEAN_AI": + *e = PlatformMessageRole(v) + return nil + default: + return fmt.Errorf("invalid value for PlatformMessageRole: %v", v) + } +} diff --git a/tests/mockserver/internal/sdk/models/components/platformmessagetextblock.go b/tests/mockserver/internal/sdk/models/components/platformmessagetextblock.go new file mode 100644 index 00000000..0432f13a --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformmessagetextblock.go @@ -0,0 +1,23 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type PlatformMessageTextBlock struct { + // Text content. + Text string `json:"text"` + Type PlatformContentType `json:"type"` +} + +func (o *PlatformMessageTextBlock) GetText() string { + if o == nil { + return "" + } + return o.Text +} + +func (o *PlatformMessageTextBlock) GetType() PlatformContentType { + if o == nil { + return PlatformContentType("") + } + return o.Type +} diff --git a/tests/mockserver/internal/sdk/models/components/platformpersonreference.go b/tests/mockserver/internal/sdk/models/components/platformpersonreference.go new file mode 100644 index 00000000..dca6a6f8 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformpersonreference.go @@ -0,0 +1,25 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +// PlatformPersonReference - A lightweight reference to a person, used where a payload merely points at someone. +type PlatformPersonReference struct { + // Opaque Glean person ID. + ID *string `json:"id,omitempty"` + // Display name. + Name string `json:"name"` +} + +func (o *PlatformPersonReference) GetID() *string { + if o == nil { + return nil + } + return o.ID +} + +func (o *PlatformPersonReference) GetName() string { + if o == nil { + return "" + } + return o.Name +} diff --git a/tests/mockserver/internal/sdk/models/components/platformproblemdetailcode.go b/tests/mockserver/internal/sdk/models/components/platformproblemdetailcode.go new file mode 100644 index 00000000..f7a60ae6 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformproblemdetailcode.go @@ -0,0 +1,98 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" +) + +// PlatformProblemDetailCode - Stable machine-readable error code. +type PlatformProblemDetailCode string + +const ( + PlatformProblemDetailCodeInvalidRequest PlatformProblemDetailCode = "invalid_request" + PlatformProblemDetailCodeMissingRequiredField PlatformProblemDetailCode = "missing_required_field" + PlatformProblemDetailCodeInvalidParameter PlatformProblemDetailCode = "invalid_parameter" + PlatformProblemDetailCodeInvalidCursor PlatformProblemDetailCode = "invalid_cursor" + PlatformProblemDetailCodeExpiredCursor PlatformProblemDetailCode = "expired_cursor" + PlatformProblemDetailCodeInvalidFilter PlatformProblemDetailCode = "invalid_filter" + PlatformProblemDetailCodeInvalidDatasource PlatformProblemDetailCode = "invalid_datasource" + PlatformProblemDetailCodeAuthenticationRequired PlatformProblemDetailCode = "authentication_required" + PlatformProblemDetailCodeTokenExpired PlatformProblemDetailCode = "token_expired" + PlatformProblemDetailCodeInsufficientPermissions PlatformProblemDetailCode = "insufficient_permissions" + PlatformProblemDetailCodeSpendLimitExceeded PlatformProblemDetailCode = "spend_limit_exceeded" + PlatformProblemDetailCodeResourceNotFound PlatformProblemDetailCode = "resource_not_found" + PlatformProblemDetailCodeMethodNotAllowed PlatformProblemDetailCode = "method_not_allowed" + PlatformProblemDetailCodeRequestTimeout PlatformProblemDetailCode = "request_timeout" + PlatformProblemDetailCodeRequestTooLarge PlatformProblemDetailCode = "request_too_large" + PlatformProblemDetailCodeTokenLimitExceeded PlatformProblemDetailCode = "token_limit_exceeded" + PlatformProblemDetailCodeConflict PlatformProblemDetailCode = "conflict" + PlatformProblemDetailCodeGone PlatformProblemDetailCode = "gone" + PlatformProblemDetailCodeUnprocessableQuery PlatformProblemDetailCode = "unprocessable_query" + PlatformProblemDetailCodeToolsUnauthorized PlatformProblemDetailCode = "tools_unauthorized" + PlatformProblemDetailCodeRateLimitExceeded PlatformProblemDetailCode = "rate_limit_exceeded" + PlatformProblemDetailCodeInternalError PlatformProblemDetailCode = "internal_error" + PlatformProblemDetailCodeServiceUnavailable PlatformProblemDetailCode = "service_unavailable" +) + +func (e PlatformProblemDetailCode) ToPointer() *PlatformProblemDetailCode { + return &e +} +func (e *PlatformProblemDetailCode) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "invalid_request": + fallthrough + case "missing_required_field": + fallthrough + case "invalid_parameter": + fallthrough + case "invalid_cursor": + fallthrough + case "expired_cursor": + fallthrough + case "invalid_filter": + fallthrough + case "invalid_datasource": + fallthrough + case "authentication_required": + fallthrough + case "token_expired": + fallthrough + case "insufficient_permissions": + fallthrough + case "spend_limit_exceeded": + fallthrough + case "resource_not_found": + fallthrough + case "method_not_allowed": + fallthrough + case "request_timeout": + fallthrough + case "request_too_large": + fallthrough + case "token_limit_exceeded": + fallthrough + case "conflict": + fallthrough + case "gone": + fallthrough + case "unprocessable_query": + fallthrough + case "tools_unauthorized": + fallthrough + case "rate_limit_exceeded": + fallthrough + case "internal_error": + fallthrough + case "service_unavailable": + *e = PlatformProblemDetailCode(v) + return nil + default: + return fmt.Errorf("invalid value for PlatformProblemDetailCode: %v", v) + } +} diff --git a/tests/mockserver/internal/sdk/models/components/platformproblemdetailerror.go b/tests/mockserver/internal/sdk/models/components/platformproblemdetailerror.go new file mode 100644 index 00000000..058f5e62 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformproblemdetailerror.go @@ -0,0 +1,34 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +// PlatformProblemDetailError - Field-level validation problem for a single offending field. +type PlatformProblemDetailError struct { + // RFC 6901 JSON Pointer to the offending field. + Pointer string `json:"pointer"` + // Human-readable explanation for this field. + Detail string `json:"detail"` + // Stable machine-readable error code. + Code *PlatformProblemDetailCode `json:"code,omitempty"` +} + +func (o *PlatformProblemDetailError) GetPointer() string { + if o == nil { + return "" + } + return o.Pointer +} + +func (o *PlatformProblemDetailError) GetDetail() string { + if o == nil { + return "" + } + return o.Detail +} + +func (o *PlatformProblemDetailError) GetCode() *PlatformProblemDetailCode { + if o == nil { + return nil + } + return o.Code +} diff --git a/tests/mockserver/internal/sdk/models/components/platformresult.go b/tests/mockserver/internal/sdk/models/components/platformresult.go new file mode 100644 index 00000000..f09289f8 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformresult.go @@ -0,0 +1,104 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "mockserver/internal/sdk/optionalnullable" + "mockserver/internal/sdk/utils" + "time" +) + +type PlatformResult struct { + // Canonical URL of the result. + URL string `json:"url"` + // Result title. + Title string `json:"title"` + // Query-relevant plain-text excerpts from the result body. + Snippets []string `json:"snippets,omitempty"` + // The datasource this result originates from. + Datasource string `json:"datasource"` + // The document type within the datasource. + DocumentType optionalnullable.OptionalNullable[string] `json:"document_type,omitempty"` + // A lightweight reference to a person, used where a payload merely points at someone. + Creator *PlatformPersonReference `json:"creator,omitempty"` + // A lightweight reference to a person, used where a payload merely points at someone. + Owner *PlatformPersonReference `json:"owner,omitempty"` + // When the result was last modified. + UpdatedAt optionalnullable.OptionalNullable[time.Time] `json:"updated_at,omitempty"` + // When the result was created. + CreatedAt optionalnullable.OptionalNullable[time.Time] `json:"created_at,omitempty"` +} + +func (p PlatformResult) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformResult) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"url", "title", "datasource"}); err != nil { + return err + } + return nil +} + +func (o *PlatformResult) GetURL() string { + if o == nil { + return "" + } + return o.URL +} + +func (o *PlatformResult) GetTitle() string { + if o == nil { + return "" + } + return o.Title +} + +func (o *PlatformResult) GetSnippets() []string { + if o == nil { + return nil + } + return o.Snippets +} + +func (o *PlatformResult) GetDatasource() string { + if o == nil { + return "" + } + return o.Datasource +} + +func (o *PlatformResult) GetDocumentType() optionalnullable.OptionalNullable[string] { + if o == nil { + return nil + } + return o.DocumentType +} + +func (o *PlatformResult) GetCreator() *PlatformPersonReference { + if o == nil { + return nil + } + return o.Creator +} + +func (o *PlatformResult) GetOwner() *PlatformPersonReference { + if o == nil { + return nil + } + return o.Owner +} + +func (o *PlatformResult) GetUpdatedAt() optionalnullable.OptionalNullable[time.Time] { + if o == nil { + return nil + } + return o.UpdatedAt +} + +func (o *PlatformResult) GetCreatedAt() optionalnullable.OptionalNullable[time.Time] { + if o == nil { + return nil + } + return o.CreatedAt +} diff --git a/tests/mockserver/internal/sdk/models/components/platformsearchfiltersresponse.go b/tests/mockserver/internal/sdk/models/components/platformsearchfiltersresponse.go new file mode 100644 index 00000000..51409a03 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformsearchfiltersresponse.go @@ -0,0 +1,25 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type PlatformSearchFiltersResponse struct { + // 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. + // + Datasources []PlatformDatasourceFilterInfo `json:"datasources"` + // Platform-generated request ID for support correlation. + RequestID string `json:"request_id"` +} + +func (o *PlatformSearchFiltersResponse) GetDatasources() []PlatformDatasourceFilterInfo { + if o == nil { + return []PlatformDatasourceFilterInfo{} + } + return o.Datasources +} + +func (o *PlatformSearchFiltersResponse) GetRequestID() string { + if o == nil { + return "" + } + return o.RequestID +} diff --git a/tests/mockserver/internal/sdk/models/components/platformsearchrequest.go b/tests/mockserver/internal/sdk/models/components/platformsearchrequest.go new file mode 100644 index 00000000..83c3c79d --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformsearchrequest.go @@ -0,0 +1,80 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "mockserver/internal/sdk/optionalnullable" + "mockserver/internal/sdk/utils" +) + +type PlatformSearchRequest struct { + // The search query string. Supports inline operators such as `from:jane type:document app:confluence`. Inline operators are AND'd with structured `filters`. + // + Query string `json:"query"` + // Number of results to return per page. + PageSize *int64 `default:"10" json:"page_size"` + // Opaque pagination token from a previous response's `next_cursor` field. Omit on the first request. + // + Cursor optionalnullable.OptionalNullable[string] `json:"cursor,omitempty"` + // Restrict results to specific datasource identifiers returned by `GET /api/search/filters`. Scopes by datasource type and may include results from multiple instances of that type. + // + Datasources []string `json:"datasources,omitempty"` + // Structured filters applied to search results. Multiple values within a filter with `EQUALS` are OR'd; separate filters are AND'd. Conflicting constraints on the same field (for example, `type:document` in `query` and `type:spreadsheet` in a filter) return an empty result set. See `Filter.field` for built-in field names and operators. Other nonblank field names are accepted as custom filters without validation; behavior depends on your connected sources. + // + Filters []PlatformFilter `json:"filters,omitempty"` + // Filter results to those last updated within this range. + TimeRange *PlatformTimeRange `json:"time_range,omitempty"` +} + +func (p PlatformSearchRequest) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformSearchRequest) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"query"}); err != nil { + return err + } + return nil +} + +func (o *PlatformSearchRequest) GetQuery() string { + if o == nil { + return "" + } + return o.Query +} + +func (o *PlatformSearchRequest) GetPageSize() *int64 { + if o == nil { + return nil + } + return o.PageSize +} + +func (o *PlatformSearchRequest) GetCursor() optionalnullable.OptionalNullable[string] { + if o == nil { + return nil + } + return o.Cursor +} + +func (o *PlatformSearchRequest) GetDatasources() []string { + if o == nil { + return nil + } + return o.Datasources +} + +func (o *PlatformSearchRequest) GetFilters() []PlatformFilter { + if o == nil { + return nil + } + return o.Filters +} + +func (o *PlatformSearchRequest) GetTimeRange() *PlatformTimeRange { + if o == nil { + return nil + } + return o.TimeRange +} diff --git a/tests/mockserver/internal/sdk/models/components/platformsearchresponse.go b/tests/mockserver/internal/sdk/models/components/platformsearchresponse.go new file mode 100644 index 00000000..3eed4668 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformsearchresponse.go @@ -0,0 +1,53 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type PlatformSearchResponse struct { + // Ordered list of ranked document results. People cards, Q&A blocks, and other UI-only result types are not included. + // + Results []PlatformResult `json:"results"` + // Indicates whether additional pages of results are available. + HasMore bool `json:"has_more"` + // Opaque token to pass as `cursor` in the next request. + NextCursor *string `json:"next_cursor"` + // Platform-generated request ID for support correlation. + RequestID string `json:"request_id"` + // 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. + // + Warnings []PlatformWarning `json:"warnings"` +} + +func (o *PlatformSearchResponse) GetResults() []PlatformResult { + if o == nil { + return []PlatformResult{} + } + return o.Results +} + +func (o *PlatformSearchResponse) GetHasMore() bool { + if o == nil { + return false + } + return o.HasMore +} + +func (o *PlatformSearchResponse) GetNextCursor() *string { + if o == nil { + return nil + } + return o.NextCursor +} + +func (o *PlatformSearchResponse) GetRequestID() string { + if o == nil { + return "" + } + return o.RequestID +} + +func (o *PlatformSearchResponse) GetWarnings() []PlatformWarning { + if o == nil { + return []PlatformWarning{} + } + return o.Warnings +} diff --git a/tests/mockserver/internal/sdk/models/components/platformskill.go b/tests/mockserver/internal/sdk/models/components/platformskill.go new file mode 100644 index 00000000..8397a899 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformskill.go @@ -0,0 +1,120 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "mockserver/internal/sdk/utils" + "time" +) + +type PlatformSkill struct { + // Glean skill ID. + ID string `json:"id"` + // Human-readable skill name. + DisplayName string `json:"display_name"` + // Human-readable skill description. + Description string `json:"description"` + // Latest major version number for the skill. + LatestVersion int64 `json:"latest_version"` + // Latest minor version number for the skill. + LatestMinorVersion int64 `json:"latest_minor_version"` + // Current skill status. + Status PlatformSkillStatus `json:"status"` + // Source category for the skill. + Origin PlatformSkillOrigin `json:"origin"` + SourceProvenance *PlatformSkillSourceProvenance `json:"source_provenance,omitempty"` + // A lightweight reference to a person, used where a payload merely points at someone. + Owner PlatformPersonReference `json:"owner"` + // Time the skill was created. + CreatedAt time.Time `json:"created_at"` + // Time the skill was last updated. + UpdatedAt time.Time `json:"updated_at"` +} + +func (p PlatformSkill) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +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 { + return err + } + return nil +} + +func (o *PlatformSkill) GetID() string { + if o == nil { + return "" + } + return o.ID +} + +func (o *PlatformSkill) GetDisplayName() string { + if o == nil { + return "" + } + return o.DisplayName +} + +func (o *PlatformSkill) GetDescription() string { + if o == nil { + return "" + } + return o.Description +} + +func (o *PlatformSkill) GetLatestVersion() int64 { + if o == nil { + return 0 + } + return o.LatestVersion +} + +func (o *PlatformSkill) GetLatestMinorVersion() int64 { + if o == nil { + return 0 + } + return o.LatestMinorVersion +} + +func (o *PlatformSkill) GetStatus() PlatformSkillStatus { + if o == nil { + return PlatformSkillStatus("") + } + return o.Status +} + +func (o *PlatformSkill) GetOrigin() PlatformSkillOrigin { + if o == nil { + return PlatformSkillOrigin("") + } + return o.Origin +} + +func (o *PlatformSkill) GetSourceProvenance() *PlatformSkillSourceProvenance { + if o == nil { + return nil + } + return o.SourceProvenance +} + +func (o *PlatformSkill) GetOwner() PlatformPersonReference { + if o == nil { + return PlatformPersonReference{} + } + return o.Owner +} + +func (o *PlatformSkill) GetCreatedAt() time.Time { + if o == nil { + return time.Time{} + } + return o.CreatedAt +} + +func (o *PlatformSkill) GetUpdatedAt() time.Time { + if o == nil { + return time.Time{} + } + return o.UpdatedAt +} diff --git a/tests/mockserver/internal/sdk/models/components/platformskillcreaterequest.go b/tests/mockserver/internal/sdk/models/components/platformskillcreaterequest.go new file mode 100644 index 00000000..c85a2e3c --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformskillcreaterequest.go @@ -0,0 +1,38 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "io" +) + +type PlatformSkillCreateRequestFile struct { + FileName string `multipartForm:"name=fileName"` + Content io.Reader `multipartForm:"content"` +} + +func (o *PlatformSkillCreateRequestFile) GetFileName() string { + if o == nil { + return "" + } + return o.FileName +} + +func (o *PlatformSkillCreateRequestFile) GetContent() io.Reader { + if o == nil { + return nil + } + return o.Content +} + +type PlatformSkillCreateRequest struct { + // SKILL.md, .zip, or .skill bundle to create. + File PlatformSkillCreateRequestFile `multipartForm:"file,name=file"` +} + +func (o *PlatformSkillCreateRequest) GetFile() PlatformSkillCreateRequestFile { + if o == nil { + return PlatformSkillCreateRequestFile{} + } + return o.File +} diff --git a/tests/mockserver/internal/sdk/models/components/platformskillcreateresponse.go b/tests/mockserver/internal/sdk/models/components/platformskillcreateresponse.go new file mode 100644 index 00000000..4713a366 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformskillcreateresponse.go @@ -0,0 +1,23 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type PlatformSkillCreateResponse struct { + Skill PlatformSkill `json:"skill"` + // Platform-generated request ID for support correlation. + RequestID string `json:"request_id"` +} + +func (o *PlatformSkillCreateResponse) GetSkill() PlatformSkill { + if o == nil { + return PlatformSkill{} + } + return o.Skill +} + +func (o *PlatformSkillCreateResponse) GetRequestID() string { + if o == nil { + return "" + } + return o.RequestID +} diff --git a/tests/mockserver/internal/sdk/models/components/platformskillgetresponse.go b/tests/mockserver/internal/sdk/models/components/platformskillgetresponse.go new file mode 100644 index 00000000..c9bcfa2f --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformskillgetresponse.go @@ -0,0 +1,23 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type PlatformSkillGetResponse struct { + Skill PlatformSkill `json:"skill"` + // Platform-generated request ID for support correlation. + RequestID string `json:"request_id"` +} + +func (o *PlatformSkillGetResponse) GetSkill() PlatformSkill { + if o == nil { + return PlatformSkill{} + } + return o.Skill +} + +func (o *PlatformSkillGetResponse) GetRequestID() string { + if o == nil { + return "" + } + return o.RequestID +} diff --git a/tests/mockserver/internal/sdk/models/components/platformskillimportrequest.go b/tests/mockserver/internal/sdk/models/components/platformskillimportrequest.go new file mode 100644 index 00000000..f038a7de --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformskillimportrequest.go @@ -0,0 +1,15 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type PlatformSkillImportRequest struct { + // Resolved GitHub skill URLs selected from a source preview. + SourceUrls []string `json:"source_urls"` +} + +func (o *PlatformSkillImportRequest) GetSourceUrls() []string { + if o == nil { + return []string{} + } + return o.SourceUrls +} diff --git a/tests/mockserver/internal/sdk/models/components/platformskillimportresponse.go b/tests/mockserver/internal/sdk/models/components/platformskillimportresponse.go new file mode 100644 index 00000000..262df2a7 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformskillimportresponse.go @@ -0,0 +1,24 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type PlatformSkillImportResponse struct { + // Independently persisted skills in request order. + Skills []PlatformSkill `json:"skills"` + // Platform-generated request ID for support correlation. + RequestID string `json:"request_id"` +} + +func (o *PlatformSkillImportResponse) GetSkills() []PlatformSkill { + if o == nil { + return []PlatformSkill{} + } + return o.Skills +} + +func (o *PlatformSkillImportResponse) GetRequestID() string { + if o == nil { + return "" + } + return o.RequestID +} diff --git a/tests/mockserver/internal/sdk/models/components/platformskillorigin.go b/tests/mockserver/internal/sdk/models/components/platformskillorigin.go new file mode 100644 index 00000000..e0a00449 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformskillorigin.go @@ -0,0 +1,32 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" +) + +// PlatformSkillOrigin - Source category for the skill. +type PlatformSkillOrigin string + +const ( + PlatformSkillOriginCustom PlatformSkillOrigin = "CUSTOM" +) + +func (e PlatformSkillOrigin) ToPointer() *PlatformSkillOrigin { + return &e +} +func (e *PlatformSkillOrigin) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "CUSTOM": + *e = PlatformSkillOrigin(v) + return nil + default: + return fmt.Errorf("invalid value for PlatformSkillOrigin: %v", v) + } +} diff --git a/tests/mockserver/internal/sdk/models/components/platformskillslistresponse.go b/tests/mockserver/internal/sdk/models/components/platformskillslistresponse.go new file mode 100644 index 00000000..566d5351 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformskillslistresponse.go @@ -0,0 +1,42 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type PlatformSkillsListResponse struct { + // Skills available to the user. + Skills []PlatformSkill `json:"skills"` + // Whether additional results are available. + HasMore bool `json:"has_more"` + // Cursor for the next page, or null when no more results are available. + NextCursor *string `json:"next_cursor"` + // Platform-generated request ID for support correlation. + RequestID string `json:"request_id"` +} + +func (o *PlatformSkillsListResponse) GetSkills() []PlatformSkill { + if o == nil { + return []PlatformSkill{} + } + return o.Skills +} + +func (o *PlatformSkillsListResponse) GetHasMore() bool { + if o == nil { + return false + } + return o.HasMore +} + +func (o *PlatformSkillsListResponse) GetNextCursor() *string { + if o == nil { + return nil + } + return o.NextCursor +} + +func (o *PlatformSkillsListResponse) GetRequestID() string { + if o == nil { + return "" + } + return o.RequestID +} diff --git a/tests/mockserver/internal/sdk/models/components/platformskillsourcepreview.go b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreview.go new file mode 100644 index 00000000..f7a467f1 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreview.go @@ -0,0 +1,69 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type PlatformSkillSourcePreview struct { + // Skill name parsed from SKILL.md frontmatter. + DisplayName string `json:"display_name"` + // Skill description parsed from SKILL.md frontmatter. + Description string `json:"description"` + // Resolved URL for this skill within the source. + SourceURL string `json:"source_url"` + // Commit SHA used to produce the preview. + CommitSha string `json:"commit_sha"` + // SKILL.md content fetched as part of the preview. + MainContent string `json:"main_content"` + // Supporting files fetched with the skill. + Files []PlatformSkillSourcePreviewFile `json:"files"` + // Relative paths discovered for the skill. + FileTree []string `json:"file_tree"` +} + +func (o *PlatformSkillSourcePreview) GetDisplayName() string { + if o == nil { + return "" + } + return o.DisplayName +} + +func (o *PlatformSkillSourcePreview) GetDescription() string { + if o == nil { + return "" + } + return o.Description +} + +func (o *PlatformSkillSourcePreview) GetSourceURL() string { + if o == nil { + return "" + } + return o.SourceURL +} + +func (o *PlatformSkillSourcePreview) GetCommitSha() string { + if o == nil { + return "" + } + return o.CommitSha +} + +func (o *PlatformSkillSourcePreview) GetMainContent() string { + if o == nil { + return "" + } + return o.MainContent +} + +func (o *PlatformSkillSourcePreview) GetFiles() []PlatformSkillSourcePreviewFile { + if o == nil { + return []PlatformSkillSourcePreviewFile{} + } + return o.Files +} + +func (o *PlatformSkillSourcePreview) GetFileTree() []string { + if o == nil { + return []string{} + } + return o.FileTree +} diff --git a/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewfailure.go b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewfailure.go new file mode 100644 index 00000000..5a6c6fe8 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewfailure.go @@ -0,0 +1,33 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type PlatformSkillSourcePreviewFailure struct { + // Resolved URL for the entry that could not be previewed. + SourceURL string `json:"source_url"` + // Stable machine-readable reason a discovered entry was excluded. + Code PlatformSkillSourcePreviewFailureCode `json:"code"` + // Safe explanation of why the entry was excluded. + Detail string `json:"detail"` +} + +func (o *PlatformSkillSourcePreviewFailure) GetSourceURL() string { + if o == nil { + return "" + } + return o.SourceURL +} + +func (o *PlatformSkillSourcePreviewFailure) GetCode() PlatformSkillSourcePreviewFailureCode { + if o == nil { + return PlatformSkillSourcePreviewFailureCode("") + } + return o.Code +} + +func (o *PlatformSkillSourcePreviewFailure) GetDetail() string { + if o == nil { + return "" + } + return o.Detail +} diff --git a/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewfailurecode.go b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewfailurecode.go new file mode 100644 index 00000000..0096a296 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewfailurecode.go @@ -0,0 +1,35 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" +) + +// PlatformSkillSourcePreviewFailureCode - Stable machine-readable reason a discovered entry was excluded. +type PlatformSkillSourcePreviewFailureCode string + +const ( + PlatformSkillSourcePreviewFailureCodeInvalidSkill PlatformSkillSourcePreviewFailureCode = "INVALID_SKILL" + PlatformSkillSourcePreviewFailureCodeSkillFetchFailed PlatformSkillSourcePreviewFailureCode = "SKILL_FETCH_FAILED" +) + +func (e PlatformSkillSourcePreviewFailureCode) ToPointer() *PlatformSkillSourcePreviewFailureCode { + return &e +} +func (e *PlatformSkillSourcePreviewFailureCode) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "INVALID_SKILL": + fallthrough + case "SKILL_FETCH_FAILED": + *e = PlatformSkillSourcePreviewFailureCode(v) + return nil + default: + return fmt.Errorf("invalid value for PlatformSkillSourcePreviewFailureCode: %v", v) + } +} diff --git a/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewfile.go b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewfile.go new file mode 100644 index 00000000..43503cfb --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewfile.go @@ -0,0 +1,24 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type PlatformSkillSourcePreviewFile struct { + // Relative path within the skill bundle. + Path string `json:"path"` + // UTF-8 file content. + Content string `json:"content"` +} + +func (o *PlatformSkillSourcePreviewFile) GetPath() string { + if o == nil { + return "" + } + return o.Path +} + +func (o *PlatformSkillSourcePreviewFile) GetContent() string { + if o == nil { + return "" + } + return o.Content +} diff --git a/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewrequest.go b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewrequest.go new file mode 100644 index 00000000..506e0c09 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewrequest.go @@ -0,0 +1,39 @@ +// 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 new file mode 100644 index 00000000..0607598d --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewresponse.go @@ -0,0 +1,33 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type PlatformSkillSourcePreviewResponse struct { + // Valid skills discovered at the source URL. + Skills []PlatformSkillSourcePreview `json:"skills"` + // Discovered entries that could not be included in the preview. + Failures []PlatformSkillSourcePreviewFailure `json:"failures"` + // Platform-generated request ID for support correlation. + RequestID string `json:"request_id"` +} + +func (o *PlatformSkillSourcePreviewResponse) GetSkills() []PlatformSkillSourcePreview { + if o == nil { + return []PlatformSkillSourcePreview{} + } + return o.Skills +} + +func (o *PlatformSkillSourcePreviewResponse) GetFailures() []PlatformSkillSourcePreviewFailure { + if o == nil { + return []PlatformSkillSourcePreviewFailure{} + } + return o.Failures +} + +func (o *PlatformSkillSourcePreviewResponse) GetRequestID() string { + if o == nil { + return "" + } + return o.RequestID +} diff --git a/tests/mockserver/internal/sdk/models/components/platformskillsourceprovenance.go b/tests/mockserver/internal/sdk/models/components/platformskillsourceprovenance.go new file mode 100644 index 00000000..65ed2aac --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformskillsourceprovenance.go @@ -0,0 +1,76 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "mockserver/internal/sdk/utils" + "time" +) + +type PlatformSkillSourceProvenance struct { + // URL of the external source the skill was imported from. + SourceURL *string `json:"source_url,omitempty"` + // Source commit SHA for the imported skill. + CommitSha *string `json:"commit_sha,omitempty"` + // Time the skill was imported. + ImportedAt *time.Time `json:"imported_at,omitempty"` + // Time the skill was last synced from its source. + LastSyncedAt *time.Time `json:"last_synced_at,omitempty"` + // Current external-source sync status. + SyncStatus *PlatformSkillSyncStatus `json:"sync_status,omitempty"` + // Human-readable sync failure reason, present only when sync_status is SYNC_FAILED. + SyncError *string `json:"sync_error,omitempty"` +} + +func (p PlatformSkillSourceProvenance) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformSkillSourceProvenance) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, nil); err != nil { + return err + } + return nil +} + +func (o *PlatformSkillSourceProvenance) GetSourceURL() *string { + if o == nil { + return nil + } + return o.SourceURL +} + +func (o *PlatformSkillSourceProvenance) GetCommitSha() *string { + if o == nil { + return nil + } + return o.CommitSha +} + +func (o *PlatformSkillSourceProvenance) GetImportedAt() *time.Time { + if o == nil { + return nil + } + return o.ImportedAt +} + +func (o *PlatformSkillSourceProvenance) GetLastSyncedAt() *time.Time { + if o == nil { + return nil + } + return o.LastSyncedAt +} + +func (o *PlatformSkillSourceProvenance) GetSyncStatus() *PlatformSkillSyncStatus { + if o == nil { + return nil + } + return o.SyncStatus +} + +func (o *PlatformSkillSourceProvenance) GetSyncError() *string { + if o == nil { + return nil + } + return o.SyncError +} diff --git a/tests/mockserver/internal/sdk/models/components/platformskillstatus.go b/tests/mockserver/internal/sdk/models/components/platformskillstatus.go new file mode 100644 index 00000000..a218b760 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformskillstatus.go @@ -0,0 +1,38 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" +) + +// PlatformSkillStatus - Current skill status. +type PlatformSkillStatus string + +const ( + PlatformSkillStatusDraft PlatformSkillStatus = "DRAFT" + PlatformSkillStatusEnabled PlatformSkillStatus = "ENABLED" + PlatformSkillStatusDisabled PlatformSkillStatus = "DISABLED" +) + +func (e PlatformSkillStatus) ToPointer() *PlatformSkillStatus { + return &e +} +func (e *PlatformSkillStatus) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "DRAFT": + fallthrough + case "ENABLED": + fallthrough + case "DISABLED": + *e = PlatformSkillStatus(v) + return nil + default: + return fmt.Errorf("invalid value for PlatformSkillStatus: %v", v) + } +} diff --git a/tests/mockserver/internal/sdk/models/components/platformskillsyncresponse.go b/tests/mockserver/internal/sdk/models/components/platformskillsyncresponse.go new file mode 100644 index 00000000..773dec5b --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformskillsyncresponse.go @@ -0,0 +1,42 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +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"` + // 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 "" + } + return o.CommitSha +} + +func (o *PlatformSkillSyncResponse) GetUpdated() bool { + if o == nil { + return false + } + return o.Updated +} + +func (o *PlatformSkillSyncResponse) GetRequestID() string { + if o == nil { + return "" + } + return o.RequestID +} diff --git a/tests/mockserver/internal/sdk/models/components/platformskillsyncresultstatus.go b/tests/mockserver/internal/sdk/models/components/platformskillsyncresultstatus.go new file mode 100644 index 00000000..93f6e9ed --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformskillsyncresultstatus.go @@ -0,0 +1,32 @@ +// 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/platformskillsyncstatus.go b/tests/mockserver/internal/sdk/models/components/platformskillsyncstatus.go new file mode 100644 index 00000000..0582664c --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformskillsyncstatus.go @@ -0,0 +1,38 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" +) + +// PlatformSkillSyncStatus - Current external-source sync status. +type PlatformSkillSyncStatus string + +const ( + PlatformSkillSyncStatusUpToDate PlatformSkillSyncStatus = "UP_TO_DATE" + PlatformSkillSyncStatusUpdateAvailable PlatformSkillSyncStatus = "UPDATE_AVAILABLE" + PlatformSkillSyncStatusSyncFailed PlatformSkillSyncStatus = "SYNC_FAILED" +) + +func (e PlatformSkillSyncStatus) ToPointer() *PlatformSkillSyncStatus { + return &e +} +func (e *PlatformSkillSyncStatus) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "UP_TO_DATE": + fallthrough + case "UPDATE_AVAILABLE": + fallthrough + case "SYNC_FAILED": + *e = PlatformSkillSyncStatus(v) + return nil + default: + return fmt.Errorf("invalid value for PlatformSkillSyncStatus: %v", v) + } +} diff --git a/tests/mockserver/internal/sdk/models/components/platformskillupdaterequest.go b/tests/mockserver/internal/sdk/models/components/platformskillupdaterequest.go new file mode 100644 index 00000000..16b5b625 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformskillupdaterequest.go @@ -0,0 +1,15 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type PlatformSkillUpdateRequest struct { + // New status for the skill. + Status PlatformSkillUpdateStatus `json:"status"` +} + +func (o *PlatformSkillUpdateRequest) GetStatus() PlatformSkillUpdateStatus { + if o == nil { + return PlatformSkillUpdateStatus("") + } + return o.Status +} diff --git a/tests/mockserver/internal/sdk/models/components/platformskillupdateresponse.go b/tests/mockserver/internal/sdk/models/components/platformskillupdateresponse.go new file mode 100644 index 00000000..99256154 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformskillupdateresponse.go @@ -0,0 +1,23 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type PlatformSkillUpdateResponse struct { + Skill PlatformSkill `json:"skill"` + // Platform-generated request ID for support correlation. + RequestID string `json:"request_id"` +} + +func (o *PlatformSkillUpdateResponse) GetSkill() PlatformSkill { + if o == nil { + return PlatformSkill{} + } + return o.Skill +} + +func (o *PlatformSkillUpdateResponse) GetRequestID() string { + if o == nil { + return "" + } + return o.RequestID +} diff --git a/tests/mockserver/internal/sdk/models/components/platformskillupdatestatus.go b/tests/mockserver/internal/sdk/models/components/platformskillupdatestatus.go new file mode 100644 index 00000000..d40a5b9f --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformskillupdatestatus.go @@ -0,0 +1,35 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" +) + +// PlatformSkillUpdateStatus - New status for the skill. +type PlatformSkillUpdateStatus string + +const ( + PlatformSkillUpdateStatusEnabled PlatformSkillUpdateStatus = "ENABLED" + PlatformSkillUpdateStatusDisabled PlatformSkillUpdateStatus = "DISABLED" +) + +func (e PlatformSkillUpdateStatus) ToPointer() *PlatformSkillUpdateStatus { + return &e +} +func (e *PlatformSkillUpdateStatus) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "ENABLED": + fallthrough + case "DISABLED": + *e = PlatformSkillUpdateStatus(v) + return nil + default: + return fmt.Errorf("invalid value for PlatformSkillUpdateStatus: %v", v) + } +} diff --git a/tests/mockserver/internal/sdk/models/components/platformskillvalidationfile.go b/tests/mockserver/internal/sdk/models/components/platformskillvalidationfile.go new file mode 100644 index 00000000..0ecb2538 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformskillvalidationfile.go @@ -0,0 +1,33 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type PlatformSkillValidationFile struct { + // Normalized relative path in the skill bundle. + Path string `json:"path"` + // File size in bytes. + SizeBytes int64 `json:"size_bytes"` + // Whether this file is the skill manifest. + IsManifest bool `json:"is_manifest"` +} + +func (o *PlatformSkillValidationFile) GetPath() string { + if o == nil { + return "" + } + return o.Path +} + +func (o *PlatformSkillValidationFile) GetSizeBytes() int64 { + if o == nil { + return 0 + } + return o.SizeBytes +} + +func (o *PlatformSkillValidationFile) GetIsManifest() bool { + if o == nil { + return false + } + return o.IsManifest +} diff --git a/tests/mockserver/internal/sdk/models/components/platformskillvalidationmetadata.go b/tests/mockserver/internal/sdk/models/components/platformskillvalidationmetadata.go new file mode 100644 index 00000000..0368fac9 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformskillvalidationmetadata.go @@ -0,0 +1,24 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type PlatformSkillValidationMetadata struct { + // Skill name parsed from SKILL.md frontmatter. + DisplayName string `json:"display_name"` + // Skill description parsed from SKILL.md frontmatter. + Description string `json:"description"` +} + +func (o *PlatformSkillValidationMetadata) GetDisplayName() string { + if o == nil { + return "" + } + return o.DisplayName +} + +func (o *PlatformSkillValidationMetadata) GetDescription() string { + if o == nil { + return "" + } + return o.Description +} diff --git a/tests/mockserver/internal/sdk/models/components/platformskillvalidationrequest.go b/tests/mockserver/internal/sdk/models/components/platformskillvalidationrequest.go new file mode 100644 index 00000000..2f644ff6 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformskillvalidationrequest.go @@ -0,0 +1,38 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "io" +) + +type PlatformSkillValidationRequestFile struct { + FileName string `multipartForm:"name=fileName"` + Content io.Reader `multipartForm:"content"` +} + +func (o *PlatformSkillValidationRequestFile) GetFileName() string { + if o == nil { + return "" + } + return o.FileName +} + +func (o *PlatformSkillValidationRequestFile) GetContent() io.Reader { + if o == nil { + return nil + } + return o.Content +} + +type PlatformSkillValidationRequest struct { + // SKILL.md, .zip, or .skill bundle to validate. + File PlatformSkillValidationRequestFile `multipartForm:"file,name=file"` +} + +func (o *PlatformSkillValidationRequest) GetFile() PlatformSkillValidationRequestFile { + if o == nil { + return PlatformSkillValidationRequestFile{} + } + return o.File +} diff --git a/tests/mockserver/internal/sdk/models/components/platformskillvalidationresponse.go b/tests/mockserver/internal/sdk/models/components/platformskillvalidationresponse.go new file mode 100644 index 00000000..f8bd1eae --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformskillvalidationresponse.go @@ -0,0 +1,41 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type PlatformSkillValidationResponse struct { + Metadata PlatformSkillValidationMetadata `json:"metadata"` + // Normalized files in the bundle after stripping an optional single root folder. + Files []PlatformSkillValidationFile `json:"files"` + // Non-blocking validation warnings. + Warnings []PlatformWarning `json:"warnings"` + // Platform-generated request ID for support correlation. + RequestID string `json:"request_id"` +} + +func (o *PlatformSkillValidationResponse) GetMetadata() PlatformSkillValidationMetadata { + if o == nil { + return PlatformSkillValidationMetadata{} + } + return o.Metadata +} + +func (o *PlatformSkillValidationResponse) GetFiles() []PlatformSkillValidationFile { + if o == nil { + return []PlatformSkillValidationFile{} + } + return o.Files +} + +func (o *PlatformSkillValidationResponse) GetWarnings() []PlatformWarning { + if o == nil { + return []PlatformWarning{} + } + return o.Warnings +} + +func (o *PlatformSkillValidationResponse) GetRequestID() string { + if o == nil { + return "" + } + return o.RequestID +} diff --git a/tests/mockserver/internal/sdk/models/components/platformskillversion.go b/tests/mockserver/internal/sdk/models/components/platformskillversion.go new file mode 100644 index 00000000..a826ce8b --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformskillversion.go @@ -0,0 +1,93 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "mockserver/internal/sdk/utils" + "time" +) + +type PlatformSkillVersion struct { + // Glean skill ID. + SkillID string `json:"skill_id"` + // Major version number. + Version int64 `json:"version"` + // Minor version number. + MinorVersion int64 `json:"minor_version"` + // Whether this is the latest version of the skill. + IsLatest bool `json:"is_latest"` + // A lightweight reference to a person, used where a payload merely points at someone. + CreatedBy PlatformPersonReference `json:"created_by"` + // Time this version was created. + CreatedAt time.Time `json:"created_at"` + // Time this version was last updated. + UpdatedAt time.Time `json:"updated_at"` + SourceProvenance *PlatformSkillSourceProvenance `json:"source_provenance,omitempty"` +} + +func (p PlatformSkillVersion) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformSkillVersion) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"skill_id", "version", "minor_version", "is_latest", "created_by", "created_at", "updated_at"}); err != nil { + return err + } + return nil +} + +func (o *PlatformSkillVersion) GetSkillID() string { + if o == nil { + return "" + } + return o.SkillID +} + +func (o *PlatformSkillVersion) GetVersion() int64 { + if o == nil { + return 0 + } + return o.Version +} + +func (o *PlatformSkillVersion) GetMinorVersion() int64 { + if o == nil { + return 0 + } + return o.MinorVersion +} + +func (o *PlatformSkillVersion) GetIsLatest() bool { + if o == nil { + return false + } + return o.IsLatest +} + +func (o *PlatformSkillVersion) GetCreatedBy() PlatformPersonReference { + if o == nil { + return PlatformPersonReference{} + } + return o.CreatedBy +} + +func (o *PlatformSkillVersion) GetCreatedAt() time.Time { + if o == nil { + return time.Time{} + } + return o.CreatedAt +} + +func (o *PlatformSkillVersion) GetUpdatedAt() time.Time { + if o == nil { + return time.Time{} + } + return o.UpdatedAt +} + +func (o *PlatformSkillVersion) GetSourceProvenance() *PlatformSkillSourceProvenance { + if o == nil { + return nil + } + return o.SourceProvenance +} diff --git a/tests/mockserver/internal/sdk/models/components/platformskillversioncreaterequest.go b/tests/mockserver/internal/sdk/models/components/platformskillversioncreaterequest.go new file mode 100644 index 00000000..29ee5535 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformskillversioncreaterequest.go @@ -0,0 +1,38 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "io" +) + +type PlatformSkillVersionCreateRequestFile struct { + FileName string `multipartForm:"name=fileName"` + Content io.Reader `multipartForm:"content"` +} + +func (o *PlatformSkillVersionCreateRequestFile) GetFileName() string { + if o == nil { + return "" + } + return o.FileName +} + +func (o *PlatformSkillVersionCreateRequestFile) GetContent() io.Reader { + if o == nil { + return nil + } + return o.Content +} + +type PlatformSkillVersionCreateRequest struct { + // SKILL.md, .zip, or .skill bundle to store as a new version. + File PlatformSkillVersionCreateRequestFile `multipartForm:"file,name=file"` +} + +func (o *PlatformSkillVersionCreateRequest) GetFile() PlatformSkillVersionCreateRequestFile { + if o == nil { + return PlatformSkillVersionCreateRequestFile{} + } + return o.File +} diff --git a/tests/mockserver/internal/sdk/models/components/platformskillversioncreateresponse.go b/tests/mockserver/internal/sdk/models/components/platformskillversioncreateresponse.go new file mode 100644 index 00000000..2c9b4312 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformskillversioncreateresponse.go @@ -0,0 +1,23 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type PlatformSkillVersionCreateResponse struct { + Version PlatformSkillVersion `json:"version"` + // Platform-generated request ID for support correlation. + RequestID string `json:"request_id"` +} + +func (o *PlatformSkillVersionCreateResponse) GetVersion() PlatformSkillVersion { + if o == nil { + return PlatformSkillVersion{} + } + return o.Version +} + +func (o *PlatformSkillVersionCreateResponse) GetRequestID() string { + if o == nil { + return "" + } + return o.RequestID +} diff --git a/tests/mockserver/internal/sdk/models/components/platformskillversiongetresponse.go b/tests/mockserver/internal/sdk/models/components/platformskillversiongetresponse.go new file mode 100644 index 00000000..d86476b9 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformskillversiongetresponse.go @@ -0,0 +1,23 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type PlatformSkillVersionGetResponse struct { + Version PlatformSkillVersion `json:"version"` + // Platform-generated request ID for support correlation. + RequestID string `json:"request_id"` +} + +func (o *PlatformSkillVersionGetResponse) GetVersion() PlatformSkillVersion { + if o == nil { + return PlatformSkillVersion{} + } + return o.Version +} + +func (o *PlatformSkillVersionGetResponse) GetRequestID() string { + if o == nil { + return "" + } + return o.RequestID +} diff --git a/tests/mockserver/internal/sdk/models/components/platformskillversionslistresponse.go b/tests/mockserver/internal/sdk/models/components/platformskillversionslistresponse.go new file mode 100644 index 00000000..e6eac47b --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformskillversionslistresponse.go @@ -0,0 +1,42 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type PlatformSkillVersionsListResponse struct { + // Versions available for the skill. + Versions []PlatformSkillVersion `json:"versions"` + // Whether additional results are available. + HasMore bool `json:"has_more"` + // Cursor for the next page, or null when no more results are available. + NextCursor *string `json:"next_cursor"` + // Platform-generated request ID for support correlation. + RequestID string `json:"request_id"` +} + +func (o *PlatformSkillVersionsListResponse) GetVersions() []PlatformSkillVersion { + if o == nil { + return []PlatformSkillVersion{} + } + return o.Versions +} + +func (o *PlatformSkillVersionsListResponse) GetHasMore() bool { + if o == nil { + return false + } + return o.HasMore +} + +func (o *PlatformSkillVersionsListResponse) GetNextCursor() *string { + if o == nil { + return nil + } + return o.NextCursor +} + +func (o *PlatformSkillVersionsListResponse) GetRequestID() string { + if o == nil { + return "" + } + return o.RequestID +} diff --git a/tests/mockserver/internal/sdk/models/components/platformtimerange.go b/tests/mockserver/internal/sdk/models/components/platformtimerange.go new file mode 100644 index 00000000..b88a152d --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformtimerange.go @@ -0,0 +1,41 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "mockserver/internal/sdk/utils" + "time" +) + +// PlatformTimeRange - Filter results to those last updated within this range. +type PlatformTimeRange struct { + // Inclusive lower bound in ISO 8601 format. + Start *time.Time `json:"start,omitempty"` + // Exclusive upper bound in ISO 8601 format. + End *time.Time `json:"end,omitempty"` +} + +func (p PlatformTimeRange) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformTimeRange) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, nil); err != nil { + return err + } + return nil +} + +func (o *PlatformTimeRange) GetStart() *time.Time { + if o == nil { + return nil + } + return o.Start +} + +func (o *PlatformTimeRange) GetEnd() *time.Time { + if o == nil { + return nil + } + return o.End +} diff --git a/tests/mockserver/internal/sdk/models/components/platformtrigger.go b/tests/mockserver/internal/sdk/models/components/platformtrigger.go new file mode 100644 index 00000000..f4ff0336 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformtrigger.go @@ -0,0 +1,93 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "mockserver/internal/sdk/utils" + "time" +) + +type PlatformTrigger struct { + // ID of the trigger. + TriggerID string `json:"trigger_id"` + // ID of the preset this trigger was created from. + PresetID string `json:"preset_id"` + // Optional caller-supplied note describing this trigger. + Description *string `json:"description,omitempty"` + // Current trigger lifecycle state. + Status PlatformTriggerStatus `json:"status"` + // Values supplied for the preset's inputs. + Inputs map[string]any `json:"inputs,omitempty"` + Delivery PlatformTriggerDeliveryOutput `json:"delivery"` + // Time the trigger was created. + CreatedAt time.Time `json:"created_at"` + // Time the trigger was last updated. + UpdatedAt time.Time `json:"updated_at"` +} + +func (p PlatformTrigger) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformTrigger) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"trigger_id", "preset_id", "status", "delivery", "created_at", "updated_at"}); err != nil { + return err + } + return nil +} + +func (o *PlatformTrigger) GetTriggerID() string { + if o == nil { + return "" + } + return o.TriggerID +} + +func (o *PlatformTrigger) GetPresetID() string { + if o == nil { + return "" + } + return o.PresetID +} + +func (o *PlatformTrigger) GetDescription() *string { + if o == nil { + return nil + } + return o.Description +} + +func (o *PlatformTrigger) GetStatus() PlatformTriggerStatus { + if o == nil { + return PlatformTriggerStatus("") + } + return o.Status +} + +func (o *PlatformTrigger) GetInputs() map[string]any { + if o == nil { + return nil + } + return o.Inputs +} + +func (o *PlatformTrigger) GetDelivery() PlatformTriggerDeliveryOutput { + if o == nil { + return PlatformTriggerDeliveryOutput{} + } + return o.Delivery +} + +func (o *PlatformTrigger) GetCreatedAt() time.Time { + if o == nil { + return time.Time{} + } + return o.CreatedAt +} + +func (o *PlatformTrigger) GetUpdatedAt() time.Time { + if o == nil { + return time.Time{} + } + return o.UpdatedAt +} diff --git a/tests/mockserver/internal/sdk/models/components/platformtriggerauthoutput.go b/tests/mockserver/internal/sdk/models/components/platformtriggerauthoutput.go new file mode 100644 index 00000000..b72ecabb --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformtriggerauthoutput.go @@ -0,0 +1,67 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" +) + +// PlatformTriggerAuthType - Credential scheme. +type PlatformTriggerAuthType string + +const ( + PlatformTriggerAuthTypeBearer PlatformTriggerAuthType = "BEARER" +) + +func (e PlatformTriggerAuthType) ToPointer() *PlatformTriggerAuthType { + return &e +} +func (e *PlatformTriggerAuthType) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "BEARER": + *e = PlatformTriggerAuthType(v) + return nil + default: + return fmt.Errorf("invalid value for PlatformTriggerAuthType: %v", v) + } +} + +// PlatformTriggerAuthOutput - Optional caller credential sent as an HTTP auth header on each delivery, in addition to the HMAC signature. Lets the receiving endpoint authenticate the request. On update, omit `auth` to preserve the existing credential; there is no in-place removal — recreate the trigger to remove auth. +type PlatformTriggerAuthOutput struct { + // Credential scheme. + Type PlatformTriggerAuthType `json:"type"` +} + +func (o *PlatformTriggerAuthOutput) GetType() PlatformTriggerAuthType { + if o == nil { + return PlatformTriggerAuthType("") + } + return o.Type +} + +// PlatformTriggerAuth - Optional caller credential sent as an HTTP auth header on each delivery, in addition to the HMAC signature. Lets the receiving endpoint authenticate the request. On update, omit `auth` to preserve the existing credential; there is no in-place removal — recreate the trigger to remove auth. +type PlatformTriggerAuth struct { + // Credential scheme. + Type PlatformTriggerAuthType `json:"type"` + // Secret credential value. Write-only; never returned on reads. + Secret string `json:"secret"` +} + +func (o *PlatformTriggerAuth) GetType() PlatformTriggerAuthType { + if o == nil { + return PlatformTriggerAuthType("") + } + return o.Type +} + +func (o *PlatformTriggerAuth) GetSecret() string { + if o == nil { + return "" + } + return o.Secret +} diff --git a/tests/mockserver/internal/sdk/models/components/platformtriggercreaterequest.go b/tests/mockserver/internal/sdk/models/components/platformtriggercreaterequest.go new file mode 100644 index 00000000..f0b4f7f1 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformtriggercreaterequest.go @@ -0,0 +1,41 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type PlatformTriggerCreateRequest struct { + // ID of the preset to instantiate. + PresetID string `json:"preset_id"` + // Optional note describing this trigger. + Description *string `json:"description,omitempty"` + // Values for the preset's inputs. + Inputs map[string]any `json:"inputs,omitempty"` + Delivery PlatformTriggerDelivery `json:"delivery"` +} + +func (o *PlatformTriggerCreateRequest) GetPresetID() string { + if o == nil { + return "" + } + return o.PresetID +} + +func (o *PlatformTriggerCreateRequest) GetDescription() *string { + if o == nil { + return nil + } + return o.Description +} + +func (o *PlatformTriggerCreateRequest) GetInputs() map[string]any { + if o == nil { + return nil + } + return o.Inputs +} + +func (o *PlatformTriggerCreateRequest) GetDelivery() PlatformTriggerDelivery { + if o == nil { + return PlatformTriggerDelivery{} + } + return o.Delivery +} diff --git a/tests/mockserver/internal/sdk/models/components/platformtriggercreateresponse.go b/tests/mockserver/internal/sdk/models/components/platformtriggercreateresponse.go new file mode 100644 index 00000000..2bc53014 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformtriggercreateresponse.go @@ -0,0 +1,23 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type PlatformTriggerCreateResponse struct { + Trigger PlatformTriggerWithSecret `json:"trigger"` + // Platform-generated request ID for support correlation. + RequestID string `json:"request_id"` +} + +func (o *PlatformTriggerCreateResponse) GetTrigger() PlatformTriggerWithSecret { + if o == nil { + return PlatformTriggerWithSecret{} + } + return o.Trigger +} + +func (o *PlatformTriggerCreateResponse) GetRequestID() string { + if o == nil { + return "" + } + return o.RequestID +} diff --git a/tests/mockserver/internal/sdk/models/components/platformtriggerdelivery.go b/tests/mockserver/internal/sdk/models/components/platformtriggerdelivery.go new file mode 100644 index 00000000..07fb9833 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformtriggerdelivery.go @@ -0,0 +1,24 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type PlatformTriggerDelivery struct { + // HTTPS URL that signed events are delivered to. + WebhookURL string `json:"webhook_url"` + // Optional caller credential sent as an HTTP auth header on each delivery, in addition to the HMAC signature. Lets the receiving endpoint authenticate the request. On update, omit `auth` to preserve the existing credential; there is no in-place removal — recreate the trigger to remove auth. + Auth *PlatformTriggerAuth `json:"auth,omitempty"` +} + +func (o *PlatformTriggerDelivery) GetWebhookURL() string { + if o == nil { + return "" + } + return o.WebhookURL +} + +func (o *PlatformTriggerDelivery) GetAuth() *PlatformTriggerAuth { + if o == nil { + return nil + } + return o.Auth +} diff --git a/tests/mockserver/internal/sdk/models/components/platformtriggerdeliveryoutput.go b/tests/mockserver/internal/sdk/models/components/platformtriggerdeliveryoutput.go new file mode 100644 index 00000000..eae6a26f --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformtriggerdeliveryoutput.go @@ -0,0 +1,24 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type PlatformTriggerDeliveryOutput struct { + // HTTPS URL that signed events are delivered to. + WebhookURL string `json:"webhook_url"` + // Optional caller credential sent as an HTTP auth header on each delivery, in addition to the HMAC signature. Lets the receiving endpoint authenticate the request. On update, omit `auth` to preserve the existing credential; there is no in-place removal — recreate the trigger to remove auth. + Auth *PlatformTriggerAuthOutput `json:"auth,omitempty"` +} + +func (o *PlatformTriggerDeliveryOutput) GetWebhookURL() string { + if o == nil { + return "" + } + return o.WebhookURL +} + +func (o *PlatformTriggerDeliveryOutput) GetAuth() *PlatformTriggerAuthOutput { + if o == nil { + return nil + } + return o.Auth +} diff --git a/tests/mockserver/internal/sdk/models/components/platformtriggerevent.go b/tests/mockserver/internal/sdk/models/components/platformtriggerevent.go new file mode 100644 index 00000000..30f4d2fc --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformtriggerevent.go @@ -0,0 +1,95 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "mockserver/internal/sdk/utils" + "time" +) + +// PlatformTriggerEvent - A content event a trigger can fire on. +type PlatformTriggerEvent struct { + // The kind of event. + EventType PlatformTriggerEventType `json:"event_type"` + // Datasource the event originated from. + Datasource string `json:"datasource"` + // Why the event fired. + Reason PlatformTriggerEventReason `json:"reason"` + // Datasource-specific object type. + DocType string `json:"doc_type"` + // Identifier of the document the event is about. + DocID string `json:"doc_id"` + // Link to the document in its source system. + ViewURL string `json:"view_url"` + // Title of the document, or the subject for email. + Title string `json:"title"` + // When the event happened at the source: the document's own change timestamp for a document change, and the scheduled time for a content schedule. Omitted when the source did not supply one. + EventTime time.Time `json:"event_time"` +} + +func (p PlatformTriggerEvent) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformTriggerEvent) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"event_type", "datasource", "reason", "doc_type", "doc_id", "view_url", "title", "event_time"}); err != nil { + return err + } + return nil +} + +func (o *PlatformTriggerEvent) GetEventType() PlatformTriggerEventType { + if o == nil { + return PlatformTriggerEventType("") + } + return o.EventType +} + +func (o *PlatformTriggerEvent) GetDatasource() string { + if o == nil { + return "" + } + return o.Datasource +} + +func (o *PlatformTriggerEvent) GetReason() PlatformTriggerEventReason { + if o == nil { + return PlatformTriggerEventReason("") + } + return o.Reason +} + +func (o *PlatformTriggerEvent) GetDocType() string { + if o == nil { + return "" + } + return o.DocType +} + +func (o *PlatformTriggerEvent) GetDocID() string { + if o == nil { + return "" + } + return o.DocID +} + +func (o *PlatformTriggerEvent) GetViewURL() string { + if o == nil { + return "" + } + return o.ViewURL +} + +func (o *PlatformTriggerEvent) GetTitle() string { + if o == nil { + return "" + } + return o.Title +} + +func (o *PlatformTriggerEvent) GetEventTime() time.Time { + if o == nil { + return time.Time{} + } + return o.EventTime +} diff --git a/tests/mockserver/internal/sdk/models/components/platformtriggereventreason.go b/tests/mockserver/internal/sdk/models/components/platformtriggereventreason.go new file mode 100644 index 00000000..7f0bda2d --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformtriggereventreason.go @@ -0,0 +1,68 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" +) + +// PlatformTriggerEventReason - Why the event fired. +type PlatformTriggerEventReason string + +const ( + PlatformTriggerEventReasonCreated PlatformTriggerEventReason = "CREATED" + PlatformTriggerEventReasonUpdated PlatformTriggerEventReason = "UPDATED" + PlatformTriggerEventReasonDeleted PlatformTriggerEventReason = "DELETED" + PlatformTriggerEventReasonMeetsCondition PlatformTriggerEventReason = "MEETS_CONDITION" + PlatformTriggerEventReasonAssigned PlatformTriggerEventReason = "ASSIGNED" + PlatformTriggerEventReasonUnassigned PlatformTriggerEventReason = "UNASSIGNED" + PlatformTriggerEventReasonLabeled PlatformTriggerEventReason = "LABELED" + PlatformTriggerEventReasonUnlabeled PlatformTriggerEventReason = "UNLABELED" + PlatformTriggerEventReasonReviewRequested PlatformTriggerEventReason = "REVIEW_REQUESTED" + PlatformTriggerEventReasonReviewRequestRemoved PlatformTriggerEventReason = "REVIEW_REQUEST_REMOVED" + PlatformTriggerEventReasonReadyForReview PlatformTriggerEventReason = "READY_FOR_REVIEW" + PlatformTriggerEventReasonConvertedToDraft PlatformTriggerEventReason = "CONVERTED_TO_DRAFT" + PlatformTriggerEventReasonWebhookUpdated PlatformTriggerEventReason = "WEBHOOK_UPDATED" +) + +func (e PlatformTriggerEventReason) ToPointer() *PlatformTriggerEventReason { + return &e +} +func (e *PlatformTriggerEventReason) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "CREATED": + fallthrough + case "UPDATED": + fallthrough + case "DELETED": + fallthrough + case "MEETS_CONDITION": + fallthrough + case "ASSIGNED": + fallthrough + case "UNASSIGNED": + fallthrough + case "LABELED": + fallthrough + case "UNLABELED": + fallthrough + case "REVIEW_REQUESTED": + fallthrough + case "REVIEW_REQUEST_REMOVED": + fallthrough + case "READY_FOR_REVIEW": + fallthrough + case "CONVERTED_TO_DRAFT": + fallthrough + case "WEBHOOK_UPDATED": + *e = PlatformTriggerEventReason(v) + return nil + default: + return fmt.Errorf("invalid value for PlatformTriggerEventReason: %v", v) + } +} diff --git a/tests/mockserver/internal/sdk/models/components/platformtriggereventsearchrequest.go b/tests/mockserver/internal/sdk/models/components/platformtriggereventsearchrequest.go new file mode 100644 index 00000000..dd4df12a --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformtriggereventsearchrequest.go @@ -0,0 +1,30 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "mockserver/internal/sdk/utils" +) + +type PlatformTriggerEventSearchRequest struct { + // Maximum number of events to return. + PageSize *int64 `default:"10" json:"page_size"` +} + +func (p PlatformTriggerEventSearchRequest) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformTriggerEventSearchRequest) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, nil); err != nil { + return err + } + return nil +} + +func (o *PlatformTriggerEventSearchRequest) GetPageSize() *int64 { + if o == nil { + return nil + } + return o.PageSize +} diff --git a/tests/mockserver/internal/sdk/models/components/platformtriggereventsearchresponse.go b/tests/mockserver/internal/sdk/models/components/platformtriggereventsearchresponse.go new file mode 100644 index 00000000..052cac3b --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformtriggereventsearchresponse.go @@ -0,0 +1,34 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type PlatformTriggerEventSearchResponse struct { + // Matching events, most recent first. + Results []PlatformTriggerEvent `json:"results"` + // Whether more events matched than were returned. Raise `page_size` to see more; cursor-based paging is not offered yet. + // + HasMore bool `json:"has_more"` + // Unique identifier for this request, for support and debugging. + RequestID string `json:"request_id"` +} + +func (o *PlatformTriggerEventSearchResponse) GetResults() []PlatformTriggerEvent { + if o == nil { + return []PlatformTriggerEvent{} + } + return o.Results +} + +func (o *PlatformTriggerEventSearchResponse) GetHasMore() bool { + if o == nil { + return false + } + return o.HasMore +} + +func (o *PlatformTriggerEventSearchResponse) GetRequestID() string { + if o == nil { + return "" + } + return o.RequestID +} diff --git a/tests/mockserver/internal/sdk/models/components/platformtriggereventtype.go b/tests/mockserver/internal/sdk/models/components/platformtriggereventtype.go new file mode 100644 index 00000000..01a90c18 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformtriggereventtype.go @@ -0,0 +1,32 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" +) + +// PlatformTriggerEventType - The kind of event. +type PlatformTriggerEventType string + +const ( + PlatformTriggerEventTypeDocumentChange PlatformTriggerEventType = "DOCUMENT_CHANGE" +) + +func (e PlatformTriggerEventType) ToPointer() *PlatformTriggerEventType { + return &e +} +func (e *PlatformTriggerEventType) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "DOCUMENT_CHANGE": + *e = PlatformTriggerEventType(v) + return nil + default: + return fmt.Errorf("invalid value for PlatformTriggerEventType: %v", v) + } +} diff --git a/tests/mockserver/internal/sdk/models/components/platformtriggergetresponse.go b/tests/mockserver/internal/sdk/models/components/platformtriggergetresponse.go new file mode 100644 index 00000000..bf48ffae --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformtriggergetresponse.go @@ -0,0 +1,23 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type PlatformTriggerGetResponse struct { + Trigger PlatformTrigger `json:"trigger"` + // Platform-generated request ID for support correlation. + RequestID string `json:"request_id"` +} + +func (o *PlatformTriggerGetResponse) GetTrigger() PlatformTrigger { + if o == nil { + return PlatformTrigger{} + } + return o.Trigger +} + +func (o *PlatformTriggerGetResponse) GetRequestID() string { + if o == nil { + return "" + } + return o.RequestID +} diff --git a/tests/mockserver/internal/sdk/models/components/platformtriggerlistresponse.go b/tests/mockserver/internal/sdk/models/components/platformtriggerlistresponse.go new file mode 100644 index 00000000..ee21c824 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformtriggerlistresponse.go @@ -0,0 +1,42 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type PlatformTriggerListResponse struct { + // Triggers owned by the caller. + Results []PlatformTrigger `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. + NextCursor *string `json:"next_cursor"` + // Platform-generated request ID for support correlation. + RequestID string `json:"request_id"` +} + +func (o *PlatformTriggerListResponse) GetResults() []PlatformTrigger { + if o == nil { + return []PlatformTrigger{} + } + return o.Results +} + +func (o *PlatformTriggerListResponse) GetHasMore() bool { + if o == nil { + return false + } + return o.HasMore +} + +func (o *PlatformTriggerListResponse) GetNextCursor() *string { + if o == nil { + return nil + } + return o.NextCursor +} + +func (o *PlatformTriggerListResponse) GetRequestID() string { + if o == nil { + return "" + } + return o.RequestID +} diff --git a/tests/mockserver/internal/sdk/models/components/platformtriggerpreset.go b/tests/mockserver/internal/sdk/models/components/platformtriggerpreset.go new file mode 100644 index 00000000..8ec754d7 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformtriggerpreset.go @@ -0,0 +1,51 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type PlatformTriggerPreset struct { + // ID of the preset. Pass this when creating a trigger. + PresetID string `json:"preset_id"` + // Datasource the preset fires on. + Datasource string `json:"datasource"` + // Human-readable preset name. + DisplayName string `json:"display_name"` + // Human-readable description of when the preset fires. + Description *string `json:"description,omitempty"` + // Inputs the caller may supply when creating a trigger from this preset. + Inputs []PlatformTriggerPresetInput `json:"inputs"` +} + +func (o *PlatformTriggerPreset) GetPresetID() string { + if o == nil { + return "" + } + return o.PresetID +} + +func (o *PlatformTriggerPreset) GetDatasource() string { + if o == nil { + return "" + } + return o.Datasource +} + +func (o *PlatformTriggerPreset) GetDisplayName() string { + if o == nil { + return "" + } + return o.DisplayName +} + +func (o *PlatformTriggerPreset) GetDescription() *string { + if o == nil { + return nil + } + return o.Description +} + +func (o *PlatformTriggerPreset) GetInputs() []PlatformTriggerPresetInput { + if o == nil { + return []PlatformTriggerPresetInput{} + } + return o.Inputs +} diff --git a/tests/mockserver/internal/sdk/models/components/platformtriggerpreseteventsearchrequest.go b/tests/mockserver/internal/sdk/models/components/platformtriggerpreseteventsearchrequest.go new file mode 100644 index 00000000..e461aefd --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformtriggerpreseteventsearchrequest.go @@ -0,0 +1,40 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "mockserver/internal/sdk/utils" +) + +type PlatformTriggerPresetEventSearchRequest struct { + // Values for the preset's input fields, keyed by field name. + // + Inputs map[string]string `json:"inputs,omitempty"` + // Maximum number of events to return. + PageSize *int64 `default:"10" json:"page_size"` +} + +func (p PlatformTriggerPresetEventSearchRequest) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformTriggerPresetEventSearchRequest) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, nil); err != nil { + return err + } + return nil +} + +func (o *PlatformTriggerPresetEventSearchRequest) GetInputs() map[string]string { + if o == nil { + return nil + } + return o.Inputs +} + +func (o *PlatformTriggerPresetEventSearchRequest) GetPageSize() *int64 { + if o == nil { + return nil + } + return o.PageSize +} diff --git a/tests/mockserver/internal/sdk/models/components/platformtriggerpresetgetresponse.go b/tests/mockserver/internal/sdk/models/components/platformtriggerpresetgetresponse.go new file mode 100644 index 00000000..75202b87 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformtriggerpresetgetresponse.go @@ -0,0 +1,23 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type PlatformTriggerPresetGetResponse struct { + TriggerPreset PlatformTriggerPreset `json:"trigger_preset"` + // Platform-generated request ID for support correlation. + RequestID string `json:"request_id"` +} + +func (o *PlatformTriggerPresetGetResponse) GetTriggerPreset() PlatformTriggerPreset { + if o == nil { + return PlatformTriggerPreset{} + } + return o.TriggerPreset +} + +func (o *PlatformTriggerPresetGetResponse) GetRequestID() string { + if o == nil { + return "" + } + return o.RequestID +} diff --git a/tests/mockserver/internal/sdk/models/components/platformtriggerpresetinput.go b/tests/mockserver/internal/sdk/models/components/platformtriggerpresetinput.go new file mode 100644 index 00000000..674722ca --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformtriggerpresetinput.go @@ -0,0 +1,62 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type PlatformTriggerPresetInput struct { + // Identifier of the input, supplied as a key in the trigger's `inputs`. + Field string `json:"field"` + // Type of a preset input. + Type PlatformTriggerPresetInputType `json:"type"` + // Human-readable name for the input. + DisplayName string `json:"display_name"` + // Whether the caller must supply a value for this input. + IsRequired bool `json:"is_required"` + // Bounded initial set of selectable values for a picklist input. Omitted entirely for free-text inputs. + // + Values []PlatformTriggerPresetInputValue `json:"values,omitempty"` + // Whether additional selectable values were omitted from `values`. When true, use GET /trigger-presets/{preset_id}/input-values with a query to narrow the result set. + // + IsTruncated *bool `json:"is_truncated,omitempty"` +} + +func (o *PlatformTriggerPresetInput) GetField() string { + if o == nil { + return "" + } + return o.Field +} + +func (o *PlatformTriggerPresetInput) GetType() PlatformTriggerPresetInputType { + if o == nil { + return PlatformTriggerPresetInputType("") + } + return o.Type +} + +func (o *PlatformTriggerPresetInput) GetDisplayName() string { + if o == nil { + return "" + } + return o.DisplayName +} + +func (o *PlatformTriggerPresetInput) GetIsRequired() bool { + if o == nil { + return false + } + return o.IsRequired +} + +func (o *PlatformTriggerPresetInput) GetValues() []PlatformTriggerPresetInputValue { + if o == nil { + return nil + } + return o.Values +} + +func (o *PlatformTriggerPresetInput) GetIsTruncated() *bool { + if o == nil { + return nil + } + return o.IsTruncated +} diff --git a/tests/mockserver/internal/sdk/models/components/platformtriggerpresetinputtype.go b/tests/mockserver/internal/sdk/models/components/platformtriggerpresetinputtype.go new file mode 100644 index 00000000..b51f9eac --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformtriggerpresetinputtype.go @@ -0,0 +1,38 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" +) + +// PlatformTriggerPresetInputType - Type of a preset input. +type PlatformTriggerPresetInputType string + +const ( + PlatformTriggerPresetInputTypePicklist PlatformTriggerPresetInputType = "PICKLIST" + PlatformTriggerPresetInputTypeText PlatformTriggerPresetInputType = "TEXT" + PlatformTriggerPresetInputTypeUser PlatformTriggerPresetInputType = "USER" +) + +func (e PlatformTriggerPresetInputType) ToPointer() *PlatformTriggerPresetInputType { + return &e +} +func (e *PlatformTriggerPresetInputType) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "PICKLIST": + fallthrough + case "TEXT": + fallthrough + case "USER": + *e = PlatformTriggerPresetInputType(v) + return nil + default: + return fmt.Errorf("invalid value for PlatformTriggerPresetInputType: %v", v) + } +} diff --git a/tests/mockserver/internal/sdk/models/components/platformtriggerpresetinputvalue.go b/tests/mockserver/internal/sdk/models/components/platformtriggerpresetinputvalue.go new file mode 100644 index 00000000..53487dfa --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformtriggerpresetinputvalue.go @@ -0,0 +1,25 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type PlatformTriggerPresetInputValue struct { + // The exact value to send in the trigger's `inputs` for this choice (e.g. a channel name, a user's email, etc). + // + Value string `json:"value"` + // Human-readable name for this value. + DisplayName string `json:"display_name"` +} + +func (o *PlatformTriggerPresetInputValue) GetValue() string { + if o == nil { + return "" + } + return o.Value +} + +func (o *PlatformTriggerPresetInputValue) GetDisplayName() string { + if o == nil { + return "" + } + return o.DisplayName +} diff --git a/tests/mockserver/internal/sdk/models/components/platformtriggerpresetinputvaluelistresponse.go b/tests/mockserver/internal/sdk/models/components/platformtriggerpresetinputvaluelistresponse.go new file mode 100644 index 00000000..bc923be0 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformtriggerpresetinputvaluelistresponse.go @@ -0,0 +1,34 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type PlatformTriggerPresetInputValueListResponse struct { + // The bounded set of selectable values matching the query. + Results []PlatformTriggerPresetInputValue `json:"results"` + // Whether additional matches were omitted. When true, refine `query` to narrow the result set. + // + IsTruncated bool `json:"is_truncated"` + // Platform-generated request ID for support correlation. + RequestID string `json:"request_id"` +} + +func (o *PlatformTriggerPresetInputValueListResponse) GetResults() []PlatformTriggerPresetInputValue { + if o == nil { + return []PlatformTriggerPresetInputValue{} + } + return o.Results +} + +func (o *PlatformTriggerPresetInputValueListResponse) GetIsTruncated() bool { + if o == nil { + return false + } + return o.IsTruncated +} + +func (o *PlatformTriggerPresetInputValueListResponse) GetRequestID() string { + if o == nil { + return "" + } + return o.RequestID +} diff --git a/tests/mockserver/internal/sdk/models/components/platformtriggerpresetlistresponse.go b/tests/mockserver/internal/sdk/models/components/platformtriggerpresetlistresponse.go new file mode 100644 index 00000000..6e6cc206 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformtriggerpresetlistresponse.go @@ -0,0 +1,42 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type PlatformTriggerPresetListResponse struct { + // Trigger presets available to the caller. + Results []PlatformTriggerPresetSummary `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. + NextCursor *string `json:"next_cursor"` + // Platform-generated request ID for support correlation. + RequestID string `json:"request_id"` +} + +func (o *PlatformTriggerPresetListResponse) GetResults() []PlatformTriggerPresetSummary { + if o == nil { + return []PlatformTriggerPresetSummary{} + } + return o.Results +} + +func (o *PlatformTriggerPresetListResponse) GetHasMore() bool { + if o == nil { + return false + } + return o.HasMore +} + +func (o *PlatformTriggerPresetListResponse) GetNextCursor() *string { + if o == nil { + return nil + } + return o.NextCursor +} + +func (o *PlatformTriggerPresetListResponse) GetRequestID() string { + if o == nil { + return "" + } + return o.RequestID +} diff --git a/tests/mockserver/internal/sdk/models/components/platformtriggerpresetsummary.go b/tests/mockserver/internal/sdk/models/components/platformtriggerpresetsummary.go new file mode 100644 index 00000000..101983d3 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformtriggerpresetsummary.go @@ -0,0 +1,42 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type PlatformTriggerPresetSummary struct { + // ID of the preset. Pass this when creating a trigger. + PresetID string `json:"preset_id"` + // Datasource the preset fires on. + Datasource string `json:"datasource"` + // Human-readable preset name. + DisplayName string `json:"display_name"` + // Human-readable description of when the preset fires. + Description *string `json:"description,omitempty"` +} + +func (o *PlatformTriggerPresetSummary) GetPresetID() string { + if o == nil { + return "" + } + return o.PresetID +} + +func (o *PlatformTriggerPresetSummary) GetDatasource() string { + if o == nil { + return "" + } + return o.Datasource +} + +func (o *PlatformTriggerPresetSummary) GetDisplayName() string { + if o == nil { + return "" + } + return o.DisplayName +} + +func (o *PlatformTriggerPresetSummary) GetDescription() *string { + if o == nil { + return nil + } + return o.Description +} diff --git a/tests/mockserver/internal/sdk/models/components/platformtriggerstatus.go b/tests/mockserver/internal/sdk/models/components/platformtriggerstatus.go new file mode 100644 index 00000000..ac192ac6 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformtriggerstatus.go @@ -0,0 +1,35 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" +) + +// PlatformTriggerStatus - Current trigger lifecycle state. +type PlatformTriggerStatus string + +const ( + PlatformTriggerStatusEnabled PlatformTriggerStatus = "ENABLED" + PlatformTriggerStatusDisabled PlatformTriggerStatus = "DISABLED" +) + +func (e PlatformTriggerStatus) ToPointer() *PlatformTriggerStatus { + return &e +} +func (e *PlatformTriggerStatus) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "ENABLED": + fallthrough + case "DISABLED": + *e = PlatformTriggerStatus(v) + return nil + default: + return fmt.Errorf("invalid value for PlatformTriggerStatus: %v", v) + } +} diff --git a/tests/mockserver/internal/sdk/models/components/platformtriggerupdaterequest.go b/tests/mockserver/internal/sdk/models/components/platformtriggerupdaterequest.go new file mode 100644 index 00000000..872cf555 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformtriggerupdaterequest.go @@ -0,0 +1,42 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +// PlatformTriggerUpdateRequest - Partial update. Only the supplied fields are changed. +type PlatformTriggerUpdateRequest struct { + // Current trigger lifecycle state. + Status *PlatformTriggerStatus `json:"status,omitempty"` + // Optional note describing this trigger. + Description *string `json:"description,omitempty"` + // Values for the preset's inputs. + Inputs map[string]any `json:"inputs,omitempty"` + Delivery *PlatformTriggerDelivery `json:"delivery,omitempty"` +} + +func (o *PlatformTriggerUpdateRequest) GetStatus() *PlatformTriggerStatus { + if o == nil { + return nil + } + return o.Status +} + +func (o *PlatformTriggerUpdateRequest) GetDescription() *string { + if o == nil { + return nil + } + return o.Description +} + +func (o *PlatformTriggerUpdateRequest) GetInputs() map[string]any { + if o == nil { + return nil + } + return o.Inputs +} + +func (o *PlatformTriggerUpdateRequest) GetDelivery() *PlatformTriggerDelivery { + if o == nil { + return nil + } + return o.Delivery +} diff --git a/tests/mockserver/internal/sdk/models/components/platformtriggerwebhookevent.go b/tests/mockserver/internal/sdk/models/components/platformtriggerwebhookevent.go new file mode 100644 index 00000000..7b756465 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformtriggerwebhookevent.go @@ -0,0 +1,96 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "errors" + "fmt" + "mockserver/internal/sdk/utils" +) + +type PlatformTriggerWebhookEventType string + +const ( + PlatformTriggerWebhookEventTypeDocumentChange PlatformTriggerWebhookEventType = "DOCUMENT_CHANGE" + PlatformTriggerWebhookEventTypeContentSchedule PlatformTriggerWebhookEventType = "CONTENT_SCHEDULE" +) + +// PlatformTriggerWebhookEvent - Every delivered webhook is one of these two variants. A trigger with a cron schedule carries no document and so cannot be delivered over a webhook. +type PlatformTriggerWebhookEvent struct { + PlatformDocumentChangeWebhookEvent *PlatformDocumentChangeWebhookEvent `queryParam:"inline"` + PlatformContentScheduleWebhookEvent *PlatformContentScheduleWebhookEvent `queryParam:"inline"` + + Type PlatformTriggerWebhookEventType +} + +func CreatePlatformTriggerWebhookEventDocumentChange(documentChange PlatformDocumentChangeWebhookEvent) PlatformTriggerWebhookEvent { + typ := PlatformTriggerWebhookEventTypeDocumentChange + + typStr := string(typ) + documentChange.EventType = typStr + + return PlatformTriggerWebhookEvent{ + PlatformDocumentChangeWebhookEvent: &documentChange, + Type: typ, + } +} + +func CreatePlatformTriggerWebhookEventContentSchedule(contentSchedule PlatformContentScheduleWebhookEvent) PlatformTriggerWebhookEvent { + typ := PlatformTriggerWebhookEventTypeContentSchedule + + typStr := string(typ) + contentSchedule.EventType = typStr + + return PlatformTriggerWebhookEvent{ + PlatformContentScheduleWebhookEvent: &contentSchedule, + Type: typ, + } +} + +func (u *PlatformTriggerWebhookEvent) UnmarshalJSON(data []byte) error { + + type discriminator struct { + EventType string `json:"event_type"` + } + + dis := new(discriminator) + if err := json.Unmarshal(data, &dis); err != nil { + return fmt.Errorf("could not unmarshal discriminator: %w", err) + } + + switch dis.EventType { + case "DOCUMENT_CHANGE": + platformDocumentChangeWebhookEvent := new(PlatformDocumentChangeWebhookEvent) + if err := utils.UnmarshalJSON(data, &platformDocumentChangeWebhookEvent, "", true, nil); err != nil { + return fmt.Errorf("could not unmarshal `%s` into expected (EventType == DOCUMENT_CHANGE) type PlatformDocumentChangeWebhookEvent within PlatformTriggerWebhookEvent: %w", string(data), err) + } + + u.PlatformDocumentChangeWebhookEvent = platformDocumentChangeWebhookEvent + u.Type = PlatformTriggerWebhookEventTypeDocumentChange + return nil + case "CONTENT_SCHEDULE": + platformContentScheduleWebhookEvent := new(PlatformContentScheduleWebhookEvent) + if err := utils.UnmarshalJSON(data, &platformContentScheduleWebhookEvent, "", true, nil); err != nil { + return fmt.Errorf("could not unmarshal `%s` into expected (EventType == CONTENT_SCHEDULE) type PlatformContentScheduleWebhookEvent within PlatformTriggerWebhookEvent: %w", string(data), err) + } + + u.PlatformContentScheduleWebhookEvent = platformContentScheduleWebhookEvent + u.Type = PlatformTriggerWebhookEventTypeContentSchedule + return nil + } + + return fmt.Errorf("could not unmarshal `%s` into any supported union types for PlatformTriggerWebhookEvent", string(data)) +} + +func (u PlatformTriggerWebhookEvent) MarshalJSON() ([]byte, error) { + if u.PlatformDocumentChangeWebhookEvent != nil { + return utils.MarshalJSON(u.PlatformDocumentChangeWebhookEvent, "", true) + } + + if u.PlatformContentScheduleWebhookEvent != nil { + return utils.MarshalJSON(u.PlatformContentScheduleWebhookEvent, "", true) + } + + return nil, errors.New("could not marshal union type PlatformTriggerWebhookEvent: all fields are null") +} diff --git a/tests/mockserver/internal/sdk/models/components/platformtriggerwithsecret.go b/tests/mockserver/internal/sdk/models/components/platformtriggerwithsecret.go new file mode 100644 index 00000000..0a610553 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformtriggerwithsecret.go @@ -0,0 +1,102 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "mockserver/internal/sdk/utils" + "time" +) + +type PlatformTriggerWithSecret struct { + // ID of the trigger. + TriggerID string `json:"trigger_id"` + // ID of the preset this trigger was created from. + PresetID string `json:"preset_id"` + // Optional caller-supplied note describing this trigger. + Description *string `json:"description,omitempty"` + // Current trigger lifecycle state. + Status PlatformTriggerStatus `json:"status"` + // Values supplied for the preset's inputs. + Inputs map[string]any `json:"inputs,omitempty"` + Delivery PlatformTriggerDeliveryOutput `json:"delivery"` + // Time the trigger was created. + CreatedAt time.Time `json:"created_at"` + // Time the trigger was last updated. + UpdatedAt time.Time `json:"updated_at"` + // Secret for verifying webhook signatures, serialized as `whsec_` following Standard Webhooks. Returned only when the trigger is created and cannot be retrieved later. Store it securely. + SigningSecret string `json:"signing_secret"` +} + +func (p PlatformTriggerWithSecret) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformTriggerWithSecret) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"trigger_id", "preset_id", "status", "delivery", "created_at", "updated_at", "signing_secret"}); err != nil { + return err + } + return nil +} + +func (o *PlatformTriggerWithSecret) GetTriggerID() string { + if o == nil { + return "" + } + return o.TriggerID +} + +func (o *PlatformTriggerWithSecret) GetPresetID() string { + if o == nil { + return "" + } + return o.PresetID +} + +func (o *PlatformTriggerWithSecret) GetDescription() *string { + if o == nil { + return nil + } + return o.Description +} + +func (o *PlatformTriggerWithSecret) GetStatus() PlatformTriggerStatus { + if o == nil { + return PlatformTriggerStatus("") + } + return o.Status +} + +func (o *PlatformTriggerWithSecret) GetInputs() map[string]any { + if o == nil { + return nil + } + return o.Inputs +} + +func (o *PlatformTriggerWithSecret) GetDelivery() PlatformTriggerDeliveryOutput { + if o == nil { + return PlatformTriggerDeliveryOutput{} + } + return o.Delivery +} + +func (o *PlatformTriggerWithSecret) GetCreatedAt() time.Time { + if o == nil { + return time.Time{} + } + return o.CreatedAt +} + +func (o *PlatformTriggerWithSecret) GetUpdatedAt() time.Time { + if o == nil { + return time.Time{} + } + return o.UpdatedAt +} + +func (o *PlatformTriggerWithSecret) GetSigningSecret() string { + if o == nil { + return "" + } + return o.SigningSecret +} diff --git a/tests/mockserver/internal/sdk/models/components/platformwarning.go b/tests/mockserver/internal/sdk/models/components/platformwarning.go new file mode 100644 index 00000000..c96ef7a9 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformwarning.go @@ -0,0 +1,26 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +// PlatformWarning - Non-blocking warning attached to a successful Platform response. +type PlatformWarning struct { + // Open snake_case warning code. Clients must tolerate unknown values; the set of codes is not a closed enum. + // + Code string `json:"code"` + // Human-readable warning message. + Message string `json:"message"` +} + +func (o *PlatformWarning) GetCode() string { + if o == nil { + return "" + } + return o.Code +} + +func (o *PlatformWarning) GetMessage() string { + if o == nil { + return "" + } + return o.Message +} diff --git a/tests/mockserver/internal/sdk/models/components/propertydefinition.go b/tests/mockserver/internal/sdk/models/components/propertydefinition.go index d1631c91..e17d0096 100644 --- a/tests/mockserver/internal/sdk/models/components/propertydefinition.go +++ b/tests/mockserver/internal/sdk/models/components/propertydefinition.go @@ -7,23 +7,23 @@ import ( "fmt" ) -// PropertyType - The type of custom property - this governs the search and faceting behavior. Note that MULTIPICKLIST is not yet supported. -type PropertyType string +// PropertyDefinitionPropertyType - The type of custom property - this governs the search and faceting behavior. Note that MULTIPICKLIST is not yet supported. +type PropertyDefinitionPropertyType string const ( - PropertyTypeText PropertyType = "TEXT" - PropertyTypeDate PropertyType = "DATE" - PropertyTypeInt PropertyType = "INT" - PropertyTypeUserid PropertyType = "USERID" - PropertyTypePicklist PropertyType = "PICKLIST" - PropertyTypeTextlist PropertyType = "TEXTLIST" - PropertyTypeMultipicklist PropertyType = "MULTIPICKLIST" + PropertyDefinitionPropertyTypeText PropertyDefinitionPropertyType = "TEXT" + PropertyDefinitionPropertyTypeDate PropertyDefinitionPropertyType = "DATE" + PropertyDefinitionPropertyTypeInt PropertyDefinitionPropertyType = "INT" + PropertyDefinitionPropertyTypeUserid PropertyDefinitionPropertyType = "USERID" + PropertyDefinitionPropertyTypePicklist PropertyDefinitionPropertyType = "PICKLIST" + PropertyDefinitionPropertyTypeTextlist PropertyDefinitionPropertyType = "TEXTLIST" + PropertyDefinitionPropertyTypeMultipicklist PropertyDefinitionPropertyType = "MULTIPICKLIST" ) -func (e PropertyType) ToPointer() *PropertyType { +func (e PropertyDefinitionPropertyType) ToPointer() *PropertyDefinitionPropertyType { return &e } -func (e *PropertyType) UnmarshalJSON(data []byte) error { +func (e *PropertyDefinitionPropertyType) UnmarshalJSON(data []byte) error { var v string if err := json.Unmarshal(data, &v); err != nil { return err @@ -42,10 +42,10 @@ func (e *PropertyType) UnmarshalJSON(data []byte) error { case "TEXTLIST": fallthrough case "MULTIPICKLIST": - *e = PropertyType(v) + *e = PropertyDefinitionPropertyType(v) return nil default: - return fmt.Errorf("invalid value for PropertyType: %v", v) + return fmt.Errorf("invalid value for PropertyDefinitionPropertyType: %v", v) } } @@ -86,8 +86,8 @@ type PropertyDefinition struct { // The user friendly label for the property that will be used if a plural context. DisplayLabelPlural *string `json:"displayLabelPlural,omitempty"` // The type of custom property - this governs the search and faceting behavior. Note that MULTIPICKLIST is not yet supported. - PropertyType *PropertyType `json:"propertyType,omitempty"` - UIOptions *UIOptions `json:"uiOptions,omitempty"` + PropertyType *PropertyDefinitionPropertyType `json:"propertyType,omitempty"` + UIOptions *UIOptions `json:"uiOptions,omitempty"` // If true then the property will not show up as a facet in the UI. HideUIFacet *bool `json:"hideUiFacet,omitempty"` // Will be used to set the order of facets in the UI, if present. If set for one facet, must be set for all non-hidden UI facets. Must take on an integer value from 1 (shown at the top) to N (shown last), where N is the number of non-hidden UI facets. These facets will be ordered below the built-in "Type" and "Tag" operators. @@ -119,7 +119,7 @@ func (o *PropertyDefinition) GetDisplayLabelPlural() *string { return o.DisplayLabelPlural } -func (o *PropertyDefinition) GetPropertyType() *PropertyType { +func (o *PropertyDefinition) GetPropertyType() *PropertyDefinitionPropertyType { if o == nil { return nil } diff --git a/tests/mockserver/internal/sdk/models/components/queryinsight.go b/tests/mockserver/internal/sdk/models/components/queryinsight.go deleted file mode 100644 index faaa01fb..00000000 --- a/tests/mockserver/internal/sdk/models/components/queryinsight.go +++ /dev/null @@ -1,56 +0,0 @@ -// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - -package components - -type QueryInsight struct { - // The query string the information is about. - Query string `json:"query"` - SearchCount *CountInfo `json:"searchCount,omitempty"` - SearchorCount *CountInfo `json:"searchorCount,omitempty"` - SearchWithClickCount *CountInfo `json:"searchWithClickCount,omitempty"` - ClickCount *CountInfo `json:"clickCount,omitempty"` - // list of similar queries to current one. - SimilarQueries []QueryInsight `json:"similarQueries,omitempty"` -} - -func (o *QueryInsight) GetQuery() string { - if o == nil { - return "" - } - return o.Query -} - -func (o *QueryInsight) GetSearchCount() *CountInfo { - if o == nil { - return nil - } - return o.SearchCount -} - -func (o *QueryInsight) GetSearchorCount() *CountInfo { - if o == nil { - return nil - } - return o.SearchorCount -} - -func (o *QueryInsight) GetSearchWithClickCount() *CountInfo { - if o == nil { - return nil - } - return o.SearchWithClickCount -} - -func (o *QueryInsight) GetClickCount() *CountInfo { - if o == nil { - return nil - } - return o.ClickCount -} - -func (o *QueryInsight) GetSimilarQueries() []QueryInsight { - if o == nil { - return nil - } - return o.SimilarQueries -} diff --git a/tests/mockserver/internal/sdk/models/components/queryinsightsresponse.go b/tests/mockserver/internal/sdk/models/components/queryinsightsresponse.go deleted file mode 100644 index 6f6c8ef2..00000000 --- a/tests/mockserver/internal/sdk/models/components/queryinsightsresponse.go +++ /dev/null @@ -1,51 +0,0 @@ -// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - -package components - -type QueryInsightsResponse struct { - // Unix timestamp of the last activity processed to make the response (in seconds since epoch UTC). - LastLogTimestamp *int64 `json:"lastLogTimestamp,omitempty"` - // Insights for queries. - QueryInsights []QueryInsight `json:"queryInsights,omitempty"` - // Insights for low performing queries without good results. - LowPerformingQueryInsights []QueryInsight `json:"lowPerformingQueryInsights,omitempty"` - // list of departments applicable for queries tab. - Departments []string `json:"departments,omitempty"` - // Min threshold in number of visitors while populating results, otherwise 0. - MinVisitorThreshold *int64 `json:"minVisitorThreshold,omitempty"` -} - -func (o *QueryInsightsResponse) GetLastLogTimestamp() *int64 { - if o == nil { - return nil - } - return o.LastLogTimestamp -} - -func (o *QueryInsightsResponse) GetQueryInsights() []QueryInsight { - if o == nil { - return nil - } - return o.QueryInsights -} - -func (o *QueryInsightsResponse) GetLowPerformingQueryInsights() []QueryInsight { - if o == nil { - return nil - } - return o.LowPerformingQueryInsights -} - -func (o *QueryInsightsResponse) GetDepartments() []string { - if o == nil { - return nil - } - return o.Departments -} - -func (o *QueryInsightsResponse) GetMinVisitorThreshold() *int64 { - if o == nil { - return nil - } - return o.MinVisitorThreshold -} diff --git a/tests/mockserver/internal/sdk/models/components/relateddocuments.go b/tests/mockserver/internal/sdk/models/components/relateddocuments.go index b31d3fba..b7981fb2 100644 --- a/tests/mockserver/internal/sdk/models/components/relateddocuments.go +++ b/tests/mockserver/internal/sdk/models/components/relateddocuments.go @@ -85,7 +85,7 @@ type RelatedDocuments struct { QuerySuggestion *QuerySuggestion `json:"querySuggestion,omitempty"` // A truncated list of documents with this relation. TO BE DEPRECATED. // - // Deprecated: This will be removed in a future release, please migrate away from it as soon as possible. + // Deprecated: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Field is deprecated. Documents []Document `json:"documents,omitempty"` // A truncated list of documents associated with this relation. To be used in favor of `documents` because it contains a trackingToken. Results []SearchResult `json:"results,omitempty"` diff --git a/tests/mockserver/internal/sdk/models/components/resultsresponse.go b/tests/mockserver/internal/sdk/models/components/resultsresponse.go index 903402c8..6fd3dbe0 100644 --- a/tests/mockserver/internal/sdk/models/components/resultsresponse.go +++ b/tests/mockserver/internal/sdk/models/components/resultsresponse.go @@ -9,7 +9,7 @@ type ResultsResponse struct { Results []SearchResult `json:"results,omitempty"` StructuredResults []StructuredResult `json:"structuredResults,omitempty"` GeneratedQnaResult *GeneratedQna `json:"generatedQnaResult,omitempty"` - GleanDataError *GleanDataError `json:"errorInfo,omitempty"` + ErrorInfo *GleanDataError `json:"errorInfo,omitempty"` // A platform-generated request ID to correlate backend logs. RequestID *string `json:"requestID,omitempty"` // Time in milliseconds the backend took to respond to the request. @@ -51,11 +51,11 @@ func (o *ResultsResponse) GetGeneratedQnaResult() *GeneratedQna { return o.GeneratedQnaResult } -func (o *ResultsResponse) GetGleanDataError() *GleanDataError { +func (o *ResultsResponse) GetErrorInfo() *GleanDataError { if o == nil { return nil } - return o.GleanDataError + return o.ErrorInfo } func (o *ResultsResponse) GetRequestID() *string { diff --git a/tests/mockserver/internal/sdk/models/components/rotatedatasourcecredentialsrequest.go b/tests/mockserver/internal/sdk/models/components/rotatedatasourcecredentialsrequest.go new file mode 100644 index 00000000..3733a707 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/rotatedatasourcecredentialsrequest.go @@ -0,0 +1,17 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +// RotateDatasourceCredentialsRequest - Request to rotate the credentials used by a datasource instance. Replaces the active credential material with the supplied values. +// `credentials.values` must contain only keys recognized as credential material for the datasource type (for example `clientSecret` for OAuth, `apiToken` for API-token auth, `privateKey` for certificate auth). Unrecognized keys, or keys that correspond to non-credential configuration, cause a 400; use the configure endpoint to change non-credential config. +type RotateDatasourceCredentialsRequest struct { + // Configuration for a datasource instance + Credentials DatasourceInstanceConfiguration `json:"credentials"` +} + +func (o *RotateDatasourceCredentialsRequest) GetCredentials() DatasourceInstanceConfiguration { + if o == nil { + return DatasourceInstanceConfiguration{} + } + return o.Credentials +} diff --git a/tests/mockserver/internal/sdk/models/components/searchresponse.go b/tests/mockserver/internal/sdk/models/components/searchresponse.go index 7da8d59a..a9cdbe0e 100644 --- a/tests/mockserver/internal/sdk/models/components/searchresponse.go +++ b/tests/mockserver/internal/sdk/models/components/searchresponse.go @@ -9,7 +9,7 @@ type SearchResponse struct { Results []SearchResult `json:"results,omitempty"` StructuredResults []StructuredResult `json:"structuredResults,omitempty"` GeneratedQnaResult *GeneratedQna `json:"generatedQnaResult,omitempty"` - GleanDataError *GleanDataError `json:"errorInfo,omitempty"` + ErrorInfo *GleanDataError `json:"errorInfo,omitempty"` // A platform-generated request ID to correlate backend logs. RequestID *string `json:"requestID,omitempty"` // Time in milliseconds the backend took to respond to the request. @@ -66,11 +66,11 @@ func (o *SearchResponse) GetGeneratedQnaResult() *GeneratedQna { return o.GeneratedQnaResult } -func (o *SearchResponse) GetGleanDataError() *GleanDataError { +func (o *SearchResponse) GetErrorInfo() *GleanDataError { if o == nil { return nil } - return o.GleanDataError + return o.ErrorInfo } func (o *SearchResponse) GetRequestID() *string { diff --git a/tests/mockserver/internal/sdk/models/components/searchresultsnippet.go b/tests/mockserver/internal/sdk/models/components/searchresultsnippet.go index 8f7d3660..b131c899 100644 --- a/tests/mockserver/internal/sdk/models/components/searchresultsnippet.go +++ b/tests/mockserver/internal/sdk/models/components/searchresultsnippet.go @@ -19,8 +19,8 @@ type SearchResultSnippet struct { URL *string `json:"url,omitempty"` // A matching snippet from the document. Query term matches are marked by the unicode characters uE006 and uE007. Use 'text' field instead. // - // Deprecated: This will be removed in a future release, please migrate away from it as soon as possible. - Snippet string `json:"snippet"` + // Deprecated: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use 'text' field instead. + Snippet *string `json:"snippet,omitempty"` } func (s SearchResultSnippet) MarshalJSON() ([]byte, error) { @@ -28,7 +28,7 @@ func (s SearchResultSnippet) MarshalJSON() ([]byte, error) { } func (s *SearchResultSnippet) UnmarshalJSON(data []byte) error { - if err := utils.UnmarshalJSON(data, &s, "", false, []string{"snippet"}); err != nil { + if err := utils.UnmarshalJSON(data, &s, "", false, nil); err != nil { return err } return nil @@ -69,9 +69,9 @@ func (o *SearchResultSnippet) GetURL() *string { return o.URL } -func (o *SearchResultSnippet) GetSnippet() string { +func (o *SearchResultSnippet) GetSnippet() *string { if o == nil { - return "" + return nil } return o.Snippet } diff --git a/tests/mockserver/internal/sdk/models/components/sensitivecontentoptions.go b/tests/mockserver/internal/sdk/models/components/sensitivecontentoptions.go index 7e1d25ee..dc7c424e 100644 --- a/tests/mockserver/internal/sdk/models/components/sensitivecontentoptions.go +++ b/tests/mockserver/internal/sdk/models/components/sensitivecontentoptions.go @@ -6,15 +6,15 @@ package components type SensitiveContentOptions struct { // DEPRECATED - use 'customSensitiveExpressions' instead. // - // Deprecated: This will be removed in a future release, please migrate away from it as soon as possible. + // Deprecated: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use customSensitiveExpressions instead. SensitiveInfoTypes []SensitiveInfoType `json:"sensitiveInfoTypes,omitempty"` // DEPRECATED - use 'customSensitiveExpressions' instead. // - // Deprecated: This will be removed in a future release, please migrate away from it as soon as possible. + // Deprecated: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use customSensitiveExpressions instead. SensitiveTerms []SensitiveExpression `json:"sensitiveTerms,omitempty"` // DEPRECATED - use 'customSensitiveExpressions' instead. // - // Deprecated: This will be removed in a future release, please migrate away from it as soon as possible. + // Deprecated: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use customSensitiveExpressions instead. SensitiveRegexes []SensitiveExpression `json:"sensitiveRegexes,omitempty"` // list of custom sensitive expressions to consider as sensitive content CustomSensitiveExpressions []CustomSensitiveExpression `json:"customSensitiveExpressions,omitempty"` diff --git a/tests/mockserver/internal/sdk/models/components/sensitiveinfotype.go b/tests/mockserver/internal/sdk/models/components/sensitiveinfotype.go index 00e51303..20765377 100644 --- a/tests/mockserver/internal/sdk/models/components/sensitiveinfotype.go +++ b/tests/mockserver/internal/sdk/models/components/sensitiveinfotype.go @@ -9,7 +9,7 @@ import ( // SensitiveInfoTypeLikelihoodThreshold // -// Deprecated: This will be removed in a future release, please migrate away from it as soon as possible. +// Deprecated: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Field is deprecated. type SensitiveInfoTypeLikelihoodThreshold string const ( @@ -46,7 +46,7 @@ func (e *SensitiveInfoTypeLikelihoodThreshold) UnmarshalJSON(data []byte) error } type SensitiveInfoType struct { - // Deprecated: This will be removed in a future release, please migrate away from it as soon as possible. + // Deprecated: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Field is deprecated. LikelihoodThreshold *SensitiveInfoTypeLikelihoodThreshold `json:"likelihoodThreshold,omitempty"` // Text representation of an info-type to scan for. InfoType *string `json:"infoType,omitempty"` diff --git a/tests/mockserver/internal/sdk/models/components/servertoolrequest.go b/tests/mockserver/internal/sdk/models/components/servertoolrequest.go new file mode 100644 index 00000000..3bf8c6b3 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/servertoolrequest.go @@ -0,0 +1,97 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" +) + +// ServerToolRequestRequestType - The type of request made to the user. +type ServerToolRequestRequestType string + +const ( + ServerToolRequestRequestTypeExecution ServerToolRequestRequestType = "EXECUTION" + ServerToolRequestRequestTypeAuthenticationSuggestion ServerToolRequestRequestType = "AUTHENTICATION_SUGGESTION" + ServerToolRequestRequestTypeVoteSuggestion ServerToolRequestRequestType = "VOTE_SUGGESTION" +) + +func (e ServerToolRequestRequestType) ToPointer() *ServerToolRequestRequestType { + return &e +} +func (e *ServerToolRequestRequestType) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "EXECUTION": + fallthrough + case "AUTHENTICATION_SUGGESTION": + fallthrough + case "VOTE_SUGGESTION": + *e = ServerToolRequestRequestType(v) + return nil + default: + return fmt.Errorf("invalid value for ServerToolRequestRequestType: %v", v) + } +} + +type ServerToolRequest struct { + // The type of request made to the user. + RequestType ServerToolRequestRequestType `json:"requestType"` + // Unique identifier for this request. + RequestID string `json:"requestId"` + // Human-readable display name for the tool. + ToolDisplayName *string `json:"toolDisplayName,omitempty"` + // Unique identifier of the tool server. Use with GET /tool-servers/{serverId}/auth + // to resolve display information and authentication status. + // + ServerID *string `json:"serverId,omitempty"` + // Custom call-to-action (CTA) verb for the approval button (e.g., "Create", "Update", "Send"). + ToolCta *string `json:"toolCta,omitempty"` + // Preview information for an action being executed. + ActionPreview *ActionPreview `json:"actionPreview,omitempty"` +} + +func (o *ServerToolRequest) GetRequestType() ServerToolRequestRequestType { + if o == nil { + return ServerToolRequestRequestType("") + } + return o.RequestType +} + +func (o *ServerToolRequest) GetRequestID() string { + if o == nil { + return "" + } + return o.RequestID +} + +func (o *ServerToolRequest) GetToolDisplayName() *string { + if o == nil { + return nil + } + return o.ToolDisplayName +} + +func (o *ServerToolRequest) GetServerID() *string { + if o == nil { + return nil + } + return o.ServerID +} + +func (o *ServerToolRequest) GetToolCta() *string { + if o == nil { + return nil + } + return o.ToolCta +} + +func (o *ServerToolRequest) GetActionPreview() *ActionPreview { + if o == nil { + return nil + } + return o.ActionPreview +} diff --git a/tests/mockserver/internal/sdk/models/components/servertoolresponse.go b/tests/mockserver/internal/sdk/models/components/servertoolresponse.go new file mode 100644 index 00000000..f4b84c3b --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/servertoolresponse.go @@ -0,0 +1,143 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" + "mockserver/internal/sdk/utils" +) + +// ServerToolResponseRequestType - The type of request made to the user. +type ServerToolResponseRequestType string + +const ( + ServerToolResponseRequestTypeExecution ServerToolResponseRequestType = "EXECUTION" + ServerToolResponseRequestTypeAuthenticationSuggestion ServerToolResponseRequestType = "AUTHENTICATION_SUGGESTION" + ServerToolResponseRequestTypeVoteSuggestion ServerToolResponseRequestType = "VOTE_SUGGESTION" +) + +func (e ServerToolResponseRequestType) ToPointer() *ServerToolResponseRequestType { + return &e +} +func (e *ServerToolResponseRequestType) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "EXECUTION": + fallthrough + case "AUTHENTICATION_SUGGESTION": + fallthrough + case "VOTE_SUGGESTION": + *e = ServerToolResponseRequestType(v) + return nil + default: + return fmt.Errorf("invalid value for ServerToolResponseRequestType: %v", v) + } +} + +// GrantScope - Scope of the approval grant. Only applicable when isGranted is true and requestType is EXECUTION. +type GrantScope string + +const ( + GrantScopeCurrentRequest GrantScope = "CURRENT_REQUEST" + GrantScopeCurrentSession GrantScope = "CURRENT_SESSION" + GrantScopeAlways GrantScope = "ALWAYS" +) + +func (e GrantScope) ToPointer() *GrantScope { + return &e +} +func (e *GrantScope) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "CURRENT_REQUEST": + fallthrough + case "CURRENT_SESSION": + fallthrough + case "ALWAYS": + *e = GrantScope(v) + return nil + default: + return fmt.Errorf("invalid value for GrantScope: %v", v) + } +} + +// ServerToolResponse - Response to a server tool request. The applicable fields depend on requestType: +// +// For EXECUTION requests: +// - isGranted: whether tool execution is approved +// - reason: optional explanation +// +// For AUTHENTICATION_SUGGESTION requests: +// - isGranted: whether auth completed successfully (true=connected, false=skipped) +// - authContext: contains serverId or actionPackId for identifying the authenticated entity +// - reason: optional explanation for skip +// +// For VOTE_SUGGESTION requests: +// - voted: whether the user voted for this tool +type ServerToolResponse struct { + // The type of request made to the user. + RequestType ServerToolResponseRequestType `json:"requestType"` + // Unique identifier for this request. + RequestID string `json:"requestId"` + // Whether tool request is granted (indicates approval for execution, or completion for auth). + IsGranted *bool `json:"isGranted,omitempty"` + // Scope of the approval grant. Only applicable when isGranted is true and requestType is EXECUTION. + // + GrantScope *GrantScope `default:"CURRENT_REQUEST" json:"grantScope"` + // Context for authentication responses, containing identifiers for the entity being authenticated. + // + AuthContext *AuthContext `json:"authContext,omitempty"` +} + +func (s ServerToolResponse) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(s, "", false) +} + +func (s *ServerToolResponse) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &s, "", false, []string{"requestType", "requestId"}); err != nil { + return err + } + return nil +} + +func (o *ServerToolResponse) GetRequestType() ServerToolResponseRequestType { + if o == nil { + return ServerToolResponseRequestType("") + } + return o.RequestType +} + +func (o *ServerToolResponse) GetRequestID() string { + if o == nil { + return "" + } + return o.RequestID +} + +func (o *ServerToolResponse) GetIsGranted() *bool { + if o == nil { + return nil + } + return o.IsGranted +} + +func (o *ServerToolResponse) GetGrantScope() *GrantScope { + if o == nil { + return nil + } + return o.GrantScope +} + +func (o *ServerToolResponse) GetAuthContext() *AuthContext { + if o == nil { + return nil + } + return o.AuthContext +} diff --git a/tests/mockserver/internal/sdk/models/components/sharingoptions.go b/tests/mockserver/internal/sdk/models/components/sharingoptions.go index a290b453..3b36812b 100644 --- a/tests/mockserver/internal/sdk/models/components/sharingoptions.go +++ b/tests/mockserver/internal/sdk/models/components/sharingoptions.go @@ -4,13 +4,13 @@ package components // SharingOptions - Controls how "shared" a document must be to get picked for scans. type SharingOptions struct { - // Deprecated: This will be removed in a future release, please migrate away from it as soon as possible. + // Deprecated: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Field is deprecated. Enabled *bool `json:"enabled,omitempty"` // The minimum number of users the document is shared with. Threshold *int64 `json:"threshold,omitempty"` // Documents will be filtered based on how many people have access to it. ThresholdEnabled *bool `json:"thresholdEnabled,omitempty"` - // Deprecated: This will be removed in a future release, please migrate away from it as soon as possible. + // Deprecated: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Field is deprecated. AnyoneWithLinkEnabled *bool `json:"anyoneWithLinkEnabled,omitempty"` // Only users within the organization can access the document. AnyoneInternalEnabled *bool `json:"anyoneInternalEnabled,omitempty"` diff --git a/tests/mockserver/internal/sdk/models/components/shortcut.go b/tests/mockserver/internal/sdk/models/components/shortcut.go index 63b419de..7004b3e6 100644 --- a/tests/mockserver/internal/sdk/models/components/shortcut.go +++ b/tests/mockserver/internal/sdk/models/components/shortcut.go @@ -47,7 +47,8 @@ type Shortcut struct { // Title for the Go Link Title *string `json:"title,omitempty"` // A list of user roles for the Go Link. - Roles []UserRoleSpecification `json:"roles,omitempty"` + Roles []UserRoleSpecification `json:"roles,omitempty"` + FavoriteInfo *FavoriteInfo `json:"favoriteInfo,omitempty"` } func (s Shortcut) MarshalJSON() ([]byte, error) { @@ -214,3 +215,10 @@ func (o *Shortcut) GetRoles() []UserRoleSpecification { } return o.Roles } + +func (o *Shortcut) GetFavoriteInfo() *FavoriteInfo { + if o == nil { + return nil + } + return o.FavoriteInfo +} diff --git a/tests/mockserver/internal/sdk/models/components/shortcutinsight.go b/tests/mockserver/internal/sdk/models/components/shortcutinsight.go deleted file mode 100644 index e4a60038..00000000 --- a/tests/mockserver/internal/sdk/models/components/shortcutinsight.go +++ /dev/null @@ -1,30 +0,0 @@ -// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - -package components - -type ShortcutInsight struct { - Shortcut Shortcut `json:"shortcut"` - VisitCount *CountInfo `json:"visitCount,omitempty"` - VisitorCount *CountInfo `json:"visitorCount,omitempty"` -} - -func (o *ShortcutInsight) GetShortcut() Shortcut { - if o == nil { - return Shortcut{} - } - return o.Shortcut -} - -func (o *ShortcutInsight) GetVisitCount() *CountInfo { - if o == nil { - return nil - } - return o.VisitCount -} - -func (o *ShortcutInsight) GetVisitorCount() *CountInfo { - if o == nil { - return nil - } - return o.VisitorCount -} diff --git a/tests/mockserver/internal/sdk/models/components/shortcutinsightsresponse.go b/tests/mockserver/internal/sdk/models/components/shortcutinsightsresponse.go deleted file mode 100644 index b2edf8e3..00000000 --- a/tests/mockserver/internal/sdk/models/components/shortcutinsightsresponse.go +++ /dev/null @@ -1,42 +0,0 @@ -// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - -package components - -type ShortcutInsightsResponse struct { - // Unix timestamp of the last activity processed to make the response (in seconds since epoch UTC). - LastLogTimestamp *int64 `json:"lastLogTimestamp,omitempty"` - // Insights for shortcuts. - ShortcutInsights []ShortcutInsight `json:"shortcutInsights,omitempty"` - // list of departments applicable for shortcuts tab. - Departments []string `json:"departments,omitempty"` - // Min threshold in number of visitors while populating results, otherwise 0. - MinVisitorThreshold *int64 `json:"minVisitorThreshold,omitempty"` -} - -func (o *ShortcutInsightsResponse) GetLastLogTimestamp() *int64 { - if o == nil { - return nil - } - return o.LastLogTimestamp -} - -func (o *ShortcutInsightsResponse) GetShortcutInsights() []ShortcutInsight { - if o == nil { - return nil - } - return o.ShortcutInsights -} - -func (o *ShortcutInsightsResponse) GetDepartments() []string { - if o == nil { - return nil - } - return o.Departments -} - -func (o *ShortcutInsightsResponse) GetMinVisitorThreshold() *int64 { - if o == nil { - return nil - } - return o.MinVisitorThreshold -} diff --git a/tests/mockserver/internal/sdk/models/components/successresponse.go b/tests/mockserver/internal/sdk/models/components/successresponse.go new file mode 100644 index 00000000..f1aba12e --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/successresponse.go @@ -0,0 +1,31 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "mockserver/internal/sdk/utils" +) + +// SuccessResponse - Success response for custom metadata operations +type SuccessResponse struct { + // Indicates if the operation was successful + Success *bool `default:"true" json:"success"` +} + +func (s SuccessResponse) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(s, "", false) +} + +func (s *SuccessResponse) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &s, "", false, nil); err != nil { + return err + } + return nil +} + +func (o *SuccessResponse) GetSuccess() *bool { + if o == nil { + return nil + } + return o.Success +} diff --git a/tests/mockserver/internal/sdk/models/components/timepoint.go b/tests/mockserver/internal/sdk/models/components/timepoint.go index 1879f106..3fc0938d 100644 --- a/tests/mockserver/internal/sdk/models/components/timepoint.go +++ b/tests/mockserver/internal/sdk/models/components/timepoint.go @@ -9,7 +9,7 @@ import ( type TimePoint struct { // Epoch seconds. Has precedence over daysFromNow. EpochSeconds *int64 `json:"epochSeconds,omitempty"` - // The number of days from now. Specification relative to current time. Can be negative. + // Number of days in the past, relative to the current date. DaysFromNow *int64 `json:"daysFromNow,omitempty"` } diff --git a/tests/mockserver/internal/sdk/models/components/toolannotations.go b/tests/mockserver/internal/sdk/models/components/toolannotations.go new file mode 100644 index 00000000..68923329 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/toolannotations.go @@ -0,0 +1,71 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "mockserver/internal/sdk/optionalnullable" +) + +// ToolAnnotations - Behavioural hints for the tool, exactly as declared by the tool server. No +// defaults are filled in — see the per-field notes for what an absent value means. +// +// Per the MCP specification, clients MUST treat these hints as untrusted unless +// the tool server is itself trusted. They are advisory metadata, not an +// authorization signal, and must not be the sole basis of a security decision. +type ToolAnnotations struct { + Title *string `json:"title,omitempty"` + // True if the tool does not modify its environment. Always present. MCP + // defines no distinction between an undeclared value and `false` here, so + // `false` means "not declared read-only" rather than "declared mutating". + // + ReadOnlyHint *bool `json:"readOnlyHint,omitempty"` + // True if the tool may perform destructive updates. **Absent means the server + // did not declare it**, for which the MCP default is `true`. Only meaningful + // when `readOnlyHint` is `false`. + // + DestructiveHint optionalnullable.OptionalNullable[bool] `json:"destructiveHint,omitempty"` + // True if repeated calls with the same arguments have no additional effect. + // Always present; as with `readOnlyHint`, `false` means "not declared + // idempotent". Only meaningful when `readOnlyHint` is `false`. + // + IdempotentHint *bool `json:"idempotentHint,omitempty"` + // True if the tool interacts with an open world of external entities. **Absent + // means the server did not declare it**, for which the MCP default is `true`. + // + OpenWorldHint optionalnullable.OptionalNullable[bool] `json:"openWorldHint,omitempty"` +} + +func (o *ToolAnnotations) GetTitle() *string { + if o == nil { + return nil + } + return o.Title +} + +func (o *ToolAnnotations) GetReadOnlyHint() *bool { + if o == nil { + return nil + } + return o.ReadOnlyHint +} + +func (o *ToolAnnotations) GetDestructiveHint() optionalnullable.OptionalNullable[bool] { + if o == nil { + return nil + } + return o.DestructiveHint +} + +func (o *ToolAnnotations) GetIdempotentHint() *bool { + if o == nil { + return nil + } + return o.IdempotentHint +} + +func (o *ToolAnnotations) GetOpenWorldHint() optionalnullable.OptionalNullable[bool] { + if o == nil { + return nil + } + return o.OpenWorldHint +} diff --git a/tests/mockserver/internal/sdk/models/components/tooldefinition.go b/tests/mockserver/internal/sdk/models/components/tooldefinition.go new file mode 100644 index 00000000..918fecce --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/tooldefinition.go @@ -0,0 +1,66 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type ToolDefinition struct { + // Tool server this tool belongs to. + ServerID string `json:"serverId"` + // Name to invoke the tool by. + Name string `json:"name"` + // Human-readable name of the tool. + DisplayName *string `json:"displayName,omitempty"` + // What the tool does, as surfaced to a model. + Description *string `json:"description,omitempty"` + // JSON Schema for the tool's input parameters. + InputSchema map[string]any `json:"inputSchema,omitempty"` + // Behavioural hints for the tool, exactly as declared by the tool server. No + // defaults are filled in — see the per-field notes for what an absent value means. + // + // Per the MCP specification, clients MUST treat these hints as untrusted unless + // the tool server is itself trusted. They are advisory metadata, not an + // authorization signal, and must not be the sole basis of a security decision. + // + Annotations *ToolAnnotations `json:"annotations,omitempty"` +} + +func (o *ToolDefinition) GetServerID() string { + if o == nil { + return "" + } + return o.ServerID +} + +func (o *ToolDefinition) GetName() string { + if o == nil { + return "" + } + return o.Name +} + +func (o *ToolDefinition) GetDisplayName() *string { + if o == nil { + return nil + } + return o.DisplayName +} + +func (o *ToolDefinition) GetDescription() *string { + if o == nil { + return nil + } + return o.Description +} + +func (o *ToolDefinition) GetInputSchema() map[string]any { + if o == nil { + return nil + } + return o.InputSchema +} + +func (o *ToolDefinition) GetAnnotations() *ToolAnnotations { + if o == nil { + return nil + } + return o.Annotations +} diff --git a/tests/mockserver/internal/sdk/models/components/tooldefinitionsresponse.go b/tests/mockserver/internal/sdk/models/components/tooldefinitionsresponse.go new file mode 100644 index 00000000..ab96ce32 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/tooldefinitionsresponse.go @@ -0,0 +1,24 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type ToolDefinitionsResponse struct { + // Definitions for the requested tools that exist on this server. + Tools []ToolDefinition `json:"tools"` + // Requested names that do not exist on this server. + NotFound []string `json:"notFound,omitempty"` +} + +func (o *ToolDefinitionsResponse) GetTools() []ToolDefinition { + if o == nil { + return []ToolDefinition{} + } + return o.Tools +} + +func (o *ToolDefinitionsResponse) GetNotFound() []string { + if o == nil { + return nil + } + return o.NotFound +} diff --git a/tests/mockserver/internal/sdk/models/components/toolmetadata.go b/tests/mockserver/internal/sdk/models/components/toolmetadata.go index 3c803a6d..061df30a 100644 --- a/tests/mockserver/internal/sdk/models/components/toolmetadata.go +++ b/tests/mockserver/internal/sdk/models/components/toolmetadata.go @@ -96,6 +96,46 @@ func (e *WriteActionType) UnmarshalJSON(data []byte) error { } } +// ActionTypeSource - Analytics-only signal (product snapshot) describing WHERE the action's +// read/write determination came from. Complementary to the effective +// read/write value (the tool's ToolType, which drives HITL): the value says +// read-or-write, this says how confident that is. MCP_ANNOTATION = from the +// tool's read-only/destructive hints; ADMIN_OVERRIDE = an admin set it; +// NONE = no usable hint (the effective value then defaults to write); +// NATIVE_TOOL_DEFINITION = from a curated native tool (snapshot-derived). +// Does not affect runtime behavior. +type ActionTypeSource string + +const ( + ActionTypeSourceMcpAnnotation ActionTypeSource = "MCP_ANNOTATION" + ActionTypeSourceAdminOverride ActionTypeSource = "ADMIN_OVERRIDE" + ActionTypeSourceNone ActionTypeSource = "NONE" + ActionTypeSourceNativeToolDefinition ActionTypeSource = "NATIVE_TOOL_DEFINITION" +) + +func (e ActionTypeSource) ToPointer() *ActionTypeSource { + return &e +} +func (e *ActionTypeSource) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "MCP_ANNOTATION": + fallthrough + case "ADMIN_OVERRIDE": + fallthrough + case "NONE": + fallthrough + case "NATIVE_TOOL_DEFINITION": + *e = ActionTypeSource(v) + return nil + default: + return fmt.Errorf("invalid value for ActionTypeSource: %v", v) + } +} + // AuthType - The type of authentication being used. // Use 'OAUTH_*' when Glean calls an external API (e.g., Jira) on behalf of a user to obtain an OAuth token. // 'OAUTH_ADMIN' utilizes an admin token for external API calls on behalf all users. @@ -165,6 +205,16 @@ type ToolMetadata struct { LastUpdatedAt *time.Time `json:"lastUpdatedAt,omitempty"` // Valid only for write actions. Represents the type of write action. REDIRECT - The client renders the URL which contains information for carrying out the action. EXECUTION - Send a request to an external server and execute the action. MCP - Send a tools/call request to an MCP server to execute the action. WriteActionType *WriteActionType `json:"writeActionType,omitempty"` + // Analytics-only signal (product snapshot) describing WHERE the action's + // read/write determination came from. Complementary to the effective + // read/write value (the tool's ToolType, which drives HITL): the value says + // read-or-write, this says how confident that is. MCP_ANNOTATION = from the + // tool's read-only/destructive hints; ADMIN_OVERRIDE = an admin set it; + // NONE = no usable hint (the effective value then defaults to write); + // NATIVE_TOOL_DEFINITION = from a curated native tool (snapshot-derived). + // Does not affect runtime behavior. + // + ActionTypeSource *ActionTypeSource `json:"actionTypeSource,omitempty"` // The type of authentication being used. // Use 'OAUTH_*' when Glean calls an external API (e.g., Jira) on behalf of a user to obtain an OAuth token. // 'OAUTH_ADMIN' utilizes an admin token for external API calls on behalf all users. @@ -283,6 +333,13 @@ func (o *ToolMetadata) GetWriteActionType() *WriteActionType { return o.WriteActionType } +func (o *ToolMetadata) GetActionTypeSource() *ActionTypeSource { + if o == nil { + return nil + } + return o.ActionTypeSource +} + func (o *ToolMetadata) GetAuthType() *AuthType { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/components/toolserverauthstatus.go b/tests/mockserver/internal/sdk/models/components/toolserverauthstatus.go new file mode 100644 index 00000000..d6715ec4 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/toolserverauthstatus.go @@ -0,0 +1,35 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" +) + +// ToolServerAuthStatus - Authentication status for the calling user. +type ToolServerAuthStatus string + +const ( + ToolServerAuthStatusAwaitingAuth ToolServerAuthStatus = "AWAITING_AUTH" + ToolServerAuthStatusAuthorized ToolServerAuthStatus = "AUTHORIZED" +) + +func (e ToolServerAuthStatus) ToPointer() *ToolServerAuthStatus { + return &e +} +func (e *ToolServerAuthStatus) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "AWAITING_AUTH": + fallthrough + case "AUTHORIZED": + *e = ToolServerAuthStatus(v) + return nil + default: + return fmt.Errorf("invalid value for ToolServerAuthStatus: %v", v) + } +} diff --git a/tests/mockserver/internal/sdk/models/components/toolserverauthstatusresponse.go b/tests/mockserver/internal/sdk/models/components/toolserverauthstatusresponse.go new file mode 100644 index 00000000..4328a09e --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/toolserverauthstatusresponse.go @@ -0,0 +1,55 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type ToolServerAuthStatusResponse struct { + // Human-readable name of the tool server. + DisplayName *string `json:"displayName,omitempty"` + // Logo URL for the tool server. + LogoURL *string `json:"logoUrl,omitempty"` + // Brief description of the tool server. + Description *string `json:"description,omitempty"` + // Authentication status for the calling user. + AuthStatus ToolServerAuthStatus `json:"authStatus"` + // Authentication mechanism used by an action pack. + // - `AUTH_USER_OAUTH`: Requires per-user OAuth consent to the third-party tool. + // - `AUTH_ADMIN`: Uses a service-account / admin-owned credential. End users do not authorize individually. + // - `AUTH_NONE`: Action pack requires no authentication. + // + AuthType ActionAuthType `json:"authType"` +} + +func (o *ToolServerAuthStatusResponse) GetDisplayName() *string { + if o == nil { + return nil + } + return o.DisplayName +} + +func (o *ToolServerAuthStatusResponse) GetLogoURL() *string { + if o == nil { + return nil + } + return o.LogoURL +} + +func (o *ToolServerAuthStatusResponse) GetDescription() *string { + if o == nil { + return nil + } + return o.Description +} + +func (o *ToolServerAuthStatusResponse) GetAuthStatus() ToolServerAuthStatus { + if o == nil { + return ToolServerAuthStatus("") + } + return o.AuthStatus +} + +func (o *ToolServerAuthStatusResponse) GetAuthType() ActionAuthType { + if o == nil { + return ActionAuthType("") + } + return o.AuthType +} diff --git a/tests/mockserver/internal/sdk/models/components/ugctype.go b/tests/mockserver/internal/sdk/models/components/ugctype.go index e1cdc164..bc085b15 100644 --- a/tests/mockserver/internal/sdk/models/components/ugctype.go +++ b/tests/mockserver/internal/sdk/models/components/ugctype.go @@ -10,12 +10,26 @@ import ( type UgcType string const ( + UgcTypeAgentType UgcType = "AGENT_TYPE" UgcTypeAnnouncementsType UgcType = "ANNOUNCEMENTS_TYPE" UgcTypeAnswersType UgcType = "ANSWERS_TYPE" + UgcTypeChatsType UgcType = "CHATS_TYPE" UgcTypeCollectionsType UgcType = "COLLECTIONS_TYPE" + UgcTypeEmailType UgcType = "EMAIL_TYPE" + UgcTypeHTMLCodeType UgcType = "HTML_CODE_TYPE" + UgcTypeImageType UgcType = "IMAGE_TYPE" + UgcTypeMessageType UgcType = "MESSAGE_TYPE" + UgcTypePaperType UgcType = "PAPER_TYPE" + UgcTypePrismViewsType UgcType = "PRISM_VIEWS_TYPE" + UgcTypePromptTemplatesType UgcType = "PROMPT_TEMPLATES_TYPE" + UgcTypePinsType UgcType = "PINS_TYPE" + UgcTypeScribesType UgcType = "SCRIBES_TYPE" UgcTypeShortcutsType UgcType = "SHORTCUTS_TYPE" + UgcTypeSlideType UgcType = "SLIDE_TYPE" + UgcTypeSpreadsheetType UgcType = "SPREADSHEET_TYPE" + UgcTypeInlineHTMLType UgcType = "INLINE_HTML_TYPE" + UgcTypePodcastType UgcType = "PODCAST_TYPE" UgcTypeWorkflowsType UgcType = "WORKFLOWS_TYPE" - UgcTypePromptTemplatesType UgcType = "PROMPT_TEMPLATES_TYPE" ) func (e UgcType) ToPointer() *UgcType { @@ -27,17 +41,45 @@ func (e *UgcType) UnmarshalJSON(data []byte) error { return err } switch v { + case "AGENT_TYPE": + fallthrough case "ANNOUNCEMENTS_TYPE": fallthrough case "ANSWERS_TYPE": fallthrough + case "CHATS_TYPE": + fallthrough case "COLLECTIONS_TYPE": fallthrough - case "SHORTCUTS_TYPE": + case "EMAIL_TYPE": fallthrough - case "WORKFLOWS_TYPE": + case "HTML_CODE_TYPE": + fallthrough + case "IMAGE_TYPE": + fallthrough + case "MESSAGE_TYPE": + fallthrough + case "PAPER_TYPE": + fallthrough + case "PRISM_VIEWS_TYPE": fallthrough case "PROMPT_TEMPLATES_TYPE": + fallthrough + case "PINS_TYPE": + fallthrough + case "SCRIBES_TYPE": + fallthrough + case "SHORTCUTS_TYPE": + fallthrough + case "SLIDE_TYPE": + fallthrough + case "SPREADSHEET_TYPE": + fallthrough + case "INLINE_HTML_TYPE": + fallthrough + case "PODCAST_TYPE": + fallthrough + case "WORKFLOWS_TYPE": *e = UgcType(v) return nil default: diff --git a/tests/mockserver/internal/sdk/models/components/unauthorizeddatasourceinstance.go b/tests/mockserver/internal/sdk/models/components/unauthorizeddatasourceinstance.go new file mode 100644 index 00000000..78d5650a --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/unauthorizeddatasourceinstance.go @@ -0,0 +1,45 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +// UnauthorizedDatasourceInstance - A datasource instance that could not return results for this request because the user has not completed or has expired per-user OAuth. +type UnauthorizedDatasourceInstance struct { + // The instance identifier (e.g. "github", "github_enterprise_0", "slack_0"). Matches the instance names used in datasource configuration. + // + DatasourceInstance *string `json:"datasourceInstance,omitempty"` + // Human-readable name of the datasource instance for display. + DisplayName *string `json:"displayName,omitempty"` + // The per-user authorization status for a datasource. + AuthStatus *AuthStatus `json:"authStatus,omitempty"` + // Relative path to initiate or resume OAuth for the current user and instance, including a one-time authentication token as a query parameter. Clients should prepend their configured Glean backend base URL. + // + AuthURLRelativePath *string `json:"authUrlRelativePath,omitempty"` +} + +func (o *UnauthorizedDatasourceInstance) GetDatasourceInstance() *string { + if o == nil { + return nil + } + return o.DatasourceInstance +} + +func (o *UnauthorizedDatasourceInstance) GetDisplayName() *string { + if o == nil { + return nil + } + return o.DisplayName +} + +func (o *UnauthorizedDatasourceInstance) GetAuthStatus() *AuthStatus { + if o == nil { + return nil + } + return o.AuthStatus +} + +func (o *UnauthorizedDatasourceInstance) GetAuthURLRelativePath() *string { + if o == nil { + return nil + } + return o.AuthURLRelativePath +} diff --git a/tests/mockserver/internal/sdk/models/components/updatedatasourceconfigurationrequest.go b/tests/mockserver/internal/sdk/models/components/updatedatasourceconfigurationrequest.go new file mode 100644 index 00000000..07beb967 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/updatedatasourceconfigurationrequest.go @@ -0,0 +1,16 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +// UpdateDatasourceConfigurationRequest - Request to update greenlisted configuration values for a datasource instance. Only keys that are exposed via the public API greenlist may be set. +type UpdateDatasourceConfigurationRequest struct { + // Configuration for a datasource instance + Configuration DatasourceInstanceConfiguration `json:"configuration"` +} + +func (o *UpdateDatasourceConfigurationRequest) GetConfiguration() DatasourceInstanceConfiguration { + if o == nil { + return DatasourceInstanceConfiguration{} + } + return o.Configuration +} diff --git a/tests/mockserver/internal/sdk/models/components/uploadchatfilesrequest.go b/tests/mockserver/internal/sdk/models/components/uploadchatfilesrequest.go index 0a5cc028..5eebdcd8 100644 --- a/tests/mockserver/internal/sdk/models/components/uploadchatfilesrequest.go +++ b/tests/mockserver/internal/sdk/models/components/uploadchatfilesrequest.go @@ -6,19 +6,19 @@ import ( "io" ) -type File struct { +type UploadChatFilesRequestFile struct { FileName string `multipartForm:"name=fileName"` Content io.Reader `multipartForm:"content"` } -func (o *File) GetFileName() string { +func (o *UploadChatFilesRequestFile) GetFileName() string { if o == nil { return "" } return o.FileName } -func (o *File) GetContent() io.Reader { +func (o *UploadChatFilesRequestFile) GetContent() io.Reader { if o == nil { return nil } @@ -27,12 +27,12 @@ func (o *File) GetContent() io.Reader { type UploadChatFilesRequest struct { // Raw files to be uploaded for chat in binary format. - Files []File `multipartForm:"file,name=files"` + Files []UploadChatFilesRequestFile `multipartForm:"file,name=files"` } -func (o *UploadChatFilesRequest) GetFiles() []File { +func (o *UploadChatFilesRequest) GetFiles() []UploadChatFilesRequestFile { if o == nil { - return []File{} + return []UploadChatFilesRequestFile{} } return o.Files } diff --git a/tests/mockserver/internal/sdk/models/components/userinsightsresponse.go b/tests/mockserver/internal/sdk/models/components/userinsightsresponse.go deleted file mode 100644 index 2fb26d2f..00000000 --- a/tests/mockserver/internal/sdk/models/components/userinsightsresponse.go +++ /dev/null @@ -1,60 +0,0 @@ -// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - -package components - -type UserInsightsResponse struct { - // Unix timestamp of the last activity processed to make the response (in seconds since epoch UTC). - LastLogTimestamp *int64 `json:"lastLogTimestamp,omitempty"` - // Insights for all active users with respect to set of actions. - ActivityInsights []UserActivityInsight `json:"activityInsights,omitempty"` - // Insights for all in inactive users with respect to set of actions and time period. Activity count will be set to 0. - InactiveInsights []UserActivityInsight `json:"inactiveInsights,omitempty"` - // Total number of teammates that have logged in to the product, that are still valid teammates. - TotalTeammates *int64 `json:"totalTeammates,omitempty"` - // Total number of active users in the requested period. - TotalActiveUsers *int64 `json:"totalActiveUsers,omitempty"` - // list of departments applicable for users tab. - Departments []string `json:"departments,omitempty"` -} - -func (o *UserInsightsResponse) GetLastLogTimestamp() *int64 { - if o == nil { - return nil - } - return o.LastLogTimestamp -} - -func (o *UserInsightsResponse) GetActivityInsights() []UserActivityInsight { - if o == nil { - return nil - } - return o.ActivityInsights -} - -func (o *UserInsightsResponse) GetInactiveInsights() []UserActivityInsight { - if o == nil { - return nil - } - return o.InactiveInsights -} - -func (o *UserInsightsResponse) GetTotalTeammates() *int64 { - if o == nil { - return nil - } - return o.TotalTeammates -} - -func (o *UserInsightsResponse) GetTotalActiveUsers() *int64 { - if o == nil { - return nil - } - return o.TotalActiveUsers -} - -func (o *UserInsightsResponse) GetDepartments() []string { - if o == nil { - return nil - } - return o.Departments -} diff --git a/tests/mockserver/internal/sdk/models/components/viewerinfo.go b/tests/mockserver/internal/sdk/models/components/viewerinfo.go index 1f310364..f893b058 100644 --- a/tests/mockserver/internal/sdk/models/components/viewerinfo.go +++ b/tests/mockserver/internal/sdk/models/components/viewerinfo.go @@ -9,21 +9,21 @@ import ( "time" ) -// Role - DEPRECATED - use permissions instead. Viewer's role on the specific document. +// ViewerInfoRole - DEPRECATED - use permissions instead. Viewer's role on the specific document. // -// Deprecated: This will be removed in a future release, please migrate away from it as soon as possible. -type Role string +// Deprecated: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use permissions instead. +type ViewerInfoRole string const ( - RoleAnswerModerator Role = "ANSWER_MODERATOR" - RoleOwner Role = "OWNER" - RoleViewer Role = "VIEWER" + ViewerInfoRoleAnswerModerator ViewerInfoRole = "ANSWER_MODERATOR" + ViewerInfoRoleOwner ViewerInfoRole = "OWNER" + ViewerInfoRoleViewer ViewerInfoRole = "VIEWER" ) -func (e Role) ToPointer() *Role { +func (e ViewerInfoRole) ToPointer() *ViewerInfoRole { return &e } -func (e *Role) UnmarshalJSON(data []byte) error { +func (e *ViewerInfoRole) UnmarshalJSON(data []byte) error { var v string if err := json.Unmarshal(data, &v); err != nil { return err @@ -34,19 +34,19 @@ func (e *Role) UnmarshalJSON(data []byte) error { case "OWNER": fallthrough case "VIEWER": - *e = Role(v) + *e = ViewerInfoRole(v) return nil default: - return fmt.Errorf("invalid value for Role: %v", v) + return fmt.Errorf("invalid value for ViewerInfoRole: %v", v) } } type ViewerInfo struct { // DEPRECATED - use permissions instead. Viewer's role on the specific document. // - // Deprecated: This will be removed in a future release, please migrate away from it as soon as possible. - Role *Role `json:"role,omitempty"` - LastViewedTime *time.Time `json:"lastViewedTime,omitempty"` + // Deprecated: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use permissions instead. + Role *ViewerInfoRole `json:"role,omitempty"` + LastViewedTime *time.Time `json:"lastViewedTime,omitempty"` } func (v ViewerInfo) MarshalJSON() ([]byte, error) { @@ -60,7 +60,7 @@ func (v *ViewerInfo) UnmarshalJSON(data []byte) error { return nil } -func (o *ViewerInfo) GetRole() *Role { +func (o *ViewerInfo) GetRole() *ViewerInfoRole { if o == nil { return nil } diff --git a/tests/mockserver/internal/sdk/models/components/workflow.go b/tests/mockserver/internal/sdk/models/components/workflow.go index 4d9b678b..47aa9d24 100644 --- a/tests/mockserver/internal/sdk/models/components/workflow.go +++ b/tests/mockserver/internal/sdk/models/components/workflow.go @@ -9,11 +9,23 @@ type Workflow struct { // Server Unix timestamp of the creation time. CreateTimestamp *int64 `json:"createTimestamp,omitempty"` // Server Unix timestamp of the last update time. - LastUpdateTimestamp *int64 `json:"lastUpdateTimestamp,omitempty"` - LastUpdatedBy *Person `json:"lastUpdatedBy,omitempty"` - Permissions *ObjectPermissions `json:"permissions,omitempty"` + LastUpdateTimestamp *int64 `json:"lastUpdateTimestamp,omitempty"` + // Server Unix timestamp of the last time the draft was saved. + LastDraftSavedAt *int64 `json:"lastDraftSavedAt,omitempty"` + LastDraftSavedBy *Person `json:"lastDraftSavedBy,omitempty"` + // ID of the VCS user (e.g. GitHub username) who last saved the draft. Set only by the draft save path via the external Git integration API. + LastDraftGitAuthorID *string `json:"lastDraftGitAuthorId,omitempty"` + LastUpdatedBy *Person `json:"lastUpdatedBy,omitempty"` + Permissions *ObjectPermissions `json:"permissions,omitempty"` // The ID of the workflow. ID *string `json:"id,omitempty"` + // When present, indicates this workflow is admin-verified. Set via the dedicated admin settings endpoint, not by regular edits. + Verified *bool `json:"verified,omitempty"` + // When true, displays organization name instead of author name in agent card. Set via the dedicated admin settings endpoint, not by regular edits. + ShowOrganizationAsAuthor *bool `json:"showOrganizationAsAuthor,omitempty"` + // For a CUSTOM_WEBHOOK-triggered agent, the full inbound webhook URL (.../webhooks/custom/) minted for the agent. Empty for other trigger types. + // + WebhookURL *string `json:"webhookUrl,omitempty"` } func (o *Workflow) GetName() *string { @@ -44,6 +56,27 @@ func (o *Workflow) GetLastUpdateTimestamp() *int64 { return o.LastUpdateTimestamp } +func (o *Workflow) GetLastDraftSavedAt() *int64 { + if o == nil { + return nil + } + return o.LastDraftSavedAt +} + +func (o *Workflow) GetLastDraftSavedBy() *Person { + if o == nil { + return nil + } + return o.LastDraftSavedBy +} + +func (o *Workflow) GetLastDraftGitAuthorID() *string { + if o == nil { + return nil + } + return o.LastDraftGitAuthorID +} + func (o *Workflow) GetLastUpdatedBy() *Person { if o == nil { return nil @@ -64,3 +97,24 @@ func (o *Workflow) GetID() *string { } return o.ID } + +func (o *Workflow) GetVerified() *bool { + if o == nil { + return nil + } + return o.Verified +} + +func (o *Workflow) GetShowOrganizationAsAuthor() *bool { + if o == nil { + return nil + } + return o.ShowOrganizationAsAuthor +} + +func (o *Workflow) GetWebhookURL() *string { + if o == nil { + return nil + } + return o.WebhookURL +} diff --git a/tests/mockserver/internal/sdk/models/operations/addcollectionitems.go b/tests/mockserver/internal/sdk/models/operations/addcollectionitems.go index fd74638a..5402c0c3 100644 --- a/tests/mockserver/internal/sdk/models/operations/addcollectionitems.go +++ b/tests/mockserver/internal/sdk/models/operations/addcollectionitems.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type AddcollectionitemsRequest struct { + // 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`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // Data describing the add operation. + Body components.AddCollectionItemsRequest `request:"mediaType=application/json"` +} + +func (o *AddcollectionitemsRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *AddcollectionitemsRequest) GetBody() components.AddCollectionItemsRequest { + if o == nil { + return components.AddCollectionItemsRequest{} + } + return o.Body +} + type AddcollectionitemsResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/addverificationreminder.go b/tests/mockserver/internal/sdk/models/operations/addverificationreminder.go index fb8ab5ad..5ac1bc76 100644 --- a/tests/mockserver/internal/sdk/models/operations/addverificationreminder.go +++ b/tests/mockserver/internal/sdk/models/operations/addverificationreminder.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type AddverificationreminderRequest struct { + // 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`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // Details about the reminder. + Body components.ReminderRequest `request:"mediaType=application/json"` +} + +func (o *AddverificationreminderRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *AddverificationreminderRequest) GetBody() components.ReminderRequest { + if o == nil { + return components.ReminderRequest{} + } + return o.Body +} + type AddverificationreminderResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/adminsearch.go b/tests/mockserver/internal/sdk/models/operations/adminsearch.go index 3a9fc431..d3bcae61 100644 --- a/tests/mockserver/internal/sdk/models/operations/adminsearch.go +++ b/tests/mockserver/internal/sdk/models/operations/adminsearch.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type AdminsearchRequest struct { + // 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`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // Admin search request + Body components.SearchRequest `request:"mediaType=application/json"` +} + +func (o *AdminsearchRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *AdminsearchRequest) GetBody() components.SearchRequest { + if o == nil { + return components.SearchRequest{} + } + return o.Body +} + type AdminsearchResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/authorizeactionpack.go b/tests/mockserver/internal/sdk/models/operations/authorizeactionpack.go new file mode 100644 index 00000000..9c7fd68f --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/authorizeactionpack.go @@ -0,0 +1,47 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" +) + +type AuthorizeActionPackRequest struct { + // ID of the action pack to query or authorize. + ActionPackID string `pathParam:"style=simple,explode=false,name=actionPackId"` + Body components.AuthorizeActionPackRequest `request:"mediaType=application/json"` +} + +func (o *AuthorizeActionPackRequest) GetActionPackID() string { + if o == nil { + return "" + } + return o.ActionPackID +} + +func (o *AuthorizeActionPackRequest) GetBody() components.AuthorizeActionPackRequest { + if o == nil { + return components.AuthorizeActionPackRequest{} + } + return o.Body +} + +type AuthorizeActionPackResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // Successful operation + AuthorizeActionPackResponse *components.AuthorizeActionPackResponse +} + +func (o *AuthorizeActionPackResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *AuthorizeActionPackResponse) GetAuthorizeActionPackResponse() *components.AuthorizeActionPackResponse { + if o == nil { + return nil + } + return o.AuthorizeActionPackResponse +} diff --git a/tests/mockserver/internal/sdk/models/operations/authorizetoolserver.go b/tests/mockserver/internal/sdk/models/operations/authorizetoolserver.go new file mode 100644 index 00000000..df8f1505 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/authorizetoolserver.go @@ -0,0 +1,47 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" +) + +type AuthorizeToolServerRequest struct { + // Unique identifier of the tool server. + ServerID string `pathParam:"style=simple,explode=false,name=serverId"` + Body components.AuthorizeToolServerRequest `request:"mediaType=application/json"` +} + +func (o *AuthorizeToolServerRequest) GetServerID() string { + if o == nil { + return "" + } + return o.ServerID +} + +func (o *AuthorizeToolServerRequest) GetBody() components.AuthorizeToolServerRequest { + if o == nil { + return components.AuthorizeToolServerRequest{} + } + return o.Body +} + +type AuthorizeToolServerResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // Successful operation + AuthorizeToolServerResponse *components.AuthorizeToolServerResponse +} + +func (o *AuthorizeToolServerResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *AuthorizeToolServerResponse) GetAuthorizeToolServerResponse() *components.AuthorizeToolServerResponse { + if o == nil { + return nil + } + return o.AuthorizeToolServerResponse +} diff --git a/tests/mockserver/internal/sdk/models/operations/autocomplete.go b/tests/mockserver/internal/sdk/models/operations/autocomplete.go index 106f5474..e056f244 100644 --- a/tests/mockserver/internal/sdk/models/operations/autocomplete.go +++ b/tests/mockserver/internal/sdk/models/operations/autocomplete.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type AutocompleteRequest struct { + // 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`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // Autocomplete request + Body components.AutocompleteRequest `request:"mediaType=application/json"` +} + +func (o *AutocompleteRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *AutocompleteRequest) GetBody() components.AutocompleteRequest { + if o == nil { + return components.AutocompleteRequest{} + } + return o.Body +} + type AutocompleteResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/chat.go b/tests/mockserver/internal/sdk/models/operations/chat.go index e8c31b57..571a9b9d 100644 --- a/tests/mockserver/internal/sdk/models/operations/chat.go +++ b/tests/mockserver/internal/sdk/models/operations/chat.go @@ -7,12 +7,21 @@ import ( ) type ChatRequest struct { + // 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`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` // 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 `queryParam:"style=form,explode=true,name=timezoneOffset"` // Includes chat history for Glean AI to respond to. Body components.ChatRequest `request:"mediaType=application/json"` } +func (o *ChatRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + func (o *ChatRequest) GetTimezoneOffset() *int64 { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/operations/checkdatasourceauth.go b/tests/mockserver/internal/sdk/models/operations/checkdatasourceauth.go new file mode 100644 index 00000000..55046755 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/checkdatasourceauth.go @@ -0,0 +1,27 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" +) + +type CheckdatasourceauthResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // OK + CheckDatasourceAuthResponse *components.CheckDatasourceAuthResponse +} + +func (o *CheckdatasourceauthResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *CheckdatasourceauthResponse) GetCheckDatasourceAuthResponse() *components.CheckDatasourceAuthResponse { + if o == nil { + return nil + } + return o.CheckDatasourceAuthResponse +} diff --git a/tests/mockserver/internal/sdk/models/operations/createagent.go b/tests/mockserver/internal/sdk/models/operations/createagent.go new file mode 100644 index 00000000..255e835e --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/createagent.go @@ -0,0 +1,56 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" +) + +type CreateAgentRequest struct { + // 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`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // 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 `queryParam:"style=form,explode=true,name=timezoneOffset"` + Body components.CreateWorkflowRequest `request:"mediaType=application/json"` +} + +func (o *CreateAgentRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *CreateAgentRequest) GetTimezoneOffset() *int64 { + if o == nil { + return nil + } + return o.TimezoneOffset +} + +func (o *CreateAgentRequest) GetBody() components.CreateWorkflowRequest { + if o == nil { + return components.CreateWorkflowRequest{} + } + return o.Body +} + +type CreateAgentResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // Success + WorkflowResult *components.WorkflowResult +} + +func (o *CreateAgentResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *CreateAgentResponse) GetWorkflowResult() *components.WorkflowResult { + if o == nil { + return nil + } + return o.WorkflowResult +} diff --git a/tests/mockserver/internal/sdk/models/operations/createannouncement.go b/tests/mockserver/internal/sdk/models/operations/createannouncement.go index 86d9ba17..420e51a0 100644 --- a/tests/mockserver/internal/sdk/models/operations/createannouncement.go +++ b/tests/mockserver/internal/sdk/models/operations/createannouncement.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type CreateannouncementRequest struct { + // 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`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // Announcement content + Body components.CreateAnnouncementRequest `request:"mediaType=application/json"` +} + +func (o *CreateannouncementRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *CreateannouncementRequest) GetBody() components.CreateAnnouncementRequest { + if o == nil { + return components.CreateAnnouncementRequest{} + } + return o.Body +} + type CreateannouncementResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/createanswer.go b/tests/mockserver/internal/sdk/models/operations/createanswer.go index 8abc5c94..6ae4843d 100644 --- a/tests/mockserver/internal/sdk/models/operations/createanswer.go +++ b/tests/mockserver/internal/sdk/models/operations/createanswer.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type CreateanswerRequest struct { + // 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`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // CreateAnswer request + Body components.CreateAnswerRequest `request:"mediaType=application/json"` +} + +func (o *CreateanswerRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *CreateanswerRequest) GetBody() components.CreateAnswerRequest { + if o == nil { + return components.CreateAnswerRequest{} + } + return o.Body +} + type CreateanswerResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/createcollection.go b/tests/mockserver/internal/sdk/models/operations/createcollection.go index 04eaedbc..3b62bee2 100644 --- a/tests/mockserver/internal/sdk/models/operations/createcollection.go +++ b/tests/mockserver/internal/sdk/models/operations/createcollection.go @@ -9,6 +9,27 @@ import ( "mockserver/internal/sdk/utils" ) +type CreatecollectionRequest struct { + // 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`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // Collection content plus any additional metadata for the request. + Body components.CreateCollectionRequest `request:"mediaType=application/json"` +} + +func (o *CreatecollectionRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *CreatecollectionRequest) GetBody() components.CreateCollectionRequest { + if o == nil { + return components.CreateCollectionRequest{} + } + return o.Body +} + type ResponseBody2 struct { Collection *components.Collection `json:"collection,omitempty"` Error components.CollectionError `json:"error"` diff --git a/tests/mockserver/internal/sdk/models/operations/createshortcut.go b/tests/mockserver/internal/sdk/models/operations/createshortcut.go index b17cc638..4dead6af 100644 --- a/tests/mockserver/internal/sdk/models/operations/createshortcut.go +++ b/tests/mockserver/internal/sdk/models/operations/createshortcut.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type CreateshortcutRequest struct { + // 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`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // CreateShortcut request + Body components.CreateShortcutRequest `request:"mediaType=application/json"` +} + +func (o *CreateshortcutRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *CreateshortcutRequest) GetBody() components.CreateShortcutRequest { + if o == nil { + return components.CreateShortcutRequest{} + } + return o.Body +} + type CreateshortcutResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/deleteallchats.go b/tests/mockserver/internal/sdk/models/operations/deleteallchats.go index d28cebb1..9a61eac0 100644 --- a/tests/mockserver/internal/sdk/models/operations/deleteallchats.go +++ b/tests/mockserver/internal/sdk/models/operations/deleteallchats.go @@ -7,10 +7,19 @@ import ( ) type DeleteallchatsRequest struct { + // 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`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` // 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 `queryParam:"style=form,explode=true,name=timezoneOffset"` } +func (o *DeleteallchatsRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + func (o *DeleteallchatsRequest) GetTimezoneOffset() *int64 { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/operations/deleteannouncement.go b/tests/mockserver/internal/sdk/models/operations/deleteannouncement.go index 774b4d1f..6df70f30 100644 --- a/tests/mockserver/internal/sdk/models/operations/deleteannouncement.go +++ b/tests/mockserver/internal/sdk/models/operations/deleteannouncement.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type DeleteannouncementRequest struct { + // 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`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // Delete announcement request + Body components.DeleteAnnouncementRequest `request:"mediaType=application/json"` +} + +func (o *DeleteannouncementRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *DeleteannouncementRequest) GetBody() components.DeleteAnnouncementRequest { + if o == nil { + return components.DeleteAnnouncementRequest{} + } + return o.Body +} + type DeleteannouncementResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` } diff --git a/tests/mockserver/internal/sdk/models/operations/deleteanswer.go b/tests/mockserver/internal/sdk/models/operations/deleteanswer.go index 46b181b2..c30ae2bb 100644 --- a/tests/mockserver/internal/sdk/models/operations/deleteanswer.go +++ b/tests/mockserver/internal/sdk/models/operations/deleteanswer.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type DeleteanswerRequest struct { + // 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`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // DeleteAnswer request + Body components.DeleteAnswerRequest `request:"mediaType=application/json"` +} + +func (o *DeleteanswerRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *DeleteanswerRequest) GetBody() components.DeleteAnswerRequest { + if o == nil { + return components.DeleteAnswerRequest{} + } + return o.Body +} + type DeleteanswerResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` } diff --git a/tests/mockserver/internal/sdk/models/operations/deletechatfiles.go b/tests/mockserver/internal/sdk/models/operations/deletechatfiles.go index 8d41828e..132474f4 100644 --- a/tests/mockserver/internal/sdk/models/operations/deletechatfiles.go +++ b/tests/mockserver/internal/sdk/models/operations/deletechatfiles.go @@ -7,11 +7,20 @@ import ( ) type DeletechatfilesRequest struct { + // 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`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` // 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 `queryParam:"style=form,explode=true,name=timezoneOffset"` Body components.DeleteChatFilesRequest `request:"mediaType=application/json"` } +func (o *DeletechatfilesRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + func (o *DeletechatfilesRequest) GetTimezoneOffset() *int64 { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/operations/deletechats.go b/tests/mockserver/internal/sdk/models/operations/deletechats.go index 14372eaa..558b4262 100644 --- a/tests/mockserver/internal/sdk/models/operations/deletechats.go +++ b/tests/mockserver/internal/sdk/models/operations/deletechats.go @@ -7,11 +7,20 @@ import ( ) type DeletechatsRequest struct { + // 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`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` // 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 `queryParam:"style=form,explode=true,name=timezoneOffset"` Body components.DeleteChatsRequest `request:"mediaType=application/json"` } +func (o *DeletechatsRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + func (o *DeletechatsRequest) GetTimezoneOffset() *int64 { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/operations/deletecollection.go b/tests/mockserver/internal/sdk/models/operations/deletecollection.go index b21f01fa..29f0e83d 100644 --- a/tests/mockserver/internal/sdk/models/operations/deletecollection.go +++ b/tests/mockserver/internal/sdk/models/operations/deletecollection.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type DeletecollectionRequest struct { + // 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`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // DeleteCollection request + Body components.DeleteCollectionRequest `request:"mediaType=application/json"` +} + +func (o *DeletecollectionRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *DeletecollectionRequest) GetBody() components.DeleteCollectionRequest { + if o == nil { + return components.DeleteCollectionRequest{} + } + return o.Body +} + type DeletecollectionResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` } diff --git a/tests/mockserver/internal/sdk/models/operations/deletecollectionitem.go b/tests/mockserver/internal/sdk/models/operations/deletecollectionitem.go index f9b6a404..ebc25f93 100644 --- a/tests/mockserver/internal/sdk/models/operations/deletecollectionitem.go +++ b/tests/mockserver/internal/sdk/models/operations/deletecollectionitem.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type DeletecollectionitemRequest struct { + // 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`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // Data describing the delete operation. + Body components.DeleteCollectionItemRequest `request:"mediaType=application/json"` +} + +func (o *DeletecollectionitemRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *DeletecollectionitemRequest) GetBody() components.DeleteCollectionItemRequest { + if o == nil { + return components.DeleteCollectionItemRequest{} + } + return o.Body +} + type DeletecollectionitemResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/deleterestapiindexcustommetadataschemagroupname.go b/tests/mockserver/internal/sdk/models/operations/deleterestapiindexcustommetadataschemagroupname.go new file mode 100644 index 00000000..0d1f7202 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/deleterestapiindexcustommetadataschemagroupname.go @@ -0,0 +1,39 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" +) + +type DeleteRestAPIIndexCustomMetadataSchemaGroupNameRequest struct { + // Name of the metadata group schema + GroupName string `pathParam:"style=simple,explode=false,name=groupName"` +} + +func (o *DeleteRestAPIIndexCustomMetadataSchemaGroupNameRequest) GetGroupName() string { + if o == nil { + return "" + } + return o.GroupName +} + +type DeleteRestAPIIndexCustomMetadataSchemaGroupNameResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // OK + SuccessResponse *components.SuccessResponse +} + +func (o *DeleteRestAPIIndexCustomMetadataSchemaGroupNameResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *DeleteRestAPIIndexCustomMetadataSchemaGroupNameResponse) GetSuccessResponse() *components.SuccessResponse { + if o == nil { + return nil + } + return o.SuccessResponse +} diff --git a/tests/mockserver/internal/sdk/models/operations/deleterestapiindexdocumentdocidcustommetadatagroupname.go b/tests/mockserver/internal/sdk/models/operations/deleterestapiindexdocumentdocidcustommetadatagroupname.go new file mode 100644 index 00000000..beb27fc3 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/deleterestapiindexdocumentdocidcustommetadatagroupname.go @@ -0,0 +1,48 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" +) + +type DeleteRestAPIIndexDocumentDocIDCustomMetadataGroupNameRequest struct { + // Unique Glean identifier of the document + DocID string `pathParam:"style=simple,explode=false,name=docId"` + // Name of the metadata group as specified while adding schema + GroupName string `pathParam:"style=simple,explode=false,name=groupName"` +} + +func (o *DeleteRestAPIIndexDocumentDocIDCustomMetadataGroupNameRequest) GetDocID() string { + if o == nil { + return "" + } + return o.DocID +} + +func (o *DeleteRestAPIIndexDocumentDocIDCustomMetadataGroupNameRequest) GetGroupName() string { + if o == nil { + return "" + } + return o.GroupName +} + +type DeleteRestAPIIndexDocumentDocIDCustomMetadataGroupNameResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // OK + SuccessResponse *components.SuccessResponse +} + +func (o *DeleteRestAPIIndexDocumentDocIDCustomMetadataGroupNameResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *DeleteRestAPIIndexDocumentDocIDCustomMetadataGroupNameResponse) GetSuccessResponse() *components.SuccessResponse { + if o == nil { + return nil + } + return o.SuccessResponse +} diff --git a/tests/mockserver/internal/sdk/models/operations/deleteshortcut.go b/tests/mockserver/internal/sdk/models/operations/deleteshortcut.go index 03a740b6..887e2faf 100644 --- a/tests/mockserver/internal/sdk/models/operations/deleteshortcut.go +++ b/tests/mockserver/internal/sdk/models/operations/deleteshortcut.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type DeleteshortcutRequest struct { + // 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`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // DeleteShortcut request + Body components.DeleteShortcutRequest `request:"mediaType=application/json"` +} + +func (o *DeleteshortcutRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *DeleteshortcutRequest) GetBody() components.DeleteShortcutRequest { + if o == nil { + return components.DeleteShortcutRequest{} + } + return o.Body +} + type DeleteshortcutResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` } diff --git a/tests/mockserver/internal/sdk/models/operations/editagent.go b/tests/mockserver/internal/sdk/models/operations/editagent.go new file mode 100644 index 00000000..e65fa406 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/editagent.go @@ -0,0 +1,56 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" +) + +type EditAgentRequest struct { + // 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`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // 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 `queryParam:"style=form,explode=true,name=timezoneOffset"` + // The ID of the agent. + AgentID string `pathParam:"style=simple,explode=false,name=agent_id"` + Body components.EditWorkflowRequest `request:"mediaType=application/json"` +} + +func (o *EditAgentRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *EditAgentRequest) GetTimezoneOffset() *int64 { + if o == nil { + return nil + } + return o.TimezoneOffset +} + +func (o *EditAgentRequest) GetAgentID() string { + if o == nil { + return "" + } + return o.AgentID +} + +func (o *EditAgentRequest) GetBody() components.EditWorkflowRequest { + if o == nil { + return components.EditWorkflowRequest{} + } + return o.Body +} + +type EditAgentResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` +} + +func (o *EditAgentResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} diff --git a/tests/mockserver/internal/sdk/models/operations/editanswer.go b/tests/mockserver/internal/sdk/models/operations/editanswer.go index 92a67c43..a012cd57 100644 --- a/tests/mockserver/internal/sdk/models/operations/editanswer.go +++ b/tests/mockserver/internal/sdk/models/operations/editanswer.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type EditanswerRequest struct { + // 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`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // EditAnswer request + Body components.EditAnswerRequest `request:"mediaType=application/json"` +} + +func (o *EditanswerRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *EditanswerRequest) GetBody() components.EditAnswerRequest { + if o == nil { + return components.EditAnswerRequest{} + } + return o.Body +} + type EditanswerResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/editcollection.go b/tests/mockserver/internal/sdk/models/operations/editcollection.go index 6b17b377..1009daa1 100644 --- a/tests/mockserver/internal/sdk/models/operations/editcollection.go +++ b/tests/mockserver/internal/sdk/models/operations/editcollection.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type EditcollectionRequest struct { + // 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`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // Collection content plus any additional metadata for the request. + Body components.EditCollectionRequest `request:"mediaType=application/json"` +} + +func (o *EditcollectionRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *EditcollectionRequest) GetBody() components.EditCollectionRequest { + if o == nil { + return components.EditCollectionRequest{} + } + return o.Body +} + type EditcollectionResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/editcollectionitem.go b/tests/mockserver/internal/sdk/models/operations/editcollectionitem.go index 8ac9f5a9..520900db 100644 --- a/tests/mockserver/internal/sdk/models/operations/editcollectionitem.go +++ b/tests/mockserver/internal/sdk/models/operations/editcollectionitem.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type EditcollectionitemRequest struct { + // 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`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // Edit Collection Items request + Body components.EditCollectionItemRequest `request:"mediaType=application/json"` +} + +func (o *EditcollectionitemRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *EditcollectionitemRequest) GetBody() components.EditCollectionItemRequest { + if o == nil { + return components.EditCollectionItemRequest{} + } + return o.Body +} + type EditcollectionitemResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/editpin.go b/tests/mockserver/internal/sdk/models/operations/editpin.go index 921ea93c..9105b336 100644 --- a/tests/mockserver/internal/sdk/models/operations/editpin.go +++ b/tests/mockserver/internal/sdk/models/operations/editpin.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type EditpinRequest struct { + // 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`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // Edit pins request + Body components.EditPinRequest `request:"mediaType=application/json"` +} + +func (o *EditpinRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *EditpinRequest) GetBody() components.EditPinRequest { + if o == nil { + return components.EditPinRequest{} + } + return o.Body +} + type EditpinResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/feed.go b/tests/mockserver/internal/sdk/models/operations/feed.go index 1d0cbfbf..8f7a3aa0 100644 --- a/tests/mockserver/internal/sdk/models/operations/feed.go +++ b/tests/mockserver/internal/sdk/models/operations/feed.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type FeedRequest struct { + // 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`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // Includes request params, client data and more for making user's feed. + Body components.FeedRequest `request:"mediaType=application/json"` +} + +func (o *FeedRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *FeedRequest) GetBody() components.FeedRequest { + if o == nil { + return components.FeedRequest{} + } + return o.Body +} + type FeedResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/getactionpackauthstatus.go b/tests/mockserver/internal/sdk/models/operations/getactionpackauthstatus.go new file mode 100644 index 00000000..9b7a1160 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/getactionpackauthstatus.go @@ -0,0 +1,39 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" +) + +type GetActionPackAuthStatusRequest struct { + // ID of the action pack to query or authorize. + ActionPackID string `pathParam:"style=simple,explode=false,name=actionPackId"` +} + +func (o *GetActionPackAuthStatusRequest) GetActionPackID() string { + if o == nil { + return "" + } + return o.ActionPackID +} + +type GetActionPackAuthStatusResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // Successful operation + ActionPackAuthStatusResponse *components.ActionPackAuthStatusResponse +} + +func (o *GetActionPackAuthStatusResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *GetActionPackAuthStatusResponse) GetActionPackAuthStatusResponse() *components.ActionPackAuthStatusResponse { + if o == nil { + return nil + } + return o.ActionPackAuthStatusResponse +} diff --git a/tests/mockserver/internal/sdk/models/operations/getagent.go b/tests/mockserver/internal/sdk/models/operations/getagent.go index 471bb945..6e79ed8b 100644 --- a/tests/mockserver/internal/sdk/models/operations/getagent.go +++ b/tests/mockserver/internal/sdk/models/operations/getagent.go @@ -7,12 +7,21 @@ import ( ) type GetAgentRequest struct { + // 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`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` // 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 `queryParam:"style=form,explode=true,name=timezoneOffset"` // The ID of the agent. AgentID string `pathParam:"style=simple,explode=false,name=agent_id"` } +func (o *GetAgentRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + func (o *GetAgentRequest) GetTimezoneOffset() *int64 { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/operations/getagentschemas.go b/tests/mockserver/internal/sdk/models/operations/getagentschemas.go index b4aa8ea6..8b4bb0ad 100644 --- a/tests/mockserver/internal/sdk/models/operations/getagentschemas.go +++ b/tests/mockserver/internal/sdk/models/operations/getagentschemas.go @@ -7,12 +7,21 @@ import ( ) type GetAgentSchemasRequest struct { + // 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`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` // 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 `queryParam:"style=form,explode=true,name=timezoneOffset"` // The ID of the agent. AgentID string `pathParam:"style=simple,explode=false,name=agent_id"` } +func (o *GetAgentSchemasRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + func (o *GetAgentSchemasRequest) GetTimezoneOffset() *int64 { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/operations/getanswer.go b/tests/mockserver/internal/sdk/models/operations/getanswer.go index ce29ef9f..2f3d1ba5 100644 --- a/tests/mockserver/internal/sdk/models/operations/getanswer.go +++ b/tests/mockserver/internal/sdk/models/operations/getanswer.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type GetanswerRequest struct { + // 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`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // GetAnswer request + Body components.GetAnswerRequest `request:"mediaType=application/json"` +} + +func (o *GetanswerRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *GetanswerRequest) GetBody() components.GetAnswerRequest { + if o == nil { + return components.GetAnswerRequest{} + } + return o.Body +} + type GetanswerResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/getchat.go b/tests/mockserver/internal/sdk/models/operations/getchat.go index 0c696703..50686f34 100644 --- a/tests/mockserver/internal/sdk/models/operations/getchat.go +++ b/tests/mockserver/internal/sdk/models/operations/getchat.go @@ -7,11 +7,20 @@ import ( ) type GetchatRequest struct { + // 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`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` // 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 `queryParam:"style=form,explode=true,name=timezoneOffset"` Body components.GetChatRequest `request:"mediaType=application/json"` } +func (o *GetchatRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + func (o *GetchatRequest) GetTimezoneOffset() *int64 { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/operations/getchatapplication.go b/tests/mockserver/internal/sdk/models/operations/getchatapplication.go index 4d4ddb97..43b8a32f 100644 --- a/tests/mockserver/internal/sdk/models/operations/getchatapplication.go +++ b/tests/mockserver/internal/sdk/models/operations/getchatapplication.go @@ -7,11 +7,20 @@ import ( ) type GetchatapplicationRequest struct { + // 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`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` // 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 `queryParam:"style=form,explode=true,name=timezoneOffset"` Body components.GetChatApplicationRequest `request:"mediaType=application/json"` } +func (o *GetchatapplicationRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + func (o *GetchatapplicationRequest) GetTimezoneOffset() *int64 { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/operations/getchatfile.go b/tests/mockserver/internal/sdk/models/operations/getchatfile.go new file mode 100644 index 00000000..b2bd8aac --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/getchatfile.go @@ -0,0 +1,51 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "io" + "mockserver/internal/sdk/models/components" +) + +type GetChatFileRequest struct { + // Identifier of the chat file to download. + FileID string `pathParam:"style=simple,explode=false,name=fileId"` + // When true and the file is a PDF, the response is served inline (Content-Disposition: inline) instead of as an attachment. + // + Preview *bool `queryParam:"style=form,explode=true,name=preview"` +} + +func (o *GetChatFileRequest) GetFileID() string { + if o == nil { + return "" + } + return o.FileID +} + +func (o *GetChatFileRequest) GetPreview() *bool { + if o == nil { + return nil + } + return o.Preview +} + +type GetChatFileResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // File content. + // The Close method must be called on this field, even if it is not used, to prevent resource leaks. + ResponseStream io.ReadCloser +} + +func (o *GetChatFileResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *GetChatFileResponse) GetResponseStream() io.ReadCloser { + if o == nil { + return nil + } + return o.ResponseStream +} diff --git a/tests/mockserver/internal/sdk/models/operations/getchatfiles.go b/tests/mockserver/internal/sdk/models/operations/getchatfiles.go index 7ad91227..5ecbbe8d 100644 --- a/tests/mockserver/internal/sdk/models/operations/getchatfiles.go +++ b/tests/mockserver/internal/sdk/models/operations/getchatfiles.go @@ -7,11 +7,20 @@ import ( ) type GetchatfilesRequest struct { + // 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`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` // 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 `queryParam:"style=form,explode=true,name=timezoneOffset"` Body components.GetChatFilesRequest `request:"mediaType=application/json"` } +func (o *GetchatfilesRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + func (o *GetchatfilesRequest) GetTimezoneOffset() *int64 { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/operations/getcollection.go b/tests/mockserver/internal/sdk/models/operations/getcollection.go index 38e38763..6b70b3c9 100644 --- a/tests/mockserver/internal/sdk/models/operations/getcollection.go +++ b/tests/mockserver/internal/sdk/models/operations/getcollection.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type GetcollectionRequest struct { + // 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`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // GetCollection request + Body components.GetCollectionRequest `request:"mediaType=application/json"` +} + +func (o *GetcollectionRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *GetcollectionRequest) GetBody() components.GetCollectionRequest { + if o == nil { + return components.GetCollectionRequest{} + } + return o.Body +} + type GetcollectionResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/getdatasourcecredentialstatus.go b/tests/mockserver/internal/sdk/models/operations/getdatasourcecredentialstatus.go new file mode 100644 index 00000000..bc0d1e27 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/getdatasourcecredentialstatus.go @@ -0,0 +1,39 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" +) + +type GetDatasourceCredentialStatusRequest struct { + // The full datasource instance identifier (e.g. o365sharepoint_abc123) + DatasourceInstanceID string `pathParam:"style=simple,explode=false,name=datasourceInstanceId"` +} + +func (o *GetDatasourceCredentialStatusRequest) GetDatasourceInstanceID() string { + if o == nil { + return "" + } + return o.DatasourceInstanceID +} + +type GetDatasourceCredentialStatusResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // OK + DatasourceCredentialStatusResponse *components.DatasourceCredentialStatusResponse +} + +func (o *GetDatasourceCredentialStatusResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *GetDatasourceCredentialStatusResponse) GetDatasourceCredentialStatusResponse() *components.DatasourceCredentialStatusResponse { + if o == nil { + return nil + } + return o.DatasourceCredentialStatusResponse +} diff --git a/tests/mockserver/internal/sdk/models/operations/getdatasourceinstanceconfiguration.go b/tests/mockserver/internal/sdk/models/operations/getdatasourceinstanceconfiguration.go new file mode 100644 index 00000000..515b849f --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/getdatasourceinstanceconfiguration.go @@ -0,0 +1,48 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" +) + +type GetDatasourceInstanceConfigurationRequest struct { + // The datasource type identifier (e.g. o365sharepoint) + DatasourceID string `pathParam:"style=simple,explode=false,name=datasourceId"` + // The datasource instance identifier + InstanceID string `pathParam:"style=simple,explode=false,name=instanceId"` +} + +func (o *GetDatasourceInstanceConfigurationRequest) GetDatasourceID() string { + if o == nil { + return "" + } + return o.DatasourceID +} + +func (o *GetDatasourceInstanceConfigurationRequest) GetInstanceID() string { + if o == nil { + return "" + } + return o.InstanceID +} + +type GetDatasourceInstanceConfigurationResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // OK + DatasourceConfigurationResponse *components.DatasourceConfigurationResponse +} + +func (o *GetDatasourceInstanceConfigurationResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *GetDatasourceInstanceConfigurationResponse) GetDatasourceConfigurationResponse() *components.DatasourceConfigurationResponse { + if o == nil { + return nil + } + return o.DatasourceConfigurationResponse +} diff --git a/tests/mockserver/internal/sdk/models/operations/getdocpermissions.go b/tests/mockserver/internal/sdk/models/operations/getdocpermissions.go index a509a3a7..e615fcc1 100644 --- a/tests/mockserver/internal/sdk/models/operations/getdocpermissions.go +++ b/tests/mockserver/internal/sdk/models/operations/getdocpermissions.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type GetdocpermissionsRequest struct { + // 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`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // Document permissions request + Body components.GetDocPermissionsRequest `request:"mediaType=application/json"` +} + +func (o *GetdocpermissionsRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *GetdocpermissionsRequest) GetBody() components.GetDocPermissionsRequest { + if o == nil { + return components.GetDocPermissionsRequest{} + } + return o.Body +} + type GetdocpermissionsResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/getdocuments.go b/tests/mockserver/internal/sdk/models/operations/getdocuments.go index a2ef5c08..87367f5e 100644 --- a/tests/mockserver/internal/sdk/models/operations/getdocuments.go +++ b/tests/mockserver/internal/sdk/models/operations/getdocuments.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type GetdocumentsRequest struct { + // 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`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // Information about documents requested. + Body *components.GetDocumentsRequest `request:"mediaType=application/json"` +} + +func (o *GetdocumentsRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *GetdocumentsRequest) GetBody() *components.GetDocumentsRequest { + if o == nil { + return nil + } + return o.Body +} + type GetdocumentsResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/getdocumentsbyfacets.go b/tests/mockserver/internal/sdk/models/operations/getdocumentsbyfacets.go index 12629e29..4c3deeb2 100644 --- a/tests/mockserver/internal/sdk/models/operations/getdocumentsbyfacets.go +++ b/tests/mockserver/internal/sdk/models/operations/getdocumentsbyfacets.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type GetdocumentsbyfacetsRequest struct { + // 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`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // Information about facet conditions for documents to be retrieved. + Body *components.GetDocumentsByFacetsRequest `request:"mediaType=application/json"` +} + +func (o *GetdocumentsbyfacetsRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *GetdocumentsbyfacetsRequest) GetBody() *components.GetDocumentsByFacetsRequest { + if o == nil { + return nil + } + return o.Body +} + type GetdocumentsbyfacetsResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/getpersonphoto.go b/tests/mockserver/internal/sdk/models/operations/getpersonphoto.go new file mode 100644 index 00000000..4d865674 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/getpersonphoto.go @@ -0,0 +1,69 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "io" + "mockserver/internal/sdk/models/components" +) + +type GetPersonPhotoRequest struct { + // The obfuscated ID of the person whose photo to retrieve. + PersonID string `pathParam:"style=simple,explode=false,name=person_id"` + // Optional datasource override for crawled photos (e.g. AZURE, GDRIVE, OKTA). When omitted, the datasource is derived from the person's stored photo URL or the deployment's primary person datasource. + // + Ds *string `queryParam:"style=form,explode=true,name=ds"` +} + +func (o *GetPersonPhotoRequest) GetPersonID() string { + if o == nil { + return "" + } + return o.PersonID +} + +func (o *GetPersonPhotoRequest) GetDs() *string { + if o == nil { + return nil + } + return o.Ds +} + +type GetPersonPhotoResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // Photo bytes returned successfully. + // The Close method must be called on this field, even if it is not used, to prevent resource leaks. + TwoHundredImagePngResponseStream io.ReadCloser + // Photo bytes returned successfully. + // The Close method must be called on this field, even if it is not used, to prevent resource leaks. + TwoHundredImageJpegResponseStream io.ReadCloser + Headers map[string][]string +} + +func (o *GetPersonPhotoResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *GetPersonPhotoResponse) GetTwoHundredImagePngResponseStream() io.ReadCloser { + if o == nil { + return nil + } + return o.TwoHundredImagePngResponseStream +} + +func (o *GetPersonPhotoResponse) GetTwoHundredImageJpegResponseStream() io.ReadCloser { + if o == nil { + return nil + } + return o.TwoHundredImageJpegResponseStream +} + +func (o *GetPersonPhotoResponse) GetHeaders() map[string][]string { + if o == nil { + return map[string][]string{} + } + return o.Headers +} diff --git a/tests/mockserver/internal/sdk/models/operations/getpin.go b/tests/mockserver/internal/sdk/models/operations/getpin.go index 9ccb680e..0292ece8 100644 --- a/tests/mockserver/internal/sdk/models/operations/getpin.go +++ b/tests/mockserver/internal/sdk/models/operations/getpin.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type GetpinRequest struct { + // 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`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // Get pin request + Body components.GetPinRequest `request:"mediaType=application/json"` +} + +func (o *GetpinRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *GetpinRequest) GetBody() components.GetPinRequest { + if o == nil { + return components.GetPinRequest{} + } + return o.Body +} + type GetpinResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/getrestapiindexcustommetadataschemagroupname.go b/tests/mockserver/internal/sdk/models/operations/getrestapiindexcustommetadataschemagroupname.go new file mode 100644 index 00000000..e38d331a --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/getrestapiindexcustommetadataschemagroupname.go @@ -0,0 +1,39 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" +) + +type GetRestAPIIndexCustomMetadataSchemaGroupNameRequest struct { + // Name of the metadata group schema + GroupName string `pathParam:"style=simple,explode=false,name=groupName"` +} + +func (o *GetRestAPIIndexCustomMetadataSchemaGroupNameRequest) GetGroupName() string { + if o == nil { + return "" + } + return o.GroupName +} + +type GetRestAPIIndexCustomMetadataSchemaGroupNameResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // OK + CustomMetadataSchema *components.CustomMetadataSchema +} + +func (o *GetRestAPIIndexCustomMetadataSchemaGroupNameResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *GetRestAPIIndexCustomMetadataSchemaGroupNameResponse) GetCustomMetadataSchema() *components.CustomMetadataSchema { + if o == nil { + return nil + } + return o.CustomMetadataSchema +} diff --git a/tests/mockserver/internal/sdk/models/operations/getshortcut.go b/tests/mockserver/internal/sdk/models/operations/getshortcut.go index 032c32c5..feebc437 100644 --- a/tests/mockserver/internal/sdk/models/operations/getshortcut.go +++ b/tests/mockserver/internal/sdk/models/operations/getshortcut.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type GetshortcutRequest struct { + // 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`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // GetShortcut request + Body components.GetShortcutRequestUnion `request:"mediaType=application/json"` +} + +func (o *GetshortcutRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *GetshortcutRequest) GetBody() components.GetShortcutRequestUnion { + if o == nil { + return components.GetShortcutRequestUnion{} + } + return o.Body +} + type GetshortcutResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/gettoolserverauthstatus.go b/tests/mockserver/internal/sdk/models/operations/gettoolserverauthstatus.go new file mode 100644 index 00000000..26d8a0cc --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/gettoolserverauthstatus.go @@ -0,0 +1,39 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" +) + +type GetToolServerAuthStatusRequest struct { + // Unique identifier of the tool server. + ServerID string `pathParam:"style=simple,explode=false,name=serverId"` +} + +func (o *GetToolServerAuthStatusRequest) GetServerID() string { + if o == nil { + return "" + } + return o.ServerID +} + +type GetToolServerAuthStatusResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // Successful operation + ToolServerAuthStatusResponse *components.ToolServerAuthStatusResponse +} + +func (o *GetToolServerAuthStatusResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *GetToolServerAuthStatusResponse) GetToolServerAuthStatusResponse() *components.ToolServerAuthStatusResponse { + if o == nil { + return nil + } + return o.ToolServerAuthStatusResponse +} diff --git a/tests/mockserver/internal/sdk/models/operations/gettoolservertools.go b/tests/mockserver/internal/sdk/models/operations/gettoolservertools.go new file mode 100644 index 00000000..7a3bfa4e --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/gettoolservertools.go @@ -0,0 +1,48 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" +) + +type GetToolServerToolsRequest struct { + // Unique identifier of the tool server. + ServerID string `pathParam:"style=simple,explode=false,name=serverId"` + // Tool names to look up on this server. Maximum 100. + ToolNames []string `queryParam:"style=form,explode=false,name=toolNames"` +} + +func (o *GetToolServerToolsRequest) GetServerID() string { + if o == nil { + return "" + } + return o.ServerID +} + +func (o *GetToolServerToolsRequest) GetToolNames() []string { + if o == nil { + return []string{} + } + return o.ToolNames +} + +type GetToolServerToolsResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // Successful operation + ToolDefinitionsResponse *components.ToolDefinitionsResponse +} + +func (o *GetToolServerToolsResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *GetToolServerToolsResponse) GetToolDefinitionsResponse() *components.ToolDefinitionsResponse { + if o == nil { + return nil + } + return o.ToolDefinitionsResponse +} diff --git a/tests/mockserver/internal/sdk/models/operations/importagent.go b/tests/mockserver/internal/sdk/models/operations/importagent.go new file mode 100644 index 00000000..ddb85ab6 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/importagent.go @@ -0,0 +1,65 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" +) + +type ImportAgentRequest struct { + // 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`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // 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 `queryParam:"style=form,explode=true,name=timezoneOffset"` + // The ID of the agent to create or update. + AgentID string `pathParam:"style=simple,explode=false,name=agent_id"` + Body components.ImportAgentRequest `request:"mediaType=multipart/form-data"` +} + +func (o *ImportAgentRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *ImportAgentRequest) GetTimezoneOffset() *int64 { + if o == nil { + return nil + } + return o.TimezoneOffset +} + +func (o *ImportAgentRequest) GetAgentID() string { + if o == nil { + return "" + } + return o.AgentID +} + +func (o *ImportAgentRequest) GetBody() components.ImportAgentRequest { + if o == nil { + return components.ImportAgentRequest{} + } + return o.Body +} + +type ImportAgentResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // Success + ImportAgentResponse *components.ImportAgentResponse +} + +func (o *ImportAgentResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *ImportAgentResponse) GetImportAgentResponse() *components.ImportAgentResponse { + if o == nil { + return nil + } + return o.ImportAgentResponse +} diff --git a/tests/mockserver/internal/sdk/models/operations/insights.go b/tests/mockserver/internal/sdk/models/operations/insights.go index 0f883502..e644932e 100644 --- a/tests/mockserver/internal/sdk/models/operations/insights.go +++ b/tests/mockserver/internal/sdk/models/operations/insights.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type InsightsRequest struct { + // 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`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // Includes request parameters for insights requests. + Body components.InsightsRequest `request:"mediaType=application/json"` +} + +func (o *InsightsRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *InsightsRequest) GetBody() components.InsightsRequest { + if o == nil { + return components.InsightsRequest{} + } + return o.Body +} + type InsightsResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/listanswers.go b/tests/mockserver/internal/sdk/models/operations/listanswers.go index 2229cf7f..f001b009 100644 --- a/tests/mockserver/internal/sdk/models/operations/listanswers.go +++ b/tests/mockserver/internal/sdk/models/operations/listanswers.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type ListanswersRequest struct { + // 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`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // ListAnswers request + Body components.ListAnswersRequest `request:"mediaType=application/json"` +} + +func (o *ListanswersRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *ListanswersRequest) GetBody() components.ListAnswersRequest { + if o == nil { + return components.ListAnswersRequest{} + } + return o.Body +} + type ListanswersResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/listchats.go b/tests/mockserver/internal/sdk/models/operations/listchats.go index 36a64f6c..404637d2 100644 --- a/tests/mockserver/internal/sdk/models/operations/listchats.go +++ b/tests/mockserver/internal/sdk/models/operations/listchats.go @@ -7,10 +7,19 @@ import ( ) type ListchatsRequest struct { + // 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`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` // 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 `queryParam:"style=form,explode=true,name=timezoneOffset"` } +func (o *ListchatsRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + func (o *ListchatsRequest) GetTimezoneOffset() *int64 { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/operations/listcollections.go b/tests/mockserver/internal/sdk/models/operations/listcollections.go index 9efddbd6..423a2c49 100644 --- a/tests/mockserver/internal/sdk/models/operations/listcollections.go +++ b/tests/mockserver/internal/sdk/models/operations/listcollections.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type ListcollectionsRequest struct { + // 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`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // ListCollections request + Body components.ListCollectionsRequest `request:"mediaType=application/json"` +} + +func (o *ListcollectionsRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *ListcollectionsRequest) GetBody() components.ListCollectionsRequest { + if o == nil { + return components.ListCollectionsRequest{} + } + return o.Body +} + type ListcollectionsResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/listentities.go b/tests/mockserver/internal/sdk/models/operations/listentities.go index d05441f9..ee93a302 100644 --- a/tests/mockserver/internal/sdk/models/operations/listentities.go +++ b/tests/mockserver/internal/sdk/models/operations/listentities.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type ListentitiesRequest struct { + // 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`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // List people request + Body components.ListEntitiesRequest `request:"mediaType=application/json"` +} + +func (o *ListentitiesRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *ListentitiesRequest) GetBody() components.ListEntitiesRequest { + if o == nil { + return components.ListEntitiesRequest{} + } + return o.Body +} + type ListentitiesResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/listpins.go b/tests/mockserver/internal/sdk/models/operations/listpins.go index 45c93a45..ea87433e 100644 --- a/tests/mockserver/internal/sdk/models/operations/listpins.go +++ b/tests/mockserver/internal/sdk/models/operations/listpins.go @@ -6,8 +6,29 @@ import ( "mockserver/internal/sdk/models/components" ) -// ListpinsRequest - List pins request +// ListpinsRequestBody - List pins request +type ListpinsRequestBody struct { +} + type ListpinsRequest struct { + // 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`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // List pins request + Body ListpinsRequestBody `request:"mediaType=application/json"` +} + +func (o *ListpinsRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *ListpinsRequest) GetBody() ListpinsRequestBody { + if o == nil { + return ListpinsRequestBody{} + } + return o.Body } type ListpinsResponse struct { diff --git a/tests/mockserver/internal/sdk/models/operations/listshortcuts.go b/tests/mockserver/internal/sdk/models/operations/listshortcuts.go index a5b0962f..216616d5 100644 --- a/tests/mockserver/internal/sdk/models/operations/listshortcuts.go +++ b/tests/mockserver/internal/sdk/models/operations/listshortcuts.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type ListshortcutsRequest struct { + // 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`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // Filters, sorters, paging params required for pagination + Body components.ListShortcutsPaginatedRequest `request:"mediaType=application/json"` +} + +func (o *ListshortcutsRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *ListshortcutsRequest) GetBody() components.ListShortcutsPaginatedRequest { + if o == nil { + return components.ListShortcutsPaginatedRequest{} + } + return o.Body +} + type ListshortcutsResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/listverifications.go b/tests/mockserver/internal/sdk/models/operations/listverifications.go index 13015ee5..9ca1324d 100644 --- a/tests/mockserver/internal/sdk/models/operations/listverifications.go +++ b/tests/mockserver/internal/sdk/models/operations/listverifications.go @@ -9,6 +9,8 @@ import ( type ListverificationsRequest struct { // Maximum number of documents to return Count *int64 `queryParam:"style=form,explode=true,name=count"` + // 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`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` } func (o *ListverificationsRequest) GetCount() *int64 { @@ -18,6 +20,13 @@ func (o *ListverificationsRequest) GetCount() *int64 { return o.Count } +func (o *ListverificationsRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + type ListverificationsResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/messages.go b/tests/mockserver/internal/sdk/models/operations/messages.go index c33c0888..f978753b 100644 --- a/tests/mockserver/internal/sdk/models/operations/messages.go +++ b/tests/mockserver/internal/sdk/models/operations/messages.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type MessagesRequest struct { + // 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`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // Includes request params such as the id for channel/message and direction. + Body components.MessagesRequest `request:"mediaType=application/json"` +} + +func (o *MessagesRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *MessagesRequest) GetBody() components.MessagesRequest { + if o == nil { + return components.MessagesRequest{} + } + return o.Body +} + type MessagesResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/people.go b/tests/mockserver/internal/sdk/models/operations/people.go index fe1bf61d..bfd1b518 100644 --- a/tests/mockserver/internal/sdk/models/operations/people.go +++ b/tests/mockserver/internal/sdk/models/operations/people.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type PeopleRequest struct { + // 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`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // People request + Body components.PeopleRequest `request:"mediaType=application/json"` +} + +func (o *PeopleRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *PeopleRequest) GetBody() components.PeopleRequest { + if o == nil { + return components.PeopleRequest{} + } + return o.Body +} + type PeopleResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/pin.go b/tests/mockserver/internal/sdk/models/operations/pin.go index ba2d47e1..d6f74b3f 100644 --- a/tests/mockserver/internal/sdk/models/operations/pin.go +++ b/tests/mockserver/internal/sdk/models/operations/pin.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type PinRequest struct { + // 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`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // Details about the document and query for the pin. + Body components.PinRequest `request:"mediaType=application/json"` +} + +func (o *PinRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *PinRequest) GetBody() components.PinRequest { + if o == nil { + return components.PinRequest{} + } + return o.Body +} + type PinResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/platformagentscreaterun.go b/tests/mockserver/internal/sdk/models/operations/platformagentscreaterun.go new file mode 100644 index 00000000..a677b6c1 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/platformagentscreaterun.go @@ -0,0 +1,56 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" +) + +type PlatformAgentsCreateRunRequest struct { + // ID of the agent to run. + AgentID string `pathParam:"style=simple,explode=false,name=agent_id"` + Body components.PlatformAgentRunCreateRequest `request:"mediaType=application/json"` +} + +func (o *PlatformAgentsCreateRunRequest) GetAgentID() string { + if o == nil { + return "" + } + return o.AgentID +} + +func (o *PlatformAgentsCreateRunRequest) GetBody() components.PlatformAgentRunCreateRequest { + if o == nil { + return components.PlatformAgentRunCreateRequest{} + } + return o.Body +} + +type PlatformAgentsCreateRunResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // Successful response. + PlatformAgentRunWaitResponse *components.PlatformAgentRunWaitResponse + // Successful response. + Res *string +} + +func (o *PlatformAgentsCreateRunResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *PlatformAgentsCreateRunResponse) GetPlatformAgentRunWaitResponse() *components.PlatformAgentRunWaitResponse { + if o == nil { + return nil + } + return o.PlatformAgentRunWaitResponse +} + +func (o *PlatformAgentsCreateRunResponse) GetRes() *string { + if o == nil { + return nil + } + return o.Res +} diff --git a/tests/mockserver/internal/sdk/models/operations/platformagentsget.go b/tests/mockserver/internal/sdk/models/operations/platformagentsget.go new file mode 100644 index 00000000..9b2282ad --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/platformagentsget.go @@ -0,0 +1,39 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" +) + +type PlatformAgentsGetRequest struct { + // ID of the agent to retrieve. + AgentID string `pathParam:"style=simple,explode=false,name=agent_id"` +} + +func (o *PlatformAgentsGetRequest) GetAgentID() string { + if o == nil { + return "" + } + return o.AgentID +} + +type PlatformAgentsGetResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // Successful response. + PlatformAgentGetResponse *components.PlatformAgentGetResponse +} + +func (o *PlatformAgentsGetResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *PlatformAgentsGetResponse) GetPlatformAgentGetResponse() *components.PlatformAgentGetResponse { + if o == nil { + return nil + } + return o.PlatformAgentGetResponse +} diff --git a/tests/mockserver/internal/sdk/models/operations/platformagentsgetschemas.go b/tests/mockserver/internal/sdk/models/operations/platformagentsgetschemas.go new file mode 100644 index 00000000..117158ef --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/platformagentsgetschemas.go @@ -0,0 +1,60 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" + "mockserver/internal/sdk/utils" +) + +type PlatformAgentsGetSchemasRequest struct { + // ID of the agent whose schemas should be retrieved. + AgentID string `pathParam:"style=simple,explode=false,name=agent_id"` + // Whether to include tool metadata in the response. + IncludeTools *bool `default:"false" queryParam:"style=form,explode=true,name=include_tools"` +} + +func (p PlatformAgentsGetSchemasRequest) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformAgentsGetSchemasRequest) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"agent_id"}); err != nil { + return err + } + return nil +} + +func (o *PlatformAgentsGetSchemasRequest) GetAgentID() string { + if o == nil { + return "" + } + return o.AgentID +} + +func (o *PlatformAgentsGetSchemasRequest) GetIncludeTools() *bool { + if o == nil { + return nil + } + return o.IncludeTools +} + +type PlatformAgentsGetSchemasResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // Successful response. + PlatformAgentSchemasResponse *components.PlatformAgentSchemasResponse +} + +func (o *PlatformAgentsGetSchemasResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *PlatformAgentsGetSchemasResponse) GetPlatformAgentSchemasResponse() *components.PlatformAgentSchemasResponse { + if o == nil { + return nil + } + return o.PlatformAgentSchemasResponse +} diff --git a/tests/mockserver/internal/sdk/models/operations/platformagentssearch.go b/tests/mockserver/internal/sdk/models/operations/platformagentssearch.go new file mode 100644 index 00000000..cdbc9f55 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/platformagentssearch.go @@ -0,0 +1,27 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" +) + +type PlatformAgentsSearchResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // Successful response. + PlatformAgentsSearchResponse *components.PlatformAgentsSearchResponse +} + +func (o *PlatformAgentsSearchResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *PlatformAgentsSearchResponse) GetPlatformAgentsSearchResponse() *components.PlatformAgentsSearchResponse { + if o == nil { + return nil + } + return o.PlatformAgentsSearchResponse +} diff --git a/tests/mockserver/internal/sdk/models/operations/platformchatcreate.go b/tests/mockserver/internal/sdk/models/operations/platformchatcreate.go new file mode 100644 index 00000000..1676f643 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/platformchatcreate.go @@ -0,0 +1,36 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" +) + +type PlatformChatCreateResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // Successful response. + PlatformChatCompletedResponse *components.PlatformChatCompletedResponse + // Successful response. + Res *string +} + +func (o *PlatformChatCreateResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *PlatformChatCreateResponse) GetPlatformChatCompletedResponse() *components.PlatformChatCompletedResponse { + if o == nil { + return nil + } + return o.PlatformChatCompletedResponse +} + +func (o *PlatformChatCreateResponse) GetRes() *string { + if o == nil { + return nil + } + return o.Res +} diff --git a/tests/mockserver/internal/sdk/models/operations/platformsearch.go b/tests/mockserver/internal/sdk/models/operations/platformsearch.go new file mode 100644 index 00000000..381c8530 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/platformsearch.go @@ -0,0 +1,27 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" +) + +type PlatformSearchResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // Successful response. + PlatformSearchResponse *components.PlatformSearchResponse +} + +func (o *PlatformSearchResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *PlatformSearchResponse) GetPlatformSearchResponse() *components.PlatformSearchResponse { + if o == nil { + return nil + } + return o.PlatformSearchResponse +} diff --git a/tests/mockserver/internal/sdk/models/operations/platformsearchfilters.go b/tests/mockserver/internal/sdk/models/operations/platformsearchfilters.go new file mode 100644 index 00000000..8e578bcd --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/platformsearchfilters.go @@ -0,0 +1,58 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" +) + +type PlatformSearchFiltersRequest struct { + // Restrict metadata to one or more datasource identifiers as returned by this endpoint (for example, `jira`). With a nonblank `query`, exactly one datasource is required. Unknown or inaccessible identifiers return `invalid_datasource`. + // + Datasources []string `queryParam:"style=form,explode=true,name=datasources"` + // Optional search query that requests suggested filter values for the selected datasource. Must be nonblank when present. Triggers a search for facet values only; does not return documents. + // + Query *string `queryParam:"style=form,explode=true,name=query"` +} + +func (o *PlatformSearchFiltersRequest) GetDatasources() []string { + if o == nil { + return nil + } + return o.Datasources +} + +func (o *PlatformSearchFiltersRequest) GetQuery() *string { + if o == nil { + return nil + } + return o.Query +} + +type PlatformSearchFiltersResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // Successful response. + PlatformSearchFiltersResponse *components.PlatformSearchFiltersResponse + Headers map[string][]string +} + +func (o *PlatformSearchFiltersResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *PlatformSearchFiltersResponse) GetPlatformSearchFiltersResponse() *components.PlatformSearchFiltersResponse { + if o == nil { + return nil + } + return o.PlatformSearchFiltersResponse +} + +func (o *PlatformSearchFiltersResponse) GetHeaders() map[string][]string { + if o == nil { + return map[string][]string{} + } + return o.Headers +} diff --git a/tests/mockserver/internal/sdk/models/operations/platformskillscreate.go b/tests/mockserver/internal/sdk/models/operations/platformskillscreate.go new file mode 100644 index 00000000..7018793f --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/platformskillscreate.go @@ -0,0 +1,27 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" +) + +type PlatformSkillsCreateResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // Successful response. + PlatformSkillCreateResponse *components.PlatformSkillCreateResponse +} + +func (o *PlatformSkillsCreateResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *PlatformSkillsCreateResponse) GetPlatformSkillCreateResponse() *components.PlatformSkillCreateResponse { + if o == nil { + return nil + } + return o.PlatformSkillCreateResponse +} diff --git a/tests/mockserver/internal/sdk/models/operations/platformskillscreateversion.go b/tests/mockserver/internal/sdk/models/operations/platformskillscreateversion.go new file mode 100644 index 00000000..554b0438 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/platformskillscreateversion.go @@ -0,0 +1,47 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" +) + +type PlatformSkillsCreateVersionRequest struct { + // Glean skill ID. + SkillID string `pathParam:"style=simple,explode=false,name=skill_id"` + Body components.PlatformSkillVersionCreateRequest `request:"mediaType=multipart/form-data"` +} + +func (o *PlatformSkillsCreateVersionRequest) GetSkillID() string { + if o == nil { + return "" + } + return o.SkillID +} + +func (o *PlatformSkillsCreateVersionRequest) GetBody() components.PlatformSkillVersionCreateRequest { + if o == nil { + return components.PlatformSkillVersionCreateRequest{} + } + return o.Body +} + +type PlatformSkillsCreateVersionResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // Successful response. + PlatformSkillVersionCreateResponse *components.PlatformSkillVersionCreateResponse +} + +func (o *PlatformSkillsCreateVersionResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *PlatformSkillsCreateVersionResponse) GetPlatformSkillVersionCreateResponse() *components.PlatformSkillVersionCreateResponse { + if o == nil { + return nil + } + return o.PlatformSkillVersionCreateResponse +} diff --git a/tests/mockserver/internal/sdk/models/operations/platformskillsdelete.go b/tests/mockserver/internal/sdk/models/operations/platformskillsdelete.go new file mode 100644 index 00000000..ae1f874a --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/platformskillsdelete.go @@ -0,0 +1,30 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" +) + +type PlatformSkillsDeleteRequest struct { + // Glean skill ID. + SkillID string `pathParam:"style=simple,explode=false,name=skill_id"` +} + +func (o *PlatformSkillsDeleteRequest) GetSkillID() string { + if o == nil { + return "" + } + return o.SkillID +} + +type PlatformSkillsDeleteResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` +} + +func (o *PlatformSkillsDeleteResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} diff --git a/tests/mockserver/internal/sdk/models/operations/platformskillsget.go b/tests/mockserver/internal/sdk/models/operations/platformskillsget.go new file mode 100644 index 00000000..6ebb5b11 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/platformskillsget.go @@ -0,0 +1,39 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" +) + +type PlatformSkillsGetRequest struct { + // Glean skill ID. + SkillID string `pathParam:"style=simple,explode=false,name=skill_id"` +} + +func (o *PlatformSkillsGetRequest) GetSkillID() string { + if o == nil { + return "" + } + return o.SkillID +} + +type PlatformSkillsGetResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // Successful response. + PlatformSkillGetResponse *components.PlatformSkillGetResponse +} + +func (o *PlatformSkillsGetResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *PlatformSkillsGetResponse) GetPlatformSkillGetResponse() *components.PlatformSkillGetResponse { + if o == nil { + return nil + } + return o.PlatformSkillGetResponse +} diff --git a/tests/mockserver/internal/sdk/models/operations/platformskillsgetcontent.go b/tests/mockserver/internal/sdk/models/operations/platformskillsgetcontent.go new file mode 100644 index 00000000..2c134153 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/platformskillsgetcontent.go @@ -0,0 +1,49 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "io" + "mockserver/internal/sdk/models/components" +) + +type PlatformSkillsGetContentRequest struct { + // Glean skill ID. + SkillID string `pathParam:"style=simple,explode=false,name=skill_id"` +} + +func (o *PlatformSkillsGetContentRequest) GetSkillID() string { + if o == nil { + return "" + } + return o.SkillID +} + +type PlatformSkillsGetContentResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // Successful response. + // The Close method must be called on this field, even if it is not used, to prevent resource leaks. + ResponseStream io.ReadCloser + Headers map[string][]string +} + +func (o *PlatformSkillsGetContentResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *PlatformSkillsGetContentResponse) GetResponseStream() io.ReadCloser { + if o == nil { + return nil + } + return o.ResponseStream +} + +func (o *PlatformSkillsGetContentResponse) GetHeaders() map[string][]string { + if o == nil { + return map[string][]string{} + } + return o.Headers +} diff --git a/tests/mockserver/internal/sdk/models/operations/platformskillsgetversion.go b/tests/mockserver/internal/sdk/models/operations/platformskillsgetversion.go new file mode 100644 index 00000000..79761282 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/platformskillsgetversion.go @@ -0,0 +1,48 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" +) + +type PlatformSkillsGetVersionRequest struct { + // Glean skill ID. + SkillID string `pathParam:"style=simple,explode=false,name=skill_id"` + // Major version number. + Version int64 `pathParam:"style=simple,explode=false,name=version"` +} + +func (o *PlatformSkillsGetVersionRequest) GetSkillID() string { + if o == nil { + return "" + } + return o.SkillID +} + +func (o *PlatformSkillsGetVersionRequest) GetVersion() int64 { + if o == nil { + return 0 + } + return o.Version +} + +type PlatformSkillsGetVersionResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // Successful response. + PlatformSkillVersionGetResponse *components.PlatformSkillVersionGetResponse +} + +func (o *PlatformSkillsGetVersionResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *PlatformSkillsGetVersionResponse) GetPlatformSkillVersionGetResponse() *components.PlatformSkillVersionGetResponse { + if o == nil { + return nil + } + return o.PlatformSkillVersionGetResponse +} diff --git a/tests/mockserver/internal/sdk/models/operations/platformskillsgetversioncontent.go b/tests/mockserver/internal/sdk/models/operations/platformskillsgetversioncontent.go new file mode 100644 index 00000000..f8138d2e --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/platformskillsgetversioncontent.go @@ -0,0 +1,58 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "io" + "mockserver/internal/sdk/models/components" +) + +type PlatformSkillsGetVersionContentRequest struct { + // Glean skill ID. + SkillID string `pathParam:"style=simple,explode=false,name=skill_id"` + // Major version number. + Version int64 `pathParam:"style=simple,explode=false,name=version"` +} + +func (o *PlatformSkillsGetVersionContentRequest) GetSkillID() string { + if o == nil { + return "" + } + return o.SkillID +} + +func (o *PlatformSkillsGetVersionContentRequest) GetVersion() int64 { + if o == nil { + return 0 + } + return o.Version +} + +type PlatformSkillsGetVersionContentResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // Successful response. + // The Close method must be called on this field, even if it is not used, to prevent resource leaks. + ResponseStream io.ReadCloser + Headers map[string][]string +} + +func (o *PlatformSkillsGetVersionContentResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *PlatformSkillsGetVersionContentResponse) GetResponseStream() io.ReadCloser { + if o == nil { + return nil + } + return o.ResponseStream +} + +func (o *PlatformSkillsGetVersionContentResponse) GetHeaders() map[string][]string { + if o == nil { + return map[string][]string{} + } + return o.Headers +} diff --git a/tests/mockserver/internal/sdk/models/operations/platformskillsimport.go b/tests/mockserver/internal/sdk/models/operations/platformskillsimport.go new file mode 100644 index 00000000..05953c09 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/platformskillsimport.go @@ -0,0 +1,27 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" +) + +type PlatformSkillsImportResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // Skills imported successfully. + PlatformSkillImportResponse *components.PlatformSkillImportResponse +} + +func (o *PlatformSkillsImportResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *PlatformSkillsImportResponse) GetPlatformSkillImportResponse() *components.PlatformSkillImportResponse { + if o == nil { + return nil + } + return o.PlatformSkillImportResponse +} diff --git a/tests/mockserver/internal/sdk/models/operations/platformskillslist.go b/tests/mockserver/internal/sdk/models/operations/platformskillslist.go new file mode 100644 index 00000000..40f74199 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/platformskillslist.go @@ -0,0 +1,48 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" +) + +type PlatformSkillsListRequest struct { + // Maximum number of skills to return. + PageSize *int64 `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 (o *PlatformSkillsListRequest) GetPageSize() *int64 { + if o == nil { + return nil + } + return o.PageSize +} + +func (o *PlatformSkillsListRequest) GetCursor() *string { + if o == nil { + return nil + } + return o.Cursor +} + +type PlatformSkillsListResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // Successful response. + PlatformSkillsListResponse *components.PlatformSkillsListResponse +} + +func (o *PlatformSkillsListResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *PlatformSkillsListResponse) GetPlatformSkillsListResponse() *components.PlatformSkillsListResponse { + if o == nil { + return nil + } + return o.PlatformSkillsListResponse +} diff --git a/tests/mockserver/internal/sdk/models/operations/platformskillslistversions.go b/tests/mockserver/internal/sdk/models/operations/platformskillslistversions.go new file mode 100644 index 00000000..3853971f --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/platformskillslistversions.go @@ -0,0 +1,57 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" +) + +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"` + // Opaque pagination cursor from a previous response. + Cursor *string `queryParam:"style=form,explode=true,name=cursor"` +} + +func (o *PlatformSkillsListVersionsRequest) GetSkillID() string { + if o == nil { + return "" + } + return o.SkillID +} + +func (o *PlatformSkillsListVersionsRequest) GetPageSize() *int64 { + if o == nil { + return nil + } + return o.PageSize +} + +func (o *PlatformSkillsListVersionsRequest) GetCursor() *string { + if o == nil { + return nil + } + return o.Cursor +} + +type PlatformSkillsListVersionsResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // Successful response. + PlatformSkillVersionsListResponse *components.PlatformSkillVersionsListResponse +} + +func (o *PlatformSkillsListVersionsResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *PlatformSkillsListVersionsResponse) GetPlatformSkillVersionsListResponse() *components.PlatformSkillVersionsListResponse { + if o == nil { + return nil + } + return o.PlatformSkillVersionsListResponse +} diff --git a/tests/mockserver/internal/sdk/models/operations/platformskillspreviewsource.go b/tests/mockserver/internal/sdk/models/operations/platformskillspreviewsource.go new file mode 100644 index 00000000..a32c6102 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/platformskillspreviewsource.go @@ -0,0 +1,36 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" +) + +type PlatformSkillsPreviewSourceResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // Successful response. + PlatformSkillSourcePreviewResponse *components.PlatformSkillSourcePreviewResponse + // Successful response. + Res *string +} + +func (o *PlatformSkillsPreviewSourceResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *PlatformSkillsPreviewSourceResponse) GetPlatformSkillSourcePreviewResponse() *components.PlatformSkillSourcePreviewResponse { + if o == nil { + return nil + } + 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/platformskillssync.go b/tests/mockserver/internal/sdk/models/operations/platformskillssync.go new file mode 100644 index 00000000..447f71a2 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/platformskillssync.go @@ -0,0 +1,39 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" +) + +type PlatformSkillsSyncRequest struct { + // ID of the GitHub-imported skill to sync. + SkillID string `pathParam:"style=simple,explode=false,name=skill_id"` +} + +func (o *PlatformSkillsSyncRequest) GetSkillID() string { + if o == nil { + return "" + } + return o.SkillID +} + +type PlatformSkillsSyncResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // Skill sync completed successfully. + PlatformSkillSyncResponse *components.PlatformSkillSyncResponse +} + +func (o *PlatformSkillsSyncResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *PlatformSkillsSyncResponse) GetPlatformSkillSyncResponse() *components.PlatformSkillSyncResponse { + if o == nil { + return nil + } + return o.PlatformSkillSyncResponse +} diff --git a/tests/mockserver/internal/sdk/models/operations/platformskillsupdate.go b/tests/mockserver/internal/sdk/models/operations/platformskillsupdate.go new file mode 100644 index 00000000..ec45cac3 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/platformskillsupdate.go @@ -0,0 +1,47 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" +) + +type PlatformSkillsUpdateRequest struct { + // Glean skill ID. + SkillID string `pathParam:"style=simple,explode=false,name=skill_id"` + Body components.PlatformSkillUpdateRequest `request:"mediaType=application/json"` +} + +func (o *PlatformSkillsUpdateRequest) GetSkillID() string { + if o == nil { + return "" + } + return o.SkillID +} + +func (o *PlatformSkillsUpdateRequest) GetBody() components.PlatformSkillUpdateRequest { + if o == nil { + return components.PlatformSkillUpdateRequest{} + } + return o.Body +} + +type PlatformSkillsUpdateResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // Successful response. + PlatformSkillUpdateResponse *components.PlatformSkillUpdateResponse +} + +func (o *PlatformSkillsUpdateResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *PlatformSkillsUpdateResponse) GetPlatformSkillUpdateResponse() *components.PlatformSkillUpdateResponse { + if o == nil { + return nil + } + return o.PlatformSkillUpdateResponse +} diff --git a/tests/mockserver/internal/sdk/models/operations/platformskillsvalidate.go b/tests/mockserver/internal/sdk/models/operations/platformskillsvalidate.go new file mode 100644 index 00000000..a05a3ba6 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/platformskillsvalidate.go @@ -0,0 +1,27 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" +) + +type PlatformSkillsValidateResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // Successful response. + PlatformSkillValidationResponse *components.PlatformSkillValidationResponse +} + +func (o *PlatformSkillsValidateResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *PlatformSkillsValidateResponse) GetPlatformSkillValidationResponse() *components.PlatformSkillValidationResponse { + if o == nil { + return nil + } + return o.PlatformSkillValidationResponse +} diff --git a/tests/mockserver/internal/sdk/models/operations/platformtriggerpresetseventssearch.go b/tests/mockserver/internal/sdk/models/operations/platformtriggerpresetseventssearch.go new file mode 100644 index 00000000..37c7771e --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/platformtriggerpresetseventssearch.go @@ -0,0 +1,47 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" +) + +type PlatformTriggerPresetsEventsSearchRequest struct { + // ID of the preset to preview. + PresetID string `pathParam:"style=simple,explode=false,name=preset_id"` + Body *components.PlatformTriggerPresetEventSearchRequest `request:"mediaType=application/json"` +} + +func (o *PlatformTriggerPresetsEventsSearchRequest) GetPresetID() string { + if o == nil { + return "" + } + return o.PresetID +} + +func (o *PlatformTriggerPresetsEventsSearchRequest) GetBody() *components.PlatformTriggerPresetEventSearchRequest { + if o == nil { + return nil + } + return o.Body +} + +type PlatformTriggerPresetsEventsSearchResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // Successful response. + PlatformTriggerEventSearchResponse *components.PlatformTriggerEventSearchResponse +} + +func (o *PlatformTriggerPresetsEventsSearchResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *PlatformTriggerPresetsEventsSearchResponse) GetPlatformTriggerEventSearchResponse() *components.PlatformTriggerEventSearchResponse { + if o == nil { + return nil + } + return o.PlatformTriggerEventSearchResponse +} diff --git a/tests/mockserver/internal/sdk/models/operations/platformtriggerpresetsget.go b/tests/mockserver/internal/sdk/models/operations/platformtriggerpresetsget.go new file mode 100644 index 00000000..b6d75f2a --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/platformtriggerpresetsget.go @@ -0,0 +1,39 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" +) + +type PlatformTriggerPresetsGetRequest struct { + // ID of the preset to retrieve. + PresetID string `pathParam:"style=simple,explode=false,name=preset_id"` +} + +func (o *PlatformTriggerPresetsGetRequest) GetPresetID() string { + if o == nil { + return "" + } + return o.PresetID +} + +type PlatformTriggerPresetsGetResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // Successful response. + PlatformTriggerPresetGetResponse *components.PlatformTriggerPresetGetResponse +} + +func (o *PlatformTriggerPresetsGetResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *PlatformTriggerPresetsGetResponse) GetPlatformTriggerPresetGetResponse() *components.PlatformTriggerPresetGetResponse { + if o == nil { + return nil + } + return o.PlatformTriggerPresetGetResponse +} diff --git a/tests/mockserver/internal/sdk/models/operations/platformtriggerpresetsinputvalueslist.go b/tests/mockserver/internal/sdk/models/operations/platformtriggerpresetsinputvalueslist.go new file mode 100644 index 00000000..f177d8a9 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/platformtriggerpresetsinputvalueslist.go @@ -0,0 +1,58 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" +) + +type PlatformTriggerPresetsInputValuesListRequest struct { + // ID of the preset the input belongs to. + PresetID string `pathParam:"style=simple,explode=false,name=preset_id"` + // Field identifier of the input whose values to list. + Field string `queryParam:"style=form,explode=true,name=field"` + // Prefix filter over the input's option values, for typeahead. Matching is on the option value, not its display name. + // + Query *string `queryParam:"style=form,explode=true,name=query"` +} + +func (o *PlatformTriggerPresetsInputValuesListRequest) GetPresetID() string { + if o == nil { + return "" + } + return o.PresetID +} + +func (o *PlatformTriggerPresetsInputValuesListRequest) GetField() string { + if o == nil { + return "" + } + return o.Field +} + +func (o *PlatformTriggerPresetsInputValuesListRequest) GetQuery() *string { + if o == nil { + return nil + } + return o.Query +} + +type PlatformTriggerPresetsInputValuesListResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // Successful response. + PlatformTriggerPresetInputValueListResponse *components.PlatformTriggerPresetInputValueListResponse +} + +func (o *PlatformTriggerPresetsInputValuesListResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *PlatformTriggerPresetsInputValuesListResponse) GetPlatformTriggerPresetInputValueListResponse() *components.PlatformTriggerPresetInputValueListResponse { + if o == nil { + return nil + } + return o.PlatformTriggerPresetInputValueListResponse +} diff --git a/tests/mockserver/internal/sdk/models/operations/platformtriggerpresetslist.go b/tests/mockserver/internal/sdk/models/operations/platformtriggerpresetslist.go new file mode 100644 index 00000000..d73911f3 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/platformtriggerpresetslist.go @@ -0,0 +1,69 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" + "mockserver/internal/sdk/utils" +) + +type PlatformTriggerPresetsListRequest struct { + // Restrict results to presets for a single datasource (e.g. github). + Datasource *string `queryParam:"style=form,explode=true,name=datasource"` + // Maximum number of presets to return. + PageSize *int64 `default:"50" 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 PlatformTriggerPresetsListRequest) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformTriggerPresetsListRequest) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, nil); err != nil { + return err + } + return nil +} + +func (o *PlatformTriggerPresetsListRequest) GetDatasource() *string { + if o == nil { + return nil + } + return o.Datasource +} + +func (o *PlatformTriggerPresetsListRequest) GetPageSize() *int64 { + if o == nil { + return nil + } + return o.PageSize +} + +func (o *PlatformTriggerPresetsListRequest) GetCursor() *string { + if o == nil { + return nil + } + return o.Cursor +} + +type PlatformTriggerPresetsListResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // Successful response. + PlatformTriggerPresetListResponse *components.PlatformTriggerPresetListResponse +} + +func (o *PlatformTriggerPresetsListResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *PlatformTriggerPresetsListResponse) GetPlatformTriggerPresetListResponse() *components.PlatformTriggerPresetListResponse { + if o == nil { + return nil + } + return o.PlatformTriggerPresetListResponse +} diff --git a/tests/mockserver/internal/sdk/models/operations/platformtriggerscreate.go b/tests/mockserver/internal/sdk/models/operations/platformtriggerscreate.go new file mode 100644 index 00000000..664f9c97 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/platformtriggerscreate.go @@ -0,0 +1,27 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" +) + +type PlatformTriggersCreateResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // Trigger created. + PlatformTriggerCreateResponse *components.PlatformTriggerCreateResponse +} + +func (o *PlatformTriggersCreateResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *PlatformTriggersCreateResponse) GetPlatformTriggerCreateResponse() *components.PlatformTriggerCreateResponse { + if o == nil { + return nil + } + return o.PlatformTriggerCreateResponse +} diff --git a/tests/mockserver/internal/sdk/models/operations/platformtriggersdelete.go b/tests/mockserver/internal/sdk/models/operations/platformtriggersdelete.go new file mode 100644 index 00000000..58a202ca --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/platformtriggersdelete.go @@ -0,0 +1,30 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" +) + +type PlatformTriggersDeleteRequest struct { + // ID of the trigger to delete. + TriggerID string `pathParam:"style=simple,explode=false,name=trigger_id"` +} + +func (o *PlatformTriggersDeleteRequest) GetTriggerID() string { + if o == nil { + return "" + } + return o.TriggerID +} + +type PlatformTriggersDeleteResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` +} + +func (o *PlatformTriggersDeleteResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} diff --git a/tests/mockserver/internal/sdk/models/operations/platformtriggerseventssearch.go b/tests/mockserver/internal/sdk/models/operations/platformtriggerseventssearch.go new file mode 100644 index 00000000..bfcff574 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/platformtriggerseventssearch.go @@ -0,0 +1,47 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" +) + +type PlatformTriggersEventsSearchRequest struct { + // ID of the trigger whose events to search. + TriggerID string `pathParam:"style=simple,explode=false,name=trigger_id"` + Body *components.PlatformTriggerEventSearchRequest `request:"mediaType=application/json"` +} + +func (o *PlatformTriggersEventsSearchRequest) GetTriggerID() string { + if o == nil { + return "" + } + return o.TriggerID +} + +func (o *PlatformTriggersEventsSearchRequest) GetBody() *components.PlatformTriggerEventSearchRequest { + if o == nil { + return nil + } + return o.Body +} + +type PlatformTriggersEventsSearchResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // Successful response. + PlatformTriggerEventSearchResponse *components.PlatformTriggerEventSearchResponse +} + +func (o *PlatformTriggersEventsSearchResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *PlatformTriggersEventsSearchResponse) GetPlatformTriggerEventSearchResponse() *components.PlatformTriggerEventSearchResponse { + if o == nil { + return nil + } + return o.PlatformTriggerEventSearchResponse +} diff --git a/tests/mockserver/internal/sdk/models/operations/platformtriggersget.go b/tests/mockserver/internal/sdk/models/operations/platformtriggersget.go new file mode 100644 index 00000000..548dcbf0 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/platformtriggersget.go @@ -0,0 +1,39 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" +) + +type PlatformTriggersGetRequest struct { + // ID of the trigger to retrieve. + TriggerID string `pathParam:"style=simple,explode=false,name=trigger_id"` +} + +func (o *PlatformTriggersGetRequest) GetTriggerID() string { + if o == nil { + return "" + } + return o.TriggerID +} + +type PlatformTriggersGetResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // Successful response. + PlatformTriggerGetResponse *components.PlatformTriggerGetResponse +} + +func (o *PlatformTriggersGetResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *PlatformTriggersGetResponse) GetPlatformTriggerGetResponse() *components.PlatformTriggerGetResponse { + if o == nil { + return nil + } + return o.PlatformTriggerGetResponse +} diff --git a/tests/mockserver/internal/sdk/models/operations/platformtriggerslist.go b/tests/mockserver/internal/sdk/models/operations/platformtriggerslist.go new file mode 100644 index 00000000..24df6582 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/platformtriggerslist.go @@ -0,0 +1,60 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" + "mockserver/internal/sdk/utils" +) + +type PlatformTriggersListRequest struct { + // Maximum number of triggers to return. + PageSize *int64 `default:"50" 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 PlatformTriggersListRequest) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformTriggersListRequest) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, nil); err != nil { + return err + } + return nil +} + +func (o *PlatformTriggersListRequest) GetPageSize() *int64 { + if o == nil { + return nil + } + return o.PageSize +} + +func (o *PlatformTriggersListRequest) GetCursor() *string { + if o == nil { + return nil + } + return o.Cursor +} + +type PlatformTriggersListResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // Successful response. + PlatformTriggerListResponse *components.PlatformTriggerListResponse +} + +func (o *PlatformTriggersListResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *PlatformTriggersListResponse) GetPlatformTriggerListResponse() *components.PlatformTriggerListResponse { + if o == nil { + return nil + } + return o.PlatformTriggerListResponse +} diff --git a/tests/mockserver/internal/sdk/models/operations/platformtriggersupdate.go b/tests/mockserver/internal/sdk/models/operations/platformtriggersupdate.go new file mode 100644 index 00000000..0c16788f --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/platformtriggersupdate.go @@ -0,0 +1,47 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" +) + +type PlatformTriggersUpdateRequest struct { + // ID of the trigger to update. + TriggerID string `pathParam:"style=simple,explode=false,name=trigger_id"` + Body components.PlatformTriggerUpdateRequest `request:"mediaType=application/json"` +} + +func (o *PlatformTriggersUpdateRequest) GetTriggerID() string { + if o == nil { + return "" + } + return o.TriggerID +} + +func (o *PlatformTriggersUpdateRequest) GetBody() components.PlatformTriggerUpdateRequest { + if o == nil { + return components.PlatformTriggerUpdateRequest{} + } + return o.Body +} + +type PlatformTriggersUpdateResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // Trigger updated. + PlatformTriggerGetResponse *components.PlatformTriggerGetResponse +} + +func (o *PlatformTriggersUpdateResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *PlatformTriggersUpdateResponse) GetPlatformTriggerGetResponse() *components.PlatformTriggerGetResponse { + if o == nil { + return nil + } + return o.PlatformTriggerGetResponse +} diff --git a/tests/mockserver/internal/sdk/models/operations/postapiindexv1debugdatasourcedocumentevents.go b/tests/mockserver/internal/sdk/models/operations/postapiindexv1debugdatasourcedocumentevents.go new file mode 100644 index 00000000..33447581 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/postapiindexv1debugdatasourcedocumentevents.go @@ -0,0 +1,47 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" +) + +type PostAPIIndexV1DebugDatasourceDocumentEventsRequest struct { + // The datasource to which the document belongs + Datasource string `pathParam:"style=simple,explode=false,name=datasource"` + Body components.DebugDocumentLifecycleRequest `request:"mediaType=application/json"` +} + +func (o *PostAPIIndexV1DebugDatasourceDocumentEventsRequest) GetDatasource() string { + if o == nil { + return "" + } + return o.Datasource +} + +func (o *PostAPIIndexV1DebugDatasourceDocumentEventsRequest) GetBody() components.DebugDocumentLifecycleRequest { + if o == nil { + return components.DebugDocumentLifecycleRequest{} + } + return o.Body +} + +type PostAPIIndexV1DebugDatasourceDocumentEventsResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // OK + DebugDocumentLifecycleResponse *components.DebugDocumentLifecycleResponse +} + +func (o *PostAPIIndexV1DebugDatasourceDocumentEventsResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *PostAPIIndexV1DebugDatasourceDocumentEventsResponse) GetDebugDocumentLifecycleResponse() *components.DebugDocumentLifecycleResponse { + if o == nil { + return nil + } + return o.DebugDocumentLifecycleResponse +} diff --git a/tests/mockserver/internal/sdk/models/operations/postrestapiindexsubmissionsdatasourceinstancetype.go b/tests/mockserver/internal/sdk/models/operations/postrestapiindexsubmissionsdatasourceinstancetype.go new file mode 100644 index 00000000..f18b0916 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/postrestapiindexsubmissionsdatasourceinstancetype.go @@ -0,0 +1,68 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" +) + +type PostRestAPIIndexSubmissionsDatasourceInstanceTypeRequest struct { + // Datasource instance that should process the submission + DatasourceInstance string `pathParam:"style=simple,explode=false,name=datasourceInstance"` + // Submission type registered for the datasource + Type string `pathParam:"style=simple,explode=false,name=type"` + Body map[string]any `request:"mediaType=application/json"` +} + +func (o *PostRestAPIIndexSubmissionsDatasourceInstanceTypeRequest) GetDatasourceInstance() string { + if o == nil { + return "" + } + return o.DatasourceInstance +} + +func (o *PostRestAPIIndexSubmissionsDatasourceInstanceTypeRequest) GetType() string { + if o == nil { + return "" + } + return o.Type +} + +func (o *PostRestAPIIndexSubmissionsDatasourceInstanceTypeRequest) GetBody() map[string]any { + if o == nil { + return map[string]any{} + } + return o.Body +} + +// PostRestAPIIndexSubmissionsDatasourceInstanceTypeResponseBody - Accepted +type PostRestAPIIndexSubmissionsDatasourceInstanceTypeResponseBody struct { + RequestID string `json:"requestId"` +} + +func (o *PostRestAPIIndexSubmissionsDatasourceInstanceTypeResponseBody) GetRequestID() string { + if o == nil { + return "" + } + return o.RequestID +} + +type PostRestAPIIndexSubmissionsDatasourceInstanceTypeResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // Accepted + Object *PostRestAPIIndexSubmissionsDatasourceInstanceTypeResponseBody +} + +func (o *PostRestAPIIndexSubmissionsDatasourceInstanceTypeResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *PostRestAPIIndexSubmissionsDatasourceInstanceTypeResponse) GetObject() *PostRestAPIIndexSubmissionsDatasourceInstanceTypeResponseBody { + if o == nil { + return nil + } + return o.Object +} diff --git a/tests/mockserver/internal/sdk/models/operations/putrestapiindexcustommetadataschemagroupname.go b/tests/mockserver/internal/sdk/models/operations/putrestapiindexcustommetadataschemagroupname.go new file mode 100644 index 00000000..8aabd064 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/putrestapiindexcustommetadataschemagroupname.go @@ -0,0 +1,47 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" +) + +type PutRestAPIIndexCustomMetadataSchemaGroupNameRequest struct { + // Name of the metadata group schema + GroupName string `pathParam:"style=simple,explode=false,name=groupName"` + Body components.CustomMetadataSchema `request:"mediaType=application/json"` +} + +func (o *PutRestAPIIndexCustomMetadataSchemaGroupNameRequest) GetGroupName() string { + if o == nil { + return "" + } + return o.GroupName +} + +func (o *PutRestAPIIndexCustomMetadataSchemaGroupNameRequest) GetBody() components.CustomMetadataSchema { + if o == nil { + return components.CustomMetadataSchema{} + } + return o.Body +} + +type PutRestAPIIndexCustomMetadataSchemaGroupNameResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // OK + SuccessResponse *components.SuccessResponse +} + +func (o *PutRestAPIIndexCustomMetadataSchemaGroupNameResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *PutRestAPIIndexCustomMetadataSchemaGroupNameResponse) GetSuccessResponse() *components.SuccessResponse { + if o == nil { + return nil + } + return o.SuccessResponse +} diff --git a/tests/mockserver/internal/sdk/models/operations/putrestapiindexdocumentdocidcustommetadatagroupname.go b/tests/mockserver/internal/sdk/models/operations/putrestapiindexdocumentdocidcustommetadatagroupname.go new file mode 100644 index 00000000..2722a184 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/putrestapiindexdocumentdocidcustommetadatagroupname.go @@ -0,0 +1,56 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" +) + +type PutRestAPIIndexDocumentDocIDCustomMetadataGroupNameRequest struct { + // Unique Glean identifier of the document + DocID string `pathParam:"style=simple,explode=false,name=docId"` + // Name of the metadata group as specified while adding schema + GroupName string `pathParam:"style=simple,explode=false,name=groupName"` + Body components.CustomMetadataPutRequest `request:"mediaType=application/json"` +} + +func (o *PutRestAPIIndexDocumentDocIDCustomMetadataGroupNameRequest) GetDocID() string { + if o == nil { + return "" + } + return o.DocID +} + +func (o *PutRestAPIIndexDocumentDocIDCustomMetadataGroupNameRequest) GetGroupName() string { + if o == nil { + return "" + } + return o.GroupName +} + +func (o *PutRestAPIIndexDocumentDocIDCustomMetadataGroupNameRequest) GetBody() components.CustomMetadataPutRequest { + if o == nil { + return components.CustomMetadataPutRequest{} + } + return o.Body +} + +type PutRestAPIIndexDocumentDocIDCustomMetadataGroupNameResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // OK + SuccessResponse *components.SuccessResponse +} + +func (o *PutRestAPIIndexDocumentDocIDCustomMetadataGroupNameResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *PutRestAPIIndexDocumentDocIDCustomMetadataGroupNameResponse) GetSuccessResponse() *components.SuccessResponse { + if o == nil { + return nil + } + return o.SuccessResponse +} diff --git a/tests/mockserver/internal/sdk/models/operations/recommendations.go b/tests/mockserver/internal/sdk/models/operations/recommendations.go index 9c74d480..1a7d11cd 100644 --- a/tests/mockserver/internal/sdk/models/operations/recommendations.go +++ b/tests/mockserver/internal/sdk/models/operations/recommendations.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type RecommendationsRequest struct { + // 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`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // Recommendations request + Body components.RecommendationsRequest `request:"mediaType=application/json"` +} + +func (o *RecommendationsRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *RecommendationsRequest) GetBody() components.RecommendationsRequest { + if o == nil { + return components.RecommendationsRequest{} + } + return o.Body +} + type RecommendationsResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/rotatedatasourcecredentials.go b/tests/mockserver/internal/sdk/models/operations/rotatedatasourcecredentials.go new file mode 100644 index 00000000..f5ac0b26 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/rotatedatasourcecredentials.go @@ -0,0 +1,47 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" +) + +type RotateDatasourceCredentialsRequest struct { + // The full datasource instance identifier (e.g. o365sharepoint_abc123) + DatasourceInstanceID string `pathParam:"style=simple,explode=false,name=datasourceInstanceId"` + Body components.RotateDatasourceCredentialsRequest `request:"mediaType=application/json"` +} + +func (o *RotateDatasourceCredentialsRequest) GetDatasourceInstanceID() string { + if o == nil { + return "" + } + return o.DatasourceInstanceID +} + +func (o *RotateDatasourceCredentialsRequest) GetBody() components.RotateDatasourceCredentialsRequest { + if o == nil { + return components.RotateDatasourceCredentialsRequest{} + } + return o.Body +} + +type RotateDatasourceCredentialsResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // OK + DatasourceCredentialStatusResponse *components.DatasourceCredentialStatusResponse +} + +func (o *RotateDatasourceCredentialsResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *RotateDatasourceCredentialsResponse) GetDatasourceCredentialStatusResponse() *components.DatasourceCredentialStatusResponse { + if o == nil { + return nil + } + return o.DatasourceCredentialStatusResponse +} diff --git a/tests/mockserver/internal/sdk/models/operations/search.go b/tests/mockserver/internal/sdk/models/operations/search.go index 6b1d9873..7467c541 100644 --- a/tests/mockserver/internal/sdk/models/operations/search.go +++ b/tests/mockserver/internal/sdk/models/operations/search.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type SearchRequest struct { + // 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`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // Search request + Body components.SearchRequest `request:"mediaType=application/json"` +} + +func (o *SearchRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *SearchRequest) GetBody() components.SearchRequest { + if o == nil { + return components.SearchRequest{} + } + return o.Body +} + type SearchResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/summarize.go b/tests/mockserver/internal/sdk/models/operations/summarize.go index 90cc598d..9bd6a38a 100644 --- a/tests/mockserver/internal/sdk/models/operations/summarize.go +++ b/tests/mockserver/internal/sdk/models/operations/summarize.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type SummarizeRequest struct { + // 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`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // Includes request params such as the query and specs of the documents to summarize. + Body components.SummarizeRequest `request:"mediaType=application/json"` +} + +func (o *SummarizeRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *SummarizeRequest) GetBody() components.SummarizeRequest { + if o == nil { + return components.SummarizeRequest{} + } + return o.Body +} + type SummarizeResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/unpin.go b/tests/mockserver/internal/sdk/models/operations/unpin.go index 4bff2a3c..f6aeca75 100644 --- a/tests/mockserver/internal/sdk/models/operations/unpin.go +++ b/tests/mockserver/internal/sdk/models/operations/unpin.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type UnpinRequest struct { + // 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`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // Details about the pin being unpinned. + Body components.Unpin `request:"mediaType=application/json"` +} + +func (o *UnpinRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *UnpinRequest) GetBody() components.Unpin { + if o == nil { + return components.Unpin{} + } + return o.Body +} + type UnpinResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` } diff --git a/tests/mockserver/internal/sdk/models/operations/updateannouncement.go b/tests/mockserver/internal/sdk/models/operations/updateannouncement.go index 927436ef..4cc872ff 100644 --- a/tests/mockserver/internal/sdk/models/operations/updateannouncement.go +++ b/tests/mockserver/internal/sdk/models/operations/updateannouncement.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type UpdateannouncementRequest struct { + // 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`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // Announcement content. Id need to be specified for the announcement. + Body components.UpdateAnnouncementRequest `request:"mediaType=application/json"` +} + +func (o *UpdateannouncementRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *UpdateannouncementRequest) GetBody() components.UpdateAnnouncementRequest { + if o == nil { + return components.UpdateAnnouncementRequest{} + } + return o.Body +} + type UpdateannouncementResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/updatedatasourceinstanceconfiguration.go b/tests/mockserver/internal/sdk/models/operations/updatedatasourceinstanceconfiguration.go new file mode 100644 index 00000000..b8568c63 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/updatedatasourceinstanceconfiguration.go @@ -0,0 +1,56 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" +) + +type UpdateDatasourceInstanceConfigurationRequest struct { + // The datasource type identifier (e.g. o365sharepoint) + DatasourceID string `pathParam:"style=simple,explode=false,name=datasourceId"` + // The datasource instance identifier + InstanceID string `pathParam:"style=simple,explode=false,name=instanceId"` + Body components.UpdateDatasourceConfigurationRequest `request:"mediaType=application/json"` +} + +func (o *UpdateDatasourceInstanceConfigurationRequest) GetDatasourceID() string { + if o == nil { + return "" + } + return o.DatasourceID +} + +func (o *UpdateDatasourceInstanceConfigurationRequest) GetInstanceID() string { + if o == nil { + return "" + } + return o.InstanceID +} + +func (o *UpdateDatasourceInstanceConfigurationRequest) GetBody() components.UpdateDatasourceConfigurationRequest { + if o == nil { + return components.UpdateDatasourceConfigurationRequest{} + } + return o.Body +} + +type UpdateDatasourceInstanceConfigurationResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // OK + DatasourceConfigurationResponse *components.DatasourceConfigurationResponse +} + +func (o *UpdateDatasourceInstanceConfigurationResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *UpdateDatasourceInstanceConfigurationResponse) GetDatasourceConfigurationResponse() *components.DatasourceConfigurationResponse { + if o == nil { + return nil + } + return o.DatasourceConfigurationResponse +} diff --git a/tests/mockserver/internal/sdk/models/operations/updateshortcut.go b/tests/mockserver/internal/sdk/models/operations/updateshortcut.go index ebfd6f72..f16ddd5e 100644 --- a/tests/mockserver/internal/sdk/models/operations/updateshortcut.go +++ b/tests/mockserver/internal/sdk/models/operations/updateshortcut.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type UpdateshortcutRequest struct { + // 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`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // Shortcut content. Id need to be specified for the shortcut. + Body components.UpdateShortcutRequest `request:"mediaType=application/json"` +} + +func (o *UpdateshortcutRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *UpdateshortcutRequest) GetBody() components.UpdateShortcutRequest { + if o == nil { + return components.UpdateShortcutRequest{} + } + return o.Body +} + type UpdateshortcutResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/uploadchatfiles.go b/tests/mockserver/internal/sdk/models/operations/uploadchatfiles.go index ec14b549..24142696 100644 --- a/tests/mockserver/internal/sdk/models/operations/uploadchatfiles.go +++ b/tests/mockserver/internal/sdk/models/operations/uploadchatfiles.go @@ -7,11 +7,20 @@ import ( ) type UploadchatfilesRequest struct { + // 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`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` // 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 `queryParam:"style=form,explode=true,name=timezoneOffset"` Body components.UploadChatFilesRequest `request:"mediaType=multipart/form-data"` } +func (o *UploadchatfilesRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + func (o *UploadchatfilesRequest) GetTimezoneOffset() *int64 { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/operations/verify.go b/tests/mockserver/internal/sdk/models/operations/verify.go index 1f2fc93e..502b190f 100644 --- a/tests/mockserver/internal/sdk/models/operations/verify.go +++ b/tests/mockserver/internal/sdk/models/operations/verify.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type VerifyRequest struct { + // 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`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // Details about the verification request. + Body components.VerifyRequest `request:"mediaType=application/json"` +} + +func (o *VerifyRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *VerifyRequest) GetBody() components.VerifyRequest { + if o == nil { + return components.VerifyRequest{} + } + return o.Body +} + type VerifyResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/sdkerrors/accessrequestpermissiondeniedresponseerror.go b/tests/mockserver/internal/sdk/models/sdkerrors/accessrequestpermissiondeniedresponseerror.go new file mode 100644 index 00000000..5f501493 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/sdkerrors/accessrequestpermissiondeniedresponseerror.go @@ -0,0 +1,23 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package sdkerrors + +import ( + "encoding/json" + "mockserver/internal/sdk/models/components" +) + +type AccessRequestPermissionDeniedResponseError struct { + ErrorType components.AccessRequestPermissionDeniedResponseErrorType `json:"errorType"` + CreatedBy components.Person `json:"createdBy"` + RequestableRoles []components.UserRole `json:"requestableRoles"` + HasPendingRequest bool `json:"hasPendingRequest"` + HTTPMeta components.HTTPMetadata `json:"-"` +} + +var _ error = &AccessRequestPermissionDeniedResponseError{} + +func (e *AccessRequestPermissionDeniedResponseError) Error() string { + data, _ := json.Marshal(e) + return string(data) +} diff --git a/tests/mockserver/internal/sdk/models/sdkerrors/errorinforesponse.go b/tests/mockserver/internal/sdk/models/sdkerrors/errorinforesponse.go new file mode 100644 index 00000000..75ecfbc9 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/sdkerrors/errorinforesponse.go @@ -0,0 +1,24 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package sdkerrors + +import ( + "encoding/json" + "mockserver/internal/sdk/models/components" +) + +// ErrorInfoResponse - Error response for custom metadata operations +type ErrorInfoResponse struct { + // Error message describing what went wrong + Error_ string `json:"error"` + // Additional details about the error + Message *string `json:"message,omitempty"` + HTTPMeta components.HTTPMetadata `json:"-"` +} + +var _ error = &ErrorInfoResponse{} + +func (e *ErrorInfoResponse) Error() string { + data, _ := json.Marshal(e) + return string(data) +} diff --git a/tests/mockserver/internal/sdk/models/sdkerrors/errorresponse.go b/tests/mockserver/internal/sdk/models/sdkerrors/errorresponse.go new file mode 100644 index 00000000..a3f04453 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/sdkerrors/errorresponse.go @@ -0,0 +1,22 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package sdkerrors + +import ( + "encoding/json" + "mockserver/internal/sdk/models/components" +) + +// ErrorResponse - Error response returned for failed requests +type ErrorResponse struct { + // Client-facing error message describing what went wrong + Message *string `json:"message,omitempty"` + HTTPMeta components.HTTPMetadata `json:"-"` +} + +var _ error = &ErrorResponse{} + +func (e *ErrorResponse) Error() string { + data, _ := json.Marshal(e) + return string(data) +} diff --git a/tests/mockserver/internal/sdk/models/sdkerrors/gleandataerror.go b/tests/mockserver/internal/sdk/models/sdkerrors/gleandataerror.go index 5870c8ac..05af2574 100644 --- a/tests/mockserver/internal/sdk/models/sdkerrors/gleandataerror.go +++ b/tests/mockserver/internal/sdk/models/sdkerrors/gleandataerror.go @@ -15,7 +15,9 @@ type GleanDataError struct { // Indicates results could not be fetched due to invalid operators in the query. InvalidOperators []components.InvalidOperatorValueError `json:"invalidOperators,omitempty"` ErrorMessages []components.ErrorMessage `json:"errorMessages,omitempty"` - HTTPMeta components.HTTPMetadata `json:"-"` + // Indicates the federated search results could not be fetched due to rate limiting. + FederatedSearchRateLimitError *bool `json:"federatedSearchRateLimitError,omitempty"` + HTTPMeta components.HTTPMetadata `json:"-"` } var _ error = &GleanDataError{} diff --git a/tests/mockserver/internal/sdk/models/sdkerrors/platformproblemdetailerror.go b/tests/mockserver/internal/sdk/models/sdkerrors/platformproblemdetailerror.go new file mode 100644 index 00000000..2910d0bd --- /dev/null +++ b/tests/mockserver/internal/sdk/models/sdkerrors/platformproblemdetailerror.go @@ -0,0 +1,36 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package sdkerrors + +import ( + "encoding/json" + "mockserver/internal/sdk/models/components" +) + +// PlatformProblemDetailError - Error response following RFC 9457, extended with `code` and `documentation_url` for machine-readable classification and self-service remediation. +type PlatformProblemDetailError 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 components.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 []components.PlatformProblemDetailError `json:"errors,omitempty"` + HTTPMeta components.HTTPMetadata `json:"-"` +} + +var _ error = &PlatformProblemDetailError{} + +func (e *PlatformProblemDetailError) Error() string { + data, _ := json.Marshal(e) + return string(data) +} diff --git a/tests/mockserver/internal/sdk/models/sdkerrors/platformunauthorizedagenttoolsproblemerror.go b/tests/mockserver/internal/sdk/models/sdkerrors/platformunauthorizedagenttoolsproblemerror.go new file mode 100644 index 00000000..45b9087a --- /dev/null +++ b/tests/mockserver/internal/sdk/models/sdkerrors/platformunauthorizedagenttoolsproblemerror.go @@ -0,0 +1,38 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package sdkerrors + +import ( + "encoding/json" + "mockserver/internal/sdk/models/components" +) + +// PlatformUnauthorizedAgentToolsProblemError - Problem detail extended with `authentication_suggestions` naming each tool the caller must authorize. +type PlatformUnauthorizedAgentToolsProblemError 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 components.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 []components.PlatformProblemDetailError `json:"errors,omitempty"` + // One entry per tool the caller must authorize. + AuthenticationSuggestions []components.PlatformAuthenticationSuggestion `json:"authentication_suggestions"` + HTTPMeta components.HTTPMetadata `json:"-"` +} + +var _ error = &PlatformUnauthorizedAgentToolsProblemError{} + +func (e *PlatformUnauthorizedAgentToolsProblemError) Error() string { + data, _ := json.Marshal(e) + return string(data) +} diff --git a/tests/mockserver/internal/sdk/models/sdkerrors/unauthorizedagenttoolserror.go b/tests/mockserver/internal/sdk/models/sdkerrors/unauthorizedagenttoolserror.go new file mode 100644 index 00000000..0f579e13 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/sdkerrors/unauthorizedagenttoolserror.go @@ -0,0 +1,24 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package sdkerrors + +import ( + "encoding/json" + "mockserver/internal/sdk/models/components" +) + +// UnauthorizedAgentToolsError - Returned when the agent has tools the caller must authorize before the run can start. Each entry in `authenticationSuggestions` names one such tool; POST its `serverId` to `/tool-servers/{serverId}/auth` with `returnUrl` in the request body to obtain an `authorizationUrl` to redirect the end user to, then retry the run once OAuth completes. +type UnauthorizedAgentToolsError struct { + // Human-readable description of the failure. + Message string `json:"message"` + // One entry per tool the caller must authorize. + AuthenticationSuggestions []components.ServerToolRequest `json:"authenticationSuggestions"` + HTTPMeta components.HTTPMetadata `json:"-"` +} + +var _ error = &UnauthorizedAgentToolsError{} + +func (e *UnauthorizedAgentToolsError) Error() string { + data, _ := json.Marshal(e) + return string(data) +} diff --git a/tests/mockserver/internal/sdk/optionalnullable/optionalnullable.go b/tests/mockserver/internal/sdk/optionalnullable/optionalnullable.go new file mode 100644 index 00000000..bdf1155c --- /dev/null +++ b/tests/mockserver/internal/sdk/optionalnullable/optionalnullable.go @@ -0,0 +1,250 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package optionalnullable + +import ( + "bytes" + "encoding/json" + "reflect" +) + +// OptionalNullable represents a field that can distinguish between three states: +// 1. Set to a value: field is present with a non-nil value +// 2. Set to nil: field is present but explicitly set to null in JSON +// 3. Unset: field is omitted from JSON entirely +// +// This type is designed to work with JSON marshaling/unmarshaling and supports +// the `omitempty` struct tag to properly omit unset fields from JSON output. +// +// Usage: +// +// type User struct { +// Name OptionalNullable[string] `json:"name,omitempty"` +// Age OptionalNullable[int] `json:"age,omitempty"` +// Tags OptionalNullable[[]string] `json:"tags,omitempty"` +// } +// +// // Set to value +// user.Name = FromVal("John") +// +// // Set to value (pointer form) +// name := "John" +// user.Name = From(&name) +// +// // Set to nil (will appear as "name": null in JSON) +// user.Name = From[string](nil) +// +// // Leave unset (will be omitted from JSON with omitempty) +// user := User{} +// +// WARNING: Do NOT use *OptionalNullable[T] as a field type. Always use OptionalNullable[T] directly. +// Using *OptionalNullable[T] will break the omitempty behavior and JSON marshaling. +// +// The type is implemented as a map[bool]*T where: +// - nil map represents unset state +// - Map with true key represents set state (value may be nil) +type OptionalNullable[T any] map[bool]*T + +// From creates a new OptionalNullable with the given value. +// Pass nil to create a OptionalNullable that is set to null. +// Pass a pointer to a value to create a OptionalNullable with that value. +// +// Examples: +// +// hello := "hello" +// From(&hello) // set to "hello" +// From[string](nil) // set to null +func From[T any](value *T) OptionalNullable[T] { + return map[bool]*T{ + true: value, + } +} + +// FromVal creates a new OptionalNullable set to the given value. +// This is a convenience constructor that avoids needing to create +// a temporary variable and take its address. +// +// Examples: +// +// FromVal("hello") // set to "hello" +// FromVal(42) // set to 42 +func FromVal[T any](value T) OptionalNullable[T] { + return map[bool]*T{ + true: &value, + } +} + +// IsNull returns true if the OptionalNullable is explicitly set to nil. +// Returns false if the OptionalNullable is unset or has a value. +// +// Note: This differs from traditional null checks because unset fields +// return false, not true. Use IsSet() to check if a field was provided. +func (n OptionalNullable[T]) IsNull() bool { + v, ok := n[true] + return ok && v == nil +} + +// IsSet returns true if the OptionalNullable has been explicitly set (to either a value or nil). +// Returns false if the OptionalNullable is unset (omitted from JSON). +// +// This is the key method for distinguishing between: +// - Set to nil: IsSet() = true, IsNull() = true +// - Unset: IsSet() = false, IsNull() = false +func (n OptionalNullable[T]) IsSet() bool { + _, ok := n[true] + return ok +} + +// Get returns the internal pointer and whether the field was set. +// +// Return values: +// - (ptr, true): field was set (ptr may be nil if set to null) +// - (nil, false): field was unset/omitted +// +// This method provides direct access to the internal pointer representation. +func (n OptionalNullable[T]) Get() (*T, bool) { + v, ok := n[true] + return v, ok +} + +// GetOrZero returns the value and whether it was set. +// +// Return values: +// - (value, true): field was set to a non-nil value +// - (zero, true): field was explicitly set to nil +// - (zero, false): field was unset/omitted +// +// Examples: +// +// val, ok := nullable.GetOrZero() +// if !ok { +// // Field was unset/omitted +// } else if nullable.IsNull() { +// // Field was explicitly set to null +// } else { +// // Field has a value: val +// } +func (n OptionalNullable[T]) GetOrZero() (T, bool) { + var zero T + + if v, ok := n[true]; ok { + if v == nil { + return zero, true + } + return *v, true + } + return zero, false +} + +// GetUntyped returns the value as interface{} and whether it was set. +// This is useful for reflection-based code that needs to work with the value +// without knowing the specific type T. +// +// Return values: +// - (value, true): field was set to a non-nil value +// - (nil, true): field was explicitly set to nil +// - (nil, false): field was unset/omitted +func (n OptionalNullable[T]) GetUntyped() (interface{}, bool) { + if v, ok := n[true]; ok { + if v == nil { + return nil, true + } + return *v, true + } + return nil, false +} + +// Set sets the OptionalNullable to the given value pointer. +// Pass nil to set the field to null. +// Pass a pointer to a value to set the field to that value. +// +// Examples: +// +// nullable.Set(ptrFrom("hello")) // set to "hello" +// nullable.Set(nil) // set to null +func (n *OptionalNullable[T]) Set(value *T) { + *n = map[bool]*T{ + true: value, + } +} + +// Unset removes the value, making the field unset/omitted. +// After calling Unset(), IsSet() will return false and the field +// will be omitted from JSON output when using omitempty. +func (n *OptionalNullable[T]) Unset() { + *n = map[bool]*T{} +} + +// MarshalJSON implements json.Marshaler. +// +// Behavior: +// - Unset fields: omitted from JSON when struct field has omitempty tag +// - Null fields: serialized as "null" +// - Value fields: serialized as the actual value +// +// The omitempty behavior works because an empty map is considered +// a zero value by Go's JSON package. +func (n OptionalNullable[T]) MarshalJSON() ([]byte, error) { + if n.IsNull() { + return []byte("null"), nil + } + + return json.Marshal(n[true]) +} + +// UnmarshalJSON implements json.Unmarshaler. +// +// Behavior: +// - "null" in JSON: sets the field to null (IsSet=true, IsNull=true) +// - Any other value: sets the field to that value (IsSet=true, IsNull=false) +// - Missing from JSON: field remains unset (IsSet=false, IsNull=false) +func (n *OptionalNullable[T]) UnmarshalJSON(data []byte) error { + if bytes.Equal(data, []byte("null")) { + n.Set(nil) + return nil + } + var v T + if err := json.Unmarshal(data, &v); err != nil { + return err + } + n.Set(&v) + return nil +} + +// NullableInterface defines the interface that all OptionalNullable[T] types implement. +// This interface provides untyped access to optional nullable values for reflection-based code. +type OptionalNullableInterface interface { + GetUntyped() (interface{}, bool) +} + +// AsOptionalNullable attempts to convert a reflect.Value to a OptionalNullableInterface. +// This is a helper function for reflection-based code that needs to check +// if a value implements the optional nullable interface pattern. +// +// Returns: +// - (nullable, true): if the value implements OptionalNullableInterface +// - (nil, false): if the value does not implement OptionalNullableInterface +// +// Example usage: +// +// if nullable, ok := AsOptionalNullable(reflectValue); ok { +// if value, isSet := nullable.GetUntyped(); isSet { +// // Handle the nullable value +// } +// } +func AsOptionalNullable(v reflect.Value) (OptionalNullableInterface, bool) { + // Check if the value can be converted to an interface first + if !v.CanInterface() { + return nil, false + } + + // Check if the underlying value is a nil map (unset nullable) + if v.Kind() == reflect.Map && v.IsNil() { + return nil, false + } + + if nullable, ok := v.Interface().(OptionalNullableInterface); ok { + return nullable, true + } + return nil, false +} diff --git a/tests/mockserver/internal/sdk/optionalnullable/optionalnullable_test.go b/tests/mockserver/internal/sdk/optionalnullable/optionalnullable_test.go new file mode 100644 index 00000000..52fb11f9 --- /dev/null +++ b/tests/mockserver/internal/sdk/optionalnullable/optionalnullable_test.go @@ -0,0 +1,1859 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package optionalnullable + +import ( + "encoding/json" + "reflect" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +// Test helper function to create pointers from values +func ptrFrom[T any](value T) *T { + return &value +} + +// Test helper types for comprehensive testing +type TestStruct struct { + Name string `json:"name"` + Age int `json:"age"` +} + +type TestContainer struct { + StringField OptionalNullable[string] `json:"string_field,omitempty"` + IntField OptionalNullable[int] `json:"int_field,omitempty"` + SliceField OptionalNullable[[]string] `json:"slice_field,omitempty"` + StructField OptionalNullable[TestStruct] `json:"struct_field,omitempty"` +} + +// TestNewNullable tests the From constructor +func TestNewNullable(t *testing.T) { + t.Parallel() + t.Run("with string value", func(t *testing.T) { + t.Parallel() + nullable := From(ptrFrom("test")) + + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, "test", got) + }) + + t.Run("with nil pointer", func(t *testing.T) { + t.Parallel() + nullable := From[string](nil) + + assert.True(t, nullable.IsSet()) + assert.True(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, "", got) // zero value for string + }) + + t.Run("with int value", func(t *testing.T) { + t.Parallel() + nullable := From(ptrFrom(42)) + + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, 42, got) + }) + + t.Run("with slice value", func(t *testing.T) { + t.Parallel() + nullable := From(ptrFrom([]string{"a", "b", "c"})) + + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, []string{"a", "b", "c"}, got) + }) + + t.Run("with empty slice", func(t *testing.T) { + t.Parallel() + nullable := From(ptrFrom([]string{})) + + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, []string{}, got) + }) + + t.Run("with struct value", func(t *testing.T) { + t.Parallel() + val := TestStruct{Name: "John", Age: 30} + nullable := From(&val) + + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + v, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, val, v) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, TestStruct{Name: "John", Age: 30}, got) + }) +} + +// TestFromVal tests the FromVal constructor +func TestFromVal(t *testing.T) { + t.Parallel() + t.Run("with string value", func(t *testing.T) { + t.Parallel() + nullable := FromVal("hello") + + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, "hello", got) + }) + + t.Run("with int value", func(t *testing.T) { + t.Parallel() + nullable := FromVal(42) + + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, 42, got) + }) + + t.Run("with struct value", func(t *testing.T) { + t.Parallel() + val := TestStruct{Name: "John", Age: 30} + nullable := FromVal(val) + + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, val, got) + }) + + t.Run("with zero value", func(t *testing.T) { + t.Parallel() + nullable := FromVal("") + + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, "", got) + }) +} + +// TestNewNullableUnset tests the NewNullableUnset constructor +func TestNewNullableUnset(t *testing.T) { + t.Parallel() + t.Run("string type", func(t *testing.T) { + t.Parallel() + var nullable OptionalNullable[string] + + assert.False(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) // Unset is not null + + got, ok := nullable.GetOrZero() + assert.False(t, ok) + assert.Equal(t, "", got) // zero value for string + }) + + t.Run("int type", func(t *testing.T) { + t.Parallel() + var nullable OptionalNullable[int] + + assert.False(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) // Unset is not null + + got, ok := nullable.GetOrZero() + assert.False(t, ok) + assert.Equal(t, 0, got) // zero value for int + }) + + t.Run("slice type", func(t *testing.T) { + t.Parallel() + var nullable OptionalNullable[[]string] + + assert.False(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) // Unset is not null + + got, ok := nullable.GetOrZero() + assert.False(t, ok) + assert.Nil(t, got) // zero value for slice is nil + }) +} + +// TestIsNull tests the IsNull method +func TestIsNull(t *testing.T) { + t.Parallel() + t.Run("with value", func(t *testing.T) { + t.Parallel() + nullable := From(ptrFrom("test")) + assert.False(t, nullable.IsNull()) + }) + + t.Run("with nil pointer", func(t *testing.T) { + t.Parallel() + nullable := From[string](nil) + assert.True(t, nullable.IsNull()) + }) + + t.Run("unset", func(t *testing.T) { + t.Parallel() + var nullable OptionalNullable[string] + assert.False(t, nullable.IsNull()) + }) +} + +// TestIsSet tests the IsSet method +func TestIsSet(t *testing.T) { + t.Parallel() + t.Run("with value", func(t *testing.T) { + t.Parallel() + nullable := From(ptrFrom("test")) + assert.True(t, nullable.IsSet()) + }) + + t.Run("with nil pointer", func(t *testing.T) { + t.Parallel() + nullable := From[string](nil) + assert.True(t, nullable.IsSet()) + }) + + t.Run("unset", func(t *testing.T) { + t.Parallel() + var nullable OptionalNullable[string] + assert.False(t, nullable.IsSet()) + }) +} + +// TestGet tests the Get method +func TestGet(t *testing.T) { + t.Parallel() + t.Run("with string value", func(t *testing.T) { + t.Parallel() + nullable := From(ptrFrom("test")) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, "test", got) + }) + + t.Run("with nil pointer", func(t *testing.T) { + t.Parallel() + nullable := From[string](nil) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, "", got) // zero value + }) + + t.Run("unset", func(t *testing.T) { + t.Parallel() + var nullable OptionalNullable[string] + + got, ok := nullable.GetOrZero() + assert.False(t, ok) + assert.Equal(t, "", got) // zero value + }) + + t.Run("with slice value", func(t *testing.T) { + t.Parallel() + nullable := From(ptrFrom([]string{"a", "b"})) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, []string{"a", "b"}, got) + }) + + t.Run("with nil slice pointer", func(t *testing.T) { + t.Parallel() + nullable := From[[]string](nil) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Nil(t, got) // zero value for slice is nil + }) +} + +// TestPointer tests the Pointer method +func TestPointer(t *testing.T) { + t.Parallel() + t.Run("with value", func(t *testing.T) { + t.Parallel() + nullable := From(ptrFrom("test")) + + ptr, ok := nullable.Get() + assert.True(t, ok) + assert.NotNil(t, ptr) + assert.Equal(t, "test", *ptr) + }) + + t.Run("with nil pointer", func(t *testing.T) { + t.Parallel() + nullable := From[string](nil) + + ptr, ok := nullable.Get() + assert.True(t, ok) + assert.Nil(t, ptr) + }) + + t.Run("unset", func(t *testing.T) { + t.Parallel() + var nullable OptionalNullable[string] + + ptr, ok := nullable.Get() + assert.False(t, ok) + assert.Nil(t, ptr) + }) +} + +// TestSet tests the Set method +func TestSet(t *testing.T) { + t.Parallel() + t.Run("set string value", func(t *testing.T) { + t.Parallel() + var nullable OptionalNullable[string] + + // Initially unset + assert.False(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) // Unset is not null + + // Set a value + nullable.Set(ptrFrom("test")) + + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, "test", got) + }) + + t.Run("set int value", func(t *testing.T) { + t.Parallel() + nullable := OptionalNullable[int]{} + + nullable.Set(ptrFrom(42)) + + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, 42, got) + }) + + t.Run("set slice value", func(t *testing.T) { + t.Parallel() + nullable := OptionalNullable[[]string]{} + + slice := []string{"a", "b"} + nullable.Set(ptrFrom(slice)) + + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, []string{"a", "b"}, got) + }) + + t.Run("set empty slice", func(t *testing.T) { + t.Parallel() + nullable := OptionalNullable[[]string]{} + + slice := []string{} + nullable.Set(ptrFrom(slice)) + + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, []string{}, got) + }) + + t.Run("overwrite existing value", func(t *testing.T) { + t.Parallel() + nullable := From(ptrFrom("original")) + + // Verify original value + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, "original", got) + + // Set new value + nullable.Set(ptrFrom("new")) + + got, ok = nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, "new", got) + }) +} + +// TestUnset tests the Unset method +func TestUnset(t *testing.T) { + t.Parallel() + t.Run("unset from value", func(t *testing.T) { + t.Parallel() + nullable := From(ptrFrom("test")) + + // Initially set + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + // Unset + nullable.Unset() + + assert.False(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) // After unset is not null + // Value is now internal to the map implementation + + got, ok := nullable.GetOrZero() + assert.False(t, ok) + assert.Equal(t, "", got) // zero value + }) + + t.Run("unset from nil", func(t *testing.T) { + t.Parallel() + nullable := From[string](nil) + + // Initially set to nil + assert.True(t, nullable.IsSet()) + assert.True(t, nullable.IsNull()) // Set to nil should be null + + // Unset + nullable.Unset() + + assert.False(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) // After unset is not null + }) + + t.Run("unset already unset", func(t *testing.T) { + t.Parallel() + var nullable OptionalNullable[string] + + // Initially unset + assert.False(t, nullable.IsSet()) + + // Unset again + nullable.Unset() + + assert.False(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) // Empty map is not null + }) +} + +// TestMarshalJSON tests JSON marshaling +func TestMarshalJSON(t *testing.T) { + t.Parallel() + t.Run("marshal string value", func(t *testing.T) { + t.Parallel() + nullable := From(ptrFrom("test")) + + data, err := json.Marshal(nullable) + require.NoError(t, err) + assert.Equal(t, `"test"`, string(data)) + }) + + t.Run("marshal int value", func(t *testing.T) { + t.Parallel() + nullable := From(ptrFrom(42)) + + data, err := json.Marshal(nullable) + require.NoError(t, err) + assert.Equal(t, `42`, string(data)) + }) + + t.Run("marshal nil value", func(t *testing.T) { + t.Parallel() + nullable := From[string](nil) + + data, err := json.Marshal(nullable) + require.NoError(t, err) + assert.Equal(t, `null`, string(data)) + }) + + t.Run("marshal slice value", func(t *testing.T) { + t.Parallel() + nullable := From(ptrFrom([]string{"a", "b", "c"})) + + data, err := json.Marshal(nullable) + require.NoError(t, err) + assert.Equal(t, `["a","b","c"]`, string(data)) + }) + + t.Run("marshal empty slice", func(t *testing.T) { + t.Parallel() + nullable := From(ptrFrom([]string{})) + + data, err := json.Marshal(nullable) + require.NoError(t, err) + assert.Equal(t, `[]`, string(data)) + }) + + t.Run("marshal struct value", func(t *testing.T) { + t.Parallel() + nullable := From(ptrFrom(TestStruct{Name: "John", Age: 30})) + + data, err := json.Marshal(nullable) + require.NoError(t, err) + assert.Equal(t, `{"name":"John","age":30}`, string(data)) + }) + + // Note: Unset values are not tested here because the current implementation + // doesn't handle unset fields in marshaling (see TODO in the code) +} + +// TestUnmarshalJSON tests JSON unmarshaling +func TestUnmarshalJSON(t *testing.T) { + t.Parallel() + t.Run("unmarshal string value", func(t *testing.T) { + t.Parallel() + var nullable OptionalNullable[string] + err := json.Unmarshal([]byte(`"test"`), &nullable) + require.NoError(t, err) + + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, "test", got) + }) + + t.Run("unmarshal int value", func(t *testing.T) { + t.Parallel() + var nullable OptionalNullable[int] + err := json.Unmarshal([]byte(`42`), &nullable) + require.NoError(t, err) + + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, 42, got) + }) + + t.Run("unmarshal null value", func(t *testing.T) { + t.Parallel() + var nullable OptionalNullable[string] + err := json.Unmarshal([]byte(`null`), &nullable) + require.NoError(t, err) + + assert.True(t, nullable.IsSet()) + assert.True(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, "", got) // zero value + }) + + t.Run("unmarshal slice value", func(t *testing.T) { + t.Parallel() + var nullable OptionalNullable[[]string] + err := json.Unmarshal([]byte(`["a","b","c"]`), &nullable) + require.NoError(t, err) + + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, []string{"a", "b", "c"}, got) + }) + + t.Run("unmarshal empty slice", func(t *testing.T) { + t.Parallel() + var nullable OptionalNullable[[]string] + err := json.Unmarshal([]byte(`[]`), &nullable) + require.NoError(t, err) + + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, []string{}, got) + }) + + t.Run("unmarshal struct value", func(t *testing.T) { + t.Parallel() + var nullable OptionalNullable[TestStruct] + err := json.Unmarshal([]byte(`{"name":"John","age":30}`), &nullable) + require.NoError(t, err) + + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, TestStruct{Name: "John", Age: 30}, got) + }) + + t.Run("unmarshal invalid JSON", func(t *testing.T) { + t.Parallel() + var nullable OptionalNullable[string] + err := json.Unmarshal([]byte(`invalid`), &nullable) + assert.Error(t, err) + + // Ensure the nullable remains unset after error + assert.False(t, nullable.IsSet()) + }) + + t.Run("unmarshal invalid JSON for int", func(t *testing.T) { + t.Parallel() + var nullable OptionalNullable[int] + err := json.Unmarshal([]byte(`"not_a_number"`), &nullable) + assert.Error(t, err) + + // Ensure the nullable remains unset after error + assert.False(t, nullable.IsSet()) + }) + + t.Run("unmarshal malformed JSON", func(t *testing.T) { + t.Parallel() + var nullable OptionalNullable[TestStruct] + err := json.Unmarshal([]byte(`{invalid json`), &nullable) + assert.Error(t, err) + + // Ensure the nullable remains unset after error + assert.False(t, nullable.IsSet()) + }) +} + +// TestJSONRoundTrip tests marshaling and unmarshaling together +func TestJSONRoundTrip(t *testing.T) { + t.Parallel() + t.Run("string value round trip", func(t *testing.T) { + t.Parallel() + nullable1 := From(ptrFrom("test value")) + + // Marshal + data, err := json.Marshal(nullable1) + require.NoError(t, err) + + // Unmarshal + var nullable2 OptionalNullable[string] + err = json.Unmarshal(data, &nullable2) + require.NoError(t, err) + + // Compare + assert.Equal(t, nullable1.IsSet(), nullable2.IsSet()) + assert.Equal(t, nullable1.IsNull(), nullable2.IsNull()) + + got1, ok1 := nullable1.GetOrZero() + got2, ok2 := nullable2.GetOrZero() + assert.Equal(t, ok1, ok2) + assert.Equal(t, got1, got2) + }) + + t.Run("nil value round trip", func(t *testing.T) { + t.Parallel() + nullable1 := From[string](nil) + + // Marshal + data, err := json.Marshal(nullable1) + require.NoError(t, err) + + // Unmarshal + var nullable2 OptionalNullable[string] + err = json.Unmarshal(data, &nullable2) + require.NoError(t, err) + + // Compare + assert.Equal(t, nullable1.IsSet(), nullable2.IsSet()) + assert.Equal(t, nullable1.IsNull(), nullable2.IsNull()) + + got1, ok1 := nullable1.GetOrZero() + got2, ok2 := nullable2.GetOrZero() + assert.Equal(t, ok1, ok2) + assert.Equal(t, got1, got2) + }) + + t.Run("slice round trip", func(t *testing.T) { + t.Parallel() + nullable1 := From(ptrFrom([]string{"a", "b", "c"})) + + // Marshal + data, err := json.Marshal(nullable1) + require.NoError(t, err) + + // Unmarshal + var nullable2 OptionalNullable[[]string] + err = json.Unmarshal(data, &nullable2) + require.NoError(t, err) + + // Compare + assert.Equal(t, nullable1.IsSet(), nullable2.IsSet()) + assert.Equal(t, nullable1.IsNull(), nullable2.IsNull()) + + got1, ok1 := nullable1.GetOrZero() + got2, ok2 := nullable2.GetOrZero() + assert.Equal(t, ok1, ok2) + assert.Equal(t, got1, got2) + }) +} + +// TestJSONToJSONRoundTrip tests starting with JSON and ensuring we can serialize back to the same JSON +func TestJSONToJSONRoundTrip(t *testing.T) { + t.Parallel() + t.Run("string value JSON round trip", func(t *testing.T) { + t.Parallel() + originalJSON := `"hello world"` + + // Unmarshal from JSON + var nullable OptionalNullable[string] + err := json.Unmarshal([]byte(originalJSON), &nullable) + require.NoError(t, err) + + // Verify state + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, "hello world", got) + + // Marshal back to JSON + resultJSON, err := json.Marshal(nullable) + require.NoError(t, err) + assert.Equal(t, originalJSON, string(resultJSON)) + }) + + t.Run("null value JSON round trip", func(t *testing.T) { + t.Parallel() + originalJSON := `null` + + // Unmarshal from JSON + var nullable OptionalNullable[string] + err := json.Unmarshal([]byte(originalJSON), &nullable) + require.NoError(t, err) + + // Verify state + assert.True(t, nullable.IsSet()) + assert.True(t, nullable.IsNull()) + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, "", got) // zero value + + // Marshal back to JSON + resultJSON, err := json.Marshal(nullable) + require.NoError(t, err) + assert.Equal(t, originalJSON, string(resultJSON)) + }) + + t.Run("int value JSON round trip", func(t *testing.T) { + t.Parallel() + originalJSON := `42` + + // Unmarshal from JSON + var nullable OptionalNullable[int] + err := json.Unmarshal([]byte(originalJSON), &nullable) + require.NoError(t, err) + + // Verify state + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, 42, got) + + // Marshal back to JSON + resultJSON, err := json.Marshal(nullable) + require.NoError(t, err) + assert.Equal(t, originalJSON, string(resultJSON)) + }) + + t.Run("slice value JSON round trip", func(t *testing.T) { + t.Parallel() + originalJSON := `["a","b","c"]` + + // Unmarshal from JSON + var nullable OptionalNullable[[]string] + err := json.Unmarshal([]byte(originalJSON), &nullable) + require.NoError(t, err) + + // Verify state + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, []string{"a", "b", "c"}, got) + + // Marshal back to JSON + resultJSON, err := json.Marshal(nullable) + require.NoError(t, err) + assert.Equal(t, originalJSON, string(resultJSON)) + }) + + t.Run("empty slice JSON round trip", func(t *testing.T) { + t.Parallel() + originalJSON := `[]` + + // Unmarshal from JSON + var nullable OptionalNullable[[]string] + err := json.Unmarshal([]byte(originalJSON), &nullable) + require.NoError(t, err) + + // Verify state + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, []string{}, got) + + // Marshal back to JSON + resultJSON, err := json.Marshal(nullable) + require.NoError(t, err) + assert.Equal(t, originalJSON, string(resultJSON)) + }) + + t.Run("struct value JSON round trip", func(t *testing.T) { + t.Parallel() + originalJSON := `{"name":"Alice","age":25}` + + // Unmarshal from JSON + var nullable OptionalNullable[TestStruct] + err := json.Unmarshal([]byte(originalJSON), &nullable) + require.NoError(t, err) + + // Verify state + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, TestStruct{Name: "Alice", Age: 25}, got) + + // Marshal back to JSON + resultJSON, err := json.Marshal(nullable) + require.NoError(t, err) + assert.Equal(t, originalJSON, string(resultJSON)) + }) +} + +// TestContainerStates tests comprehensive state detection and serialization with TestContainer +func TestContainerStates(t *testing.T) { + t.Parallel() + t.Run("all fields set to values", func(t *testing.T) { + t.Parallel() + container := TestContainer{ + StringField: From(ptrFrom("hello")), + IntField: From(ptrFrom(42)), + SliceField: From(ptrFrom([]string{"a", "b"})), + StructField: From(ptrFrom(TestStruct{Name: "John", Age: 30})), + } + + // Verify all fields are set and not null + assert.True(t, container.StringField.IsSet()) + assert.False(t, container.StringField.IsNull()) + assert.True(t, container.IntField.IsSet()) + assert.False(t, container.IntField.IsNull()) + assert.True(t, container.SliceField.IsSet()) + assert.False(t, container.SliceField.IsNull()) + assert.True(t, container.StructField.IsSet()) + assert.False(t, container.StructField.IsNull()) + + // Verify values + stringVal, ok := container.StringField.GetOrZero() + assert.True(t, ok) + assert.Equal(t, "hello", stringVal) + + intVal, ok := container.IntField.GetOrZero() + assert.True(t, ok) + assert.Equal(t, 42, intVal) + + sliceVal, ok := container.SliceField.GetOrZero() + assert.True(t, ok) + assert.Equal(t, []string{"a", "b"}, sliceVal) + + structVal, ok := container.StructField.GetOrZero() + assert.True(t, ok) + assert.Equal(t, TestStruct{Name: "John", Age: 30}, structVal) + + // Test JSON serialization + data, err := json.Marshal(container) + require.NoError(t, err) + + var result map[string]interface{} + err = json.Unmarshal(data, &result) + require.NoError(t, err) + + assert.Equal(t, "hello", result["string_field"]) + assert.Equal(t, float64(42), result["int_field"]) // JSON numbers are float64 + assert.Equal(t, []interface{}{"a", "b"}, result["slice_field"]) + structResult := result["struct_field"].(map[string]interface{}) + assert.Equal(t, "John", structResult["name"]) + assert.Equal(t, float64(30), structResult["age"]) + }) + + t.Run("all fields set to nil", func(t *testing.T) { + t.Parallel() + container := TestContainer{ + StringField: From[string](nil), + IntField: From[int](nil), + SliceField: From[[]string](nil), + StructField: From[TestStruct](nil), + } + + // Verify all fields are set but null + assert.True(t, container.StringField.IsSet()) + assert.True(t, container.StringField.IsNull()) + assert.True(t, container.IntField.IsSet()) + assert.True(t, container.IntField.IsNull()) + assert.True(t, container.SliceField.IsSet()) + assert.True(t, container.SliceField.IsNull()) + assert.True(t, container.StructField.IsSet()) + assert.True(t, container.StructField.IsNull()) + + // Verify GetOrZero() behavior for nil values + stringVal, ok := container.StringField.GetOrZero() + assert.True(t, ok) // set to nil still returns true + assert.Equal(t, "", stringVal) // zero value + + intVal, ok := container.IntField.GetOrZero() + assert.True(t, ok) + assert.Equal(t, 0, intVal) // zero value + + sliceVal, ok := container.SliceField.GetOrZero() + assert.True(t, ok) + assert.Nil(t, sliceVal) // zero value for slice is nil + + structVal, ok := container.StructField.GetOrZero() + assert.True(t, ok) + assert.Equal(t, TestStruct{}, structVal) // zero value + + // Test JSON serialization - all should be null + data, err := json.Marshal(container) + require.NoError(t, err) + + var result map[string]interface{} + err = json.Unmarshal(data, &result) + require.NoError(t, err) + + assert.Nil(t, result["string_field"]) + assert.Nil(t, result["int_field"]) + assert.Nil(t, result["slice_field"]) + assert.Nil(t, result["struct_field"]) + }) + + t.Run("all fields unset", func(t *testing.T) { + t.Parallel() + container := TestContainer{} + + // Verify all fields are unset + assert.False(t, container.StringField.IsSet()) + assert.False(t, container.StringField.IsNull()) // unset is not null in new implementation + assert.False(t, container.IntField.IsSet()) + assert.False(t, container.IntField.IsNull()) + assert.False(t, container.SliceField.IsSet()) + assert.False(t, container.SliceField.IsNull()) + assert.False(t, container.StructField.IsSet()) + assert.False(t, container.StructField.IsNull()) + + // Verify GetOrZero() behavior for unset values + stringVal, ok := container.StringField.GetOrZero() + assert.False(t, ok) // unset returns false + assert.Equal(t, "", stringVal) // zero value + + intVal, ok := container.IntField.GetOrZero() + assert.False(t, ok) + assert.Equal(t, 0, intVal) // zero value + + sliceVal, ok := container.SliceField.GetOrZero() + assert.False(t, ok) + assert.Nil(t, sliceVal) // zero value + + structVal, ok := container.StructField.GetOrZero() + assert.False(t, ok) + assert.Equal(t, TestStruct{}, structVal) // zero value + + // Test JSON serialization - unset fields should be omitted due to omitempty + data, err := json.Marshal(container) + require.NoError(t, err) + + var result map[string]interface{} + err = json.Unmarshal(data, &result) + require.NoError(t, err) + + // With omitempty, unset fields should not appear in JSON + assert.NotContains(t, result, "string_field") + assert.NotContains(t, result, "int_field") + assert.NotContains(t, result, "slice_field") + assert.NotContains(t, result, "struct_field") + }) + + t.Run("slice field states: nil vs unset vs empty vs set", func(t *testing.T) { + t.Parallel() + // Test all possible slice states + nilSlice := TestContainer{ + SliceField: From[[]string](nil), // explicitly set to nil + } + unsetSlice := TestContainer{} // unset + emptySlice := TestContainer{ + SliceField: From(ptrFrom([]string{})), // empty slice + } + setSlice := TestContainer{ + SliceField: From(ptrFrom([]string{"a", "b"})), // slice with values + } + + // Verify nil slice + assert.True(t, nilSlice.SliceField.IsSet()) + assert.True(t, nilSlice.SliceField.IsNull()) + val, ok := nilSlice.SliceField.GetOrZero() + assert.True(t, ok) + assert.Nil(t, val) + + // Verify unset slice + assert.False(t, unsetSlice.SliceField.IsSet()) + assert.False(t, unsetSlice.SliceField.IsNull()) // Unset is not null + val, ok = unsetSlice.SliceField.GetOrZero() + assert.False(t, ok) + assert.Nil(t, val) + + // Verify empty slice + assert.True(t, emptySlice.SliceField.IsSet()) + assert.False(t, emptySlice.SliceField.IsNull()) + val, ok = emptySlice.SliceField.GetOrZero() + assert.True(t, ok) + assert.Equal(t, []string{}, val) + + // Verify set slice + assert.True(t, setSlice.SliceField.IsSet()) + assert.False(t, setSlice.SliceField.IsNull()) + val, ok = setSlice.SliceField.GetOrZero() + assert.True(t, ok) + assert.Equal(t, []string{"a", "b"}, val) + + // Test JSON serialization for each state + nilData, err := json.Marshal(nilSlice) + require.NoError(t, err) + assert.Contains(t, string(nilData), `"slice_field":null`) + + unsetData, err := json.Marshal(unsetSlice) + require.NoError(t, err) + assert.NotContains(t, string(unsetData), "slice_field") // omitted due to omitempty + + emptyData, err := json.Marshal(emptySlice) + require.NoError(t, err) + assert.Contains(t, string(emptyData), `"slice_field":[]`) + + setData, err := json.Marshal(setSlice) + require.NoError(t, err) + assert.Contains(t, string(setData), `"slice_field":["a","b"]`) + }) + + t.Run("mixed states container", func(t *testing.T) { + t.Parallel() + container := TestContainer{ + StringField: From(ptrFrom("hello")), // set to value + IntField: From[int](nil), // set to nil + StructField: From(ptrFrom(TestStruct{Name: "Alice", Age: 25})), // set to value + } + + // Verify states + assert.True(t, container.StringField.IsSet()) + assert.False(t, container.StringField.IsNull()) + + assert.True(t, container.IntField.IsSet()) + assert.True(t, container.IntField.IsNull()) + + assert.False(t, container.SliceField.IsSet()) + assert.False(t, container.SliceField.IsNull()) // Unset is not null + + assert.True(t, container.StructField.IsSet()) + assert.False(t, container.StructField.IsNull()) + + // Test JSON serialization + data, err := json.Marshal(container) + require.NoError(t, err) + + var result map[string]interface{} + err = json.Unmarshal(data, &result) + require.NoError(t, err) + + assert.Equal(t, "hello", result["string_field"]) + assert.Nil(t, result["int_field"]) + assert.NotContains(t, result, "slice_field") // unset, so omitted + structResult := result["struct_field"].(map[string]interface{}) + assert.Equal(t, "Alice", structResult["name"]) + assert.Equal(t, float64(25), structResult["age"]) + }) + + t.Run("JSON unmarshaling preserves states", func(t *testing.T) { + t.Parallel() + // JSON with some fields missing, some null, some with values + jsonData := `{ + "string_field": "test", + "int_field": null, + "struct_field": {"name": "Bob", "age": 35} + }` + + var container TestContainer + err := json.Unmarshal([]byte(jsonData), &container) + require.NoError(t, err) + + // string_field: present with value + assert.True(t, container.StringField.IsSet()) + assert.False(t, container.StringField.IsNull()) + stringVal, ok := container.StringField.GetOrZero() + assert.True(t, ok) + assert.Equal(t, "test", stringVal) + + // int_field: present but null + assert.True(t, container.IntField.IsSet()) + assert.True(t, container.IntField.IsNull()) + intVal, ok := container.IntField.GetOrZero() + assert.True(t, ok) + assert.Equal(t, 0, intVal) // zero value + + // slice_field: missing from JSON, should remain unset + assert.False(t, container.SliceField.IsSet()) + assert.False(t, container.SliceField.IsNull()) // Unset is not null + sliceVal, ok := container.SliceField.GetOrZero() + assert.False(t, ok) + assert.Nil(t, sliceVal) + + // struct_field: present with value + assert.True(t, container.StructField.IsSet()) + assert.False(t, container.StructField.IsNull()) + structVal, ok := container.StructField.GetOrZero() + assert.True(t, ok) + assert.Equal(t, TestStruct{Name: "Bob", Age: 35}, structVal) + }) +} + +// TestNilVsUnsetDistinction tests the key feature of distinguishing nil from unset +func TestNilVsUnsetDistinction(t *testing.T) { + t.Parallel() + t.Run("explicit nil vs unset", func(t *testing.T) { + t.Parallel() + // Explicitly set to nil + explicitNil := From[string](nil) + + // Unset + var unset OptionalNullable[string] + + // Both are null, but only one is set + assert.True(t, explicitNil.IsNull()) + assert.True(t, explicitNil.IsSet()) + + assert.False(t, unset.IsNull()) // Unset is not null + assert.False(t, unset.IsSet()) + + // Get behavior differs + got1, ok1 := explicitNil.GetOrZero() + got2, ok2 := unset.GetOrZero() + + assert.True(t, ok1) // explicitly set to nil returns true + assert.False(t, ok2) // unset returns false + assert.Equal(t, "", got1) // both return zero value + assert.Equal(t, "", got2) + + // Get behavior differs + ptr1, ok1 := explicitNil.Get() + ptr2, ok2 := unset.Get() + + assert.True(t, ok1) // explicitly set to nil returns true + assert.False(t, ok2) // unset returns false + assert.Nil(t, ptr1) // both return nil pointer + assert.Nil(t, ptr2) + }) + + t.Run("empty slice vs nil slice vs unset", func(t *testing.T) { + t.Parallel() + // Empty slice + emptyNullable := From(ptrFrom([]string{})) + + // Nil slice + nilNullable := From[[]string](nil) + + // Unset + var unsetNullable OptionalNullable[[]string] + + // All have different characteristics + assert.True(t, emptyNullable.IsSet()) + assert.False(t, emptyNullable.IsNull()) + + assert.True(t, nilNullable.IsSet()) + assert.True(t, nilNullable.IsNull()) + + assert.False(t, unsetNullable.IsSet()) + assert.False(t, unsetNullable.IsNull()) // Unset is not null + + // Get behavior + got1, ok1 := emptyNullable.GetOrZero() + got2, ok2 := nilNullable.GetOrZero() + got3, ok3 := unsetNullable.GetOrZero() + + assert.True(t, ok1) + assert.Equal(t, []string{}, got1) + + assert.True(t, ok2) + assert.Nil(t, got2) + + assert.False(t, ok3) + assert.Nil(t, got3) + }) +} + +// TestJSONOmitEmpty tests behavior with omitempty tag +func TestJSONOmitEmpty(t *testing.T) { + t.Parallel() + t.Run("marshal with omitempty", func(t *testing.T) { + t.Parallel() + // Test container with various nullable states + container := TestContainer{ + StringField: From(ptrFrom("test")), + IntField: From(ptrFrom(42)), + StructField: From[TestStruct](nil), // explicitly nil + } + + data, err := json.Marshal(container) + require.NoError(t, err) + + // Parse back to verify structure + var result map[string]interface{} + err = json.Unmarshal(data, &result) + require.NoError(t, err) + + // Should contain set fields + assert.Contains(t, result, "string_field") + assert.Contains(t, result, "int_field") + assert.Contains(t, result, "struct_field") + + // Should not contain unset field (due to omitempty) + // Note: This depends on how the marshaling handles unset fields + // The current implementation doesn't handle this case properly (see TODO) + }) + + t.Run("unmarshal missing fields", func(t *testing.T) { + t.Parallel() + // JSON with some fields missing + jsonData := `{"string_field": "test", "int_field": null}` + + var container TestContainer + err := json.Unmarshal([]byte(jsonData), &container) + require.NoError(t, err) + + // Present fields should be set + assert.True(t, container.StringField.IsSet()) + assert.False(t, container.StringField.IsNull()) + got, ok := container.StringField.GetOrZero() + assert.True(t, ok) + assert.Equal(t, "test", got) + + // Null field should be set to nil + assert.True(t, container.IntField.IsSet()) + assert.True(t, container.IntField.IsNull()) + + // Missing fields should remain unset + assert.False(t, container.SliceField.IsSet()) + assert.False(t, container.StructField.IsSet()) + }) +} + +// TestEdgeCases tests various edge cases +func TestEdgeCases(t *testing.T) { + t.Parallel() + t.Run("zero values", func(t *testing.T) { + t.Parallel() + // Test with zero values that are not nil + intNullable := From(ptrFrom(0)) + stringNullable := From(ptrFrom("")) + + assert.True(t, intNullable.IsSet()) + assert.False(t, intNullable.IsNull()) + got, ok := intNullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, 0, got) + + assert.True(t, stringNullable.IsSet()) + assert.False(t, stringNullable.IsNull()) + got2, ok2 := stringNullable.GetOrZero() + assert.True(t, ok2) + assert.Equal(t, "", got2) + }) + + t.Run("pointer to pointer", func(t *testing.T) { + t.Parallel() + // Test with pointer to pointer type + inner := "test" + nullable := From(ptrFrom(&inner)) + + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, &inner, got) + assert.Equal(t, "test", *got) + }) + + t.Run("complex struct", func(t *testing.T) { + t.Parallel() + complexStruct := struct { + Name string + Values []int + Metadata map[string]string + }{ + Name: "complex", + Values: []int{1, 2, 3}, + Metadata: map[string]string{ + "key1": "value1", + "key2": "value2", + }, + } + + nullable := From(ptrFrom(complexStruct)) + + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, complexStruct, got) + }) +} + +// TestDoublePointers tests comprehensive double pointer scenarios +func TestDoublePointers(t *testing.T) { + t.Parallel() + + t.Run("string double pointer with value", func(t *testing.T) { + t.Parallel() + inner := "hello world" + ptr := &inner + nullable := From(ptrFrom(ptr)) + + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, ptr, got) + assert.Equal(t, &inner, got) + assert.Equal(t, "hello world", *got) + }) + + t.Run("int double pointer with value", func(t *testing.T) { + t.Parallel() + inner := 42 + ptr := &inner + nullable := From(ptrFrom(ptr)) + + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, ptr, got) + assert.Equal(t, &inner, got) + assert.Equal(t, 42, *got) + }) + + t.Run("double pointer to nil", func(t *testing.T) { + t.Parallel() + var ptr *string = nil + nullable := From(ptrFrom(ptr)) + + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, ptr, got) + assert.Nil(t, got) + }) + + t.Run("nil double pointer", func(t *testing.T) { + t.Parallel() + nullable := From[*string](nil) + + assert.True(t, nullable.IsSet()) + assert.True(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Nil(t, got) // zero value for **string is nil + }) + + t.Run("unset double pointer", func(t *testing.T) { + t.Parallel() + var nullable OptionalNullable[*string] + + assert.False(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.False(t, ok) + assert.Nil(t, got) // zero value for **string is nil + }) + + t.Run("double pointer modification", func(t *testing.T) { + t.Parallel() + inner := "original" + ptr := &inner + nullable := From(ptrFrom(ptr)) + + // Verify original value + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, "original", *got) + + // Modify through double pointer + *got = "modified" + assert.Equal(t, "modified", inner) + assert.Equal(t, "modified", *got) + }) + + t.Run("double pointer to struct", func(t *testing.T) { + t.Parallel() + inner := TestStruct{Name: "Alice", Age: 30} + ptr := &inner + nullable := From(ptrFrom(ptr)) + + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, ptr, got) + assert.Equal(t, TestStruct{Name: "Alice", Age: 30}, *got) + + // Modify through double pointer + (*got).Name = "Bob" + assert.Equal(t, "Bob", inner.Name) + assert.Equal(t, "Bob", (*got).Name) + }) + + t.Run("double pointer to slice", func(t *testing.T) { + t.Parallel() + inner := []string{"a", "b", "c"} + ptr := &inner + nullable := From(ptrFrom(ptr)) + + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, ptr, got) + assert.Equal(t, []string{"a", "b", "c"}, *got) + + // Modify through double pointer + *got = append(*got, "d") + assert.Equal(t, []string{"a", "b", "c", "d"}, inner) + assert.Equal(t, []string{"a", "b", "c", "d"}, *got) + }) + + t.Run("double pointer to empty slice", func(t *testing.T) { + t.Parallel() + inner := []string{} + ptr := &inner + nullable := From(ptrFrom(ptr)) + + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, ptr, got) + assert.Equal(t, []string{}, *got) + }) + + t.Run("double pointer to nil slice", func(t *testing.T) { + t.Parallel() + var inner []string = nil + ptr := &inner + nullable := From(ptrFrom(ptr)) + + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, ptr, got) + assert.Nil(t, *got) + }) + + t.Run("double pointer JSON marshaling", func(t *testing.T) { + t.Parallel() + inner := "json test" + ptr := &inner + nullable := From(ptrFrom(ptr)) + + data, err := json.Marshal(nullable) + require.NoError(t, err) + assert.Equal(t, `"json test"`, string(data)) + }) + + t.Run("double pointer JSON unmarshaling", func(t *testing.T) { + t.Parallel() + var nullable OptionalNullable[*string] + err := json.Unmarshal([]byte(`"json test"`), &nullable) + require.NoError(t, err) + + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.NotNil(t, got) + assert.Equal(t, "json test", *got) + }) + + t.Run("double pointer JSON null marshaling", func(t *testing.T) { + t.Parallel() + nullable := From[*string](nil) + + data, err := json.Marshal(nullable) + require.NoError(t, err) + assert.Equal(t, `null`, string(data)) + }) + + t.Run("double pointer JSON null unmarshaling", func(t *testing.T) { + t.Parallel() + var nullable OptionalNullable[*string] + err := json.Unmarshal([]byte(`null`), &nullable) + require.NoError(t, err) + + assert.True(t, nullable.IsSet()) + assert.True(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Nil(t, got) + }) + + t.Run("double pointer round trip", func(t *testing.T) { + t.Parallel() + inner := "round trip test" + ptr := &inner + nullable1 := From(ptrFrom(ptr)) + + // Marshal + data, err := json.Marshal(nullable1) + require.NoError(t, err) + + // Unmarshal + var nullable2 OptionalNullable[*string] + err = json.Unmarshal(data, &nullable2) + require.NoError(t, err) + + // Compare states + assert.Equal(t, nullable1.IsSet(), nullable2.IsSet()) + assert.Equal(t, nullable1.IsNull(), nullable2.IsNull()) + + got1, ok1 := nullable1.GetOrZero() + got2, ok2 := nullable2.GetOrZero() + assert.Equal(t, ok1, ok2) + + // Values should be equal + assert.Equal(t, *got1, *got2) + }) + + t.Run("triple pointer", func(t *testing.T) { + t.Parallel() + inner := "triple" + ptr1 := &inner + ptr2 := &ptr1 + nullable := From(ptrFrom(ptr2)) + + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, ptr2, got) + assert.Equal(t, ptr1, *got) + assert.Equal(t, "triple", **got) + }) + + t.Run("double pointer set and unset", func(t *testing.T) { + t.Parallel() + var nullable OptionalNullable[*string] + + // Initially unset + assert.False(t, nullable.IsSet()) + + // Set to double pointer + inner := "set test" + ptr := &inner + nullable.Set(ptrFrom(ptr)) + + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, "set test", *got) + + // Set to nil + nullable.Set(nil) + + assert.True(t, nullable.IsSet()) + assert.True(t, nullable.IsNull()) + + got, ok = nullable.GetOrZero() + assert.True(t, ok) + assert.Nil(t, got) + + // Unset + nullable.Unset() + + assert.False(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + got, ok = nullable.GetOrZero() + assert.False(t, ok) + assert.Nil(t, got) + }) + + t.Run("double pointer Get method", func(t *testing.T) { + t.Parallel() + inner := "get test" + ptr := &inner + nullable := From(ptrFrom(ptr)) + + // Test Get method + gotPtr, ok := nullable.Get() + assert.True(t, ok) + assert.NotNil(t, gotPtr) + assert.Equal(t, ptr, *gotPtr) + assert.Equal(t, "get test", **gotPtr) + + // Test with nil + nilNullable := From[*string](nil) + gotPtr, ok = nilNullable.Get() + assert.True(t, ok) + assert.Nil(t, gotPtr) + + // Test with unset + var unsetNullable OptionalNullable[*string] + gotPtr, ok = unsetNullable.Get() + assert.False(t, ok) + assert.Nil(t, gotPtr) + }) + + t.Run("double pointer zero values", func(t *testing.T) { + t.Parallel() + // Test with zero value string + inner := "" + ptr := &inner + nullable := From(ptrFrom(ptr)) + + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, "", *got) + + // Test with zero value int + innerInt := 0 + ptrInt := &innerInt + nullableInt := From(ptrFrom(ptrInt)) + + assert.True(t, nullableInt.IsSet()) + assert.False(t, nullableInt.IsNull()) + + gotInt, okInt := nullableInt.GetOrZero() + assert.True(t, okInt) + assert.Equal(t, 0, *gotInt) + }) +} + +// TestAsOptionalNullable tests the AsOptionalNullable helper function +func TestAsOptionalNullable(t *testing.T) { + t.Parallel() + + t.Run("with nullable string", func(t *testing.T) { + t.Parallel() + nullable := From(ptrFrom("test")) + reflectValue := reflect.ValueOf(nullable) + + result, ok := AsOptionalNullable(reflectValue) + assert.True(t, ok) + assert.NotNil(t, result) + + value, isSet := result.GetUntyped() + assert.True(t, isSet) + assert.Equal(t, "test", value) + }) + + t.Run("with nullable int", func(t *testing.T) { + t.Parallel() + nullable := From(ptrFrom(42)) + reflectValue := reflect.ValueOf(nullable) + + result, ok := AsOptionalNullable(reflectValue) + assert.True(t, ok) + assert.NotNil(t, result) + + value, isSet := result.GetUntyped() + assert.True(t, isSet) + assert.Equal(t, 42, value) + }) + + t.Run("with nullable nil", func(t *testing.T) { + t.Parallel() + nullable := From[string](nil) + reflectValue := reflect.ValueOf(nullable) + + result, ok := AsOptionalNullable(reflectValue) + assert.True(t, ok) + assert.NotNil(t, result) + + value, isSet := result.GetUntyped() + assert.True(t, isSet) + assert.Nil(t, value) + }) + + t.Run("with unset nullable", func(t *testing.T) { + t.Parallel() + var nullable OptionalNullable[string] + reflectValue := reflect.ValueOf(nullable) + + result, ok := AsOptionalNullable(reflectValue) + assert.False(t, ok) + assert.Nil(t, result) + }) + + t.Run("with non-nullable string", func(t *testing.T) { + t.Parallel() + regularString := "not nullable" + reflectValue := reflect.ValueOf(regularString) + + result, ok := AsOptionalNullable(reflectValue) + assert.False(t, ok) + assert.Nil(t, result) + }) + + t.Run("with non-nullable int", func(t *testing.T) { + t.Parallel() + regularInt := 42 + reflectValue := reflect.ValueOf(regularInt) + + result, ok := AsOptionalNullable(reflectValue) + assert.False(t, ok) + assert.Nil(t, result) + }) + + t.Run("with non-nullable map", func(t *testing.T) { + t.Parallel() + regularMap := map[string]int{"key": 42} + reflectValue := reflect.ValueOf(regularMap) + + result, ok := AsOptionalNullable(reflectValue) + assert.False(t, ok) + assert.Nil(t, result) + }) + + t.Run("with non-nullable struct", func(t *testing.T) { + t.Parallel() + regularStruct := TestStruct{Name: "test", Age: 30} + reflectValue := reflect.ValueOf(regularStruct) + + result, ok := AsOptionalNullable(reflectValue) + assert.False(t, ok) + assert.Nil(t, result) + }) + + t.Run("with nullable double pointer", func(t *testing.T) { + t.Parallel() + inner := "test" + ptr := &inner + nullable := From(ptrFrom(ptr)) + reflectValue := reflect.ValueOf(nullable) + + result, ok := AsOptionalNullable(reflectValue) + assert.True(t, ok) + assert.NotNil(t, result) + + value, isSet := result.GetUntyped() + assert.True(t, isSet) + assert.Equal(t, ptr, value) + assert.Equal(t, "test", *value.(*string)) + }) + + t.Run("with nullable slice", func(t *testing.T) { + t.Parallel() + nullable := From(ptrFrom([]string{"a", "b", "c"})) + reflectValue := reflect.ValueOf(nullable) + + result, ok := AsOptionalNullable(reflectValue) + assert.True(t, ok) + assert.NotNil(t, result) + + value, isSet := result.GetUntyped() + assert.True(t, isSet) + assert.Equal(t, []string{"a", "b", "c"}, value) + }) + + t.Run("with nullable struct", func(t *testing.T) { + t.Parallel() + testStruct := TestStruct{Name: "Alice", Age: 25} + nullable := From(ptrFrom(testStruct)) + reflectValue := reflect.ValueOf(nullable) + + result, ok := AsOptionalNullable(reflectValue) + assert.True(t, ok) + assert.NotNil(t, result) + + value, isSet := result.GetUntyped() + assert.True(t, isSet) + assert.Equal(t, testStruct, value) + }) + + t.Run("with pointer to nullable", func(t *testing.T) { + t.Parallel() + nullable := From(ptrFrom("test")) + ptrToNullable := &nullable + reflectValue := reflect.ValueOf(ptrToNullable) + + // This should work since the pointer to nullable still contains a nullable + result, ok := AsOptionalNullable(reflectValue) + assert.True(t, ok) + assert.NotNil(t, result) + + value, isSet := result.GetUntyped() + assert.True(t, isSet) + assert.Equal(t, "test", value) + }) + + t.Run("with interface containing nullable", func(t *testing.T) { + t.Parallel() + nullable := From(ptrFrom("test")) + var iface interface{} = nullable + reflectValue := reflect.ValueOf(iface) + + result, ok := AsOptionalNullable(reflectValue) + assert.True(t, ok) + assert.NotNil(t, result) + + value, isSet := result.GetUntyped() + assert.True(t, isSet) + assert.Equal(t, "test", value) + }) +} diff --git a/tests/mockserver/internal/sdk/utils/json.go b/tests/mockserver/internal/sdk/utils/json.go index f7ecd042..e5aafa7b 100644 --- a/tests/mockserver/internal/sdk/utils/json.go +++ b/tests/mockserver/internal/sdk/utils/json.go @@ -53,19 +53,26 @@ func MarshalJSON(v interface{}, tag reflect.StructTag, topLevel bool) ([]byte, e fieldName := field.Name omitEmpty := false + omitZero := false jsonTag := field.Tag.Get("json") if jsonTag != "" { for _, tag := range strings.Split(jsonTag, ",") { if tag == "omitempty" { omitEmpty = true + } else if tag == "omitzero" { + omitZero = true } else { fieldName = tag } } } - if (isNil(field.Type, fieldVal) || isEmpty(field.Type, fieldVal)) && field.Tag.Get("const") == "" { - if omitEmpty { + if (omitEmpty || omitZero) && field.Tag.Get("const") == "" { + if isNil(field.Type, fieldVal) || isEmpty(field.Type, fieldVal) { + continue + } + + if omitZero && fieldVal.IsZero() { continue } } @@ -168,7 +175,7 @@ func UnmarshalJSON(b []byte, v interface{}, tag reflect.StructTag, topLevel bool jsonTag := field.Tag.Get("json") if jsonTag != "" { for _, tag := range strings.Split(jsonTag, ",") { - if tag != "omitempty" { + if tag != "omitempty" && tag != "omitzero" { fieldName = tag } } @@ -299,6 +306,10 @@ func marshalValue(v interface{}, tag reflect.StructTag) (json.RawMessage, error) return []byte("null"), nil } + if implementsJSONMarshaler(v) { + return json.Marshal(v) + } + out := map[string]json.RawMessage{} for _, key := range val.MapKeys() { @@ -426,6 +437,9 @@ func handleDefaultConstValue(tagValue string, val interface{}, tag reflect.Struc return []byte(fmt.Sprintf(`"%s"`, tagValue)) default: if typ.Kind() == reflect.String { + if strings.HasPrefix(tagValue, "\"") && strings.HasSuffix(tagValue, "\"") { + return []byte(tagValue) + } return []byte(fmt.Sprintf("%q", tagValue)) } } diff --git a/tests/mockserver/internal/sdk/utils/reflect.go b/tests/mockserver/internal/sdk/utils/reflect.go index 255f3dd7..c9ae9a7c 100644 --- a/tests/mockserver/internal/sdk/utils/reflect.go +++ b/tests/mockserver/internal/sdk/utils/reflect.go @@ -28,8 +28,10 @@ func isEmpty(typ reflect.Type, val reflect.Value) bool { } switch typ.Kind() { - case reflect.Array, reflect.Map, reflect.Slice, reflect.String: + case reflect.Array, reflect.Slice, reflect.String: return val.Len() == 0 + // Maps are only "empty" when nil; a non-nil empty map is preserved so that + // optional map[string]any{} fields are serialized as {} rather than omitted. } return false diff --git a/tests/test_activities.py b/tests/test_activities.py index dc6994d4..db4221c9 100644 --- a/tests/test_activities.py +++ b/tests/test_activities.py @@ -20,6 +20,6 @@ def test_activities_feedback(): "tracking_tokens": [ "trackingTokens", ], - "event": models.Event.VIEW, + "event": models.FeedbackEvent.VIEW, } ) diff --git a/tests/test_agents.py b/tests/test_agents.py index 1d18b766..8b75a0e0 100644 --- a/tests/test_agents.py +++ b/tests/test_agents.py @@ -1,6 +1,6 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" -from glean.api_client import Glean +from glean.api_client import Glean, models import os import pytest from tests.test_client import create_test_http_client @@ -74,3 +74,68 @@ def test_agents_create_and_stream_run(): ) def test_agents_create_and_wait_run(): pass + + +def test_agents_platform_agents_search(): + test_http_client = create_test_http_client("platform-agents-search") + + with Glean( + server_url=os.getenv("TEST_SERVER_URL", "http://localhost:18080"), + client=test_http_client, + api_token=os.getenv("GLEAN_API_TOKEN", "value"), + ) as glean: + assert glean is not None + + res = glean.agents.search(name="HR Policy Agent") + assert res is not None + + +def test_agents_platform_agents_get(): + test_http_client = create_test_http_client("platform-agents-get") + + with Glean( + server_url=os.getenv("TEST_SERVER_URL", "http://localhost:18080"), + client=test_http_client, + api_token=os.getenv("GLEAN_API_TOKEN", "value"), + ) as glean: + assert glean is not None + + res = glean.agents.get(agent_id="") + assert res is not None + + +def test_agents_platform_agents_get_schemas(): + test_http_client = create_test_http_client("platform-agents-get-schemas") + + with Glean( + server_url=os.getenv("TEST_SERVER_URL", "http://localhost:18080"), + client=test_http_client, + api_token=os.getenv("GLEAN_API_TOKEN", "value"), + ) as glean: + assert glean is not None + + res = glean.agents.get_schemas(agent_id="", include_tools=False) + assert res is not None + + +def test_agents_platform_agents_create_run(): + test_http_client = create_test_http_client("platform-agents-create-run") + + with Glean( + server_url=os.getenv("TEST_SERVER_URL", "http://localhost:18080"), + client=test_http_client, + api_token=os.getenv("GLEAN_API_TOKEN", "value"), + ) as glean: + assert glean is not None + + res = glean.agents.create_run( + agent_id="", + messages=[ + { + "role": models.PlatformMessageRole.USER, + "content": [], + }, + ], + stream=False, + ) + assert res is not None diff --git a/tests/test_chat_sdk.py b/tests/test_chat_sdk.py new file mode 100644 index 00000000..41b3a54c --- /dev/null +++ b/tests/test_chat_sdk.py @@ -0,0 +1,19 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from glean.api_client import Glean +import os +from tests.test_client import create_test_http_client + + +def test_chat_sdk_platform_chat_create(): + test_http_client = create_test_http_client("platform-chat-create") + + with Glean( + server_url=os.getenv("TEST_SERVER_URL", "http://localhost:18080"), + client=test_http_client, + api_token=os.getenv("GLEAN_API_TOKEN", "value"), + ) as glean: + assert glean is not None + + res = glean.chat.create(input="", stream=False, store=True) + assert res is not None diff --git a/tests/test_client_agents.py b/tests/test_client_agents.py new file mode 100644 index 00000000..154665a2 --- /dev/null +++ b/tests/test_client_agents.py @@ -0,0 +1,39 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from glean.api_client import Glean +import os +from tests.test_client import create_test_http_client + + +def test_client_agents_create_agent(): + test_http_client = create_test_http_client("createAgent") + + with Glean( + server_url=os.getenv("TEST_SERVER_URL", "http://localhost:18080"), + client=test_http_client, + api_token=os.getenv("GLEAN_API_TOKEN", "value"), + ) as glean: + assert glean is not None + + res = glean.client.agents.create() + assert res is not None + + +def test_client_agents_import_agent(): + test_http_client = create_test_http_client("importAgent") + + with Glean( + server_url=os.getenv("TEST_SERVER_URL", "http://localhost:18080"), + client=test_http_client, + api_token=os.getenv("GLEAN_API_TOKEN", "value"), + ) as glean: + assert glean is not None + + res = glean.client.agents.import_( + agent_id="", + bundle={ + "file_name": "example.file", + "content": open(".speakeasy/testfiles/example.file", "rb"), + }, + ) + assert res is not None diff --git a/tests/test_client_authentication.py b/tests/test_client_authentication.py index 1ea7ec89..8e770a85 100644 --- a/tests/test_client_authentication.py +++ b/tests/test_client_authentication.py @@ -25,3 +25,17 @@ def test_client_authentication_createauthtoken(): res = glean.client.authentication.create_token() assert res is not None + + +def test_client_authentication_checkdatasourceauth(): + test_http_client = create_test_http_client("checkdatasourceauth") + + with Glean( + server_url=os.getenv("TEST_SERVER_URL", "http://localhost:18080"), + client=test_http_client, + api_token=os.getenv("GLEAN_API_TOKEN", "value"), + ) as glean: + assert glean is not None + + res = glean.client.authentication.check_datasource_auth() + assert res is not None diff --git a/tests/test_client_chat.py b/tests/test_client_chat.py index 6be5e6a7..e6df2edf 100644 --- a/tests/test_client_chat.py +++ b/tests/test_client_chat.py @@ -9128,3 +9128,17 @@ def test_client_chat_chat_stream_citation_response(): timeout_millis=30000, ) assert res is not None + + +def test_client_chat_get_chat_file(): + test_http_client = create_test_http_client("getChatFile") + + with Glean( + server_url=os.getenv("TEST_SERVER_URL", "http://localhost:18080"), + client=test_http_client, + api_token=os.getenv("GLEAN_API_TOKEN", "value"), + ) as glean: + assert glean is not None + + res = glean.client.chat.retrieve_file(file_id="") + assert res is not None diff --git a/tests/test_client_datasources.py b/tests/test_client_datasources.py new file mode 100644 index 00000000..c9318708 --- /dev/null +++ b/tests/test_client_datasources.py @@ -0,0 +1,78 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from glean.api_client import Glean +import os +from tests.test_client import create_test_http_client + + +def test_client_datasources_get_datasource_instance_configuration(): + test_http_client = create_test_http_client("getDatasourceInstanceConfiguration") + + with Glean( + server_url=os.getenv("TEST_SERVER_URL", "http://localhost:18080"), + client=test_http_client, + api_token=os.getenv("GLEAN_API_TOKEN", "value"), + ) as glean: + assert glean is not None + + res = glean.client.datasources.retrieve_configuration( + datasource_id="o365sharepoint", instance_id="o365sharepoint_abc123" + ) + assert res is not None + + +def test_client_datasources_update_datasource_instance_configuration(): + test_http_client = create_test_http_client("updateDatasourceInstanceConfiguration") + + with Glean( + server_url=os.getenv("TEST_SERVER_URL", "http://localhost:18080"), + client=test_http_client, + api_token=os.getenv("GLEAN_API_TOKEN", "value"), + ) as glean: + assert glean is not None + + res = glean.client.datasources.update_configuration( + datasource_id="o365sharepoint", + instance_id="o365sharepoint_abc123", + configuration={ + "values": {}, + }, + ) + assert res is not None + + +def test_client_datasources_get_datasource_credential_status(): + test_http_client = create_test_http_client("getDatasourceCredentialStatus") + + with Glean( + server_url=os.getenv("TEST_SERVER_URL", "http://localhost:18080"), + client=test_http_client, + api_token=os.getenv("GLEAN_API_TOKEN", "value"), + ) as glean: + assert glean is not None + + res = glean.client.datasources.retrieve_credential_status( + datasource_instance_id="o365sharepoint_abc123" + ) + assert res is not None + + +def test_client_datasources_rotate_datasource_credentials(): + test_http_client = create_test_http_client("rotateDatasourceCredentials") + + with Glean( + server_url=os.getenv("TEST_SERVER_URL", "http://localhost:18080"), + client=test_http_client, + api_token=os.getenv("GLEAN_API_TOKEN", "value"), + ) as glean: + assert glean is not None + + res = glean.client.datasources.rotate_credentials( + datasource_instance_id="o365sharepoint_abc123", + credentials={ + "values": { + "key": {}, + }, + }, + ) + assert res is not None diff --git a/tests/test_client_documents.py b/tests/test_client_documents.py index da0882b2..96ebd8a4 100644 --- a/tests/test_client_documents.py +++ b/tests/test_client_documents.py @@ -45,7 +45,7 @@ def test_client_documents_getdocumentsbyfacets(): assert glean is not None res = glean.client.documents.retrieve_by_facets( - request={ + get_documents_by_facets_request={ "filter_sets": [ { "filters": [ diff --git a/tests/test_client_shortcuts.py b/tests/test_client_shortcuts.py index 6530e65f..1d6344e4 100644 --- a/tests/test_client_shortcuts.py +++ b/tests/test_client_shortcuts.py @@ -30,7 +30,7 @@ def test_client_shortcuts_getshortcut(): assert glean is not None res = glean.client.shortcuts.retrieve( - request={ + get_shortcut_request={ "alias": "", } ) @@ -56,6 +56,7 @@ def test_client_shortcuts_listshortcuts(): res = glean.client.shortcuts.list( page_size=10, + cursor="", filters=[ { "field_name": "type", diff --git a/tests/test_custommetadata.py b/tests/test_custommetadata.py new file mode 100644 index 00000000..bf132667 --- /dev/null +++ b/tests/test_custommetadata.py @@ -0,0 +1,99 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from glean.api_client import Glean +import os +from tests.test_client import create_test_http_client + + +def test_custommetadata_put_rest_api_index_document_doc_id_custom_metadata_group_name_(): + test_http_client = create_test_http_client( + "put_/rest/api/index/document/{docId}/custom-metadata/{groupName}" + ) + + with Glean( + client=test_http_client, + api_token=os.getenv("GLEAN_API_TOKEN", "value"), + ) as glean: + assert glean is not None + + res = glean.indexing.custom_metadata.upsert( + doc_id="", + group_name="", + custom_metadata=[], + server_url=os.getenv("TEST_SERVER_URL", "http://localhost:18080"), + ) + assert res is not None + + +def test_custommetadata_delete_rest_api_index_document_doc_id_custom_metadata_group_name_(): + test_http_client = create_test_http_client( + "delete_/rest/api/index/document/{docId}/custom-metadata/{groupName}" + ) + + with Glean( + client=test_http_client, + api_token=os.getenv("GLEAN_API_TOKEN", "value"), + ) as glean: + assert glean is not None + + res = glean.indexing.custom_metadata.delete( + doc_id="", + group_name="", + server_url=os.getenv("TEST_SERVER_URL", "http://localhost:18080"), + ) + assert res is not None + + +def test_custommetadata_get_rest_api_index_custom_metadata_schema_group_name_(): + test_http_client = create_test_http_client( + "get_/rest/api/index/custom-metadata/schema/{groupName}" + ) + + with Glean( + client=test_http_client, + api_token=os.getenv("GLEAN_API_TOKEN", "value"), + ) as glean: + assert glean is not None + + res = glean.indexing.custom_metadata.get_schema( + group_name="", + server_url=os.getenv("TEST_SERVER_URL", "http://localhost:18080"), + ) + assert res is not None + + +def test_custommetadata_put_rest_api_index_custom_metadata_schema_group_name_(): + test_http_client = create_test_http_client( + "put_/rest/api/index/custom-metadata/schema/{groupName}" + ) + + with Glean( + client=test_http_client, + api_token=os.getenv("GLEAN_API_TOKEN", "value"), + ) as glean: + assert glean is not None + + res = glean.indexing.custom_metadata.upsert_schema( + group_name="", + metadata_keys=[], + server_url=os.getenv("TEST_SERVER_URL", "http://localhost:18080"), + ) + assert res is not None + + +def test_custommetadata_delete_rest_api_index_custom_metadata_schema_group_name_(): + test_http_client = create_test_http_client( + "delete_/rest/api/index/custom-metadata/schema/{groupName}" + ) + + with Glean( + client=test_http_client, + api_token=os.getenv("GLEAN_API_TOKEN", "value"), + ) as glean: + assert glean is not None + + res = glean.indexing.custom_metadata.delete_schema( + group_name="", + server_url=os.getenv("TEST_SERVER_URL", "http://localhost:18080"), + ) + assert res is not None diff --git a/tests/test_entities.py b/tests/test_entities.py index 04ba72dd..b6c97f06 100644 --- a/tests/test_entities.py +++ b/tests/test_entities.py @@ -1,6 +1,7 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from glean.api_client import Glean, models +from glean.api_client.entities import RetrievePersonPhotoAcceptEnum import os import pytest from tests.test_client import create_test_http_client @@ -34,7 +35,8 @@ def test_entities_listentities(): ], entity_type=models.ListEntitiesRequestEntityType.PEOPLE, page_size=100, - request_type=models.RequestType.STANDARD, + cursor="", + request_type=models.ListEntitiesRequestRequestType.STANDARD, ) assert res is not None @@ -63,3 +65,20 @@ def test_entities_people(): ) def test_entities_teams(): pass + + +def test_entities_get_person_photo(): + test_http_client = create_test_http_client("getPersonPhoto") + + with Glean( + server_url=os.getenv("TEST_SERVER_URL", "http://localhost:18080"), + client=test_http_client, + api_token=os.getenv("GLEAN_API_TOKEN", "value"), + ) as glean: + assert glean is not None + + res = glean.client.entities.retrieve_person_photo( + person_id="", + accept_header_override=RetrievePersonPhotoAcceptEnum.IMAGE_PNG, + ) + assert res is not None diff --git a/tests/test_governance.py b/tests/test_findings.py similarity index 85% rename from tests/test_governance.py rename to tests/test_findings.py index 16b5840b..bc9f6357 100644 --- a/tests/test_governance.py +++ b/tests/test_findings.py @@ -6,7 +6,7 @@ from tests.test_client import create_test_http_client -def test_governance_listfindingsexports(): +def test_findings_listfindingsexports(): test_http_client = create_test_http_client("listfindingsexports") with Glean( @@ -16,12 +16,12 @@ def test_governance_listfindingsexports(): ) as glean: assert glean is not None - res = glean.governance.listfindingsexports() + res = glean.client.governance.data.findings.list() assert res is not None @pytest.mark.skip( reason="incomplete test found please make sure to address the following errors: [`workflow step downloadfindingsexport.test contains criterion simple with invalid condition`, `workflow step downloadfindingsexport.test does not contain $contentType successCriteria and required for response body assertion`]" ) -def test_governance_downloadfindingsexport(): +def test_findings_downloadfindingsexport(): pass diff --git a/tests/test_indexing_datasources.py b/tests/test_indexing_datasources.py new file mode 100644 index 00000000..538b6fe4 --- /dev/null +++ b/tests/test_indexing_datasources.py @@ -0,0 +1,29 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from glean.api_client import Glean +import os +from tests.test_client import create_test_http_client + + +def test_indexing_datasources_post_rest_api_index_submissions_datasource_instance_type_(): + test_http_client = create_test_http_client( + "post_/rest/api/index/submissions/{datasourceInstance}/{type}" + ) + + with Glean( + client=test_http_client, + api_token=os.getenv("GLEAN_API_TOKEN", "value"), + ) as glean: + assert glean is not None + + res = glean.indexing.datasources.submit( + datasource_instance="", + type_="", + request_body={ + "key": "", + "key1": "", + "key2": "", + }, + server_url=os.getenv("TEST_SERVER_URL", "http://localhost:18080"), + ) + assert res is not None diff --git a/tests/test_indexing_documents.py b/tests/test_indexing_documents.py index 53c2f4b1..c7ffe762 100644 --- a/tests/test_indexing_documents.py +++ b/tests/test_indexing_documents.py @@ -89,3 +89,61 @@ def test_indexing_documents_post_api_index_v1_deletedocument(): glean.indexing.documents.delete( datasource="", object_type="", id="" ) + + +def test_indexing_documents_post_api_index_v1_debug_datasource_document(): + test_http_client = create_test_http_client( + "post_/api/index/v1/debug/{datasource}/document" + ) + + with Glean( + server_url=os.getenv("TEST_SERVER_URL", "http://localhost:18080"), + client=test_http_client, + api_token=os.getenv("GLEAN_API_TOKEN", "value"), + ) as glean: + assert glean is not None + + res = glean.indexing.documents.debug( + datasource="", object_type="Article", doc_id="art123" + ) + assert res is not None + + +def test_indexing_documents_post_api_index_v1_debug_datasource_documents(): + test_http_client = create_test_http_client( + "post_/api/index/v1/debug/{datasource}/documents" + ) + + with Glean( + server_url=os.getenv("TEST_SERVER_URL", "http://localhost:18080"), + client=test_http_client, + api_token=os.getenv("GLEAN_API_TOKEN", "value"), + ) as glean: + assert glean is not None + + res = glean.indexing.documents.debug_many( + datasource="", debug_documents=[] + ) + assert res is not None + + +def test_indexing_documents_post_api_index_v1_debug_datasource_document_events(): + test_http_client = create_test_http_client( + "post_/api/index/v1/debug/{datasource}/document/events" + ) + + with Glean( + server_url=os.getenv("TEST_SERVER_URL", "http://localhost:18080"), + client=test_http_client, + api_token=os.getenv("GLEAN_API_TOKEN", "value"), + ) as glean: + assert glean is not None + + res = glean.indexing.documents.debug_events( + datasource="", + object_type="Article", + doc_id="art123", + start_date="2025-05-01", + max_events=50, + ) + assert res is not None diff --git a/tests/test_insights.py b/tests/test_insights.py index 301907d8..6cc8aeec 100644 --- a/tests/test_insights.py +++ b/tests/test_insights.py @@ -1,6 +1,6 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" -from glean.api_client import Glean, models +from glean.api_client import Glean import os from tests.test_client import create_test_http_client @@ -15,10 +15,5 @@ def test_insights_insights(): ) as glean: assert glean is not None - res = glean.client.insights.retrieve( - categories=[ - models.InsightsRequestCategory.CONTENT, - models.InsightsRequestCategory.CONTENT, - ] - ) + res = glean.client.insights.retrieve() assert res is not None diff --git a/tests/test_messages.py b/tests/test_messages.py index 36643db3..dfdc1864 100644 --- a/tests/test_messages.py +++ b/tests/test_messages.py @@ -18,7 +18,7 @@ def test_messages_messages(): res = glean.client.messages.retrieve( id_type=models.IDType.CONVERSATION_ID, id="", - datasource=models.Datasource.MICROSOFTTEAMS, + datasource=models.Datasource.SLACKENTGRID, timestamp_millis=558834, ) assert res is not None diff --git a/tests/test_people.py b/tests/test_people.py index c64882ef..a1febc58 100644 --- a/tests/test_people.py +++ b/tests/test_people.py @@ -18,3 +18,19 @@ def test_people_post_api_index_v1_processallemployeesandteams(): assert glean is not None glean.indexing.people.process_all_employees_and_teams() + + +def test_people_post_api_index_v1_debug_datasource_user(): + test_http_client = create_test_http_client( + "post_/api/index/v1/debug/{datasource}/user" + ) + + with Glean( + server_url=os.getenv("TEST_SERVER_URL", "http://localhost:18080"), + client=test_http_client, + api_token=os.getenv("GLEAN_API_TOKEN", "value"), + ) as glean: + assert glean is not None + + res = glean.indexing.people.debug(datasource="", email="u1@foo.com") + assert res is not None diff --git a/tests/test_pins.py b/tests/test_pins.py index 6f6cb1cf..fae672bb 100644 --- a/tests/test_pins.py +++ b/tests/test_pins.py @@ -59,7 +59,7 @@ def test_pins_listpins(): ) as glean: assert glean is not None - res = glean.client.pins.list(request={}) + res = glean.client.pins.list(request_body={}) assert res is not None diff --git a/tests/test_search.py b/tests/test_search.py index df2944eb..c3b37c85 100644 --- a/tests/test_search.py +++ b/tests/test_search.py @@ -40,9 +40,11 @@ def test_search_adminsearch(): "Backend", "Networking", ], - status='["Done"]', + status="Done", custom_data={ - "someCustomField": models.CustomDataValue(), + "someCustomField": models.CustomDataValue( + string_value="someCustomValue", + ), }, ), ), @@ -64,9 +66,11 @@ def test_search_adminsearch(): "Backend", "Networking", ], - status='["Done"]', + status="Done", custom_data={ - "someCustomField": models.CustomDataValue(), + "someCustomField": models.CustomDataValue( + string_value="someCustomValue", + ), }, ), ), @@ -87,14 +91,17 @@ def test_search_adminsearch(): "Backend", "Networking", ], - status='["Done"]', + status="Done", custom_data={ - "someCustomField": models.CustomDataValue(), + "someCustomField": models.CustomDataValue( + string_value="someCustomValue", + ), }, ), ), page_size=10, max_snippet_size=400, + cursor="", input_details={ "has_copy_paste": True, }, @@ -2116,9 +2123,11 @@ def test_search_search(): "Backend", "Networking", ], - status='["Done"]', + status="Done", custom_data={ - "someCustomField": models.CustomDataValue(), + "someCustomField": models.CustomDataValue( + string_value="someCustomValue", + ), }, ), ), @@ -2140,9 +2149,11 @@ def test_search_search(): "Backend", "Networking", ], - status='["Done"]', + status="Done", custom_data={ - "someCustomField": models.CustomDataValue(), + "someCustomField": models.CustomDataValue( + string_value="someCustomValue", + ), }, ), ), @@ -2163,14 +2174,17 @@ def test_search_search(): "Backend", "Networking", ], - status='["Done"]', + status="Done", custom_data={ - "someCustomField": models.CustomDataValue(), + "someCustomField": models.CustomDataValue( + string_value="someCustomValue", + ), }, ), ), page_size=10, max_snippet_size=400, + cursor="", input_details={ "has_copy_paste": True, }, @@ -2204,3 +2218,48 @@ def test_search_search(): timeout_millis=5000, ) assert res is not None + + +def test_search_platform_search(): + test_http_client = create_test_http_client("platform-search") + + with Glean( + server_url=os.getenv("TEST_SERVER_URL", "http://localhost:18080"), + client=test_http_client, + api_token=os.getenv("GLEAN_API_TOKEN", "value"), + ) as glean: + assert glean is not None + + res = glean.search.query( + query="quarterly planning 2026", + page_size=10, + cursor="", + datasources=[ + "confluence", + "google_drive", + ], + filters=[ + { + "field": "type", + "values": [ + "spreadsheet", + "presentation", + ], + }, + ], + ) + assert res is not None + + +def test_search_platform_search_filters(): + test_http_client = create_test_http_client("platform-search-filters") + + with Glean( + server_url=os.getenv("TEST_SERVER_URL", "http://localhost:18080"), + client=test_http_client, + api_token=os.getenv("GLEAN_API_TOKEN", "value"), + ) as glean: + assert glean is not None + + res = glean.search.list_filters() + assert res is not None diff --git a/tests/test_server_url_normalizer.py b/tests/test_server_url_normalizer.py new file mode 100644 index 00000000..ef9f8696 --- /dev/null +++ b/tests/test_server_url_normalizer.py @@ -0,0 +1,71 @@ +"""Tests for the server URL normalizer hook.""" + +from unittest.mock import Mock + +import pytest + +from src.glean.api_client._hooks.server_url_normalizer import ( + ServerURLNormalizerHook, + normalize_server_url, +) +from src.glean.api_client.httpclient import HttpClient + + +class TestNormalizeServerUrl: + """Test cases for the normalize_server_url function.""" + + def test_no_scheme_prepends_https(self): + assert normalize_server_url("example.glean.com") == "https://example.glean.com" + + def test_https_preserved(self): + assert normalize_server_url("https://example.glean.com") == "https://example.glean.com" + + def test_http_localhost_preserved(self): + assert normalize_server_url("http://localhost:8080") == "http://localhost:8080" + + def test_http_non_localhost_preserved(self): + assert normalize_server_url("http://example.glean.com") == "http://example.glean.com" + + def test_trailing_slash_stripped(self): + assert normalize_server_url("https://example.glean.com/") == "https://example.glean.com" + + def test_multiple_trailing_slashes_stripped(self): + assert normalize_server_url("https://example.glean.com///") == "https://example.glean.com" + + def test_no_scheme_with_trailing_slash(self): + assert normalize_server_url("example.glean.com/") == "https://example.glean.com" + + def test_url_with_path(self): + assert normalize_server_url("https://example.glean.com/api/v1") == "https://example.glean.com/api/v1" + + def test_url_with_path_and_trailing_slash(self): + assert normalize_server_url("https://example.glean.com/api/v1/") == "https://example.glean.com/api/v1" + + def test_no_scheme_with_path(self): + assert normalize_server_url("example.glean.com/api/v1") == "https://example.glean.com/api/v1" + + def test_case_insensitive_scheme(self): + assert normalize_server_url("HTTPS://example.glean.com") == "HTTPS://example.glean.com" + assert normalize_server_url("HTTP://localhost") == "HTTP://localhost" + + +class TestServerURLNormalizerHook: + """Test cases for the ServerURLNormalizerHook.""" + + def setup_method(self): + self.hook = ServerURLNormalizerHook() + self.mock_client = Mock(spec=HttpClient) + + def test_sdk_init_normalizes_url(self): + result_url, result_client = self.hook.sdk_init("example.glean.com", self.mock_client) + assert result_url == "https://example.glean.com" + assert result_client == self.mock_client + + def test_sdk_init_preserves_client(self): + result_url, result_client = self.hook.sdk_init("https://example.glean.com", self.mock_client) + assert result_url == "https://example.glean.com" + assert result_client is self.mock_client + + +if __name__ == "__main__": + pytest.main([__file__]) diff --git a/tests/test_skills.py b/tests/test_skills.py new file mode 100644 index 00000000..98d7f69d --- /dev/null +++ b/tests/test_skills.py @@ -0,0 +1,211 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from glean.api_client import Glean, models +import os +from tests.test_client import create_test_http_client + + +def test_skills_platform_skills_create(): + test_http_client = create_test_http_client("platform-skills-create") + + with Glean( + server_url=os.getenv("TEST_SERVER_URL", "http://localhost:18080"), + client=test_http_client, + api_token=os.getenv("GLEAN_API_TOKEN", "value"), + ) as glean: + assert glean is not None + + res = glean.skills.create( + file={ + "file_name": "example.file", + "content": open(".speakeasy/testfiles/example.file", "rb"), + } + ) + assert res is not None + + +def test_skills_platform_skills_list(): + test_http_client = create_test_http_client("platform-skills-list") + + with Glean( + server_url=os.getenv("TEST_SERVER_URL", "http://localhost:18080"), + client=test_http_client, + api_token=os.getenv("GLEAN_API_TOKEN", "value"), + ) as glean: + assert glean is not None + + res = glean.skills.list() + assert res is not None + + +def test_skills_platform_skills_validate(): + test_http_client = create_test_http_client("platform-skills-validate") + + with Glean( + server_url=os.getenv("TEST_SERVER_URL", "http://localhost:18080"), + client=test_http_client, + api_token=os.getenv("GLEAN_API_TOKEN", "value"), + ) as glean: + assert glean is not None + + res = glean.skills.validate( + file={ + "file_name": "example.file", + "content": open(".speakeasy/testfiles/example.file", "rb"), + } + ) + assert res is not None + + +def test_skills_platform_skills_get(): + test_http_client = create_test_http_client("platform-skills-get") + + with Glean( + server_url=os.getenv("TEST_SERVER_URL", "http://localhost:18080"), + client=test_http_client, + api_token=os.getenv("GLEAN_API_TOKEN", "value"), + ) as glean: + assert glean is not None + + res = glean.skills.retrieve(skill_id="") + assert res is not None + + +def test_skills_platform_skills_get_content(): + test_http_client = create_test_http_client("platform-skills-get-content") + + with Glean( + server_url=os.getenv("TEST_SERVER_URL", "http://localhost:18080"), + client=test_http_client, + api_token=os.getenv("GLEAN_API_TOKEN", "value"), + ) as glean: + assert glean is not None + + res = glean.skills.retrieve_content(skill_id="") + assert res is not None + + +def test_skills_platform_skills_create_version(): + test_http_client = create_test_http_client("platform-skills-create-version") + + with Glean( + server_url=os.getenv("TEST_SERVER_URL", "http://localhost:18080"), + client=test_http_client, + api_token=os.getenv("GLEAN_API_TOKEN", "value"), + ) as glean: + assert glean is not None + + res = glean.skills.create_version( + skill_id="", + file={ + "file_name": "example.file", + "content": open(".speakeasy/testfiles/example.file", "rb"), + }, + ) + assert res is not None + + +def test_skills_platform_skills_list_versions(): + test_http_client = create_test_http_client("platform-skills-list-versions") + + with Glean( + server_url=os.getenv("TEST_SERVER_URL", "http://localhost:18080"), + client=test_http_client, + api_token=os.getenv("GLEAN_API_TOKEN", "value"), + ) as glean: + assert glean is not None + + res = glean.skills.list_versions(skill_id="") + assert res is not None + + +def test_skills_platform_skills_get_version(): + test_http_client = create_test_http_client("platform-skills-get-version") + + with Glean( + server_url=os.getenv("TEST_SERVER_URL", "http://localhost:18080"), + client=test_http_client, + api_token=os.getenv("GLEAN_API_TOKEN", "value"), + ) as glean: + assert glean is not None + + res = glean.skills.retrieve_version(skill_id="", version=495658) + assert res is not None + + +def test_skills_platform_skills_get_version_content(): + test_http_client = create_test_http_client("platform-skills-get-version-content") + + with Glean( + server_url=os.getenv("TEST_SERVER_URL", "http://localhost:18080"), + client=test_http_client, + api_token=os.getenv("GLEAN_API_TOKEN", "value"), + ) as glean: + assert glean is not None + + res = glean.skills.retrieve_version_content(skill_id="", version=117760) + assert res is not None + + +def test_skills_platform_skills_import(): + test_http_client = create_test_http_client("platform-skills-import") + + with Glean( + server_url=os.getenv("TEST_SERVER_URL", "http://localhost:18080"), + client=test_http_client, + api_token=os.getenv("GLEAN_API_TOKEN", "value"), + ) as glean: + assert glean is not None + + res = glean.skills.import_( + source_urls=[ + "", + ] + ) + assert res is not None + + +def test_skills_platform_skills_preview_source(): + test_http_client = create_test_http_client("platform-skills-preview-source") + + with Glean( + server_url=os.getenv("TEST_SERVER_URL", "http://localhost:18080"), + client=test_http_client, + api_token=os.getenv("GLEAN_API_TOKEN", "value"), + ) as glean: + assert glean is not None + + res = glean.skills.preview_source( + source_url="https://ugly-information.name/", stream=False + ) + assert res is not None + + +def test_skills_platform_skills_update(): + test_http_client = create_test_http_client("platform-skills-update") + + with Glean( + server_url=os.getenv("TEST_SERVER_URL", "http://localhost:18080"), + client=test_http_client, + api_token=os.getenv("GLEAN_API_TOKEN", "value"), + ) as glean: + assert glean is not None + + res = glean.skills.update( + skill_id="", status=models.PlatformSkillUpdateStatus.DISABLED + ) + assert res is not None + + +def test_skills_platform_skills_sync(): + test_http_client = create_test_http_client("platform-skills-sync") + + with Glean( + server_url=os.getenv("TEST_SERVER_URL", "http://localhost:18080"), + client=test_http_client, + api_token=os.getenv("GLEAN_API_TOKEN", "value"), + ) as glean: + assert glean is not None + + res = glean.skills.sync(skill_id="") + assert res is not None diff --git a/tests/test_summarize.py b/tests/test_summarize.py index 63b4eb85..2b5d1f38 100644 --- a/tests/test_summarize.py +++ b/tests/test_summarize.py @@ -1,6 +1,6 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" -from glean.api_client import Glean +from glean.api_client import Glean, models import os from tests.test_client import create_test_http_client @@ -18,7 +18,8 @@ def test_summarize_summarize(): res = glean.client.documents.summarize( document_specs=[ { - "url": "https://dim-glider.com/", + "ugc_type": models.DocumentSpecUgcType2.ARTIFACTS, + "ugc_id": "", }, { "id": "", diff --git a/tests/test_tools.py b/tests/test_tools.py index 1d25eef8..626f9c2c 100644 --- a/tests/test_tools.py +++ b/tests/test_tools.py @@ -39,3 +39,84 @@ def test_tools_post_rest_api_v1_tools_call(): }, ) assert res is not None + + +def test_tools_get_action_pack_auth_status(): + test_http_client = create_test_http_client("getActionPackAuthStatus") + + with Glean( + server_url=os.getenv("TEST_SERVER_URL", "http://localhost:18080"), + client=test_http_client, + api_token=os.getenv("GLEAN_API_TOKEN", "value"), + ) as glean: + assert glean is not None + + res = glean.client.tools.retrieve_action_pack_auth_status(action_pack_id="") + assert res is not None + + +def test_tools_authorize_action_pack(): + test_http_client = create_test_http_client("authorizeActionPack") + + with Glean( + server_url=os.getenv("TEST_SERVER_URL", "http://localhost:18080"), + client=test_http_client, + api_token=os.getenv("GLEAN_API_TOKEN", "value"), + ) as glean: + assert glean is not None + + res = glean.client.tools.authorize_action_pack( + action_pack_id="", return_url="https://merry-allocation.org/" + ) + assert res is not None + + +def test_tools_get_tool_server_auth_status(): + test_http_client = create_test_http_client("getToolServerAuthStatus") + + with Glean( + server_url=os.getenv("TEST_SERVER_URL", "http://localhost:18080"), + client=test_http_client, + api_token=os.getenv("GLEAN_API_TOKEN", "value"), + ) as glean: + assert glean is not None + + res = glean.client.tools.retrieve_tool_server_auth_status(server_id="") + assert res is not None + + +def test_tools_authorize_tool_server(): + test_http_client = create_test_http_client("authorizeToolServer") + + with Glean( + server_url=os.getenv("TEST_SERVER_URL", "http://localhost:18080"), + client=test_http_client, + api_token=os.getenv("GLEAN_API_TOKEN", "value"), + ) as glean: + assert glean is not None + + res = glean.client.tools.authorize_tool_server( + server_id="", return_url="https://lucky-disadvantage.com" + ) + assert res is not None + + +def test_tools_get_tool_server_tools(): + test_http_client = create_test_http_client("getToolServerTools") + + with Glean( + server_url=os.getenv("TEST_SERVER_URL", "http://localhost:18080"), + client=test_http_client, + api_token=os.getenv("GLEAN_API_TOKEN", "value"), + ) as glean: + assert glean is not None + + res = glean.client.tools.get_tool_server_tools( + server_id="", + tool_names=[ + "", + "", + "", + ], + ) + assert res is not None diff --git a/tests/test_triggers.py b/tests/test_triggers.py new file mode 100644 index 00000000..35ec4a2b --- /dev/null +++ b/tests/test_triggers.py @@ -0,0 +1,166 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from glean.api_client import Glean, models +import os +from tests.test_client import create_test_http_client + + +def test_triggers_platform_triggers_create(): + test_http_client = create_test_http_client("platform-triggers-create") + + with Glean( + server_url=os.getenv("TEST_SERVER_URL", "http://localhost:18080"), + client=test_http_client, + api_token=os.getenv("GLEAN_API_TOKEN", "value"), + ) as glean: + assert glean is not None + + res = glean.triggers.create( + preset_id="GITHUB_1", + delivery={ + "webhook_url": "https://customer.app/webhook", + "auth": { + "type": models.PlatformTriggerAuthType.BEARER, + "secret": "secret_test_123", + }, + }, + description="Reviews I am tagged on, sent to my team's review channel", + inputs={ + "repository": "acme/payments-api", + }, + ) + assert res is not None + + +def test_triggers_platform_triggers_list(): + test_http_client = create_test_http_client("platform-triggers-list") + + with Glean( + server_url=os.getenv("TEST_SERVER_URL", "http://localhost:18080"), + client=test_http_client, + api_token=os.getenv("GLEAN_API_TOKEN", "value"), + ) as glean: + assert glean is not None + + res = glean.triggers.list(page_size=50) + assert res is not None + + +def test_triggers_platform_triggers_get(): + test_http_client = create_test_http_client("platform-triggers-get") + + with Glean( + server_url=os.getenv("TEST_SERVER_URL", "http://localhost:18080"), + client=test_http_client, + api_token=os.getenv("GLEAN_API_TOKEN", "value"), + ) as glean: + assert glean is not None + + res = glean.triggers.get(trigger_id="") + assert res is not None + + +def test_triggers_platform_triggers_update(): + test_http_client = create_test_http_client("platform-triggers-update") + + with Glean( + server_url=os.getenv("TEST_SERVER_URL", "http://localhost:18080"), + client=test_http_client, + api_token=os.getenv("GLEAN_API_TOKEN", "value"), + ) as glean: + assert glean is not None + + res = glean.triggers.update( + trigger_id="", + status=models.PlatformTriggerStatus.ENABLED, + description="Reviews I am tagged on, sent to my team's review channel", + inputs={ + "repository": "acme/payments-api", + }, + delivery={ + "webhook_url": "https://customer.app/webhook", + "auth": { + "type": models.PlatformTriggerAuthType.BEARER, + "secret": "secret_test_123", + }, + }, + ) + assert res is not None + + +def test_triggers_platform_triggers_events_search(): + test_http_client = create_test_http_client("platform-triggers-events-search") + + with Glean( + server_url=os.getenv("TEST_SERVER_URL", "http://localhost:18080"), + client=test_http_client, + api_token=os.getenv("GLEAN_API_TOKEN", "value"), + ) as glean: + assert glean is not None + + res = glean.triggers.search_events(trigger_id="", page_size=10) + assert res is not None + + +def test_triggers_platform_trigger_presets_list(): + test_http_client = create_test_http_client("platform-trigger-presets-list") + + with Glean( + server_url=os.getenv("TEST_SERVER_URL", "http://localhost:18080"), + client=test_http_client, + api_token=os.getenv("GLEAN_API_TOKEN", "value"), + ) as glean: + assert glean is not None + + res = glean.triggers.list_presets(page_size=50) + assert res is not None + + +def test_triggers_platform_trigger_presets_get(): + test_http_client = create_test_http_client("platform-trigger-presets-get") + + with Glean( + server_url=os.getenv("TEST_SERVER_URL", "http://localhost:18080"), + client=test_http_client, + api_token=os.getenv("GLEAN_API_TOKEN", "value"), + ) as glean: + assert glean is not None + + res = glean.triggers.get_preset(preset_id="") + assert res is not None + + +def test_triggers_platform_trigger_presets_input_values_list(): + test_http_client = create_test_http_client( + "platform-trigger-presets-input-values-list" + ) + + with Glean( + server_url=os.getenv("TEST_SERVER_URL", "http://localhost:18080"), + client=test_http_client, + api_token=os.getenv("GLEAN_API_TOKEN", "value"), + ) as glean: + assert glean is not None + + res = glean.triggers.list_preset_input_values(preset_id="", field="") + assert res is not None + + +def test_triggers_platform_trigger_presets_events_search(): + test_http_client = create_test_http_client("platform-trigger-presets-events-search") + + with Glean( + server_url=os.getenv("TEST_SERVER_URL", "http://localhost:18080"), + client=test_http_client, + api_token=os.getenv("GLEAN_API_TOKEN", "value"), + ) as glean: + assert glean is not None + + res = glean.triggers.search_preset_events( + preset_id="", + inputs={ + "repository": "acme/payments-api", + }, + page_size=10, + ) + assert res is not None diff --git a/tests/test_x_glean_hook.py b/tests/test_x_glean_hook.py index 14bb4a1f..dff8c99d 100644 --- a/tests/test_x_glean_hook.py +++ b/tests/test_x_glean_hook.py @@ -6,7 +6,13 @@ import httpx import pytest -from src.glean.api_client._hooks.x_glean import XGlean +from src.glean.api_client._hooks.x_glean import ( + XGlean, + EXCLUDE_DEPRECATED_AFTER_HEADER, + INCLUDE_EXPERIMENTAL_HEADER, + EXCLUDE_DEPRECATED_AFTER_ENV_VAR, + INCLUDE_EXPERIMENTAL_ENV_VAR, +) from src.glean.api_client._hooks.types import BeforeRequestContext, HookContext from src.glean.api_client.sdkconfiguration import SDKConfiguration @@ -43,25 +49,25 @@ class TestXGleanHook: def clear_env_vars(self): """Clear X-Glean environment variables before and after each test.""" # Store original values - original_deprecated = os.environ.get("X_GLEAN_EXCLUDE_DEPRECATED_AFTER") - original_experimental = os.environ.get("X_GLEAN_INCLUDE_EXPERIMENTAL") + original_deprecated = os.environ.get(EXCLUDE_DEPRECATED_AFTER_ENV_VAR) + original_experimental = os.environ.get(INCLUDE_EXPERIMENTAL_ENV_VAR) # Clear for test - os.environ.pop("X_GLEAN_EXCLUDE_DEPRECATED_AFTER", None) - os.environ.pop("X_GLEAN_INCLUDE_EXPERIMENTAL", None) + os.environ.pop(EXCLUDE_DEPRECATED_AFTER_ENV_VAR, None) + os.environ.pop(INCLUDE_EXPERIMENTAL_ENV_VAR, None) yield # Restore original values if original_deprecated is not None: - os.environ["X_GLEAN_EXCLUDE_DEPRECATED_AFTER"] = original_deprecated + os.environ[EXCLUDE_DEPRECATED_AFTER_ENV_VAR] = original_deprecated else: - os.environ.pop("X_GLEAN_EXCLUDE_DEPRECATED_AFTER", None) + os.environ.pop(EXCLUDE_DEPRECATED_AFTER_ENV_VAR, None) if original_experimental is not None: - os.environ["X_GLEAN_INCLUDE_EXPERIMENTAL"] = original_experimental + os.environ[INCLUDE_EXPERIMENTAL_ENV_VAR] = original_experimental else: - os.environ.pop("X_GLEAN_INCLUDE_EXPERIMENTAL", None) + os.environ.pop(INCLUDE_EXPERIMENTAL_ENV_VAR, None) def test_no_headers_when_neither_options_nor_env_vars_set(self): """Should not set any X-Glean headers when nothing is configured.""" @@ -71,8 +77,8 @@ def test_no_headers_when_neither_options_nor_env_vars_set(self): result = hook.before_request(context, request) - assert "X-Glean-Exclude-Deprecated-After" not in result.headers - assert "X-Glean-Experimental" not in result.headers + assert EXCLUDE_DEPRECATED_AFTER_HEADER not in result.headers + assert INCLUDE_EXPERIMENTAL_HEADER not in result.headers def test_sets_deprecated_header_from_sdk_option(self): """Should set X-Glean-Exclude-Deprecated-After header from SDK option.""" @@ -82,27 +88,27 @@ def test_sets_deprecated_header_from_sdk_option(self): result = hook.before_request(context, request) - assert result.headers.get("X-Glean-Exclude-Deprecated-After") == "2026-10-15" + assert result.headers.get(EXCLUDE_DEPRECATED_AFTER_HEADER) == "2026-10-15" def test_sets_experimental_header_when_include_experimental_is_true(self): - """Should set X-Glean-Experimental header when includeExperimental is True.""" + """Should set X-Glean-Include-Experimental header when includeExperimental is True.""" hook = XGlean() request = create_mock_request() context = create_mock_context(include_experimental=True) result = hook.before_request(context, request) - assert result.headers.get("X-Glean-Experimental") == "true" + assert result.headers.get(INCLUDE_EXPERIMENTAL_HEADER) == "true" def test_no_experimental_header_when_include_experimental_is_false(self): - """Should not set X-Glean-Experimental header when includeExperimental is False.""" + """Should not set X-Glean-Include-Experimental header when includeExperimental is False.""" hook = XGlean() request = create_mock_request() context = create_mock_context(include_experimental=False) result = hook.before_request(context, request) - assert "X-Glean-Experimental" not in result.headers + assert INCLUDE_EXPERIMENTAL_HEADER not in result.headers def test_sets_both_headers_when_both_options_provided(self): """Should set both headers when both options are provided.""" @@ -115,12 +121,12 @@ def test_sets_both_headers_when_both_options_provided(self): result = hook.before_request(context, request) - assert result.headers.get("X-Glean-Exclude-Deprecated-After") == "2026-10-15" - assert result.headers.get("X-Glean-Experimental") == "true" + assert result.headers.get(EXCLUDE_DEPRECATED_AFTER_HEADER) == "2026-10-15" + assert result.headers.get(INCLUDE_EXPERIMENTAL_HEADER) == "true" def test_sets_deprecated_header_from_env_var(self): """Should set X-Glean-Exclude-Deprecated-After header from environment variable.""" - os.environ["X_GLEAN_EXCLUDE_DEPRECATED_AFTER"] = "2027-01-01" + os.environ[EXCLUDE_DEPRECATED_AFTER_ENV_VAR] = "2027-01-01" hook = XGlean() request = create_mock_request() @@ -128,11 +134,11 @@ def test_sets_deprecated_header_from_env_var(self): result = hook.before_request(context, request) - assert result.headers.get("X-Glean-Exclude-Deprecated-After") == "2027-01-01" + assert result.headers.get(EXCLUDE_DEPRECATED_AFTER_HEADER) == "2027-01-01" def test_sets_experimental_header_from_env_var(self): - """Should set X-Glean-Experimental header from environment variable.""" - os.environ["X_GLEAN_INCLUDE_EXPERIMENTAL"] = "true" + """Should set X-Glean-Include-Experimental header from environment variable.""" + os.environ[INCLUDE_EXPERIMENTAL_ENV_VAR] = "true" hook = XGlean() request = create_mock_request() @@ -140,12 +146,12 @@ def test_sets_experimental_header_from_env_var(self): result = hook.before_request(context, request) - assert result.headers.get("X-Glean-Experimental") == "true" + assert result.headers.get(INCLUDE_EXPERIMENTAL_HEADER) == "true" def test_sets_both_headers_from_env_vars(self): """Should set both headers from environment variables.""" - os.environ["X_GLEAN_EXCLUDE_DEPRECATED_AFTER"] = "2027-06-15" - os.environ["X_GLEAN_INCLUDE_EXPERIMENTAL"] = "true" + os.environ[EXCLUDE_DEPRECATED_AFTER_ENV_VAR] = "2027-06-15" + os.environ[INCLUDE_EXPERIMENTAL_ENV_VAR] = "true" hook = XGlean() request = create_mock_request() @@ -153,12 +159,12 @@ def test_sets_both_headers_from_env_vars(self): result = hook.before_request(context, request) - assert result.headers.get("X-Glean-Exclude-Deprecated-After") == "2027-06-15" - assert result.headers.get("X-Glean-Experimental") == "true" + assert result.headers.get(EXCLUDE_DEPRECATED_AFTER_HEADER) == "2027-06-15" + assert result.headers.get(INCLUDE_EXPERIMENTAL_HEADER) == "true" def test_env_var_takes_precedence_for_deprecated(self): """Environment variable should take precedence over SDK option for deprecated.""" - os.environ["X_GLEAN_EXCLUDE_DEPRECATED_AFTER"] = "2027-12-31" + os.environ[EXCLUDE_DEPRECATED_AFTER_ENV_VAR] = "2027-12-31" hook = XGlean() request = create_mock_request() @@ -166,11 +172,11 @@ def test_env_var_takes_precedence_for_deprecated(self): result = hook.before_request(context, request) - assert result.headers.get("X-Glean-Exclude-Deprecated-After") == "2027-12-31" + assert result.headers.get(EXCLUDE_DEPRECATED_AFTER_HEADER) == "2027-12-31" def test_env_var_takes_precedence_for_experimental(self): """Environment variable should take precedence over SDK option for experimental.""" - os.environ["X_GLEAN_INCLUDE_EXPERIMENTAL"] = "true" + os.environ[INCLUDE_EXPERIMENTAL_ENV_VAR] = "true" hook = XGlean() request = create_mock_request() @@ -178,12 +184,12 @@ def test_env_var_takes_precedence_for_experimental(self): result = hook.before_request(context, request) - assert result.headers.get("X-Glean-Experimental") == "true" + assert result.headers.get(INCLUDE_EXPERIMENTAL_HEADER) == "true" def test_env_vars_take_precedence_for_both_headers(self): """Environment variables should take precedence for both headers when all are set.""" - os.environ["X_GLEAN_EXCLUDE_DEPRECATED_AFTER"] = "2028-01-01" - os.environ["X_GLEAN_INCLUDE_EXPERIMENTAL"] = "true" + os.environ[EXCLUDE_DEPRECATED_AFTER_ENV_VAR] = "2028-01-01" + os.environ[INCLUDE_EXPERIMENTAL_ENV_VAR] = "true" hook = XGlean() request = create_mock_request() @@ -194,8 +200,8 @@ def test_env_vars_take_precedence_for_both_headers(self): result = hook.before_request(context, request) - assert result.headers.get("X-Glean-Exclude-Deprecated-After") == "2028-01-01" - assert result.headers.get("X-Glean-Experimental") == "true" + assert result.headers.get(EXCLUDE_DEPRECATED_AFTER_HEADER) == "2028-01-01" + assert result.headers.get(INCLUDE_EXPERIMENTAL_HEADER) == "true" def test_preserves_existing_headers(self): """Should preserve existing headers when adding X-Glean headers.""" @@ -214,8 +220,8 @@ def test_preserves_existing_headers(self): assert result.headers.get("Authorization") == "Bearer token" assert result.headers.get("Content-Type") == "application/json" - assert result.headers.get("X-Glean-Exclude-Deprecated-After") == "2026-10-15" - assert result.headers.get("X-Glean-Experimental") == "true" + assert result.headers.get(EXCLUDE_DEPRECATED_AFTER_HEADER) == "2026-10-15" + assert result.headers.get(INCLUDE_EXPERIMENTAL_HEADER) == "true" def test_returns_httpx_request_instance(self): """Should return an httpx.Request instance.""" @@ -239,5 +245,27 @@ def test_preserves_request_method_and_url(self): assert str(result.url) == "https://api.example.com/v1/search" + def test_handles_multipart_streaming_request(self): + """Should handle multipart requests without raising RequestNotRead. + + Multipart file uploads use a streaming body. The previous implementation + reconstructed the request via httpx.Request(..., content=request.content), + which raised httpx.RequestNotRead on streaming bodies. + """ + hook = XGlean() + request = httpx.Request( + "POST", + "https://example.com/rest/api/v1/uploadchatfiles", + data={"field": "value"}, + files={"file": ("test.csv", b"a,b\n1,2", "text/csv")}, + ) + context = create_mock_context(include_experimental=True) + + result = hook.before_request(context, request) + + assert result.headers.get(INCLUDE_EXPERIMENTAL_HEADER) == "true" + assert result.method == "POST" + + if __name__ == "__main__": pytest.main([__file__])