Skip to content

Commit dc0ce48

Browse files
feat(api): add support for Managed Agents multiagents and outcomes, webhooks, vault validation
1 parent d573b82 commit dc0ce48

130 files changed

Lines changed: 4673 additions & 44 deletions

File tree

Some content is hidden

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

.stats.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
configured_endpoints: 91
2-
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/anthropic/anthropic-ad9228826393d94e86ecf4c22853ae51b1d4094960c836238b3ab79a1044be32.yml
3-
openapi_spec_hash: dc43ed54947d427a084a891b7c4a783a
4-
config_hash: bbf09e23cb2e12b5bb8cbcee3044ceec
1+
configured_endpoints: 97
2+
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/anthropic/anthropic-9f858907356014087c51d59846cd158425826fc558a1683e6ebf49483503cd5e.yml
3+
openapi_spec_hash: 87cd38428be2fb157f6d79b50c00f573
4+
config_hash: 0ed9b1770bb175fa6bdc1e4d41afb180

api.md

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -544,6 +544,7 @@ Types:
544544
```python
545545
from anthropic.types.beta import (
546546
BetaManagedAgentsAgent,
547+
BetaManagedAgentsAgentReference,
547548
BetaManagedAgentsAgentToolConfig,
548549
BetaManagedAgentsAgentToolConfigParams,
549550
BetaManagedAgentsAgentToolsetDefaultConfig,
@@ -569,6 +570,9 @@ from anthropic.types.beta import (
569570
BetaManagedAgentsModel,
570571
BetaManagedAgentsModelConfig,
571572
BetaManagedAgentsModelConfigParams,
573+
BetaManagedAgentsMultiagentCoordinator,
574+
BetaManagedAgentsMultiagentCoordinatorParams,
575+
BetaManagedAgentsMultiagentSelfParams,
572576
BetaManagedAgentsSkillParams,
573577
BetaManagedAgentsURLMCPServerParams,
574578
)
@@ -629,8 +633,13 @@ from anthropic.types.beta import (
629633
BetaManagedAgentsFileResourceParams,
630634
BetaManagedAgentsGitHubRepositoryResourceParams,
631635
BetaManagedAgentsMemoryStoreResourceParam,
636+
BetaManagedAgentsMultiagent,
637+
BetaManagedAgentsMultiagentParams,
638+
BetaManagedAgentsMultiagentRosterEntryParams,
639+
BetaManagedAgentsOutcomeEvaluationResource,
632640
BetaManagedAgentsSession,
633641
BetaManagedAgentsSessionAgent,
642+
BetaManagedAgentsSessionMultiagentCoordinator,
634643
BetaManagedAgentsSessionStats,
635644
BetaManagedAgentsSessionUsage,
636645
)
@@ -657,6 +666,8 @@ from anthropic.types.beta.sessions import (
657666
BetaManagedAgentsAgentMessageEvent,
658667
BetaManagedAgentsAgentThinkingEvent,
659668
BetaManagedAgentsAgentThreadContextCompactedEvent,
669+
BetaManagedAgentsAgentThreadMessageReceivedEvent,
670+
BetaManagedAgentsAgentThreadMessageSentEvent,
660671
BetaManagedAgentsAgentToolResultEvent,
661672
BetaManagedAgentsAgentToolUseEvent,
662673
BetaManagedAgentsBase64DocumentSource,
@@ -666,6 +677,8 @@ from anthropic.types.beta.sessions import (
666677
BetaManagedAgentsEventParams,
667678
BetaManagedAgentsFileDocumentSource,
668679
BetaManagedAgentsFileImageSource,
680+
BetaManagedAgentsFileRubric,
681+
BetaManagedAgentsFileRubricParams,
669682
BetaManagedAgentsImageBlock,
670683
BetaManagedAgentsMCPAuthenticationFailedError,
671684
BetaManagedAgentsMCPConnectionFailedError,
@@ -687,16 +700,28 @@ from anthropic.types.beta.sessions import (
687700
BetaManagedAgentsSessionStatusRescheduledEvent,
688701
BetaManagedAgentsSessionStatusRunningEvent,
689702
BetaManagedAgentsSessionStatusTerminatedEvent,
703+
BetaManagedAgentsSessionThreadCreatedEvent,
704+
BetaManagedAgentsSessionThreadStatusIdleEvent,
705+
BetaManagedAgentsSessionThreadStatusRescheduledEvent,
706+
BetaManagedAgentsSessionThreadStatusRunningEvent,
707+
BetaManagedAgentsSessionThreadStatusTerminatedEvent,
690708
BetaManagedAgentsSpanModelRequestEndEvent,
691709
BetaManagedAgentsSpanModelRequestStartEvent,
692710
BetaManagedAgentsSpanModelUsage,
711+
BetaManagedAgentsSpanOutcomeEvaluationEndEvent,
712+
BetaManagedAgentsSpanOutcomeEvaluationOngoingEvent,
713+
BetaManagedAgentsSpanOutcomeEvaluationStartEvent,
693714
BetaManagedAgentsStreamSessionEvents,
694715
BetaManagedAgentsTextBlock,
716+
BetaManagedAgentsTextRubric,
717+
BetaManagedAgentsTextRubricParams,
695718
BetaManagedAgentsUnknownError,
696719
BetaManagedAgentsURLDocumentSource,
697720
BetaManagedAgentsURLImageSource,
698721
BetaManagedAgentsUserCustomToolResultEvent,
699722
BetaManagedAgentsUserCustomToolResultEventParams,
723+
BetaManagedAgentsUserDefineOutcomeEvent,
724+
BetaManagedAgentsUserDefineOutcomeEventParams,
700725
BetaManagedAgentsUserInterruptEvent,
701726
BetaManagedAgentsUserInterruptEventParams,
702727
BetaManagedAgentsUserMessageEvent,
@@ -736,6 +761,34 @@ Methods:
736761
- <code title="delete /v1/sessions/{session_id}/resources/{resource_id}?beta=true">client.beta.sessions.resources.<a href="./src/anthropic/resources/beta/sessions/resources.py">delete</a>(resource_id, \*, session_id) -> <a href="./src/anthropic/types/beta/sessions/beta_managed_agents_delete_session_resource.py">BetaManagedAgentsDeleteSessionResource</a></code>
737762
- <code title="post /v1/sessions/{session_id}/resources?beta=true">client.beta.sessions.resources.<a href="./src/anthropic/resources/beta/sessions/resources.py">add</a>(session_id, \*\*<a href="src/anthropic/types/beta/sessions/resource_add_params.py">params</a>) -> <a href="./src/anthropic/types/beta/sessions/beta_managed_agents_file_resource.py">BetaManagedAgentsFileResource</a></code>
738763

764+
### Threads
765+
766+
Types:
767+
768+
```python
769+
from anthropic.types.beta.sessions import (
770+
BetaManagedAgentsSessionThread,
771+
BetaManagedAgentsSessionThreadAgent,
772+
BetaManagedAgentsSessionThreadStats,
773+
BetaManagedAgentsSessionThreadStatus,
774+
BetaManagedAgentsSessionThreadUsage,
775+
BetaManagedAgentsStreamSessionThreadEvents,
776+
)
777+
```
778+
779+
Methods:
780+
781+
- <code title="get /v1/sessions/{session_id}/threads/{thread_id}?beta=true">client.beta.sessions.threads.<a href="./src/anthropic/resources/beta/sessions/threads/threads.py">retrieve</a>(thread_id, \*, session_id) -> <a href="./src/anthropic/types/beta/sessions/beta_managed_agents_session_thread.py">BetaManagedAgentsSessionThread</a></code>
782+
- <code title="get /v1/sessions/{session_id}/threads?beta=true">client.beta.sessions.threads.<a href="./src/anthropic/resources/beta/sessions/threads/threads.py">list</a>(session_id, \*\*<a href="src/anthropic/types/beta/sessions/thread_list_params.py">params</a>) -> <a href="./src/anthropic/types/beta/sessions/beta_managed_agents_session_thread.py">SyncPageCursor[BetaManagedAgentsSessionThread]</a></code>
783+
- <code title="post /v1/sessions/{session_id}/threads/{thread_id}/archive?beta=true">client.beta.sessions.threads.<a href="./src/anthropic/resources/beta/sessions/threads/threads.py">archive</a>(thread_id, \*, session_id) -> <a href="./src/anthropic/types/beta/sessions/beta_managed_agents_session_thread.py">BetaManagedAgentsSessionThread</a></code>
784+
785+
#### Events
786+
787+
Methods:
788+
789+
- <code title="get /v1/sessions/{session_id}/threads/{thread_id}/events?beta=true">client.beta.sessions.threads.events.<a href="./src/anthropic/resources/beta/sessions/threads/events.py">list</a>(thread_id, \*, session_id, \*\*<a href="src/anthropic/types/beta/sessions/threads/event_list_params.py">params</a>) -> <a href="./src/anthropic/types/beta/sessions/beta_managed_agents_session_event.py">SyncPageCursor[BetaManagedAgentsSessionEvent]</a></code>
790+
- <code title="get /v1/sessions/{session_id}/threads/{thread_id}/stream?beta=true">client.beta.sessions.threads.events.<a href="./src/anthropic/resources/beta/sessions/threads/events.py">stream</a>(thread_id, \*, session_id) -> <a href="./src/anthropic/types/beta/sessions/beta_managed_agents_stream_session_thread_events.py">BetaManagedAgentsStreamSessionThreadEvents</a></code>
791+
739792
## Vaults
740793

741794
Types:
@@ -760,13 +813,18 @@ Types:
760813
```python
761814
from anthropic.types.beta.vaults import (
762815
BetaManagedAgentsCredential,
816+
BetaManagedAgentsCredentialValidation,
817+
BetaManagedAgentsCredentialValidationStatus,
763818
BetaManagedAgentsDeletedCredential,
764819
BetaManagedAgentsMCPOAuthAuthResponse,
765820
BetaManagedAgentsMCPOAuthCreateParams,
766821
BetaManagedAgentsMCPOAuthRefreshParams,
767822
BetaManagedAgentsMCPOAuthRefreshResponse,
768823
BetaManagedAgentsMCPOAuthRefreshUpdateParams,
769824
BetaManagedAgentsMCPOAuthUpdateParams,
825+
BetaManagedAgentsMCPProbe,
826+
BetaManagedAgentsRefreshHTTPResponse,
827+
BetaManagedAgentsRefreshObject,
770828
BetaManagedAgentsStaticBearerAuthResponse,
771829
BetaManagedAgentsStaticBearerCreateParams,
772830
BetaManagedAgentsStaticBearerUpdateParams,
@@ -789,6 +847,7 @@ Methods:
789847
- <code title="get /v1/vaults/{vault_id}/credentials?beta=true">client.beta.vaults.credentials.<a href="./src/anthropic/resources/beta/vaults/credentials.py">list</a>(vault_id, \*\*<a href="src/anthropic/types/beta/vaults/credential_list_params.py">params</a>) -> <a href="./src/anthropic/types/beta/vaults/beta_managed_agents_credential.py">SyncPageCursor[BetaManagedAgentsCredential]</a></code>
790848
- <code title="delete /v1/vaults/{vault_id}/credentials/{credential_id}?beta=true">client.beta.vaults.credentials.<a href="./src/anthropic/resources/beta/vaults/credentials.py">delete</a>(credential_id, \*, vault_id) -> <a href="./src/anthropic/types/beta/vaults/beta_managed_agents_deleted_credential.py">BetaManagedAgentsDeletedCredential</a></code>
791849
- <code title="post /v1/vaults/{vault_id}/credentials/{credential_id}/archive?beta=true">client.beta.vaults.credentials.<a href="./src/anthropic/resources/beta/vaults/credentials.py">archive</a>(credential_id, \*, vault_id) -> <a href="./src/anthropic/types/beta/vaults/beta_managed_agents_credential.py">BetaManagedAgentsCredential</a></code>
850+
- <code title="post /v1/vaults/{vault_id}/credentials/{credential_id}/mcp_oauth_validate?beta=true">client.beta.vaults.credentials.<a href="./src/anthropic/resources/beta/vaults/credentials.py">mcp_oauth_validate</a>(credential_id, \*, vault_id) -> <a href="./src/anthropic/types/beta/vaults/beta_managed_agents_credential_validation.py">BetaManagedAgentsCredentialValidation</a></code>
792851

793852
## MemoryStores
794853

@@ -912,6 +971,40 @@ Methods:
912971
- <code title="get /v1/skills/{skill_id}/versions?beta=true">client.beta.skills.versions.<a href="./src/anthropic/resources/beta/skills/versions.py">list</a>(skill_id, \*\*<a href="src/anthropic/types/beta/skills/version_list_params.py">params</a>) -> <a href="./src/anthropic/types/beta/skills/version_list_response.py">SyncPageCursor[VersionListResponse]</a></code>
913972
- <code title="delete /v1/skills/{skill_id}/versions/{version}?beta=true">client.beta.skills.versions.<a href="./src/anthropic/resources/beta/skills/versions.py">delete</a>(version, \*, skill_id) -> <a href="./src/anthropic/types/beta/skills/version_delete_response.py">VersionDeleteResponse</a></code>
914973

974+
## Webhooks
975+
976+
Types:
977+
978+
```python
979+
from anthropic.types.beta import (
980+
BetaWebhookEvent,
981+
BetaWebhookEventData,
982+
BetaWebhookSessionArchivedEventData,
983+
BetaWebhookSessionCreatedEventData,
984+
BetaWebhookSessionDeletedEventData,
985+
BetaWebhookSessionIdledEventData,
986+
BetaWebhookSessionOutcomeEvaluationEndedEventData,
987+
BetaWebhookSessionPendingEventData,
988+
BetaWebhookSessionRequiresActionEventData,
989+
BetaWebhookSessionRunningEventData,
990+
BetaWebhookSessionStatusIdledEventData,
991+
BetaWebhookSessionStatusRunStartedEventData,
992+
BetaWebhookSessionStatusScheduledEventData,
993+
BetaWebhookSessionStatusTerminatedEventData,
994+
BetaWebhookSessionThreadCreatedEventData,
995+
BetaWebhookSessionThreadIdledEventData,
996+
BetaWebhookSessionThreadTerminatedEventData,
997+
BetaWebhookVaultArchivedEventData,
998+
BetaWebhookVaultCreatedEventData,
999+
BetaWebhookVaultCredentialArchivedEventData,
1000+
BetaWebhookVaultCredentialCreatedEventData,
1001+
BetaWebhookVaultCredentialDeletedEventData,
1002+
BetaWebhookVaultCredentialRefreshFailedEventData,
1003+
BetaWebhookVaultDeletedEventData,
1004+
UnwrapWebhookEvent,
1005+
)
1006+
```
1007+
9151008
## UserProfiles
9161009

9171010
Types:

pyproject.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,13 @@ vertex = ["google-auth[requests] >=2, <3"]
4444
aws = ["boto3 >= 1.28.57", "botocore >= 1.31.57"]
4545
bedrock = ["boto3 >= 1.28.57", "botocore >= 1.31.57"]
4646
mcp = ["mcp>=1.0; python_version >= '3.10'"]
47+
webhooks = ["standardwebhooks >= 1.0.1, < 2"]
4748

4849
[project.urls]
4950
Homepage = "https://github.com/anthropics/anthropic-sdk-python"
5051
Repository = "https://github.com/anthropics/anthropic-sdk-python"
5152

53+
5254
[tool.uv]
5355
managed = true
5456
required-version = ">=0.9"

requirements-dev.lock

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,17 @@ asttokens==3.0.1
1111
# via inline-snapshot
1212
backports-asyncio-runner==1.2.0 ; python_full_version < '3.11'
1313
# via pytest-asyncio
14-
boto3-stubs==1.42.44
14+
boto3-stubs==1.42.69
1515
botocore-stubs==1.42.41
1616
# via boto3-stubs
17-
certifi==2026.1.4
17+
certifi==2026.2.25
1818
# via
1919
# httpcore
2020
# httpx
2121
colorama==0.4.6
2222
# via
2323
# griffe
24+
# griffecli
2425
# pytest
2526
dirty-equals==0.11
2627
distro==1.9.0
@@ -36,14 +37,22 @@ execnet==2.1.2
3637
executing==2.2.1
3738
# via inline-snapshot
3839
griffe==1.14.0 ; python_full_version < '3.10'
39-
griffe==1.15.0 ; python_full_version >= '3.10'
40+
griffe==2.0.0 ; python_full_version >= '3.10'
41+
griffecli==2.0.0 ; python_full_version >= '3.10'
42+
# via griffe
43+
griffelib==2.0.0 ; python_full_version >= '3.10'
44+
# via
45+
# griffe
46+
# griffecli
4047
h11==0.16.0
4148
# via httpcore
49+
http-snapshot==0.1.8
4250
httpcore==1.0.9
4351
# via httpx
4452
httpx==0.28.1
4553
# via
4654
# anthropic
55+
# http-snapshot
4756
# respx
4857
idna==3.11
4958
# via
@@ -54,7 +63,8 @@ iniconfig==2.1.0 ; python_full_version < '3.10'
5463
# via pytest
5564
iniconfig==2.3.0 ; python_full_version >= '3.10'
5665
# via pytest
57-
inline-snapshot==0.31.1
66+
inline-snapshot==0.32.5
67+
# via http-snapshot
5868
jiter==0.13.0
5969
# via anthropic
6070
markdown-it-py==3.0.0 ; python_full_version < '3.10'
@@ -68,9 +78,9 @@ mypy-extensions==1.1.0
6878
# via mypy
6979
nodeenv==1.10.0
7080
# via pyright
71-
packaging==25.0
81+
packaging==26.0
7282
# via pytest
73-
pathspec==1.0.3
83+
pathspec==1.0.4
7484
# via mypy
7585
pluggy==1.6.0
7686
# via pytest
@@ -99,9 +109,9 @@ pytest-xdist==3.8.0
99109
python-dateutil==2.9.0.post0 ; python_full_version < '3.10'
100110
# via time-machine
101111
respx==0.22.0
102-
rich==14.2.0
112+
rich==14.3.3
103113
# via inline-snapshot
104-
ruff==0.14.13
114+
ruff==0.15.6
105115
six==1.17.0 ; python_full_version < '3.10'
106116
# via python-dateutil
107117
sniffio==1.3.1
@@ -113,7 +123,7 @@ tomli==2.4.0 ; python_full_version < '3.11'
113123
# inline-snapshot
114124
# mypy
115125
# pytest
116-
types-awscrt==0.31.1
126+
types-awscrt==0.31.3
117127
# via botocore-stubs
118128
types-s3transfer==0.16.0
119129
# via boto3-stubs
@@ -123,6 +133,7 @@ typing-extensions==4.15.0
123133
# anyio
124134
# boto3-stubs
125135
# exceptiongroup
136+
# inline-snapshot
126137
# mypy
127138
# pydantic
128139
# pydantic-core

scripts/mock

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ if [ "$1" == "--daemon" ]; then
2424
# Pre-install the package so the download doesn't eat into the startup timeout
2525
npm exec --package=@stdy/cli@0.22.1 -- steady --version
2626

27-
npm exec --package=@stdy/cli@0.22.1 -- steady --host 127.0.0.1 -p 4010 --validator-query-array-format=comma --validator-form-array-format=brackets --validator-query-object-format=brackets --validator-form-object-format=brackets "$URL" &> .stdy.log &
27+
npm exec --package=@stdy/cli@0.22.1 -- steady --host 127.0.0.1 -p 4010 --validator-query-array-format=brackets --validator-form-array-format=brackets --validator-query-object-format=brackets --validator-form-object-format=brackets "$URL" &> .stdy.log &
2828

2929
# Wait for server to come online via health endpoint (max 30s)
3030
echo -n "Waiting for server"
@@ -48,5 +48,5 @@ if [ "$1" == "--daemon" ]; then
4848

4949
echo
5050
else
51-
npm exec --package=@stdy/cli@0.22.1 -- steady --host 127.0.0.1 -p 4010 --validator-query-array-format=comma --validator-form-array-format=brackets --validator-query-object-format=brackets --validator-form-object-format=brackets "$URL"
51+
npm exec --package=@stdy/cli@0.22.1 -- steady --host 127.0.0.1 -p 4010 --validator-query-array-format=brackets --validator-form-array-format=brackets --validator-query-object-format=brackets --validator-form-object-format=brackets "$URL"
5252
fi

scripts/test

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ elif ! steady_is_running ; then
4343
echo -e "To run the server, pass in the path or url of your OpenAPI"
4444
echo -e "spec to the steady command:"
4545
echo
46-
echo -e " \$ ${YELLOW}npm exec --package=@stdy/cli@0.22.1 -- steady path/to/your.openapi.yml --host 127.0.0.1 -p 4010 --validator-query-array-format=comma --validator-form-array-format=brackets --validator-query-object-format=brackets --validator-form-object-format=brackets${NC}"
46+
echo -e " \$ ${YELLOW}npm exec --package=@stdy/cli@0.22.1 -- steady path/to/your.openapi.yml --host 127.0.0.1 -p 4010 --validator-query-array-format=brackets --validator-form-array-format=brackets --validator-query-object-format=brackets --validator-form-object-format=brackets${NC}"
4747
echo
4848

4949
exit 1

src/anthropic/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
InternalServerError,
4141
PermissionDeniedError,
4242
UnprocessableEntityError,
43+
APIWebhookValidationError,
4344
APIResponseValidationError,
4445
)
4546
from ._base_client import DefaultHttpxClient, DefaultAioHttpClient, DefaultAsyncHttpxClient
@@ -64,6 +65,7 @@
6465
"APITimeoutError",
6566
"APIConnectionError",
6667
"APIResponseValidationError",
68+
"APIWebhookValidationError",
6769
"BadRequestError",
6870
"AuthenticationError",
6971
"PermissionDeniedError",

src/anthropic/_base_client.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -915,6 +915,7 @@ def __del__(self) -> None:
915915
class SyncAPIClient(BaseClient[httpx.Client, Stream[Any]]):
916916
_client: httpx.Client
917917
_default_stream_cls: type[Stream[Any]] | None = None
918+
webhook_key: str | None = None
918919

919920
def __init__(
920921
self,
@@ -1557,6 +1558,7 @@ def __del__(self) -> None:
15571558
class AsyncAPIClient(BaseClient[httpx.AsyncClient, AsyncStream[Any]]):
15581559
_client: httpx.AsyncClient
15591560
_default_stream_cls: type[AsyncStream[Any]] | None = None
1561+
webhook_key: str | None = None
15601562

15611563
def __init__(
15621564
self,

0 commit comments

Comments
 (0)