diff --git a/lib/archastro/generated/channels/api_activity_feed_channel.ex b/lib/archastro/generated/channels/api_activity_feed_channel.ex index 05b333f..bc09d12 100644 --- a/lib/archastro/generated/channels/api_activity_feed_channel.ex +++ b/lib/archastro/generated/channels/api_activity_feed_channel.ex @@ -1,6 +1,6 @@ # Copyright (c) 2026 ArchAstro Inc. Licensed under the MIT License. # This file is auto-generated by @archastro/sdk-generator. Do not edit. -# Content hash: b9a4c11a084b +# Content hash: 8aea6d90f733 defmodule ArchAstro.SDK.Types.ChannelPayloads.ApiActivityFeedChannel.ListEntries.Input do @moduledoc """ @@ -266,7 +266,6 @@ defmodule ArchAstro.SDK.Types.ChannelPayloads.ApiActivityFeedChannel.ListEntries participants: [ ArchAstro.SDK.Types.ChannelPayloads.ApiActivityFeedChannel.ListEntries.Response.Nested.EntriesItemAgentVariant2SourceSolutionCurrentSolutionTemplatesItemDetailsInvokeContractParticipantsItem.t() - | nil ] | nil | ArchAstro.SDK.Unset.t(), @@ -281,9 +280,8 @@ defmodule ArchAstro.SDK.Types.ChannelPayloads.ApiActivityFeedChannel.ListEntries {:optional, {:nullable, {:list, - {:nullable, - {:ref, - ArchAstro.SDK.Types.ChannelPayloads.ApiActivityFeedChannel.ListEntries.Response.Nested.EntriesItemAgentVariant2SourceSolutionCurrentSolutionTemplatesItemDetailsInvokeContractParticipantsItem}}}}}}, + {:ref, + ArchAstro.SDK.Types.ChannelPayloads.ApiActivityFeedChannel.ListEntries.Response.Nested.EntriesItemAgentVariant2SourceSolutionCurrentSolutionTemplatesItemDetailsInvokeContractParticipantsItem}}}}}, prefills: {"prefills", {:ref, @@ -602,7 +600,6 @@ defmodule ArchAstro.SDK.Types.ChannelPayloads.ApiActivityFeedChannel.ListEntries participants: [ ArchAstro.SDK.Types.ChannelPayloads.ApiActivityFeedChannel.ListEntries.Response.Nested.EntriesItemAgentVariant2SourceSolutionSolutionTemplatesItemDetailsInvokeContractParticipantsItem.t() - | nil ] | nil | ArchAstro.SDK.Unset.t(), @@ -617,9 +614,8 @@ defmodule ArchAstro.SDK.Types.ChannelPayloads.ApiActivityFeedChannel.ListEntries {:optional, {:nullable, {:list, - {:nullable, - {:ref, - ArchAstro.SDK.Types.ChannelPayloads.ApiActivityFeedChannel.ListEntries.Response.Nested.EntriesItemAgentVariant2SourceSolutionSolutionTemplatesItemDetailsInvokeContractParticipantsItem}}}}}}, + {:ref, + ArchAstro.SDK.Types.ChannelPayloads.ApiActivityFeedChannel.ListEntries.Response.Nested.EntriesItemAgentVariant2SourceSolutionSolutionTemplatesItemDetailsInvokeContractParticipantsItem}}}}}, prefills: {"prefills", {:ref, diff --git a/lib/archastro/generated/channels/api_chat_channel.ex b/lib/archastro/generated/channels/api_chat_channel.ex index 2528732..8c325a9 100644 --- a/lib/archastro/generated/channels/api_chat_channel.ex +++ b/lib/archastro/generated/channels/api_chat_channel.ex @@ -1,6 +1,6 @@ # Copyright (c) 2026 ArchAstro Inc. Licensed under the MIT License. # This file is auto-generated by @archastro/sdk-generator. Do not edit. -# Content hash: f20226900e28 +# Content hash: a65dcbc22b49 defmodule ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.JoinTeamThread.Params do @moduledoc """ @@ -92,27 +92,96 @@ defmodule ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.JoinTeamTransient.P def matches?(value), do: ArchAstro.SDK.Codec.matches?(value, {:object, Keyword.values(@fields)}) end +defmodule ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.JoinUserThread.Params.Nested.LocalToolsItemFunction do + @moduledoc """ + LocalToolsItemFunction API model. + """ + @enforce_keys [:description, :name, :parameters] + defstruct description: nil, name: nil, parameters: nil + + @type t :: %__MODULE__{ + description: String.t(), + name: String.t(), + parameters: %{optional(String.t()) => ArchAstro.SDK.JSON.t()} + } + + @fields [ + description: {"description", :string}, + name: {"name", :string}, + parameters: {"parameters", {:map, :unknown}} + ] + @spec from_map(ArchAstro.SDK.JSON.object()) :: t() + def from_map(data), do: ArchAstro.SDK.Codec.struct_from_map(__MODULE__, data, @fields) + @spec to_map(t()) :: ArchAstro.SDK.JSON.object() + def to_map(value), do: ArchAstro.SDK.Codec.struct_to_map(value, @fields) + @spec matches?(ArchAstro.SDK.JSON.t()) :: boolean() + def matches?(value), do: ArchAstro.SDK.Codec.matches?(value, {:object, Keyword.values(@fields)}) +end + +defmodule ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.JoinUserThread.Params.Nested.LocalToolsItem do + @moduledoc """ + LocalToolsItem API model. + """ + @enforce_keys [:function, :type] + defstruct function: nil, type: nil + + @type t :: %__MODULE__{ + function: + ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.JoinUserThread.Params.Nested.LocalToolsItemFunction.t(), + type: String.t() + } + + @fields [ + function: + {"function", + {:ref, + ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.JoinUserThread.Params.Nested.LocalToolsItemFunction}}, + type: {"type", {:enum, ["function"]}} + ] + @spec from_map(ArchAstro.SDK.JSON.object()) :: t() + def from_map(data), do: ArchAstro.SDK.Codec.struct_from_map(__MODULE__, data, @fields) + @spec to_map(t()) :: ArchAstro.SDK.JSON.object() + def to_map(value), do: ArchAstro.SDK.Codec.struct_to_map(value, @fields) + @spec matches?(ArchAstro.SDK.JSON.t()) :: boolean() + def matches?(value), do: ArchAstro.SDK.Codec.matches?(value, {:object, Keyword.values(@fields)}) +end + defmodule ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.JoinUserThread.Params do @moduledoc """ - Join a user-scoped thread by ID + Join a user-scoped thread by ID, optionally supplying local tools for a personal thread """ defstruct after_cursor: :__archastro_unset__, before_cursor: :__archastro_unset__, include_metadata: :__archastro_unset__, - limit: :__archastro_unset__ + limit: :__archastro_unset__, + local_tool_provider_id: :__archastro_unset__, + local_tools: :__archastro_unset__ @type t :: %__MODULE__{ after_cursor: String.t() | ArchAstro.SDK.Unset.t(), before_cursor: String.t() | ArchAstro.SDK.Unset.t(), include_metadata: boolean() | ArchAstro.SDK.Unset.t(), - limit: integer() | ArchAstro.SDK.Unset.t() + limit: integer() | ArchAstro.SDK.Unset.t(), + local_tool_provider_id: String.t() | ArchAstro.SDK.Unset.t(), + local_tools: + [ + ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.JoinUserThread.Params.Nested.LocalToolsItem.t() + ] + | ArchAstro.SDK.Unset.t() } @fields [ after_cursor: {"after_cursor", {:optional, :string}}, before_cursor: {"before_cursor", {:optional, :string}}, include_metadata: {"include_metadata", {:optional, :boolean}}, - limit: {"limit", {:optional, :integer}} + limit: {"limit", {:optional, :integer}}, + local_tool_provider_id: {"local_tool_provider_id", {:optional, :string}}, + local_tools: + {"local_tools", + {:optional, + {:list, + {:ref, + ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.JoinUserThread.Params.Nested.LocalToolsItem}}}} ] @spec from_map(ArchAstro.SDK.JSON.object()) :: t() def from_map(data), do: ArchAstro.SDK.Codec.struct_from_map(__MODULE__, data, @fields) @@ -434,7 +503,6 @@ defmodule ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatForkThread.R participants: [ ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatForkThread.Response.Nested.ChatModelAgentSourceSolutionCurrentSolutionTemplatesItemDetailsInvokeContractParticipantsItem.t() - | nil ] | nil | ArchAstro.SDK.Unset.t(), @@ -449,9 +517,8 @@ defmodule ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatForkThread.R {:optional, {:nullable, {:list, - {:nullable, - {:ref, - ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatForkThread.Response.Nested.ChatModelAgentSourceSolutionCurrentSolutionTemplatesItemDetailsInvokeContractParticipantsItem}}}}}}, + {:ref, + ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatForkThread.Response.Nested.ChatModelAgentSourceSolutionCurrentSolutionTemplatesItemDetailsInvokeContractParticipantsItem}}}}}, prefills: {"prefills", {:ref, @@ -770,7 +837,6 @@ defmodule ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatForkThread.R participants: [ ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatForkThread.Response.Nested.ChatModelAgentSourceSolutionSolutionTemplatesItemDetailsInvokeContractParticipantsItem.t() - | nil ] | nil | ArchAstro.SDK.Unset.t(), @@ -785,9 +851,8 @@ defmodule ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatForkThread.R {:optional, {:nullable, {:list, - {:nullable, - {:ref, - ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatForkThread.Response.Nested.ChatModelAgentSourceSolutionSolutionTemplatesItemDetailsInvokeContractParticipantsItem}}}}}}, + {:ref, + ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatForkThread.Response.Nested.ChatModelAgentSourceSolutionSolutionTemplatesItemDetailsInvokeContractParticipantsItem}}}}}, prefills: {"prefills", {:ref, @@ -1422,7 +1487,6 @@ defmodule ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatForkThread.R participants: [ ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatForkThread.Response.Nested.ChatModelMembersItemAgentSourceSolutionCurrentSolutionTemplatesItemDetailsInvokeContractParticipantsItem.t() - | nil ] | nil | ArchAstro.SDK.Unset.t(), @@ -1437,9 +1501,8 @@ defmodule ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatForkThread.R {:optional, {:nullable, {:list, - {:nullable, - {:ref, - ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatForkThread.Response.Nested.ChatModelMembersItemAgentSourceSolutionCurrentSolutionTemplatesItemDetailsInvokeContractParticipantsItem}}}}}}, + {:ref, + ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatForkThread.Response.Nested.ChatModelMembersItemAgentSourceSolutionCurrentSolutionTemplatesItemDetailsInvokeContractParticipantsItem}}}}}, prefills: {"prefills", {:ref, @@ -1758,7 +1821,6 @@ defmodule ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatForkThread.R participants: [ ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatForkThread.Response.Nested.ChatModelMembersItemAgentSourceSolutionSolutionTemplatesItemDetailsInvokeContractParticipantsItem.t() - | nil ] | nil | ArchAstro.SDK.Unset.t(), @@ -1773,9 +1835,8 @@ defmodule ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatForkThread.R {:optional, {:nullable, {:list, - {:nullable, - {:ref, - ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatForkThread.Response.Nested.ChatModelMembersItemAgentSourceSolutionSolutionTemplatesItemDetailsInvokeContractParticipantsItem}}}}}}, + {:ref, + ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatForkThread.Response.Nested.ChatModelMembersItemAgentSourceSolutionSolutionTemplatesItemDetailsInvokeContractParticipantsItem}}}}}, prefills: {"prefills", {:ref, @@ -4255,7 +4316,6 @@ defmodule ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatForkThread.R participants: [ ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatForkThread.Response.Nested.ChatModelThreadParticipatingAgentsItemSourceSolutionCurrentSolutionTemplatesItemDetailsInvokeContractParticipantsItem.t() - | nil ] | nil | ArchAstro.SDK.Unset.t(), @@ -4270,9 +4330,8 @@ defmodule ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatForkThread.R {:optional, {:nullable, {:list, - {:nullable, - {:ref, - ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatForkThread.Response.Nested.ChatModelThreadParticipatingAgentsItemSourceSolutionCurrentSolutionTemplatesItemDetailsInvokeContractParticipantsItem}}}}}}, + {:ref, + ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatForkThread.Response.Nested.ChatModelThreadParticipatingAgentsItemSourceSolutionCurrentSolutionTemplatesItemDetailsInvokeContractParticipantsItem}}}}}, prefills: {"prefills", {:ref, @@ -4591,7 +4650,6 @@ defmodule ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatForkThread.R participants: [ ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatForkThread.Response.Nested.ChatModelThreadParticipatingAgentsItemSourceSolutionSolutionTemplatesItemDetailsInvokeContractParticipantsItem.t() - | nil ] | nil | ArchAstro.SDK.Unset.t(), @@ -4606,9 +4664,8 @@ defmodule ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatForkThread.R {:optional, {:nullable, {:list, - {:nullable, - {:ref, - ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatForkThread.Response.Nested.ChatModelThreadParticipatingAgentsItemSourceSolutionSolutionTemplatesItemDetailsInvokeContractParticipantsItem}}}}}}, + {:ref, + ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatForkThread.Response.Nested.ChatModelThreadParticipatingAgentsItemSourceSolutionSolutionTemplatesItemDetailsInvokeContractParticipantsItem}}}}}, prefills: {"prefills", {:ref, @@ -5109,7 +5166,6 @@ defmodule ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatForkThread.R participating_agents: [ ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatForkThread.Response.Nested.ChatModelThreadParticipatingAgentsItem.t() - | nil ] | nil | ArchAstro.SDK.Unset.t(), @@ -5120,9 +5176,7 @@ defmodule ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatForkThread.R | ArchAstro.SDK.Unset.t(), slug: String.t() | nil | ArchAstro.SDK.Unset.t(), sub_threads: - [%{optional(String.t()) => ArchAstro.SDK.JSON.t()} | nil] - | nil - | ArchAstro.SDK.Unset.t(), + [%{optional(String.t()) => ArchAstro.SDK.JSON.t()}] | nil | ArchAstro.SDK.Unset.t(), tags: [String.t()] | ArchAstro.SDK.Unset.t(), team: String.t() | nil | ArchAstro.SDK.Unset.t(), title: String.t() | nil | ArchAstro.SDK.Unset.t(), @@ -5179,9 +5233,8 @@ defmodule ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatForkThread.R {:optional, {:nullable, {:list, - {:nullable, - {:ref, - ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatForkThread.Response.Nested.ChatModelThreadParticipatingAgentsItem}}}}}}, + {:ref, + ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatForkThread.Response.Nested.ChatModelThreadParticipatingAgentsItem}}}}}, role: {"role", {:optional, {:nullable, :string}}}, sandbox: {"sandbox", {:optional, {:nullable, :string}}}, settings: @@ -5190,7 +5243,7 @@ defmodule ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatForkThread.R {:ref, ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatForkThread.Response.Nested.ChatModelThreadSettings}}}, slug: {"slug", {:optional, {:nullable, :string}}}, - sub_threads: {"sub_threads", {:optional, {:nullable, {:list, {:nullable, {:map, :unknown}}}}}}, + sub_threads: {"sub_threads", {:optional, {:nullable, {:list, {:map, :unknown}}}}}, tags: {"tags", {:optional, {:list, :string}}}, team: {"team", {:optional, {:nullable, :string}}}, title: {"title", {:optional, {:nullable, :string}}}, @@ -6549,7 +6602,6 @@ defmodule ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatForkThread.R participants: [ ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatForkThread.Response.Nested.ThreadParticipatingAgentsItemSourceSolutionCurrentSolutionTemplatesItemDetailsInvokeContractParticipantsItem.t() - | nil ] | nil | ArchAstro.SDK.Unset.t(), @@ -6564,9 +6616,8 @@ defmodule ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatForkThread.R {:optional, {:nullable, {:list, - {:nullable, - {:ref, - ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatForkThread.Response.Nested.ThreadParticipatingAgentsItemSourceSolutionCurrentSolutionTemplatesItemDetailsInvokeContractParticipantsItem}}}}}}, + {:ref, + ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatForkThread.Response.Nested.ThreadParticipatingAgentsItemSourceSolutionCurrentSolutionTemplatesItemDetailsInvokeContractParticipantsItem}}}}}, prefills: {"prefills", {:ref, @@ -6885,7 +6936,6 @@ defmodule ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatForkThread.R participants: [ ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatForkThread.Response.Nested.ThreadParticipatingAgentsItemSourceSolutionSolutionTemplatesItemDetailsInvokeContractParticipantsItem.t() - | nil ] | nil | ArchAstro.SDK.Unset.t(), @@ -6900,9 +6950,8 @@ defmodule ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatForkThread.R {:optional, {:nullable, {:list, - {:nullable, - {:ref, - ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatForkThread.Response.Nested.ThreadParticipatingAgentsItemSourceSolutionSolutionTemplatesItemDetailsInvokeContractParticipantsItem}}}}}}, + {:ref, + ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatForkThread.Response.Nested.ThreadParticipatingAgentsItemSourceSolutionSolutionTemplatesItemDetailsInvokeContractParticipantsItem}}}}}, prefills: {"prefills", {:ref, @@ -7403,7 +7452,6 @@ defmodule ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatForkThread.R participating_agents: [ ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatForkThread.Response.Nested.ThreadParticipatingAgentsItem.t() - | nil ] | nil | ArchAstro.SDK.Unset.t(), @@ -7414,9 +7462,7 @@ defmodule ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatForkThread.R | ArchAstro.SDK.Unset.t(), slug: String.t() | nil | ArchAstro.SDK.Unset.t(), sub_threads: - [%{optional(String.t()) => ArchAstro.SDK.JSON.t()} | nil] - | nil - | ArchAstro.SDK.Unset.t(), + [%{optional(String.t()) => ArchAstro.SDK.JSON.t()}] | nil | ArchAstro.SDK.Unset.t(), tags: [String.t()] | ArchAstro.SDK.Unset.t(), team: String.t() | nil | ArchAstro.SDK.Unset.t(), title: String.t() | nil | ArchAstro.SDK.Unset.t(), @@ -7473,9 +7519,8 @@ defmodule ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatForkThread.R {:optional, {:nullable, {:list, - {:nullable, - {:ref, - ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatForkThread.Response.Nested.ThreadParticipatingAgentsItem}}}}}}, + {:ref, + ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatForkThread.Response.Nested.ThreadParticipatingAgentsItem}}}}}, role: {"role", {:optional, {:nullable, :string}}}, sandbox: {"sandbox", {:optional, {:nullable, :string}}}, settings: @@ -7484,7 +7529,7 @@ defmodule ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatForkThread.R {:ref, ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatForkThread.Response.Nested.ThreadSettings}}}, slug: {"slug", {:optional, {:nullable, :string}}}, - sub_threads: {"sub_threads", {:optional, {:nullable, {:list, {:nullable, {:map, :unknown}}}}}}, + sub_threads: {"sub_threads", {:optional, {:nullable, {:list, {:map, :unknown}}}}}, tags: {"tags", {:optional, {:list, :string}}}, team: {"team", {:optional, {:nullable, :string}}}, title: {"title", {:optional, {:nullable, :string}}}, @@ -8563,7 +8608,6 @@ defmodule ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatLoadMoreMess participants: [ ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatLoadMoreMessages.Response.Nested.DataAgentSourceSolutionCurrentSolutionTemplatesItemDetailsInvokeContractParticipantsItem.t() - | nil ] | nil | ArchAstro.SDK.Unset.t(), @@ -8578,9 +8622,8 @@ defmodule ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatLoadMoreMess {:optional, {:nullable, {:list, - {:nullable, - {:ref, - ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatLoadMoreMessages.Response.Nested.DataAgentSourceSolutionCurrentSolutionTemplatesItemDetailsInvokeContractParticipantsItem}}}}}}, + {:ref, + ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatLoadMoreMessages.Response.Nested.DataAgentSourceSolutionCurrentSolutionTemplatesItemDetailsInvokeContractParticipantsItem}}}}}, prefills: {"prefills", {:ref, @@ -8899,7 +8942,6 @@ defmodule ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatLoadMoreMess participants: [ ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatLoadMoreMessages.Response.Nested.DataAgentSourceSolutionSolutionTemplatesItemDetailsInvokeContractParticipantsItem.t() - | nil ] | nil | ArchAstro.SDK.Unset.t(), @@ -8914,9 +8956,8 @@ defmodule ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatLoadMoreMess {:optional, {:nullable, {:list, - {:nullable, - {:ref, - ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatLoadMoreMessages.Response.Nested.DataAgentSourceSolutionSolutionTemplatesItemDetailsInvokeContractParticipantsItem}}}}}}, + {:ref, + ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatLoadMoreMessages.Response.Nested.DataAgentSourceSolutionSolutionTemplatesItemDetailsInvokeContractParticipantsItem}}}}}, prefills: {"prefills", {:ref, @@ -9551,7 +9592,6 @@ defmodule ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatLoadMoreMess participants: [ ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatLoadMoreMessages.Response.Nested.DataMembersItemAgentSourceSolutionCurrentSolutionTemplatesItemDetailsInvokeContractParticipantsItem.t() - | nil ] | nil | ArchAstro.SDK.Unset.t(), @@ -9566,9 +9606,8 @@ defmodule ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatLoadMoreMess {:optional, {:nullable, {:list, - {:nullable, - {:ref, - ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatLoadMoreMessages.Response.Nested.DataMembersItemAgentSourceSolutionCurrentSolutionTemplatesItemDetailsInvokeContractParticipantsItem}}}}}}, + {:ref, + ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatLoadMoreMessages.Response.Nested.DataMembersItemAgentSourceSolutionCurrentSolutionTemplatesItemDetailsInvokeContractParticipantsItem}}}}}, prefills: {"prefills", {:ref, @@ -9887,7 +9926,6 @@ defmodule ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatLoadMoreMess participants: [ ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatLoadMoreMessages.Response.Nested.DataMembersItemAgentSourceSolutionSolutionTemplatesItemDetailsInvokeContractParticipantsItem.t() - | nil ] | nil | ArchAstro.SDK.Unset.t(), @@ -9902,9 +9940,8 @@ defmodule ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatLoadMoreMess {:optional, {:nullable, {:list, - {:nullable, - {:ref, - ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatLoadMoreMessages.Response.Nested.DataMembersItemAgentSourceSolutionSolutionTemplatesItemDetailsInvokeContractParticipantsItem}}}}}}, + {:ref, + ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatLoadMoreMessages.Response.Nested.DataMembersItemAgentSourceSolutionSolutionTemplatesItemDetailsInvokeContractParticipantsItem}}}}}, prefills: {"prefills", {:ref, @@ -12384,7 +12421,6 @@ defmodule ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatLoadMoreMess participants: [ ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatLoadMoreMessages.Response.Nested.DataThreadParticipatingAgentsItemSourceSolutionCurrentSolutionTemplatesItemDetailsInvokeContractParticipantsItem.t() - | nil ] | nil | ArchAstro.SDK.Unset.t(), @@ -12399,9 +12435,8 @@ defmodule ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatLoadMoreMess {:optional, {:nullable, {:list, - {:nullable, - {:ref, - ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatLoadMoreMessages.Response.Nested.DataThreadParticipatingAgentsItemSourceSolutionCurrentSolutionTemplatesItemDetailsInvokeContractParticipantsItem}}}}}}, + {:ref, + ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatLoadMoreMessages.Response.Nested.DataThreadParticipatingAgentsItemSourceSolutionCurrentSolutionTemplatesItemDetailsInvokeContractParticipantsItem}}}}}, prefills: {"prefills", {:ref, @@ -12720,7 +12755,6 @@ defmodule ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatLoadMoreMess participants: [ ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatLoadMoreMessages.Response.Nested.DataThreadParticipatingAgentsItemSourceSolutionSolutionTemplatesItemDetailsInvokeContractParticipantsItem.t() - | nil ] | nil | ArchAstro.SDK.Unset.t(), @@ -12735,9 +12769,8 @@ defmodule ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatLoadMoreMess {:optional, {:nullable, {:list, - {:nullable, - {:ref, - ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatLoadMoreMessages.Response.Nested.DataThreadParticipatingAgentsItemSourceSolutionSolutionTemplatesItemDetailsInvokeContractParticipantsItem}}}}}}, + {:ref, + ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatLoadMoreMessages.Response.Nested.DataThreadParticipatingAgentsItemSourceSolutionSolutionTemplatesItemDetailsInvokeContractParticipantsItem}}}}}, prefills: {"prefills", {:ref, @@ -13238,7 +13271,6 @@ defmodule ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatLoadMoreMess participating_agents: [ ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatLoadMoreMessages.Response.Nested.DataThreadParticipatingAgentsItem.t() - | nil ] | nil | ArchAstro.SDK.Unset.t(), @@ -13249,9 +13281,7 @@ defmodule ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatLoadMoreMess | ArchAstro.SDK.Unset.t(), slug: String.t() | nil | ArchAstro.SDK.Unset.t(), sub_threads: - [%{optional(String.t()) => ArchAstro.SDK.JSON.t()} | nil] - | nil - | ArchAstro.SDK.Unset.t(), + [%{optional(String.t()) => ArchAstro.SDK.JSON.t()}] | nil | ArchAstro.SDK.Unset.t(), tags: [String.t()] | ArchAstro.SDK.Unset.t(), team: String.t() | nil | ArchAstro.SDK.Unset.t(), title: String.t() | nil | ArchAstro.SDK.Unset.t(), @@ -13308,9 +13338,8 @@ defmodule ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatLoadMoreMess {:optional, {:nullable, {:list, - {:nullable, - {:ref, - ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatLoadMoreMessages.Response.Nested.DataThreadParticipatingAgentsItem}}}}}}, + {:ref, + ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatLoadMoreMessages.Response.Nested.DataThreadParticipatingAgentsItem}}}}}, role: {"role", {:optional, {:nullable, :string}}}, sandbox: {"sandbox", {:optional, {:nullable, :string}}}, settings: @@ -13319,7 +13348,7 @@ defmodule ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatLoadMoreMess {:ref, ArchAstro.SDK.Types.ChannelPayloads.ApiChatChannel.ApiChatLoadMoreMessages.Response.Nested.DataThreadSettings}}}, slug: {"slug", {:optional, {:nullable, :string}}}, - sub_threads: {"sub_threads", {:optional, {:nullable, {:list, {:nullable, {:map, :unknown}}}}}}, + sub_threads: {"sub_threads", {:optional, {:nullable, {:list, {:map, :unknown}}}}}, tags: {"tags", {:optional, {:list, :string}}}, team: {"team", {:optional, {:nullable, :string}}}, title: {"title", {:optional, {:nullable, :string}}}, diff --git a/lib/archastro/generated/channels/api_tasks_channel.ex b/lib/archastro/generated/channels/api_tasks_channel.ex index c2641e3..886a73f 100644 --- a/lib/archastro/generated/channels/api_tasks_channel.ex +++ b/lib/archastro/generated/channels/api_tasks_channel.ex @@ -1,6 +1,6 @@ # Copyright (c) 2026 ArchAstro Inc. Licensed under the MIT License. # This file is auto-generated by @archastro/sdk-generator. Do not edit. -# Content hash: cdad5dfdda2e +# Content hash: e5ba28f823f7 defmodule ArchAstro.SDK.Types.ChannelPayloads.ApiTasksChannel.TasksUpdated.Payload.Nested.TasksItemCreatedByActorProfilePicture do @moduledoc """ @@ -198,6 +198,7 @@ defmodule ArchAstro.SDK.Types.ChannelPayloads.ApiTasksChannel.TasksUpdated.Paylo current_lease: :__archastro_unset__, description: :__archastro_unset__, due_date: :__archastro_unset__, + epic: :__archastro_unset__, id: nil, is_blocked: :__archastro_unset__, links: :__archastro_unset__, @@ -210,6 +211,9 @@ defmodule ArchAstro.SDK.Types.ChannelPayloads.ApiTasksChannel.TasksUpdated.Paylo parent: :__archastro_unset__, priority: :__archastro_unset__, sandbox: :__archastro_unset__, + source_id: :__archastro_unset__, + source_scope: :__archastro_unset__, + source_type: :__archastro_unset__, status: nil, subtasks_count: :__archastro_unset__, tags: :__archastro_unset__, @@ -236,6 +240,7 @@ defmodule ArchAstro.SDK.Types.ChannelPayloads.ApiTasksChannel.TasksUpdated.Paylo | ArchAstro.SDK.Unset.t(), description: String.t() | nil | ArchAstro.SDK.Unset.t(), due_date: DateTime.t() | nil | ArchAstro.SDK.Unset.t(), + epic: String.t() | nil | ArchAstro.SDK.Unset.t(), id: String.t(), is_blocked: boolean() | ArchAstro.SDK.Unset.t(), links: %{optional(String.t()) => ArchAstro.SDK.JSON.t()} | ArchAstro.SDK.Unset.t(), @@ -251,6 +256,9 @@ defmodule ArchAstro.SDK.Types.ChannelPayloads.ApiTasksChannel.TasksUpdated.Paylo parent: String.t() | nil | ArchAstro.SDK.Unset.t(), priority: integer() | ArchAstro.SDK.Unset.t(), sandbox: String.t() | nil | ArchAstro.SDK.Unset.t(), + source_id: String.t() | nil | ArchAstro.SDK.Unset.t(), + source_scope: String.t() | nil | ArchAstro.SDK.Unset.t(), + source_type: String.t() | nil | ArchAstro.SDK.Unset.t(), status: String.t(), subtasks_count: integer() | ArchAstro.SDK.Unset.t(), tags: [String.t()] | ArchAstro.SDK.Unset.t(), @@ -282,6 +290,7 @@ defmodule ArchAstro.SDK.Types.ChannelPayloads.ApiTasksChannel.TasksUpdated.Paylo ArchAstro.SDK.Types.ChannelPayloads.ApiTasksChannel.TasksUpdated.Payload.Nested.TasksItemCurrentLease}}}}, description: {"description", {:optional, {:nullable, :string}}}, due_date: {"due_date", {:optional, {:nullable, :datetime}}}, + epic: {"epic", {:optional, {:nullable, :string}}}, id: {"id", :string}, is_blocked: {"is_blocked", {:optional, :boolean}}, links: {"links", {:optional, {:map, :unknown}}}, @@ -299,6 +308,9 @@ defmodule ArchAstro.SDK.Types.ChannelPayloads.ApiTasksChannel.TasksUpdated.Paylo parent: {"parent", {:optional, {:nullable, :string}}}, priority: {"priority", {:optional, :integer}}, sandbox: {"sandbox", {:optional, {:nullable, :string}}}, + source_id: {"source_id", {:optional, {:nullable, :string}}}, + source_scope: {"source_scope", {:optional, {:nullable, :string}}}, + source_type: {"source_type", {:optional, {:nullable, :string}}}, status: {"status", :string}, subtasks_count: {"subtasks_count", {:optional, :integer}}, tags: {"tags", {:optional, {:list, :string}}}, diff --git a/lib/archastro/generated/types/chat.ex b/lib/archastro/generated/types/chat.ex index 44942ce..ee49b0f 100644 --- a/lib/archastro/generated/types/chat.ex +++ b/lib/archastro/generated/types/chat.ex @@ -1,6 +1,6 @@ # Copyright (c) 2026 ArchAstro Inc. Licensed under the MIT License. # This file is auto-generated by @archastro/sdk-generator. Do not edit. -# Content hash: f9bf69594c2e +# Content hash: 586a0f3a79fe defmodule ArchAstro.SDK.Types.ChatMember do @moduledoc """ @@ -125,6 +125,56 @@ defmodule ArchAstro.SDK.Types.ChatLoadMoreMessagesResponse do def matches?(value), do: ArchAstro.SDK.Codec.matches?(value, {:object, Keyword.values(@fields)}) end +defmodule ArchAstro.SDK.Types.ChatLocalToolFunction do + @moduledoc """ + A function implemented by the client connected to a personal thread. + """ + @enforce_keys [:description, :name, :parameters] + defstruct description: nil, name: nil, parameters: nil + + @type t :: %__MODULE__{ + description: String.t(), + name: String.t(), + parameters: %{optional(String.t()) => ArchAstro.SDK.JSON.t()} + } + + @fields [ + description: {"description", :string}, + name: {"name", :string}, + parameters: {"parameters", {:map, :unknown}} + ] + @spec from_map(ArchAstro.SDK.JSON.object()) :: t() + def from_map(data), do: ArchAstro.SDK.Codec.struct_from_map(__MODULE__, data, @fields) + @spec to_map(t()) :: ArchAstro.SDK.JSON.object() + def to_map(value), do: ArchAstro.SDK.Codec.struct_to_map(value, @fields) + @spec matches?(ArchAstro.SDK.JSON.t()) :: boolean() + def matches?(value), do: ArchAstro.SDK.Codec.matches?(value, {:object, Keyword.values(@fields)}) +end + +defmodule ArchAstro.SDK.Types.ChatLocalToolDefinition do + @moduledoc """ + An OpenAI-compatible local function definition supplied while joining a personal thread. + """ + @enforce_keys [:function, :type] + defstruct function: nil, type: nil + + @type t :: %__MODULE__{ + function: ArchAstro.SDK.Types.ChatLocalToolFunction.t(), + type: String.t() + } + + @fields [ + function: {"function", {:ref, ArchAstro.SDK.Types.ChatLocalToolFunction}}, + type: {"type", {:enum, ["function"]}} + ] + @spec from_map(ArchAstro.SDK.JSON.object()) :: t() + def from_map(data), do: ArchAstro.SDK.Codec.struct_from_map(__MODULE__, data, @fields) + @spec to_map(t()) :: ArchAstro.SDK.JSON.object() + def to_map(value), do: ArchAstro.SDK.Codec.struct_to_map(value, @fields) + @spec matches?(ArchAstro.SDK.JSON.t()) :: boolean() + def matches?(value), do: ArchAstro.SDK.Codec.matches?(value, {:object, Keyword.values(@fields)}) +end + defmodule ArchAstro.SDK.Types.ChatMarkThreadReadResponse do @moduledoc """ Response returned after marking a chat thread as read. Confirms that the read marker was successfully recorded for the authenticated user. diff --git a/lib/archastro/generated/types/common.ex b/lib/archastro/generated/types/common.ex index 8199753..b551e18 100644 --- a/lib/archastro/generated/types/common.ex +++ b/lib/archastro/generated/types/common.ex @@ -1,6 +1,6 @@ # Copyright (c) 2026 ArchAstro Inc. Licensed under the MIT License. # This file is auto-generated by @archastro/sdk-generator. Do not edit. -# Content hash: 0c5df87f57c5 +# Content hash: 7efdce067f3c defmodule ArchAstro.SDK.Types.AclGrant do @moduledoc """ @@ -296,7 +296,6 @@ defmodule ArchAstro.SDK.Types.ActivityFeedEntry.Nested.AgentVariant2SourceSoluti participants: [ ArchAstro.SDK.Types.ActivityFeedEntry.Nested.AgentVariant2SourceSolutionCurrentSolutionTemplatesItemDetailsInvokeContractParticipantsItem.t() - | nil ] | nil | ArchAstro.SDK.Unset.t(), @@ -311,9 +310,8 @@ defmodule ArchAstro.SDK.Types.ActivityFeedEntry.Nested.AgentVariant2SourceSoluti {:optional, {:nullable, {:list, - {:nullable, - {:ref, - ArchAstro.SDK.Types.ActivityFeedEntry.Nested.AgentVariant2SourceSolutionCurrentSolutionTemplatesItemDetailsInvokeContractParticipantsItem}}}}}}, + {:ref, + ArchAstro.SDK.Types.ActivityFeedEntry.Nested.AgentVariant2SourceSolutionCurrentSolutionTemplatesItemDetailsInvokeContractParticipantsItem}}}}}, prefills: {"prefills", {:ref, @@ -632,7 +630,6 @@ defmodule ArchAstro.SDK.Types.ActivityFeedEntry.Nested.AgentVariant2SourceSoluti participants: [ ArchAstro.SDK.Types.ActivityFeedEntry.Nested.AgentVariant2SourceSolutionSolutionTemplatesItemDetailsInvokeContractParticipantsItem.t() - | nil ] | nil | ArchAstro.SDK.Unset.t(), @@ -647,9 +644,8 @@ defmodule ArchAstro.SDK.Types.ActivityFeedEntry.Nested.AgentVariant2SourceSoluti {:optional, {:nullable, {:list, - {:nullable, - {:ref, - ArchAstro.SDK.Types.ActivityFeedEntry.Nested.AgentVariant2SourceSolutionSolutionTemplatesItemDetailsInvokeContractParticipantsItem}}}}}}, + {:ref, + ArchAstro.SDK.Types.ActivityFeedEntry.Nested.AgentVariant2SourceSolutionSolutionTemplatesItemDetailsInvokeContractParticipantsItem}}}}}, prefills: {"prefills", {:ref, @@ -2427,6 +2423,353 @@ defmodule ArchAstro.SDK.Types.Deployment do def matches?(value), do: ArchAstro.SDK.Codec.matches?(value, {:object, Keyword.values(@fields)}) end +defmodule ArchAstro.SDK.Types.DomainEvent do + @moduledoc """ + A domain event with stable attribution fields and an event-specific payload. + """ + @enforce_keys [:created_at, :event_name, :id, :payload] + defstruct agent: :__archastro_unset__, + created_at: nil, + event_name: nil, + id: nil, + idempotency_key: :__archastro_unset__, + org: :__archastro_unset__, + payload: nil, + sandbox: :__archastro_unset__, + team: :__archastro_unset__, + user: :__archastro_unset__ + + @type t :: %__MODULE__{ + agent: String.t() | ArchAstro.SDK.Unset.t(), + created_at: DateTime.t(), + event_name: String.t(), + id: String.t(), + idempotency_key: String.t() | ArchAstro.SDK.Unset.t(), + org: String.t() | ArchAstro.SDK.Unset.t(), + payload: %{optional(String.t()) => ArchAstro.SDK.JSON.t()}, + sandbox: String.t() | ArchAstro.SDK.Unset.t(), + team: String.t() | ArchAstro.SDK.Unset.t(), + user: String.t() | ArchAstro.SDK.Unset.t() + } + + @fields [ + agent: {"agent", {:optional, :string}}, + created_at: {"created_at", :datetime}, + event_name: {"event_name", :string}, + id: {"id", :string}, + idempotency_key: {"idempotency_key", {:optional, :string}}, + org: {"org", {:optional, :string}}, + payload: {"payload", {:map, :unknown}}, + sandbox: {"sandbox", {:optional, :string}}, + team: {"team", {:optional, :string}}, + user: {"user", {:optional, :string}} + ] + @spec from_map(ArchAstro.SDK.JSON.object()) :: t() + def from_map(data), do: ArchAstro.SDK.Codec.struct_from_map(__MODULE__, data, @fields) + @spec to_map(t()) :: ArchAstro.SDK.JSON.object() + def to_map(value), do: ArchAstro.SDK.Codec.struct_to_map(value, @fields) + @spec matches?(ArchAstro.SDK.JSON.t()) :: boolean() + def matches?(value), do: ArchAstro.SDK.Codec.matches?(value, {:object, Keyword.values(@fields)}) +end + +defmodule ArchAstro.SDK.Types.EventSubscription do + @moduledoc """ + An app-scoped subscription to exact domain-event names. + """ + @enforce_keys [ + :available_count, + :created_at, + :dropped_events_total, + :dropped_through_position, + :event_names, + :id, + :leased_count, + :max_pending_events, + :name, + :queue_epoch, + :retention_seconds, + :status, + :updated_at, + :visibility_timeout_seconds + ] + defstruct agent: :__archastro_unset__, + available_count: nil, + created_at: nil, + dropped_events_total: nil, + dropped_through_position: nil, + event_names: nil, + id: nil, + last_overflow_at: :__archastro_unset__, + leased_count: nil, + max_pending_events: nil, + name: nil, + org: :__archastro_unset__, + queue_epoch: nil, + retention_seconds: nil, + sandbox: :__archastro_unset__, + status: nil, + team: :__archastro_unset__, + updated_at: nil, + user: :__archastro_unset__, + visibility_timeout_seconds: nil + + @type t :: %__MODULE__{ + agent: String.t() | ArchAstro.SDK.Unset.t(), + available_count: integer(), + created_at: DateTime.t(), + dropped_events_total: integer(), + dropped_through_position: integer(), + event_names: [String.t()], + id: String.t(), + last_overflow_at: DateTime.t() | ArchAstro.SDK.Unset.t(), + leased_count: integer(), + max_pending_events: integer(), + name: String.t(), + org: String.t() | ArchAstro.SDK.Unset.t(), + queue_epoch: integer(), + retention_seconds: integer(), + sandbox: String.t() | ArchAstro.SDK.Unset.t(), + status: String.t(), + team: String.t() | ArchAstro.SDK.Unset.t(), + updated_at: DateTime.t(), + user: String.t() | ArchAstro.SDK.Unset.t(), + visibility_timeout_seconds: integer() + } + + @fields [ + agent: {"agent", {:optional, :string}}, + available_count: {"available_count", :integer}, + created_at: {"created_at", :datetime}, + dropped_events_total: {"dropped_events_total", :integer}, + dropped_through_position: {"dropped_through_position", :integer}, + event_names: {"event_names", {:list, :string}}, + id: {"id", :string}, + last_overflow_at: {"last_overflow_at", {:optional, :datetime}}, + leased_count: {"leased_count", :integer}, + max_pending_events: {"max_pending_events", :integer}, + name: {"name", :string}, + org: {"org", {:optional, :string}}, + queue_epoch: {"queue_epoch", :integer}, + retention_seconds: {"retention_seconds", :integer}, + sandbox: {"sandbox", {:optional, :string}}, + status: {"status", {:enum, ["active", "paused"]}}, + team: {"team", {:optional, :string}}, + updated_at: {"updated_at", :datetime}, + user: {"user", {:optional, :string}}, + visibility_timeout_seconds: {"visibility_timeout_seconds", :integer} + ] + @spec from_map(ArchAstro.SDK.JSON.object()) :: t() + def from_map(data), do: ArchAstro.SDK.Codec.struct_from_map(__MODULE__, data, @fields) + @spec to_map(t()) :: ArchAstro.SDK.JSON.object() + def to_map(value), do: ArchAstro.SDK.Codec.struct_to_map(value, @fields) + @spec matches?(ArchAstro.SDK.JSON.t()) :: boolean() + def matches?(value), do: ArchAstro.SDK.Codec.matches?(value, {:object, Keyword.values(@fields)}) +end + +defmodule ArchAstro.SDK.Types.EventSubscriptionDelivery do + @moduledoc """ + A domain event leased from a subscription queue. + """ + @enforce_keys [ + :delivery_id, + :event, + :lease_expires_at, + :receipt_handle, + :receive_count, + :sequence + ] + defstruct delivery_id: nil, + event: nil, + lease_expires_at: nil, + receipt_handle: nil, + receive_count: nil, + sequence: nil + + @type t :: %__MODULE__{ + delivery_id: String.t(), + event: ArchAstro.SDK.Types.DomainEvent.t(), + lease_expires_at: DateTime.t(), + receipt_handle: String.t(), + receive_count: integer(), + sequence: integer() + } + + @fields [ + delivery_id: {"delivery_id", :string}, + event: {"event", {:ref, ArchAstro.SDK.Types.DomainEvent}}, + lease_expires_at: {"lease_expires_at", :datetime}, + receipt_handle: {"receipt_handle", :string}, + receive_count: {"receive_count", :integer}, + sequence: {"sequence", :integer} + ] + @spec from_map(ArchAstro.SDK.JSON.object()) :: t() + def from_map(data), do: ArchAstro.SDK.Codec.struct_from_map(__MODULE__, data, @fields) + @spec to_map(t()) :: ArchAstro.SDK.JSON.object() + def to_map(value), do: ArchAstro.SDK.Codec.struct_to_map(value, @fields) + @spec matches?(ArchAstro.SDK.JSON.t()) :: boolean() + def matches?(value), do: ArchAstro.SDK.Codec.matches?(value, {:object, Keyword.values(@fields)}) +end + +defmodule ArchAstro.SDK.Types.EventSubscriptionClaim do + @moduledoc """ + Result of atomically claiming the head delivery. + """ + @enforce_keys [:data, :dropped_events_total, :dropped_through_position, :has_more, :queue_epoch] + defstruct data: nil, + dropped_events_total: nil, + dropped_through_position: nil, + has_more: nil, + queue_epoch: nil + + @type t :: %__MODULE__{ + data: [ArchAstro.SDK.Types.EventSubscriptionDelivery.t()], + dropped_events_total: integer(), + dropped_through_position: integer(), + has_more: boolean(), + queue_epoch: integer() + } + + @fields [ + data: {"data", {:list, {:ref, ArchAstro.SDK.Types.EventSubscriptionDelivery}}}, + dropped_events_total: {"dropped_events_total", :integer}, + dropped_through_position: {"dropped_through_position", :integer}, + has_more: {"has_more", :boolean}, + queue_epoch: {"queue_epoch", :integer} + ] + @spec from_map(ArchAstro.SDK.JSON.object()) :: t() + def from_map(data), do: ArchAstro.SDK.Codec.struct_from_map(__MODULE__, data, @fields) + @spec to_map(t()) :: ArchAstro.SDK.JSON.object() + def to_map(value), do: ArchAstro.SDK.Codec.struct_to_map(value, @fields) + @spec matches?(ArchAstro.SDK.JSON.t()) :: boolean() + def matches?(value), do: ArchAstro.SDK.Codec.matches?(value, {:object, Keyword.values(@fields)}) +end + +defmodule ArchAstro.SDK.Types.EventSubscriptionQueueEntry do + @moduledoc """ + A non-reserving view of one queued delivery. + """ + @enforce_keys [:delivery_id, :event, :receive_count, :sequence, :state] + defstruct delivery_id: nil, + event: nil, + lease_expires_at: :__archastro_unset__, + receive_count: nil, + sequence: nil, + state: nil + + @type t :: %__MODULE__{ + delivery_id: String.t(), + event: ArchAstro.SDK.Types.DomainEvent.t(), + lease_expires_at: DateTime.t() | ArchAstro.SDK.Unset.t(), + receive_count: integer(), + sequence: integer(), + state: String.t() + } + + @fields [ + delivery_id: {"delivery_id", :string}, + event: {"event", {:ref, ArchAstro.SDK.Types.DomainEvent}}, + lease_expires_at: {"lease_expires_at", {:optional, :datetime}}, + receive_count: {"receive_count", :integer}, + sequence: {"sequence", :integer}, + state: {"state", {:enum, ["available", "leased"]}} + ] + @spec from_map(ArchAstro.SDK.JSON.object()) :: t() + def from_map(data), do: ArchAstro.SDK.Codec.struct_from_map(__MODULE__, data, @fields) + @spec to_map(t()) :: ArchAstro.SDK.JSON.object() + def to_map(value), do: ArchAstro.SDK.Codec.struct_to_map(value, @fields) + @spec matches?(ArchAstro.SDK.JSON.t()) :: boolean() + def matches?(value), do: ArchAstro.SDK.Codec.matches?(value, {:object, Keyword.values(@fields)}) +end + +defmodule ArchAstro.SDK.Types.EventSubscriptionHead do + @moduledoc """ + A non-reserving view of the queue head. + """ + defstruct data: :__archastro_unset__ + + @type t :: %__MODULE__{ + data: ArchAstro.SDK.Types.EventSubscriptionQueueEntry.t() | ArchAstro.SDK.Unset.t() + } + + @fields [data: {"data", {:optional, {:ref, ArchAstro.SDK.Types.EventSubscriptionQueueEntry}}}] + @spec from_map(ArchAstro.SDK.JSON.object()) :: t() + def from_map(data), do: ArchAstro.SDK.Codec.struct_from_map(__MODULE__, data, @fields) + @spec to_map(t()) :: ArchAstro.SDK.JSON.object() + def to_map(value), do: ArchAstro.SDK.Codec.struct_to_map(value, @fields) + @spec matches?(ArchAstro.SDK.JSON.t()) :: boolean() + def matches?(value), do: ArchAstro.SDK.Codec.matches?(value, {:object, Keyword.values(@fields)}) +end + +defmodule ArchAstro.SDK.Types.EventSubscriptionPage do + @moduledoc """ + A page of domain-event subscriptions. + """ + @enforce_keys [:data, :page, :per_page, :total_count, :total_pages] + defstruct data: nil, page: nil, per_page: nil, total_count: nil, total_pages: nil + + @type t :: %__MODULE__{ + data: [ArchAstro.SDK.Types.EventSubscription.t()], + page: integer(), + per_page: integer(), + total_count: integer(), + total_pages: integer() + } + + @fields [ + data: {"data", {:list, {:ref, ArchAstro.SDK.Types.EventSubscription}}}, + page: {"page", :integer}, + per_page: {"per_page", :integer}, + total_count: {"total_count", :integer}, + total_pages: {"total_pages", :integer} + ] + @spec from_map(ArchAstro.SDK.JSON.object()) :: t() + def from_map(data), do: ArchAstro.SDK.Codec.struct_from_map(__MODULE__, data, @fields) + @spec to_map(t()) :: ArchAstro.SDK.JSON.object() + def to_map(value), do: ArchAstro.SDK.Codec.struct_to_map(value, @fields) + @spec matches?(ArchAstro.SDK.JSON.t()) :: boolean() + def matches?(value), do: ArchAstro.SDK.Codec.matches?(value, {:object, Keyword.values(@fields)}) +end + +defmodule ArchAstro.SDK.Types.EventSubscriptionQueue do + @moduledoc """ + A cursor-paginated non-reserving view of a subscription queue. + """ + @enforce_keys [:data, :dropped_events_total, :dropped_through_position, :has_more, :queue_epoch] + defstruct after_cursor: :__archastro_unset__, + before_cursor: :__archastro_unset__, + data: nil, + dropped_events_total: nil, + dropped_through_position: nil, + has_more: nil, + queue_epoch: nil + + @type t :: %__MODULE__{ + after_cursor: String.t() | ArchAstro.SDK.Unset.t(), + before_cursor: String.t() | ArchAstro.SDK.Unset.t(), + data: [ArchAstro.SDK.Types.EventSubscriptionQueueEntry.t()], + dropped_events_total: integer(), + dropped_through_position: integer(), + has_more: boolean(), + queue_epoch: integer() + } + + @fields [ + after_cursor: {"after_cursor", {:optional, :string}}, + before_cursor: {"before_cursor", {:optional, :string}}, + data: {"data", {:list, {:ref, ArchAstro.SDK.Types.EventSubscriptionQueueEntry}}}, + dropped_events_total: {"dropped_events_total", :integer}, + dropped_through_position: {"dropped_through_position", :integer}, + has_more: {"has_more", :boolean}, + queue_epoch: {"queue_epoch", :integer} + ] + @spec from_map(ArchAstro.SDK.JSON.object()) :: t() + def from_map(data), do: ArchAstro.SDK.Codec.struct_from_map(__MODULE__, data, @fields) + @spec to_map(t()) :: ArchAstro.SDK.JSON.object() + def to_map(value), do: ArchAstro.SDK.Codec.struct_to_map(value, @fields) + @spec matches?(ArchAstro.SDK.JSON.t()) :: boolean() + def matches?(value), do: ArchAstro.SDK.Codec.matches?(value, {:object, Keyword.values(@fields)}) +end + defmodule ArchAstro.SDK.Types.StorageFile do @moduledoc """ A file stored in the platform's object storage, with metadata and a signed URL for downloading its contents. @@ -4016,9 +4359,7 @@ defmodule ArchAstro.SDK.Types.SolutionAutomationInvokeContract do input_schema: %{optional(String.t()) => ArchAstro.SDK.JSON.t()} | nil | ArchAstro.SDK.Unset.t(), participants: - [ArchAstro.SDK.Types.AutomationParticipantSlot.t() | nil] - | nil - | ArchAstro.SDK.Unset.t(), + [ArchAstro.SDK.Types.AutomationParticipantSlot.t()] | nil | ArchAstro.SDK.Unset.t(), prefills: ArchAstro.SDK.Types.AutomationPrefills.t() } @@ -4026,8 +4367,7 @@ defmodule ArchAstro.SDK.Types.SolutionAutomationInvokeContract do input_schema: {"input_schema", {:optional, {:nullable, {:map, :unknown}}}}, participants: {"participants", - {:optional, - {:nullable, {:list, {:nullable, {:ref, ArchAstro.SDK.Types.AutomationParticipantSlot}}}}}}, + {:optional, {:nullable, {:list, {:ref, ArchAstro.SDK.Types.AutomationParticipantSlot}}}}}, prefills: {"prefills", {:ref, ArchAstro.SDK.Types.AutomationPrefills}} ] @spec from_map(ArchAstro.SDK.JSON.object()) :: t() diff --git a/lib/archastro/generated/types/tasks.ex b/lib/archastro/generated/types/tasks.ex index 704628a..2bd3b88 100644 --- a/lib/archastro/generated/types/tasks.ex +++ b/lib/archastro/generated/types/tasks.ex @@ -1,6 +1,6 @@ # Copyright (c) 2026 ArchAstro Inc. Licensed under the MIT License. # This file is auto-generated by @archastro/sdk-generator. Do not edit. -# Content hash: fabf615fe5ba +# Content hash: e017edfd5fcb defmodule ArchAstro.SDK.Types.TaskSessionLeaseSummary do @moduledoc """ @@ -44,6 +44,7 @@ defmodule ArchAstro.SDK.Types.Task do current_lease: :__archastro_unset__, description: :__archastro_unset__, due_date: :__archastro_unset__, + epic: :__archastro_unset__, id: nil, is_blocked: :__archastro_unset__, links: :__archastro_unset__, @@ -56,6 +57,9 @@ defmodule ArchAstro.SDK.Types.Task do parent: :__archastro_unset__, priority: :__archastro_unset__, sandbox: :__archastro_unset__, + source_id: :__archastro_unset__, + source_scope: :__archastro_unset__, + source_type: :__archastro_unset__, status: nil, subtasks_count: :__archastro_unset__, tags: :__archastro_unset__, @@ -77,6 +81,7 @@ defmodule ArchAstro.SDK.Types.Task do ArchAstro.SDK.Types.TaskSessionLeaseSummary.t() | nil | ArchAstro.SDK.Unset.t(), description: String.t() | nil | ArchAstro.SDK.Unset.t(), due_date: DateTime.t() | nil | ArchAstro.SDK.Unset.t(), + epic: String.t() | nil | ArchAstro.SDK.Unset.t(), id: String.t(), is_blocked: boolean() | ArchAstro.SDK.Unset.t(), links: %{optional(String.t()) => ArchAstro.SDK.JSON.t()} | ArchAstro.SDK.Unset.t(), @@ -89,6 +94,9 @@ defmodule ArchAstro.SDK.Types.Task do parent: String.t() | nil | ArchAstro.SDK.Unset.t(), priority: integer() | ArchAstro.SDK.Unset.t(), sandbox: String.t() | nil | ArchAstro.SDK.Unset.t(), + source_id: String.t() | nil | ArchAstro.SDK.Unset.t(), + source_scope: String.t() | nil | ArchAstro.SDK.Unset.t(), + source_type: String.t() | nil | ArchAstro.SDK.Unset.t(), status: String.t(), subtasks_count: integer() | ArchAstro.SDK.Unset.t(), tags: [String.t()] | ArchAstro.SDK.Unset.t(), @@ -113,6 +121,7 @@ defmodule ArchAstro.SDK.Types.Task do {:optional, {:nullable, {:ref, ArchAstro.SDK.Types.TaskSessionLeaseSummary}}}}, description: {"description", {:optional, {:nullable, :string}}}, due_date: {"due_date", {:optional, {:nullable, :datetime}}}, + epic: {"epic", {:optional, {:nullable, :string}}}, id: {"id", :string}, is_blocked: {"is_blocked", {:optional, :boolean}}, links: {"links", {:optional, {:map, :unknown}}}, @@ -125,6 +134,9 @@ defmodule ArchAstro.SDK.Types.Task do parent: {"parent", {:optional, {:nullable, :string}}}, priority: {"priority", {:optional, :integer}}, sandbox: {"sandbox", {:optional, {:nullable, :string}}}, + source_id: {"source_id", {:optional, {:nullable, :string}}}, + source_scope: {"source_scope", {:optional, {:nullable, :string}}}, + source_type: {"source_type", {:optional, {:nullable, :string}}}, status: {"status", :string}, subtasks_count: {"subtasks_count", {:optional, :integer}}, tags: {"tags", {:optional, {:list, :string}}}, diff --git a/lib/archastro/generated/types/threads.ex b/lib/archastro/generated/types/threads.ex index 88ba1be..0e9f295 100644 --- a/lib/archastro/generated/types/threads.ex +++ b/lib/archastro/generated/types/threads.ex @@ -1,6 +1,6 @@ # Copyright (c) 2026 ArchAstro Inc. Licensed under the MIT License. # This file is auto-generated by @archastro/sdk-generator. Do not edit. -# Content hash: aca932b8a451 +# Content hash: 69d9dcf911fc defmodule ArchAstro.SDK.Types.ThreadSettings do @moduledoc """ @@ -165,16 +165,13 @@ defmodule ArchAstro.SDK.Types.Thread do participant: [String.t()] | ArchAstro.SDK.Unset.t(), participants: [ArchAstro.SDK.Types.User.t()] | ArchAstro.SDK.Unset.t(), participating_actor: [String.t()] | ArchAstro.SDK.Unset.t(), - participating_agents: - [ArchAstro.SDK.Types.Agent.t() | nil] | nil | ArchAstro.SDK.Unset.t(), + participating_agents: [ArchAstro.SDK.Types.Agent.t()] | nil | ArchAstro.SDK.Unset.t(), role: String.t() | nil | ArchAstro.SDK.Unset.t(), sandbox: String.t() | nil | ArchAstro.SDK.Unset.t(), settings: ArchAstro.SDK.Types.ThreadSettings.t() | ArchAstro.SDK.Unset.t(), slug: String.t() | nil | ArchAstro.SDK.Unset.t(), sub_threads: - [%{optional(String.t()) => ArchAstro.SDK.JSON.t()} | nil] - | nil - | ArchAstro.SDK.Unset.t(), + [%{optional(String.t()) => ArchAstro.SDK.JSON.t()}] | nil | ArchAstro.SDK.Unset.t(), tags: [String.t()] | ArchAstro.SDK.Unset.t(), team: String.t() | nil | ArchAstro.SDK.Unset.t(), title: String.t() | nil | ArchAstro.SDK.Unset.t(), @@ -212,13 +209,12 @@ defmodule ArchAstro.SDK.Types.Thread do participants: {"participants", {:optional, {:list, {:ref, ArchAstro.SDK.Types.User}}}}, participating_actor: {"participating_actor", {:optional, {:list, :string}}}, participating_agents: - {"participating_agents", - {:optional, {:nullable, {:list, {:nullable, {:ref, ArchAstro.SDK.Types.Agent}}}}}}, + {"participating_agents", {:optional, {:nullable, {:list, {:ref, ArchAstro.SDK.Types.Agent}}}}}, role: {"role", {:optional, {:nullable, :string}}}, sandbox: {"sandbox", {:optional, {:nullable, :string}}}, settings: {"settings", {:optional, {:ref, ArchAstro.SDK.Types.ThreadSettings}}}, slug: {"slug", {:optional, {:nullable, :string}}}, - sub_threads: {"sub_threads", {:optional, {:nullable, {:list, {:nullable, {:map, :unknown}}}}}}, + sub_threads: {"sub_threads", {:optional, {:nullable, {:list, {:map, :unknown}}}}}, tags: {"tags", {:optional, {:list, :string}}}, team: {"team", {:optional, {:nullable, :string}}}, title: {"title", {:optional, {:nullable, :string}}}, diff --git a/lib/archastro/generated/v1/activity_feed.ex b/lib/archastro/generated/v1/activity_feed.ex index 480bb41..b0c2527 100644 --- a/lib/archastro/generated/v1/activity_feed.ex +++ b/lib/archastro/generated/v1/activity_feed.ex @@ -1,6 +1,6 @@ # Copyright (c) 2026 ArchAstro Inc. Licensed under the MIT License. # This file is auto-generated by @archastro/sdk-generator. Do not edit. -# Content hash: 233400021427 +# Content hash: 02780661c2bc defmodule ArchAstro.SDK.Types.Operations.GetApiV1ActivityFeed.Params do @moduledoc """ @@ -281,7 +281,6 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1ActivityFeed.Response.Nested.Da participants: [ ArchAstro.SDK.Types.Operations.GetApiV1ActivityFeed.Response.Nested.DataItemAgentVariant2SourceSolutionCurrentSolutionTemplatesItemDetailsInvokeContractParticipantsItem.t() - | nil ] | nil | ArchAstro.SDK.Unset.t(), @@ -296,9 +295,8 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1ActivityFeed.Response.Nested.Da {:optional, {:nullable, {:list, - {:nullable, - {:ref, - ArchAstro.SDK.Types.Operations.GetApiV1ActivityFeed.Response.Nested.DataItemAgentVariant2SourceSolutionCurrentSolutionTemplatesItemDetailsInvokeContractParticipantsItem}}}}}}, + {:ref, + ArchAstro.SDK.Types.Operations.GetApiV1ActivityFeed.Response.Nested.DataItemAgentVariant2SourceSolutionCurrentSolutionTemplatesItemDetailsInvokeContractParticipantsItem}}}}}, prefills: {"prefills", {:ref, @@ -617,7 +615,6 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1ActivityFeed.Response.Nested.Da participants: [ ArchAstro.SDK.Types.Operations.GetApiV1ActivityFeed.Response.Nested.DataItemAgentVariant2SourceSolutionSolutionTemplatesItemDetailsInvokeContractParticipantsItem.t() - | nil ] | nil | ArchAstro.SDK.Unset.t(), @@ -632,9 +629,8 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1ActivityFeed.Response.Nested.Da {:optional, {:nullable, {:list, - {:nullable, - {:ref, - ArchAstro.SDK.Types.Operations.GetApiV1ActivityFeed.Response.Nested.DataItemAgentVariant2SourceSolutionSolutionTemplatesItemDetailsInvokeContractParticipantsItem}}}}}}, + {:ref, + ArchAstro.SDK.Types.Operations.GetApiV1ActivityFeed.Response.Nested.DataItemAgentVariant2SourceSolutionSolutionTemplatesItemDetailsInvokeContractParticipantsItem}}}}}, prefills: {"prefills", {:ref, diff --git a/lib/archastro/generated/v1/agents.ex b/lib/archastro/generated/v1/agents.ex index 5ff0165..cff761e 100644 --- a/lib/archastro/generated/v1/agents.ex +++ b/lib/archastro/generated/v1/agents.ex @@ -1,6 +1,6 @@ # Copyright (c) 2026 ArchAstro Inc. Licensed under the MIT License. # This file is auto-generated by @archastro/sdk-generator. Do not edit. -# Content hash: 41b6809818d2 +# Content hash: ec56616d3964 defmodule ArchAstro.SDK.Types.Operations.GetApiV1Agents.Params do @moduledoc """ @@ -1394,6 +1394,7 @@ defmodule ArchAstro.SDK.Types.Operations.PostApiV1AgentsAgentThreads.Input.Neste description: :__archastro_unset__, is_unlisted: :__archastro_unset__, key: :__archastro_unset__, + kind: :__archastro_unset__, members: :__archastro_unset__, metadata: :__archastro_unset__, muted: :__archastro_unset__, @@ -1409,6 +1410,7 @@ defmodule ArchAstro.SDK.Types.Operations.PostApiV1AgentsAgentThreads.Input.Neste description: String.t() | ArchAstro.SDK.Unset.t(), is_unlisted: boolean() | ArchAstro.SDK.Unset.t(), key: String.t() | ArchAstro.SDK.Unset.t(), + kind: String.t() | ArchAstro.SDK.Unset.t(), members: [ ArchAstro.SDK.Types.Operations.PostApiV1AgentsAgentThreads.Input.Nested.ThreadMembersItem.t() @@ -1433,6 +1435,7 @@ defmodule ArchAstro.SDK.Types.Operations.PostApiV1AgentsAgentThreads.Input.Neste description: {"description", {:optional, :string}}, is_unlisted: {"is_unlisted", {:optional, :boolean}}, key: {"key", {:optional, :string}}, + kind: {"kind", {:optional, {:enum, ["personal"]}}}, members: {"members", {:optional, diff --git a/lib/archastro/generated/v1/event_subscription_deliveries.ex b/lib/archastro/generated/v1/event_subscription_deliveries.ex new file mode 100644 index 0000000..bcc3444 --- /dev/null +++ b/lib/archastro/generated/v1/event_subscription_deliveries.ex @@ -0,0 +1,48 @@ +# Copyright (c) 2026 ArchAstro Inc. Licensed under the MIT License. +# This file is auto-generated by @archastro/sdk-generator. Do not edit. +# Content hash: 2f9e0bc749df + +defmodule ArchAstro.SDK.Types.Operations.PostApiV1EventSubscriptionDeliveriesDeliveryAcknowledge.Input do + @moduledoc """ + Acknowledge a claimed event + """ + @enforce_keys [:receipt_handle] + defstruct receipt_handle: nil + + @type t :: %__MODULE__{ + receipt_handle: String.t() + } + + @fields [receipt_handle: {"receipt_handle", :string}] + @spec from_map(ArchAstro.SDK.JSON.object()) :: t() + def from_map(data), do: ArchAstro.SDK.Codec.struct_from_map(__MODULE__, data, @fields) + @spec to_map(t()) :: ArchAstro.SDK.JSON.object() + def to_map(value), do: ArchAstro.SDK.Codec.struct_to_map(value, @fields) + @spec matches?(ArchAstro.SDK.JSON.t()) :: boolean() + def matches?(value), do: ArchAstro.SDK.Codec.matches?(value, {:object, Keyword.values(@fields)}) +end + +defmodule ArchAstro.SDK.V1.EventSubscriptionDeliveries do + @moduledoc """ + EventSubscriptionDelivery API resource. + """ + + @doc """ + Acknowledge a claimed event + + Acknowledges a delivery using its current receipt handle. Repeating the same acknowledgement is idempotent; a stale or incorrect receipt returns 409. Acknowledging a delivery that aged out under the subscription's retention returns `delivery_not_found` — the event was already counted in `dropped_events_total`, and the acknowledgement should not be retried. + + No content + """ + @spec acknowledge( + ArchAstro.SDK.Client.t(), + String.t(), + ArchAstro.SDK.Types.Operations.PostApiV1EventSubscriptionDeliveriesDeliveryAcknowledge.Input.t() + ) :: {:ok, :ok} | {:error, ArchAstro.SDK.Error.reason()} + def acknowledge(client, delivery, input) do + path = + "/api/v1/event_subscription_deliveries/#{ArchAstro.SDK.Path.encode(delivery)}/acknowledge" + + ArchAstro.SDK.HTTP.request(client, :post, path, body: input, decode: :void) + end +end diff --git a/lib/archastro/generated/v1/event_subscriptions.ex b/lib/archastro/generated/v1/event_subscriptions.ex new file mode 100644 index 0000000..fee14f3 --- /dev/null +++ b/lib/archastro/generated/v1/event_subscriptions.ex @@ -0,0 +1,326 @@ +# Copyright (c) 2026 ArchAstro Inc. Licensed under the MIT License. +# This file is auto-generated by @archastro/sdk-generator. Do not edit. +# Content hash: d27d4607e026 + +defmodule ArchAstro.SDK.Types.Operations.GetApiV1EventSubscriptions.Params do + @moduledoc """ + List domain-event subscriptions query parameters. + """ + defstruct page: :__archastro_unset__, per_page: :__archastro_unset__ + + @type t :: %__MODULE__{ + page: integer() | ArchAstro.SDK.Unset.t(), + per_page: integer() | ArchAstro.SDK.Unset.t() + } + + @fields [page: {"page", {:optional, :integer}}, per_page: {"per_page", {:optional, :integer}}] + @spec from_map(ArchAstro.SDK.JSON.object()) :: t() + def from_map(data), do: ArchAstro.SDK.Codec.struct_from_map(__MODULE__, data, @fields) + @spec to_map(t()) :: ArchAstro.SDK.JSON.object() + def to_map(value), do: ArchAstro.SDK.Codec.struct_to_map(value, @fields) + @spec matches?(ArchAstro.SDK.JSON.t()) :: boolean() + def matches?(value), do: ArchAstro.SDK.Codec.matches?(value, {:object, Keyword.values(@fields)}) +end + +defmodule ArchAstro.SDK.Types.Operations.PostApiV1EventSubscriptions.Input do + @moduledoc """ + Create a domain-event subscription + """ + @enforce_keys [:event_names, :name] + defstruct event_names: nil, + max_pending_events: :__archastro_unset__, + name: nil, + retention_seconds: :__archastro_unset__, + status: :__archastro_unset__, + visibility_timeout_seconds: :__archastro_unset__ + + @type t :: %__MODULE__{ + event_names: [String.t()], + max_pending_events: integer() | ArchAstro.SDK.Unset.t(), + name: String.t(), + retention_seconds: integer() | ArchAstro.SDK.Unset.t(), + status: String.t() | ArchAstro.SDK.Unset.t(), + visibility_timeout_seconds: integer() | ArchAstro.SDK.Unset.t() + } + + @fields [ + event_names: {"event_names", {:list, :string}}, + max_pending_events: {"max_pending_events", {:optional, :integer}}, + name: {"name", :string}, + retention_seconds: {"retention_seconds", {:optional, :integer}}, + status: {"status", {:optional, {:enum, ["active", "paused"]}}}, + visibility_timeout_seconds: {"visibility_timeout_seconds", {:optional, :integer}} + ] + @spec from_map(ArchAstro.SDK.JSON.object()) :: t() + def from_map(data), do: ArchAstro.SDK.Codec.struct_from_map(__MODULE__, data, @fields) + @spec to_map(t()) :: ArchAstro.SDK.JSON.object() + def to_map(value), do: ArchAstro.SDK.Codec.struct_to_map(value, @fields) + @spec matches?(ArchAstro.SDK.JSON.t()) :: boolean() + def matches?(value), do: ArchAstro.SDK.Codec.matches?(value, {:object, Keyword.values(@fields)}) +end + +defmodule ArchAstro.SDK.Types.Operations.PatchApiV1EventSubscriptionsSubscription.Input do + @moduledoc """ + Update a domain-event subscription + """ + defstruct event_names: :__archastro_unset__, + max_pending_events: :__archastro_unset__, + name: :__archastro_unset__, + retention_seconds: :__archastro_unset__, + status: :__archastro_unset__, + visibility_timeout_seconds: :__archastro_unset__ + + @type t :: %__MODULE__{ + event_names: [String.t()] | ArchAstro.SDK.Unset.t(), + max_pending_events: integer() | ArchAstro.SDK.Unset.t(), + name: String.t() | ArchAstro.SDK.Unset.t(), + retention_seconds: integer() | ArchAstro.SDK.Unset.t(), + status: String.t() | ArchAstro.SDK.Unset.t(), + visibility_timeout_seconds: integer() | ArchAstro.SDK.Unset.t() + } + + @fields [ + event_names: {"event_names", {:optional, {:list, :string}}}, + max_pending_events: {"max_pending_events", {:optional, :integer}}, + name: {"name", {:optional, :string}}, + retention_seconds: {"retention_seconds", {:optional, :integer}}, + status: {"status", {:optional, {:enum, ["active", "paused"]}}}, + visibility_timeout_seconds: {"visibility_timeout_seconds", {:optional, :integer}} + ] + @spec from_map(ArchAstro.SDK.JSON.object()) :: t() + def from_map(data), do: ArchAstro.SDK.Codec.struct_from_map(__MODULE__, data, @fields) + @spec to_map(t()) :: ArchAstro.SDK.JSON.object() + def to_map(value), do: ArchAstro.SDK.Codec.struct_to_map(value, @fields) + @spec matches?(ArchAstro.SDK.JSON.t()) :: boolean() + def matches?(value), do: ArchAstro.SDK.Codec.matches?(value, {:object, Keyword.values(@fields)}) +end + +defmodule ArchAstro.SDK.Types.Operations.PostApiV1EventSubscriptionsSubscriptionClaim.Input do + @moduledoc """ + Claim events from a subscription + """ + defstruct consumer_id: :__archastro_unset__, + max_events: :__archastro_unset__, + request_id: :__archastro_unset__, + visibility_timeout_seconds: :__archastro_unset__, + wait_seconds: :__archastro_unset__ + + @type t :: %__MODULE__{ + consumer_id: String.t() | ArchAstro.SDK.Unset.t(), + max_events: integer() | ArchAstro.SDK.Unset.t(), + request_id: String.t() | ArchAstro.SDK.Unset.t(), + visibility_timeout_seconds: integer() | ArchAstro.SDK.Unset.t(), + wait_seconds: integer() | ArchAstro.SDK.Unset.t() + } + + @fields [ + consumer_id: {"consumer_id", {:optional, :string}}, + max_events: {"max_events", {:optional, :integer}}, + request_id: {"request_id", {:optional, :string}}, + visibility_timeout_seconds: {"visibility_timeout_seconds", {:optional, :integer}}, + wait_seconds: {"wait_seconds", {:optional, :integer}} + ] + @spec from_map(ArchAstro.SDK.JSON.object()) :: t() + def from_map(data), do: ArchAstro.SDK.Codec.struct_from_map(__MODULE__, data, @fields) + @spec to_map(t()) :: ArchAstro.SDK.JSON.object() + def to_map(value), do: ArchAstro.SDK.Codec.struct_to_map(value, @fields) + @spec matches?(ArchAstro.SDK.JSON.t()) :: boolean() + def matches?(value), do: ArchAstro.SDK.Codec.matches?(value, {:object, Keyword.values(@fields)}) +end + +defmodule ArchAstro.SDK.Types.Operations.GetApiV1EventSubscriptionsSubscriptionQueue.Params do + @moduledoc """ + Read a subscription queue query parameters. + """ + defstruct limit: :__archastro_unset__, + before_cursor: :__archastro_unset__, + after_cursor: :__archastro_unset__ + + @type t :: %__MODULE__{ + limit: integer() | ArchAstro.SDK.Unset.t(), + before_cursor: String.t() | ArchAstro.SDK.Unset.t(), + after_cursor: String.t() | ArchAstro.SDK.Unset.t() + } + + @fields [ + limit: {"limit", {:optional, :integer}}, + before_cursor: {"before_cursor", {:optional, :string}}, + after_cursor: {"after_cursor", {:optional, :string}} + ] + @spec from_map(ArchAstro.SDK.JSON.object()) :: t() + def from_map(data), do: ArchAstro.SDK.Codec.struct_from_map(__MODULE__, data, @fields) + @spec to_map(t()) :: ArchAstro.SDK.JSON.object() + def to_map(value), do: ArchAstro.SDK.Codec.struct_to_map(value, @fields) + @spec matches?(ArchAstro.SDK.JSON.t()) :: boolean() + def matches?(value), do: ArchAstro.SDK.Codec.matches?(value, {:object, Keyword.values(@fields)}) +end + +defmodule ArchAstro.SDK.V1.EventSubscriptions do + @moduledoc """ + EventSubscription API resource. + """ + + @doc """ + List domain-event subscriptions + + Lists the subscriptions visible to the caller, with current queue counters. + + Subscriptions visible to this caller. + """ + @spec list( + ArchAstro.SDK.Client.t(), + ArchAstro.SDK.Types.Operations.GetApiV1EventSubscriptions.Params.t() + ) :: + {:ok, ArchAstro.SDK.Types.EventSubscriptionPage.t()} + | {:error, ArchAstro.SDK.Error.reason()} + def list(client, params \\ %ArchAstro.SDK.Types.Operations.GetApiV1EventSubscriptions.Params{}) do + path = "/api/v1/event_subscriptions" + + ArchAstro.SDK.HTTP.request(client, :get, path, + query: params, + decode: {:ref, ArchAstro.SDK.Types.EventSubscriptionPage} + ) + end + + @doc """ + Create a domain-event subscription + + Creates a durable subscription that receives exportable domain events matching its exact event names. Matching events fan out into a per-subscription queue bounded by max_pending_events and retention_seconds; consume with claim and acknowledge. + + The new volatile subscription. + """ + @spec create( + ArchAstro.SDK.Client.t(), + ArchAstro.SDK.Types.Operations.PostApiV1EventSubscriptions.Input.t() + ) :: + {:ok, ArchAstro.SDK.Types.EventSubscription.t()} | {:error, ArchAstro.SDK.Error.reason()} + def create(client, input) do + path = "/api/v1/event_subscriptions" + + ArchAstro.SDK.HTTP.request(client, :post, path, + body: input, + decode: {:ref, ArchAstro.SDK.Types.EventSubscription} + ) + end + + @doc """ + Delete a domain-event subscription + + Deletes the subscription and every delivery still in its queue. + + No content + """ + @spec delete(ArchAstro.SDK.Client.t(), String.t()) :: + {:ok, :ok} | {:error, ArchAstro.SDK.Error.reason()} + def delete(client, subscription) do + path = "/api/v1/event_subscriptions/#{ArchAstro.SDK.Path.encode(subscription)}" + ArchAstro.SDK.HTTP.request(client, :delete, path, decode: :void) + end + + @doc """ + Get a domain-event subscription + + Returns one subscription and its current queue counters. + + Successful response + """ + @spec get(ArchAstro.SDK.Client.t(), String.t()) :: + {:ok, ArchAstro.SDK.Types.EventSubscription.t()} | {:error, ArchAstro.SDK.Error.reason()} + def get(client, subscription) do + path = "/api/v1/event_subscriptions/#{ArchAstro.SDK.Path.encode(subscription)}" + + ArchAstro.SDK.HTTP.request(client, :get, path, + decode: {:ref, ArchAstro.SDK.Types.EventSubscription} + ) + end + + @doc """ + Update a domain-event subscription + + Updates matching, status, or queue limits for future fanout. Already queued deliveries remain unless a lower cap trims the oldest entries; retention changes apply to future deliveries only. + + Successful response + """ + @spec update( + ArchAstro.SDK.Client.t(), + String.t(), + ArchAstro.SDK.Types.Operations.PatchApiV1EventSubscriptionsSubscription.Input.t() + ) :: + {:ok, ArchAstro.SDK.Types.EventSubscription.t()} | {:error, ArchAstro.SDK.Error.reason()} + def update(client, subscription, input) do + path = "/api/v1/event_subscriptions/#{ArchAstro.SDK.Path.encode(subscription)}" + + ArchAstro.SDK.HTTP.request(client, :patch, path, + body: input, + decode: {:ref, ArchAstro.SDK.Types.EventSubscription} + ) + end + + @doc """ + Claim events from a subscription + + Atomically leases the oldest unacknowledged delivery. Returns an empty data array when the queue is empty or its head already has an active lease. Passing max_events opts into batch mode, where leased entries are skipped instead of blocking; wait_seconds bounds a long poll on an empty queue. + + Successful response + """ + @spec claim( + ArchAstro.SDK.Client.t(), + String.t(), + ArchAstro.SDK.Types.Operations.PostApiV1EventSubscriptionsSubscriptionClaim.Input.t() + ) :: + {:ok, ArchAstro.SDK.Types.EventSubscriptionClaim.t()} + | {:error, ArchAstro.SDK.Error.reason()} + def claim(client, subscription, input) do + path = "/api/v1/event_subscriptions/#{ArchAstro.SDK.Path.encode(subscription)}/claim" + + ArchAstro.SDK.HTTP.request(client, :post, path, + body: input, + decode: {:ref, ArchAstro.SDK.Types.EventSubscriptionClaim} + ) + end + + @doc """ + Peek at the head of a subscription queue + + Returns the oldest unacknowledged delivery without reserving it. This diagnostic read cannot be used as a safe substitute for claim. + + Successful response + """ + @spec head(ArchAstro.SDK.Client.t(), String.t()) :: + {:ok, ArchAstro.SDK.Types.EventSubscriptionHead.t()} + | {:error, ArchAstro.SDK.Error.reason()} + def head(client, subscription) do + path = "/api/v1/event_subscriptions/#{ArchAstro.SDK.Path.encode(subscription)}/head" + + ArchAstro.SDK.HTTP.request(client, :get, path, + decode: {:ref, ArchAstro.SDK.Types.EventSubscriptionHead} + ) + end + + @doc """ + Read a subscription queue + + Returns a non-reserving, oldest-first view of unacknowledged deliveries, including the queue's loss indicators (queue_epoch, dropped_events_total, dropped_through_position). Use claim to obtain a receipt handle before acknowledging. + + Successful response + """ + @spec queue( + ArchAstro.SDK.Client.t(), + String.t(), + ArchAstro.SDK.Types.Operations.GetApiV1EventSubscriptionsSubscriptionQueue.Params.t() + ) :: + {:ok, ArchAstro.SDK.Types.EventSubscriptionQueue.t()} + | {:error, ArchAstro.SDK.Error.reason()} + def queue( + client, + subscription, + params \\ %ArchAstro.SDK.Types.Operations.GetApiV1EventSubscriptionsSubscriptionQueue.Params{} + ) do + path = "/api/v1/event_subscriptions/#{ArchAstro.SDK.Path.encode(subscription)}/queue" + + ArchAstro.SDK.HTTP.request(client, :get, path, + query: params, + decode: {:ref, ArchAstro.SDK.Types.EventSubscriptionQueue} + ) + end +end diff --git a/lib/archastro/generated/v1/tasks.ex b/lib/archastro/generated/v1/tasks.ex index 5e75c04..2b46289 100644 --- a/lib/archastro/generated/v1/tasks.ex +++ b/lib/archastro/generated/v1/tasks.ex @@ -1,6 +1,6 @@ # Copyright (c) 2026 ArchAstro Inc. Licensed under the MIT License. # This file is auto-generated by @archastro/sdk-generator. Do not edit. -# Content hash: 1abead490d68 +# Content hash: 3cd6b50f7347 defmodule ArchAstro.SDK.Types.Operations.GetApiV1TasksTask.Params do @moduledoc """ @@ -39,6 +39,7 @@ defmodule ArchAstro.SDK.Types.Operations.PutApiV1TasksTask.Input do defstruct agent: :__archastro_unset__, description: :__archastro_unset__, due_date: :__archastro_unset__, + epic: :__archastro_unset__, lease_id: :__archastro_unset__, lease_session_id: :__archastro_unset__, links: :__archastro_unset__, @@ -49,6 +50,9 @@ defmodule ArchAstro.SDK.Types.Operations.PutApiV1TasksTask.Input do owner_user: :__archastro_unset__, parent: :__archastro_unset__, priority: :__archastro_unset__, + source_id: :__archastro_unset__, + source_scope: :__archastro_unset__, + source_type: :__archastro_unset__, status: :__archastro_unset__, tags: :__archastro_unset__, team: :__archastro_unset__, @@ -58,6 +62,7 @@ defmodule ArchAstro.SDK.Types.Operations.PutApiV1TasksTask.Input do agent: String.t() | ArchAstro.SDK.Unset.t(), description: String.t() | ArchAstro.SDK.Unset.t(), due_date: DateTime.t() | ArchAstro.SDK.Unset.t(), + epic: String.t() | ArchAstro.SDK.Unset.t(), lease_id: String.t() | ArchAstro.SDK.Unset.t(), lease_session_id: String.t() | ArchAstro.SDK.Unset.t(), links: %{optional(String.t()) => ArchAstro.SDK.JSON.t()} | ArchAstro.SDK.Unset.t(), @@ -68,6 +73,9 @@ defmodule ArchAstro.SDK.Types.Operations.PutApiV1TasksTask.Input do owner_user: String.t() | ArchAstro.SDK.Unset.t(), parent: String.t() | ArchAstro.SDK.Unset.t(), priority: integer() | ArchAstro.SDK.Unset.t(), + source_id: String.t() | ArchAstro.SDK.Unset.t(), + source_scope: String.t() | ArchAstro.SDK.Unset.t(), + source_type: String.t() | ArchAstro.SDK.Unset.t(), status: String.t() | ArchAstro.SDK.Unset.t(), tags: [String.t()] | ArchAstro.SDK.Unset.t(), team: String.t() | ArchAstro.SDK.Unset.t(), @@ -78,6 +86,7 @@ defmodule ArchAstro.SDK.Types.Operations.PutApiV1TasksTask.Input do agent: {"agent", {:optional, :string}}, description: {"description", {:optional, :string}}, due_date: {"due_date", {:optional, :datetime}}, + epic: {"epic", {:optional, :string}}, lease_id: {"lease_id", {:optional, :string}}, lease_session_id: {"lease_session_id", {:optional, :string}}, links: {"links", {:optional, {:map, :unknown}}}, @@ -88,6 +97,9 @@ defmodule ArchAstro.SDK.Types.Operations.PutApiV1TasksTask.Input do owner_user: {"owner_user", {:optional, :string}}, parent: {"parent", {:optional, :string}}, priority: {"priority", {:optional, :integer}}, + source_id: {"source_id", {:optional, :string}}, + source_scope: {"source_scope", {:optional, :string}}, + source_type: {"source_type", {:optional, :string}}, status: {"status", {:optional, :string}}, tags: {"tags", {:optional, {:list, :string}}}, team: {"team", {:optional, :string}}, @@ -432,6 +444,7 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1TasksTaskBlocking.Response.Nest current_lease: :__archastro_unset__, description: :__archastro_unset__, due_date: :__archastro_unset__, + epic: :__archastro_unset__, id: nil, is_blocked: :__archastro_unset__, links: :__archastro_unset__, @@ -444,6 +457,9 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1TasksTaskBlocking.Response.Nest parent: :__archastro_unset__, priority: :__archastro_unset__, sandbox: :__archastro_unset__, + source_id: :__archastro_unset__, + source_scope: :__archastro_unset__, + source_type: :__archastro_unset__, status: nil, subtasks_count: :__archastro_unset__, tags: :__archastro_unset__, @@ -470,6 +486,7 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1TasksTaskBlocking.Response.Nest | ArchAstro.SDK.Unset.t(), description: String.t() | nil | ArchAstro.SDK.Unset.t(), due_date: DateTime.t() | nil | ArchAstro.SDK.Unset.t(), + epic: String.t() | nil | ArchAstro.SDK.Unset.t(), id: String.t(), is_blocked: boolean() | ArchAstro.SDK.Unset.t(), links: %{optional(String.t()) => ArchAstro.SDK.JSON.t()} | ArchAstro.SDK.Unset.t(), @@ -485,6 +502,9 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1TasksTaskBlocking.Response.Nest parent: String.t() | nil | ArchAstro.SDK.Unset.t(), priority: integer() | ArchAstro.SDK.Unset.t(), sandbox: String.t() | nil | ArchAstro.SDK.Unset.t(), + source_id: String.t() | nil | ArchAstro.SDK.Unset.t(), + source_scope: String.t() | nil | ArchAstro.SDK.Unset.t(), + source_type: String.t() | nil | ArchAstro.SDK.Unset.t(), status: String.t(), subtasks_count: integer() | ArchAstro.SDK.Unset.t(), tags: [String.t()] | ArchAstro.SDK.Unset.t(), @@ -516,6 +536,7 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1TasksTaskBlocking.Response.Nest ArchAstro.SDK.Types.Operations.GetApiV1TasksTaskBlocking.Response.Nested.DataItemCurrentLease}}}}, description: {"description", {:optional, {:nullable, :string}}}, due_date: {"due_date", {:optional, {:nullable, :datetime}}}, + epic: {"epic", {:optional, {:nullable, :string}}}, id: {"id", :string}, is_blocked: {"is_blocked", {:optional, :boolean}}, links: {"links", {:optional, {:map, :unknown}}}, @@ -533,6 +554,9 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1TasksTaskBlocking.Response.Nest parent: {"parent", {:optional, {:nullable, :string}}}, priority: {"priority", {:optional, :integer}}, sandbox: {"sandbox", {:optional, {:nullable, :string}}}, + source_id: {"source_id", {:optional, {:nullable, :string}}}, + source_scope: {"source_scope", {:optional, {:nullable, :string}}}, + source_type: {"source_type", {:optional, {:nullable, :string}}}, status: {"status", :string}, subtasks_count: {"subtasks_count", {:optional, :integer}}, tags: {"tags", {:optional, {:list, :string}}}, @@ -817,6 +841,7 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1TasksTaskSubtasks.Response.Nest current_lease: :__archastro_unset__, description: :__archastro_unset__, due_date: :__archastro_unset__, + epic: :__archastro_unset__, id: nil, is_blocked: :__archastro_unset__, links: :__archastro_unset__, @@ -829,6 +854,9 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1TasksTaskSubtasks.Response.Nest parent: :__archastro_unset__, priority: :__archastro_unset__, sandbox: :__archastro_unset__, + source_id: :__archastro_unset__, + source_scope: :__archastro_unset__, + source_type: :__archastro_unset__, status: nil, subtasks_count: :__archastro_unset__, tags: :__archastro_unset__, @@ -855,6 +883,7 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1TasksTaskSubtasks.Response.Nest | ArchAstro.SDK.Unset.t(), description: String.t() | nil | ArchAstro.SDK.Unset.t(), due_date: DateTime.t() | nil | ArchAstro.SDK.Unset.t(), + epic: String.t() | nil | ArchAstro.SDK.Unset.t(), id: String.t(), is_blocked: boolean() | ArchAstro.SDK.Unset.t(), links: %{optional(String.t()) => ArchAstro.SDK.JSON.t()} | ArchAstro.SDK.Unset.t(), @@ -870,6 +899,9 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1TasksTaskSubtasks.Response.Nest parent: String.t() | nil | ArchAstro.SDK.Unset.t(), priority: integer() | ArchAstro.SDK.Unset.t(), sandbox: String.t() | nil | ArchAstro.SDK.Unset.t(), + source_id: String.t() | nil | ArchAstro.SDK.Unset.t(), + source_scope: String.t() | nil | ArchAstro.SDK.Unset.t(), + source_type: String.t() | nil | ArchAstro.SDK.Unset.t(), status: String.t(), subtasks_count: integer() | ArchAstro.SDK.Unset.t(), tags: [String.t()] | ArchAstro.SDK.Unset.t(), @@ -901,6 +933,7 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1TasksTaskSubtasks.Response.Nest ArchAstro.SDK.Types.Operations.GetApiV1TasksTaskSubtasks.Response.Nested.DataItemCurrentLease}}}}, description: {"description", {:optional, {:nullable, :string}}}, due_date: {"due_date", {:optional, {:nullable, :datetime}}}, + epic: {"epic", {:optional, {:nullable, :string}}}, id: {"id", :string}, is_blocked: {"is_blocked", {:optional, :boolean}}, links: {"links", {:optional, {:map, :unknown}}}, @@ -918,6 +951,9 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1TasksTaskSubtasks.Response.Nest parent: {"parent", {:optional, {:nullable, :string}}}, priority: {"priority", {:optional, :integer}}, sandbox: {"sandbox", {:optional, {:nullable, :string}}}, + source_id: {"source_id", {:optional, {:nullable, :string}}}, + source_scope: {"source_scope", {:optional, {:nullable, :string}}}, + source_type: {"source_type", {:optional, {:nullable, :string}}}, status: {"status", :string}, subtasks_count: {"subtasks_count", {:optional, :integer}}, tags: {"tags", {:optional, {:list, :string}}}, @@ -1202,6 +1238,7 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1TasksTaskBlockers.Response.Nest current_lease: :__archastro_unset__, description: :__archastro_unset__, due_date: :__archastro_unset__, + epic: :__archastro_unset__, id: nil, is_blocked: :__archastro_unset__, links: :__archastro_unset__, @@ -1214,6 +1251,9 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1TasksTaskBlockers.Response.Nest parent: :__archastro_unset__, priority: :__archastro_unset__, sandbox: :__archastro_unset__, + source_id: :__archastro_unset__, + source_scope: :__archastro_unset__, + source_type: :__archastro_unset__, status: nil, subtasks_count: :__archastro_unset__, tags: :__archastro_unset__, @@ -1240,6 +1280,7 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1TasksTaskBlockers.Response.Nest | ArchAstro.SDK.Unset.t(), description: String.t() | nil | ArchAstro.SDK.Unset.t(), due_date: DateTime.t() | nil | ArchAstro.SDK.Unset.t(), + epic: String.t() | nil | ArchAstro.SDK.Unset.t(), id: String.t(), is_blocked: boolean() | ArchAstro.SDK.Unset.t(), links: %{optional(String.t()) => ArchAstro.SDK.JSON.t()} | ArchAstro.SDK.Unset.t(), @@ -1255,6 +1296,9 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1TasksTaskBlockers.Response.Nest parent: String.t() | nil | ArchAstro.SDK.Unset.t(), priority: integer() | ArchAstro.SDK.Unset.t(), sandbox: String.t() | nil | ArchAstro.SDK.Unset.t(), + source_id: String.t() | nil | ArchAstro.SDK.Unset.t(), + source_scope: String.t() | nil | ArchAstro.SDK.Unset.t(), + source_type: String.t() | nil | ArchAstro.SDK.Unset.t(), status: String.t(), subtasks_count: integer() | ArchAstro.SDK.Unset.t(), tags: [String.t()] | ArchAstro.SDK.Unset.t(), @@ -1286,6 +1330,7 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1TasksTaskBlockers.Response.Nest ArchAstro.SDK.Types.Operations.GetApiV1TasksTaskBlockers.Response.Nested.DataItemCurrentLease}}}}, description: {"description", {:optional, {:nullable, :string}}}, due_date: {"due_date", {:optional, {:nullable, :datetime}}}, + epic: {"epic", {:optional, {:nullable, :string}}}, id: {"id", :string}, is_blocked: {"is_blocked", {:optional, :boolean}}, links: {"links", {:optional, {:map, :unknown}}}, @@ -1303,6 +1348,9 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1TasksTaskBlockers.Response.Nest parent: {"parent", {:optional, {:nullable, :string}}}, priority: {"priority", {:optional, :integer}}, sandbox: {"sandbox", {:optional, {:nullable, :string}}}, + source_id: {"source_id", {:optional, {:nullable, :string}}}, + source_scope: {"source_scope", {:optional, {:nullable, :string}}}, + source_type: {"source_type", {:optional, {:nullable, :string}}}, status: {"status", :string}, subtasks_count: {"subtasks_count", {:optional, :integer}}, tags: {"tags", {:optional, {:list, :string}}}, diff --git a/lib/archastro/generated/v1/teams.ex b/lib/archastro/generated/v1/teams.ex index a4b981a..1819485 100644 --- a/lib/archastro/generated/v1/teams.ex +++ b/lib/archastro/generated/v1/teams.ex @@ -1,6 +1,6 @@ # Copyright (c) 2026 ArchAstro Inc. Licensed under the MIT License. # This file is auto-generated by @archastro/sdk-generator. Do not edit. -# Content hash: 1fcd7c976c98 +# Content hash: 3894024dc631 defmodule ArchAstro.SDK.Types.Operations.GetApiV1Teams.Params.Nested.Metadata do @moduledoc """ @@ -1529,7 +1529,6 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamMembers.Response.Neste participants: [ ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamMembers.Response.Nested.DataItemAgentSourceSolutionCurrentSolutionTemplatesItemDetailsInvokeContractParticipantsItem.t() - | nil ] | nil | ArchAstro.SDK.Unset.t(), @@ -1544,9 +1543,8 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamMembers.Response.Neste {:optional, {:nullable, {:list, - {:nullable, - {:ref, - ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamMembers.Response.Nested.DataItemAgentSourceSolutionCurrentSolutionTemplatesItemDetailsInvokeContractParticipantsItem}}}}}}, + {:ref, + ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamMembers.Response.Nested.DataItemAgentSourceSolutionCurrentSolutionTemplatesItemDetailsInvokeContractParticipantsItem}}}}}, prefills: {"prefills", {:ref, @@ -1865,7 +1863,6 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamMembers.Response.Neste participants: [ ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamMembers.Response.Nested.DataItemAgentSourceSolutionSolutionTemplatesItemDetailsInvokeContractParticipantsItem.t() - | nil ] | nil | ArchAstro.SDK.Unset.t(), @@ -1880,9 +1877,8 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamMembers.Response.Neste {:optional, {:nullable, {:list, - {:nullable, - {:ref, - ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamMembers.Response.Nested.DataItemAgentSourceSolutionSolutionTemplatesItemDetailsInvokeContractParticipantsItem}}}}}}, + {:ref, + ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamMembers.Response.Nested.DataItemAgentSourceSolutionSolutionTemplatesItemDetailsInvokeContractParticipantsItem}}}}}, prefills: {"prefills", {:ref, @@ -2564,6 +2560,10 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamTasks.Params do priority: :__archastro_unset__, tag: :__archastro_unset__, parent: :__archastro_unset__, + source_scope: :__archastro_unset__, + source_type: :__archastro_unset__, + source_id: :__archastro_unset__, + epic: :__archastro_unset__, search: :__archastro_unset__, sort: :__archastro_unset__, order: :__archastro_unset__, @@ -2583,6 +2583,10 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamTasks.Params do priority: integer() | ArchAstro.SDK.Unset.t(), tag: String.t() | ArchAstro.SDK.Unset.t(), parent: String.t() | ArchAstro.SDK.Unset.t(), + source_scope: String.t() | ArchAstro.SDK.Unset.t(), + source_type: String.t() | ArchAstro.SDK.Unset.t(), + source_id: String.t() | ArchAstro.SDK.Unset.t(), + epic: String.t() | ArchAstro.SDK.Unset.t(), search: String.t() | ArchAstro.SDK.Unset.t(), sort: String.t() | ArchAstro.SDK.Unset.t(), order: String.t() | ArchAstro.SDK.Unset.t(), @@ -2603,6 +2607,10 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamTasks.Params do priority: {"priority", {:optional, :integer}}, tag: {"tag", {:optional, :string}}, parent: {"parent", {:optional, :string}}, + source_scope: {"source_scope", {:optional, :string}}, + source_type: {"source_type", {:optional, :string}}, + source_id: {"source_id", {:optional, :string}}, + epic: {"epic", {:optional, :string}}, search: {"search", {:optional, :string}}, sort: {"sort", {:optional, :string}}, order: {"order", {:optional, :string}}, @@ -2817,6 +2825,7 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamTasks.Response.Nested. current_lease: :__archastro_unset__, description: :__archastro_unset__, due_date: :__archastro_unset__, + epic: :__archastro_unset__, id: nil, is_blocked: :__archastro_unset__, links: :__archastro_unset__, @@ -2829,6 +2838,9 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamTasks.Response.Nested. parent: :__archastro_unset__, priority: :__archastro_unset__, sandbox: :__archastro_unset__, + source_id: :__archastro_unset__, + source_scope: :__archastro_unset__, + source_type: :__archastro_unset__, status: nil, subtasks_count: :__archastro_unset__, tags: :__archastro_unset__, @@ -2855,6 +2867,7 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamTasks.Response.Nested. | ArchAstro.SDK.Unset.t(), description: String.t() | nil | ArchAstro.SDK.Unset.t(), due_date: DateTime.t() | nil | ArchAstro.SDK.Unset.t(), + epic: String.t() | nil | ArchAstro.SDK.Unset.t(), id: String.t(), is_blocked: boolean() | ArchAstro.SDK.Unset.t(), links: %{optional(String.t()) => ArchAstro.SDK.JSON.t()} | ArchAstro.SDK.Unset.t(), @@ -2870,6 +2883,9 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamTasks.Response.Nested. parent: String.t() | nil | ArchAstro.SDK.Unset.t(), priority: integer() | ArchAstro.SDK.Unset.t(), sandbox: String.t() | nil | ArchAstro.SDK.Unset.t(), + source_id: String.t() | nil | ArchAstro.SDK.Unset.t(), + source_scope: String.t() | nil | ArchAstro.SDK.Unset.t(), + source_type: String.t() | nil | ArchAstro.SDK.Unset.t(), status: String.t(), subtasks_count: integer() | ArchAstro.SDK.Unset.t(), tags: [String.t()] | ArchAstro.SDK.Unset.t(), @@ -2901,6 +2917,7 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamTasks.Response.Nested. ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamTasks.Response.Nested.DataItemCurrentLease}}}}, description: {"description", {:optional, {:nullable, :string}}}, due_date: {"due_date", {:optional, {:nullable, :datetime}}}, + epic: {"epic", {:optional, {:nullable, :string}}}, id: {"id", :string}, is_blocked: {"is_blocked", {:optional, :boolean}}, links: {"links", {:optional, {:map, :unknown}}}, @@ -2918,6 +2935,9 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamTasks.Response.Nested. parent: {"parent", {:optional, {:nullable, :string}}}, priority: {"priority", {:optional, :integer}}, sandbox: {"sandbox", {:optional, {:nullable, :string}}}, + source_id: {"source_id", {:optional, {:nullable, :string}}}, + source_scope: {"source_scope", {:optional, {:nullable, :string}}}, + source_type: {"source_type", {:optional, {:nullable, :string}}}, status: {"status", :string}, subtasks_count: {"subtasks_count", {:optional, :integer}}, tags: {"tags", {:optional, {:list, :string}}}, @@ -2975,6 +2995,7 @@ defmodule ArchAstro.SDK.Types.Operations.PostApiV1TeamsTeamTasks.Input.Nested.Ta @enforce_keys [:name] defstruct description: :__archastro_unset__, due_date: :__archastro_unset__, + epic: :__archastro_unset__, links: :__archastro_unset__, metadata: :__archastro_unset__, name: nil, @@ -2982,6 +3003,9 @@ defmodule ArchAstro.SDK.Types.Operations.PostApiV1TeamsTeamTasks.Input.Nested.Ta owner_user: :__archastro_unset__, parent: :__archastro_unset__, priority: :__archastro_unset__, + source_id: :__archastro_unset__, + source_scope: :__archastro_unset__, + source_type: :__archastro_unset__, status: :__archastro_unset__, tags: :__archastro_unset__, thread: :__archastro_unset__ @@ -2989,6 +3013,7 @@ defmodule ArchAstro.SDK.Types.Operations.PostApiV1TeamsTeamTasks.Input.Nested.Ta @type t :: %__MODULE__{ description: String.t() | ArchAstro.SDK.Unset.t(), due_date: DateTime.t() | ArchAstro.SDK.Unset.t(), + epic: String.t() | ArchAstro.SDK.Unset.t(), links: %{optional(String.t()) => ArchAstro.SDK.JSON.t()} | ArchAstro.SDK.Unset.t(), metadata: %{optional(String.t()) => ArchAstro.SDK.JSON.t()} | ArchAstro.SDK.Unset.t(), name: String.t(), @@ -2996,6 +3021,9 @@ defmodule ArchAstro.SDK.Types.Operations.PostApiV1TeamsTeamTasks.Input.Nested.Ta owner_user: String.t() | ArchAstro.SDK.Unset.t(), parent: String.t() | ArchAstro.SDK.Unset.t(), priority: integer() | ArchAstro.SDK.Unset.t(), + source_id: String.t() | ArchAstro.SDK.Unset.t(), + source_scope: String.t() | ArchAstro.SDK.Unset.t(), + source_type: String.t() | ArchAstro.SDK.Unset.t(), status: String.t() | ArchAstro.SDK.Unset.t(), tags: [String.t()] | ArchAstro.SDK.Unset.t(), thread: String.t() | ArchAstro.SDK.Unset.t() @@ -3004,6 +3032,7 @@ defmodule ArchAstro.SDK.Types.Operations.PostApiV1TeamsTeamTasks.Input.Nested.Ta @fields [ description: {"description", {:optional, :string}}, due_date: {"due_date", {:optional, :datetime}}, + epic: {"epic", {:optional, :string}}, links: {"links", {:optional, {:map, :unknown}}}, metadata: {"metadata", {:optional, {:map, :unknown}}}, name: {"name", :string}, @@ -3011,6 +3040,9 @@ defmodule ArchAstro.SDK.Types.Operations.PostApiV1TeamsTeamTasks.Input.Nested.Ta owner_user: {"owner_user", {:optional, :string}}, parent: {"parent", {:optional, :string}}, priority: {"priority", {:optional, :integer}}, + source_id: {"source_id", {:optional, :string}}, + source_scope: {"source_scope", {:optional, :string}}, + source_type: {"source_type", {:optional, :string}}, status: {"status", {:optional, :string}}, tags: {"tags", {:optional, {:list, :string}}}, thread: {"thread", {:optional, :string}} @@ -3281,6 +3313,7 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamTasksBlockerCycles.Res current_lease: :__archastro_unset__, description: :__archastro_unset__, due_date: :__archastro_unset__, + epic: :__archastro_unset__, id: nil, is_blocked: :__archastro_unset__, links: :__archastro_unset__, @@ -3293,6 +3326,9 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamTasksBlockerCycles.Res parent: :__archastro_unset__, priority: :__archastro_unset__, sandbox: :__archastro_unset__, + source_id: :__archastro_unset__, + source_scope: :__archastro_unset__, + source_type: :__archastro_unset__, status: nil, subtasks_count: :__archastro_unset__, tags: :__archastro_unset__, @@ -3319,6 +3355,7 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamTasksBlockerCycles.Res | ArchAstro.SDK.Unset.t(), description: String.t() | nil | ArchAstro.SDK.Unset.t(), due_date: DateTime.t() | nil | ArchAstro.SDK.Unset.t(), + epic: String.t() | nil | ArchAstro.SDK.Unset.t(), id: String.t(), is_blocked: boolean() | ArchAstro.SDK.Unset.t(), links: %{optional(String.t()) => ArchAstro.SDK.JSON.t()} | ArchAstro.SDK.Unset.t(), @@ -3334,6 +3371,9 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamTasksBlockerCycles.Res parent: String.t() | nil | ArchAstro.SDK.Unset.t(), priority: integer() | ArchAstro.SDK.Unset.t(), sandbox: String.t() | nil | ArchAstro.SDK.Unset.t(), + source_id: String.t() | nil | ArchAstro.SDK.Unset.t(), + source_scope: String.t() | nil | ArchAstro.SDK.Unset.t(), + source_type: String.t() | nil | ArchAstro.SDK.Unset.t(), status: String.t(), subtasks_count: integer() | ArchAstro.SDK.Unset.t(), tags: [String.t()] | ArchAstro.SDK.Unset.t(), @@ -3365,6 +3405,7 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamTasksBlockerCycles.Res ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamTasksBlockerCycles.Response.Nested.DataItemTasksItemCurrentLease}}}}, description: {"description", {:optional, {:nullable, :string}}}, due_date: {"due_date", {:optional, {:nullable, :datetime}}}, + epic: {"epic", {:optional, {:nullable, :string}}}, id: {"id", :string}, is_blocked: {"is_blocked", {:optional, :boolean}}, links: {"links", {:optional, {:map, :unknown}}}, @@ -3382,6 +3423,9 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamTasksBlockerCycles.Res parent: {"parent", {:optional, {:nullable, :string}}}, priority: {"priority", {:optional, :integer}}, sandbox: {"sandbox", {:optional, {:nullable, :string}}}, + source_id: {"source_id", {:optional, {:nullable, :string}}}, + source_scope: {"source_scope", {:optional, {:nullable, :string}}}, + source_type: {"source_type", {:optional, {:nullable, :string}}}, status: {"status", :string}, subtasks_count: {"subtasks_count", {:optional, :integer}}, tags: {"tags", {:optional, {:list, :string}}}, @@ -3530,6 +3574,10 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamTasksReady.Params do org: :__archastro_unset__, explain: :__archastro_unset__, assigned_to_me: :__archastro_unset__, + source_scope: :__archastro_unset__, + source_type: :__archastro_unset__, + source_id: :__archastro_unset__, + epic: :__archastro_unset__, limit: :__archastro_unset__, after_cursor: :__archastro_unset__ @@ -3538,6 +3586,10 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamTasksReady.Params do org: String.t() | ArchAstro.SDK.Unset.t(), explain: boolean() | ArchAstro.SDK.Unset.t(), assigned_to_me: boolean() | ArchAstro.SDK.Unset.t(), + source_scope: String.t() | ArchAstro.SDK.Unset.t(), + source_type: String.t() | ArchAstro.SDK.Unset.t(), + source_id: String.t() | ArchAstro.SDK.Unset.t(), + epic: String.t() | ArchAstro.SDK.Unset.t(), limit: integer() | ArchAstro.SDK.Unset.t(), after_cursor: String.t() | ArchAstro.SDK.Unset.t() } @@ -3547,6 +3599,10 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamTasksReady.Params do org: {"org", {:optional, :string}}, explain: {"explain", {:optional, :boolean}}, assigned_to_me: {"assigned_to_me", {:optional, :boolean}}, + source_scope: {"source_scope", {:optional, :string}}, + source_type: {"source_type", {:optional, :string}}, + source_id: {"source_id", {:optional, :string}}, + epic: {"epic", {:optional, :string}}, limit: {"limit", {:optional, :integer}}, after_cursor: {"after_cursor", {:optional, :string}} ] @@ -3754,6 +3810,7 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamTasksReady.Response.Ne current_lease: :__archastro_unset__, description: :__archastro_unset__, due_date: :__archastro_unset__, + epic: :__archastro_unset__, id: nil, is_blocked: :__archastro_unset__, links: :__archastro_unset__, @@ -3766,6 +3823,9 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamTasksReady.Response.Ne parent: :__archastro_unset__, priority: :__archastro_unset__, sandbox: :__archastro_unset__, + source_id: :__archastro_unset__, + source_scope: :__archastro_unset__, + source_type: :__archastro_unset__, status: nil, subtasks_count: :__archastro_unset__, tags: :__archastro_unset__, @@ -3792,6 +3852,7 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamTasksReady.Response.Ne | ArchAstro.SDK.Unset.t(), description: String.t() | nil | ArchAstro.SDK.Unset.t(), due_date: DateTime.t() | nil | ArchAstro.SDK.Unset.t(), + epic: String.t() | nil | ArchAstro.SDK.Unset.t(), id: String.t(), is_blocked: boolean() | ArchAstro.SDK.Unset.t(), links: %{optional(String.t()) => ArchAstro.SDK.JSON.t()} | ArchAstro.SDK.Unset.t(), @@ -3807,6 +3868,9 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamTasksReady.Response.Ne parent: String.t() | nil | ArchAstro.SDK.Unset.t(), priority: integer() | ArchAstro.SDK.Unset.t(), sandbox: String.t() | nil | ArchAstro.SDK.Unset.t(), + source_id: String.t() | nil | ArchAstro.SDK.Unset.t(), + source_scope: String.t() | nil | ArchAstro.SDK.Unset.t(), + source_type: String.t() | nil | ArchAstro.SDK.Unset.t(), status: String.t(), subtasks_count: integer() | ArchAstro.SDK.Unset.t(), tags: [String.t()] | ArchAstro.SDK.Unset.t(), @@ -3838,6 +3902,7 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamTasksReady.Response.Ne ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamTasksReady.Response.Nested.DataItemTaskCurrentLease}}}}, description: {"description", {:optional, {:nullable, :string}}}, due_date: {"due_date", {:optional, {:nullable, :datetime}}}, + epic: {"epic", {:optional, {:nullable, :string}}}, id: {"id", :string}, is_blocked: {"is_blocked", {:optional, :boolean}}, links: {"links", {:optional, {:map, :unknown}}}, @@ -3855,6 +3920,9 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamTasksReady.Response.Ne parent: {"parent", {:optional, {:nullable, :string}}}, priority: {"priority", {:optional, :integer}}, sandbox: {"sandbox", {:optional, {:nullable, :string}}}, + source_id: {"source_id", {:optional, {:nullable, :string}}}, + source_scope: {"source_scope", {:optional, {:nullable, :string}}}, + source_type: {"source_type", {:optional, {:nullable, :string}}}, status: {"status", :string}, subtasks_count: {"subtasks_count", {:optional, :integer}}, tags: {"tags", {:optional, {:list, :string}}}, @@ -3954,6 +4022,10 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamTasksSearch.Params do priority: :__archastro_unset__, tag: :__archastro_unset__, parent: :__archastro_unset__, + source_scope: :__archastro_unset__, + source_type: :__archastro_unset__, + source_id: :__archastro_unset__, + epic: :__archastro_unset__, limit: :__archastro_unset__, after_cursor: :__archastro_unset__ @@ -3968,6 +4040,10 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamTasksSearch.Params do priority: integer() | ArchAstro.SDK.Unset.t(), tag: String.t() | ArchAstro.SDK.Unset.t(), parent: String.t() | ArchAstro.SDK.Unset.t(), + source_scope: String.t() | ArchAstro.SDK.Unset.t(), + source_type: String.t() | ArchAstro.SDK.Unset.t(), + source_id: String.t() | ArchAstro.SDK.Unset.t(), + epic: String.t() | ArchAstro.SDK.Unset.t(), limit: integer() | ArchAstro.SDK.Unset.t(), after_cursor: String.t() | ArchAstro.SDK.Unset.t() } @@ -3983,6 +4059,10 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamTasksSearch.Params do priority: {"priority", {:optional, :integer}}, tag: {"tag", {:optional, :string}}, parent: {"parent", {:optional, :string}}, + source_scope: {"source_scope", {:optional, :string}}, + source_type: {"source_type", {:optional, :string}}, + source_id: {"source_id", {:optional, :string}}, + epic: {"epic", {:optional, :string}}, limit: {"limit", {:optional, :integer}}, after_cursor: {"after_cursor", {:optional, :string}} ] @@ -4190,6 +4270,7 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamTasksSearch.Response.N current_lease: :__archastro_unset__, description: :__archastro_unset__, due_date: :__archastro_unset__, + epic: :__archastro_unset__, id: nil, is_blocked: :__archastro_unset__, links: :__archastro_unset__, @@ -4202,6 +4283,9 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamTasksSearch.Response.N parent: :__archastro_unset__, priority: :__archastro_unset__, sandbox: :__archastro_unset__, + source_id: :__archastro_unset__, + source_scope: :__archastro_unset__, + source_type: :__archastro_unset__, status: nil, subtasks_count: :__archastro_unset__, tags: :__archastro_unset__, @@ -4228,6 +4312,7 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamTasksSearch.Response.N | ArchAstro.SDK.Unset.t(), description: String.t() | nil | ArchAstro.SDK.Unset.t(), due_date: DateTime.t() | nil | ArchAstro.SDK.Unset.t(), + epic: String.t() | nil | ArchAstro.SDK.Unset.t(), id: String.t(), is_blocked: boolean() | ArchAstro.SDK.Unset.t(), links: %{optional(String.t()) => ArchAstro.SDK.JSON.t()} | ArchAstro.SDK.Unset.t(), @@ -4243,6 +4328,9 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamTasksSearch.Response.N parent: String.t() | nil | ArchAstro.SDK.Unset.t(), priority: integer() | ArchAstro.SDK.Unset.t(), sandbox: String.t() | nil | ArchAstro.SDK.Unset.t(), + source_id: String.t() | nil | ArchAstro.SDK.Unset.t(), + source_scope: String.t() | nil | ArchAstro.SDK.Unset.t(), + source_type: String.t() | nil | ArchAstro.SDK.Unset.t(), status: String.t(), subtasks_count: integer() | ArchAstro.SDK.Unset.t(), tags: [String.t()] | ArchAstro.SDK.Unset.t(), @@ -4274,6 +4362,7 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamTasksSearch.Response.N ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamTasksSearch.Response.Nested.DataItemCurrentLease}}}}, description: {"description", {:optional, {:nullable, :string}}}, due_date: {"due_date", {:optional, {:nullable, :datetime}}}, + epic: {"epic", {:optional, {:nullable, :string}}}, id: {"id", :string}, is_blocked: {"is_blocked", {:optional, :boolean}}, links: {"links", {:optional, {:map, :unknown}}}, @@ -4291,6 +4380,9 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamTasksSearch.Response.N parent: {"parent", {:optional, {:nullable, :string}}}, priority: {"priority", {:optional, :integer}}, sandbox: {"sandbox", {:optional, {:nullable, :string}}}, + source_id: {"source_id", {:optional, {:nullable, :string}}}, + source_scope: {"source_scope", {:optional, {:nullable, :string}}}, + source_type: {"source_type", {:optional, {:nullable, :string}}}, status: {"status", :string}, subtasks_count: {"subtasks_count", {:optional, :integer}}, tags: {"tags", {:optional, {:list, :string}}}, @@ -5438,7 +5530,6 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamThreads.Response.Neste participants: [ ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamThreads.Response.Nested.DataItemParticipatingAgentsItemSourceSolutionCurrentSolutionTemplatesItemDetailsInvokeContractParticipantsItem.t() - | nil ] | nil | ArchAstro.SDK.Unset.t(), @@ -5453,9 +5544,8 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamThreads.Response.Neste {:optional, {:nullable, {:list, - {:nullable, - {:ref, - ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamThreads.Response.Nested.DataItemParticipatingAgentsItemSourceSolutionCurrentSolutionTemplatesItemDetailsInvokeContractParticipantsItem}}}}}}, + {:ref, + ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamThreads.Response.Nested.DataItemParticipatingAgentsItemSourceSolutionCurrentSolutionTemplatesItemDetailsInvokeContractParticipantsItem}}}}}, prefills: {"prefills", {:ref, @@ -5774,7 +5864,6 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamThreads.Response.Neste participants: [ ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamThreads.Response.Nested.DataItemParticipatingAgentsItemSourceSolutionSolutionTemplatesItemDetailsInvokeContractParticipantsItem.t() - | nil ] | nil | ArchAstro.SDK.Unset.t(), @@ -5789,9 +5878,8 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamThreads.Response.Neste {:optional, {:nullable, {:list, - {:nullable, - {:ref, - ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamThreads.Response.Nested.DataItemParticipatingAgentsItemSourceSolutionSolutionTemplatesItemDetailsInvokeContractParticipantsItem}}}}}}, + {:ref, + ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamThreads.Response.Nested.DataItemParticipatingAgentsItemSourceSolutionSolutionTemplatesItemDetailsInvokeContractParticipantsItem}}}}}, prefills: {"prefills", {:ref, @@ -6292,7 +6380,6 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamThreads.Response.Neste participating_agents: [ ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamThreads.Response.Nested.DataItemParticipatingAgentsItem.t() - | nil ] | nil | ArchAstro.SDK.Unset.t(), @@ -6303,9 +6390,7 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamThreads.Response.Neste | ArchAstro.SDK.Unset.t(), slug: String.t() | nil | ArchAstro.SDK.Unset.t(), sub_threads: - [%{optional(String.t()) => ArchAstro.SDK.JSON.t()} | nil] - | nil - | ArchAstro.SDK.Unset.t(), + [%{optional(String.t()) => ArchAstro.SDK.JSON.t()}] | nil | ArchAstro.SDK.Unset.t(), tags: [String.t()] | ArchAstro.SDK.Unset.t(), team: String.t() | nil | ArchAstro.SDK.Unset.t(), title: String.t() | nil | ArchAstro.SDK.Unset.t(), @@ -6362,9 +6447,8 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamThreads.Response.Neste {:optional, {:nullable, {:list, - {:nullable, - {:ref, - ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamThreads.Response.Nested.DataItemParticipatingAgentsItem}}}}}}, + {:ref, + ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamThreads.Response.Nested.DataItemParticipatingAgentsItem}}}}}, role: {"role", {:optional, {:nullable, :string}}}, sandbox: {"sandbox", {:optional, {:nullable, :string}}}, settings: @@ -6373,7 +6457,7 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamThreads.Response.Neste {:ref, ArchAstro.SDK.Types.Operations.GetApiV1TeamsTeamThreads.Response.Nested.DataItemSettings}}}, slug: {"slug", {:optional, {:nullable, :string}}}, - sub_threads: {"sub_threads", {:optional, {:nullable, {:list, {:nullable, {:map, :unknown}}}}}}, + sub_threads: {"sub_threads", {:optional, {:nullable, {:list, {:map, :unknown}}}}}, tags: {"tags", {:optional, {:list, :string}}}, team: {"team", {:optional, {:nullable, :string}}}, title: {"title", {:optional, {:nullable, :string}}}, @@ -6493,6 +6577,7 @@ defmodule ArchAstro.SDK.Types.Operations.PostApiV1TeamsTeamThreads.Input.Nested. description: :__archastro_unset__, is_unlisted: :__archastro_unset__, key: :__archastro_unset__, + kind: :__archastro_unset__, members: :__archastro_unset__, metadata: :__archastro_unset__, muted: :__archastro_unset__, @@ -6508,6 +6593,7 @@ defmodule ArchAstro.SDK.Types.Operations.PostApiV1TeamsTeamThreads.Input.Nested. description: String.t() | ArchAstro.SDK.Unset.t(), is_unlisted: boolean() | ArchAstro.SDK.Unset.t(), key: String.t() | ArchAstro.SDK.Unset.t(), + kind: String.t() | ArchAstro.SDK.Unset.t(), members: [ ArchAstro.SDK.Types.Operations.PostApiV1TeamsTeamThreads.Input.Nested.ThreadMembersItem.t() @@ -6532,6 +6618,7 @@ defmodule ArchAstro.SDK.Types.Operations.PostApiV1TeamsTeamThreads.Input.Nested. description: {"description", {:optional, :string}}, is_unlisted: {"is_unlisted", {:optional, :boolean}}, key: {"key", {:optional, :string}}, + kind: {"kind", {:optional, {:enum, ["personal"]}}}, members: {"members", {:optional, @@ -7090,7 +7177,10 @@ defmodule ArchAstro.SDK.V1.Teams.Members do membership with HTTP 201. Provide exactly one of `user` or `agent` — supplying both or neither returns a 400 error. - The caller must have permission to manage the team. When an `app` is provided, + Adding a user requires permission to manage the team (team owner, team + admin, or org admin). Adding an agent with the default `"member"` role is + also open to any existing member of the team; assigning an elevated role to + an agent still requires team-manage permission. When an `app` is provided, the request is scoped to that app and the caller must hold a valid app-scoped token. The default role is `"member"` when `role` is omitted. diff --git a/lib/archastro/generated/v1/threads.ex b/lib/archastro/generated/v1/threads.ex index 20ad18a..7cd17f4 100644 --- a/lib/archastro/generated/v1/threads.ex +++ b/lib/archastro/generated/v1/threads.ex @@ -1,6 +1,6 @@ # Copyright (c) 2026 ArchAstro Inc. Licensed under the MIT License. # This file is auto-generated by @archastro/sdk-generator. Do not edit. -# Content hash: 7f7830c08ea7 +# Content hash: 269f4b5c3087 defmodule ArchAstro.SDK.Types.Operations.PutApiV1ThreadsThread.Input.Nested.ProfilePicture do @moduledoc """ @@ -1973,7 +1973,8 @@ defmodule ArchAstro.SDK.V1.Threads do Optionally filter results to trajectories produced in response to a specific message by supplying the `message` parameter. When no trajectories match the query, `data` - is an empty array and both cursor fields are `null`. + is an empty array and both cursor fields are `null`. A cursor that cannot be decoded + returns a 400 `invalid_cursor` error. Successful response diff --git a/lib/archastro/generated/v1/users.ex b/lib/archastro/generated/v1/users.ex index 4f69e49..4ee21ae 100644 --- a/lib/archastro/generated/v1/users.ex +++ b/lib/archastro/generated/v1/users.ex @@ -1,6 +1,6 @@ # Copyright (c) 2026 ArchAstro Inc. Licensed under the MIT License. # This file is auto-generated by @archastro/sdk-generator. Do not edit. -# Content hash: c6d9f2f0973b +# Content hash: 07c66378bf2d defmodule ArchAstro.SDK.Types.Operations.GetApiV1UsersUserArtifacts.Response.Nested.DataItemImageSource do @moduledoc """ @@ -198,77 +198,6 @@ defmodule ArchAstro.SDK.Types.Operations.PostApiV1UsersUserInvites.Input do def matches?(value), do: ArchAstro.SDK.Codec.matches?(value, {:object, Keyword.values(@fields)}) end -defmodule ArchAstro.SDK.Types.Operations.GetApiV1UsersUserOrgs.Response.Nested.DataItemVendorLogo do - @moduledoc """ - DataItemVendorLogo API model. - """ - defstruct file: :__archastro_unset__, - height: :__archastro_unset__, - media: :__archastro_unset__, - mime_type: :__archastro_unset__, - refresh_url: :__archastro_unset__, - url: :__archastro_unset__, - width: :__archastro_unset__ - - @type t :: %__MODULE__{ - file: String.t() | nil | ArchAstro.SDK.Unset.t(), - height: integer() | nil | ArchAstro.SDK.Unset.t(), - media: String.t() | nil | ArchAstro.SDK.Unset.t(), - mime_type: String.t() | nil | ArchAstro.SDK.Unset.t(), - refresh_url: String.t() | nil | ArchAstro.SDK.Unset.t(), - url: String.t() | nil | ArchAstro.SDK.Unset.t(), - width: integer() | nil | ArchAstro.SDK.Unset.t() - } - - @fields [ - file: {"file", {:optional, {:nullable, :string}}}, - height: {"height", {:optional, {:nullable, :integer}}}, - media: {"media", {:optional, {:nullable, :string}}}, - mime_type: {"mime_type", {:optional, {:nullable, :string}}}, - refresh_url: {"refresh_url", {:optional, {:nullable, :string}}}, - url: {"url", {:optional, {:nullable, :string}}}, - width: {"width", {:optional, {:nullable, :integer}}} - ] - @spec from_map(ArchAstro.SDK.JSON.object()) :: t() - def from_map(data), do: ArchAstro.SDK.Codec.struct_from_map(__MODULE__, data, @fields) - @spec to_map(t()) :: ArchAstro.SDK.JSON.object() - def to_map(value), do: ArchAstro.SDK.Codec.struct_to_map(value, @fields) - @spec matches?(ArchAstro.SDK.JSON.t()) :: boolean() - def matches?(value), do: ArchAstro.SDK.Codec.matches?(value, {:object, Keyword.values(@fields)}) -end - -defmodule ArchAstro.SDK.Types.Operations.GetApiV1UsersUserOrgs.Response.Nested.DataItemVendor do - @moduledoc """ - DataItemVendor API model. - """ - @enforce_keys [:id] - defstruct id: nil, logo: :__archastro_unset__, name: :__archastro_unset__ - - @type t :: %__MODULE__{ - id: String.t(), - logo: - ArchAstro.SDK.Types.Operations.GetApiV1UsersUserOrgs.Response.Nested.DataItemVendorLogo.t() - | ArchAstro.SDK.Unset.t(), - name: String.t() | ArchAstro.SDK.Unset.t() - } - - @fields [ - id: {"id", :string}, - logo: - {"logo", - {:optional, - {:ref, - ArchAstro.SDK.Types.Operations.GetApiV1UsersUserOrgs.Response.Nested.DataItemVendorLogo}}}, - name: {"name", {:optional, :string}} - ] - @spec from_map(ArchAstro.SDK.JSON.object()) :: t() - def from_map(data), do: ArchAstro.SDK.Codec.struct_from_map(__MODULE__, data, @fields) - @spec to_map(t()) :: ArchAstro.SDK.JSON.object() - def to_map(value), do: ArchAstro.SDK.Codec.struct_to_map(value, @fields) - @spec matches?(ArchAstro.SDK.JSON.t()) :: boolean() - def matches?(value), do: ArchAstro.SDK.Codec.matches?(value, {:object, Keyword.values(@fields)}) -end - defmodule ArchAstro.SDK.Types.Operations.GetApiV1UsersUserOrgs.Response.Nested.DataItem do @moduledoc """ DataItem API model. @@ -287,7 +216,6 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1UsersUserOrgs.Response.Nested.D slug: :__archastro_unset__, status: :__archastro_unset__, updated_at: :__archastro_unset__, - vendor: :__archastro_unset__, website: :__archastro_unset__ @type t :: %__MODULE__{ @@ -304,9 +232,6 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1UsersUserOrgs.Response.Nested.D slug: String.t() | ArchAstro.SDK.Unset.t(), status: String.t() | ArchAstro.SDK.Unset.t(), updated_at: DateTime.t() | ArchAstro.SDK.Unset.t(), - vendor: - ArchAstro.SDK.Types.Operations.GetApiV1UsersUserOrgs.Response.Nested.DataItemVendor.t() - | ArchAstro.SDK.Unset.t(), website: String.t() | ArchAstro.SDK.Unset.t() } @@ -324,10 +249,6 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1UsersUserOrgs.Response.Nested.D slug: {"slug", {:optional, :string}}, status: {"status", {:optional, :string}}, updated_at: {"updated_at", {:optional, :datetime}}, - vendor: - {"vendor", - {:optional, - {:ref, ArchAstro.SDK.Types.Operations.GetApiV1UsersUserOrgs.Response.Nested.DataItemVendor}}}, website: {"website", {:optional, :string}} ] @spec from_map(ArchAstro.SDK.JSON.object()) :: t() @@ -437,6 +358,10 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1UsersUserTasks.Params do priority: :__archastro_unset__, tag: :__archastro_unset__, parent: :__archastro_unset__, + source_scope: :__archastro_unset__, + source_type: :__archastro_unset__, + source_id: :__archastro_unset__, + epic: :__archastro_unset__, search: :__archastro_unset__, sort: :__archastro_unset__, order: :__archastro_unset__, @@ -456,6 +381,10 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1UsersUserTasks.Params do priority: integer() | ArchAstro.SDK.Unset.t(), tag: String.t() | ArchAstro.SDK.Unset.t(), parent: String.t() | ArchAstro.SDK.Unset.t(), + source_scope: String.t() | ArchAstro.SDK.Unset.t(), + source_type: String.t() | ArchAstro.SDK.Unset.t(), + source_id: String.t() | ArchAstro.SDK.Unset.t(), + epic: String.t() | ArchAstro.SDK.Unset.t(), search: String.t() | ArchAstro.SDK.Unset.t(), sort: String.t() | ArchAstro.SDK.Unset.t(), order: String.t() | ArchAstro.SDK.Unset.t(), @@ -476,6 +405,10 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1UsersUserTasks.Params do priority: {"priority", {:optional, :integer}}, tag: {"tag", {:optional, :string}}, parent: {"parent", {:optional, :string}}, + source_scope: {"source_scope", {:optional, :string}}, + source_type: {"source_type", {:optional, :string}}, + source_id: {"source_id", {:optional, :string}}, + epic: {"epic", {:optional, :string}}, search: {"search", {:optional, :string}}, sort: {"sort", {:optional, :string}}, order: {"order", {:optional, :string}}, @@ -690,6 +623,7 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1UsersUserTasks.Response.Nested. current_lease: :__archastro_unset__, description: :__archastro_unset__, due_date: :__archastro_unset__, + epic: :__archastro_unset__, id: nil, is_blocked: :__archastro_unset__, links: :__archastro_unset__, @@ -702,6 +636,9 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1UsersUserTasks.Response.Nested. parent: :__archastro_unset__, priority: :__archastro_unset__, sandbox: :__archastro_unset__, + source_id: :__archastro_unset__, + source_scope: :__archastro_unset__, + source_type: :__archastro_unset__, status: nil, subtasks_count: :__archastro_unset__, tags: :__archastro_unset__, @@ -728,6 +665,7 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1UsersUserTasks.Response.Nested. | ArchAstro.SDK.Unset.t(), description: String.t() | nil | ArchAstro.SDK.Unset.t(), due_date: DateTime.t() | nil | ArchAstro.SDK.Unset.t(), + epic: String.t() | nil | ArchAstro.SDK.Unset.t(), id: String.t(), is_blocked: boolean() | ArchAstro.SDK.Unset.t(), links: %{optional(String.t()) => ArchAstro.SDK.JSON.t()} | ArchAstro.SDK.Unset.t(), @@ -743,6 +681,9 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1UsersUserTasks.Response.Nested. parent: String.t() | nil | ArchAstro.SDK.Unset.t(), priority: integer() | ArchAstro.SDK.Unset.t(), sandbox: String.t() | nil | ArchAstro.SDK.Unset.t(), + source_id: String.t() | nil | ArchAstro.SDK.Unset.t(), + source_scope: String.t() | nil | ArchAstro.SDK.Unset.t(), + source_type: String.t() | nil | ArchAstro.SDK.Unset.t(), status: String.t(), subtasks_count: integer() | ArchAstro.SDK.Unset.t(), tags: [String.t()] | ArchAstro.SDK.Unset.t(), @@ -774,6 +715,7 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1UsersUserTasks.Response.Nested. ArchAstro.SDK.Types.Operations.GetApiV1UsersUserTasks.Response.Nested.DataItemCurrentLease}}}}, description: {"description", {:optional, {:nullable, :string}}}, due_date: {"due_date", {:optional, {:nullable, :datetime}}}, + epic: {"epic", {:optional, {:nullable, :string}}}, id: {"id", :string}, is_blocked: {"is_blocked", {:optional, :boolean}}, links: {"links", {:optional, {:map, :unknown}}}, @@ -791,6 +733,9 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1UsersUserTasks.Response.Nested. parent: {"parent", {:optional, {:nullable, :string}}}, priority: {"priority", {:optional, :integer}}, sandbox: {"sandbox", {:optional, {:nullable, :string}}}, + source_id: {"source_id", {:optional, {:nullable, :string}}}, + source_scope: {"source_scope", {:optional, {:nullable, :string}}}, + source_type: {"source_type", {:optional, {:nullable, :string}}}, status: {"status", :string}, subtasks_count: {"subtasks_count", {:optional, :integer}}, tags: {"tags", {:optional, {:list, :string}}}, @@ -848,6 +793,7 @@ defmodule ArchAstro.SDK.Types.Operations.PostApiV1UsersUserTasks.Input.Nested.Ta @enforce_keys [:name] defstruct description: :__archastro_unset__, due_date: :__archastro_unset__, + epic: :__archastro_unset__, links: :__archastro_unset__, metadata: :__archastro_unset__, name: nil, @@ -855,6 +801,9 @@ defmodule ArchAstro.SDK.Types.Operations.PostApiV1UsersUserTasks.Input.Nested.Ta owner_user: :__archastro_unset__, parent: :__archastro_unset__, priority: :__archastro_unset__, + source_id: :__archastro_unset__, + source_scope: :__archastro_unset__, + source_type: :__archastro_unset__, status: :__archastro_unset__, tags: :__archastro_unset__, thread: :__archastro_unset__ @@ -862,6 +811,7 @@ defmodule ArchAstro.SDK.Types.Operations.PostApiV1UsersUserTasks.Input.Nested.Ta @type t :: %__MODULE__{ description: String.t() | ArchAstro.SDK.Unset.t(), due_date: DateTime.t() | ArchAstro.SDK.Unset.t(), + epic: String.t() | ArchAstro.SDK.Unset.t(), links: %{optional(String.t()) => ArchAstro.SDK.JSON.t()} | ArchAstro.SDK.Unset.t(), metadata: %{optional(String.t()) => ArchAstro.SDK.JSON.t()} | ArchAstro.SDK.Unset.t(), name: String.t(), @@ -869,6 +819,9 @@ defmodule ArchAstro.SDK.Types.Operations.PostApiV1UsersUserTasks.Input.Nested.Ta owner_user: String.t() | ArchAstro.SDK.Unset.t(), parent: String.t() | ArchAstro.SDK.Unset.t(), priority: integer() | ArchAstro.SDK.Unset.t(), + source_id: String.t() | ArchAstro.SDK.Unset.t(), + source_scope: String.t() | ArchAstro.SDK.Unset.t(), + source_type: String.t() | ArchAstro.SDK.Unset.t(), status: String.t() | ArchAstro.SDK.Unset.t(), tags: [String.t()] | ArchAstro.SDK.Unset.t(), thread: String.t() | ArchAstro.SDK.Unset.t() @@ -877,6 +830,7 @@ defmodule ArchAstro.SDK.Types.Operations.PostApiV1UsersUserTasks.Input.Nested.Ta @fields [ description: {"description", {:optional, :string}}, due_date: {"due_date", {:optional, :datetime}}, + epic: {"epic", {:optional, :string}}, links: {"links", {:optional, {:map, :unknown}}}, metadata: {"metadata", {:optional, {:map, :unknown}}}, name: {"name", :string}, @@ -884,6 +838,9 @@ defmodule ArchAstro.SDK.Types.Operations.PostApiV1UsersUserTasks.Input.Nested.Ta owner_user: {"owner_user", {:optional, :string}}, parent: {"parent", {:optional, :string}}, priority: {"priority", {:optional, :integer}}, + source_id: {"source_id", {:optional, :string}}, + source_scope: {"source_scope", {:optional, :string}}, + source_type: {"source_type", {:optional, :string}}, status: {"status", {:optional, :string}}, tags: {"tags", {:optional, {:list, :string}}}, thread: {"thread", {:optional, :string}} @@ -1154,6 +1111,7 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1UsersUserTasksBlockerCycles.Res current_lease: :__archastro_unset__, description: :__archastro_unset__, due_date: :__archastro_unset__, + epic: :__archastro_unset__, id: nil, is_blocked: :__archastro_unset__, links: :__archastro_unset__, @@ -1166,6 +1124,9 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1UsersUserTasksBlockerCycles.Res parent: :__archastro_unset__, priority: :__archastro_unset__, sandbox: :__archastro_unset__, + source_id: :__archastro_unset__, + source_scope: :__archastro_unset__, + source_type: :__archastro_unset__, status: nil, subtasks_count: :__archastro_unset__, tags: :__archastro_unset__, @@ -1192,6 +1153,7 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1UsersUserTasksBlockerCycles.Res | ArchAstro.SDK.Unset.t(), description: String.t() | nil | ArchAstro.SDK.Unset.t(), due_date: DateTime.t() | nil | ArchAstro.SDK.Unset.t(), + epic: String.t() | nil | ArchAstro.SDK.Unset.t(), id: String.t(), is_blocked: boolean() | ArchAstro.SDK.Unset.t(), links: %{optional(String.t()) => ArchAstro.SDK.JSON.t()} | ArchAstro.SDK.Unset.t(), @@ -1207,6 +1169,9 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1UsersUserTasksBlockerCycles.Res parent: String.t() | nil | ArchAstro.SDK.Unset.t(), priority: integer() | ArchAstro.SDK.Unset.t(), sandbox: String.t() | nil | ArchAstro.SDK.Unset.t(), + source_id: String.t() | nil | ArchAstro.SDK.Unset.t(), + source_scope: String.t() | nil | ArchAstro.SDK.Unset.t(), + source_type: String.t() | nil | ArchAstro.SDK.Unset.t(), status: String.t(), subtasks_count: integer() | ArchAstro.SDK.Unset.t(), tags: [String.t()] | ArchAstro.SDK.Unset.t(), @@ -1238,6 +1203,7 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1UsersUserTasksBlockerCycles.Res ArchAstro.SDK.Types.Operations.GetApiV1UsersUserTasksBlockerCycles.Response.Nested.DataItemTasksItemCurrentLease}}}}, description: {"description", {:optional, {:nullable, :string}}}, due_date: {"due_date", {:optional, {:nullable, :datetime}}}, + epic: {"epic", {:optional, {:nullable, :string}}}, id: {"id", :string}, is_blocked: {"is_blocked", {:optional, :boolean}}, links: {"links", {:optional, {:map, :unknown}}}, @@ -1255,6 +1221,9 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1UsersUserTasksBlockerCycles.Res parent: {"parent", {:optional, {:nullable, :string}}}, priority: {"priority", {:optional, :integer}}, sandbox: {"sandbox", {:optional, {:nullable, :string}}}, + source_id: {"source_id", {:optional, {:nullable, :string}}}, + source_scope: {"source_scope", {:optional, {:nullable, :string}}}, + source_type: {"source_type", {:optional, {:nullable, :string}}}, status: {"status", :string}, subtasks_count: {"subtasks_count", {:optional, :integer}}, tags: {"tags", {:optional, {:list, :string}}}, @@ -1344,6 +1313,10 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1UsersUserTasksReady.Params do org: :__archastro_unset__, explain: :__archastro_unset__, assigned_to_me: :__archastro_unset__, + source_scope: :__archastro_unset__, + source_type: :__archastro_unset__, + source_id: :__archastro_unset__, + epic: :__archastro_unset__, limit: :__archastro_unset__, after_cursor: :__archastro_unset__ @@ -1352,6 +1325,10 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1UsersUserTasksReady.Params do org: String.t() | ArchAstro.SDK.Unset.t(), explain: boolean() | ArchAstro.SDK.Unset.t(), assigned_to_me: boolean() | ArchAstro.SDK.Unset.t(), + source_scope: String.t() | ArchAstro.SDK.Unset.t(), + source_type: String.t() | ArchAstro.SDK.Unset.t(), + source_id: String.t() | ArchAstro.SDK.Unset.t(), + epic: String.t() | ArchAstro.SDK.Unset.t(), limit: integer() | ArchAstro.SDK.Unset.t(), after_cursor: String.t() | ArchAstro.SDK.Unset.t() } @@ -1361,6 +1338,10 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1UsersUserTasksReady.Params do org: {"org", {:optional, :string}}, explain: {"explain", {:optional, :boolean}}, assigned_to_me: {"assigned_to_me", {:optional, :boolean}}, + source_scope: {"source_scope", {:optional, :string}}, + source_type: {"source_type", {:optional, :string}}, + source_id: {"source_id", {:optional, :string}}, + epic: {"epic", {:optional, :string}}, limit: {"limit", {:optional, :integer}}, after_cursor: {"after_cursor", {:optional, :string}} ] @@ -1568,6 +1549,7 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1UsersUserTasksReady.Response.Ne current_lease: :__archastro_unset__, description: :__archastro_unset__, due_date: :__archastro_unset__, + epic: :__archastro_unset__, id: nil, is_blocked: :__archastro_unset__, links: :__archastro_unset__, @@ -1580,6 +1562,9 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1UsersUserTasksReady.Response.Ne parent: :__archastro_unset__, priority: :__archastro_unset__, sandbox: :__archastro_unset__, + source_id: :__archastro_unset__, + source_scope: :__archastro_unset__, + source_type: :__archastro_unset__, status: nil, subtasks_count: :__archastro_unset__, tags: :__archastro_unset__, @@ -1606,6 +1591,7 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1UsersUserTasksReady.Response.Ne | ArchAstro.SDK.Unset.t(), description: String.t() | nil | ArchAstro.SDK.Unset.t(), due_date: DateTime.t() | nil | ArchAstro.SDK.Unset.t(), + epic: String.t() | nil | ArchAstro.SDK.Unset.t(), id: String.t(), is_blocked: boolean() | ArchAstro.SDK.Unset.t(), links: %{optional(String.t()) => ArchAstro.SDK.JSON.t()} | ArchAstro.SDK.Unset.t(), @@ -1621,6 +1607,9 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1UsersUserTasksReady.Response.Ne parent: String.t() | nil | ArchAstro.SDK.Unset.t(), priority: integer() | ArchAstro.SDK.Unset.t(), sandbox: String.t() | nil | ArchAstro.SDK.Unset.t(), + source_id: String.t() | nil | ArchAstro.SDK.Unset.t(), + source_scope: String.t() | nil | ArchAstro.SDK.Unset.t(), + source_type: String.t() | nil | ArchAstro.SDK.Unset.t(), status: String.t(), subtasks_count: integer() | ArchAstro.SDK.Unset.t(), tags: [String.t()] | ArchAstro.SDK.Unset.t(), @@ -1652,6 +1641,7 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1UsersUserTasksReady.Response.Ne ArchAstro.SDK.Types.Operations.GetApiV1UsersUserTasksReady.Response.Nested.DataItemTaskCurrentLease}}}}, description: {"description", {:optional, {:nullable, :string}}}, due_date: {"due_date", {:optional, {:nullable, :datetime}}}, + epic: {"epic", {:optional, {:nullable, :string}}}, id: {"id", :string}, is_blocked: {"is_blocked", {:optional, :boolean}}, links: {"links", {:optional, {:map, :unknown}}}, @@ -1669,6 +1659,9 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1UsersUserTasksReady.Response.Ne parent: {"parent", {:optional, {:nullable, :string}}}, priority: {"priority", {:optional, :integer}}, sandbox: {"sandbox", {:optional, {:nullable, :string}}}, + source_id: {"source_id", {:optional, {:nullable, :string}}}, + source_scope: {"source_scope", {:optional, {:nullable, :string}}}, + source_type: {"source_type", {:optional, {:nullable, :string}}}, status: {"status", :string}, subtasks_count: {"subtasks_count", {:optional, :integer}}, tags: {"tags", {:optional, {:list, :string}}}, @@ -1768,6 +1761,10 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1UsersUserTasksSearch.Params do priority: :__archastro_unset__, tag: :__archastro_unset__, parent: :__archastro_unset__, + source_scope: :__archastro_unset__, + source_type: :__archastro_unset__, + source_id: :__archastro_unset__, + epic: :__archastro_unset__, limit: :__archastro_unset__, after_cursor: :__archastro_unset__ @@ -1782,6 +1779,10 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1UsersUserTasksSearch.Params do priority: integer() | ArchAstro.SDK.Unset.t(), tag: String.t() | ArchAstro.SDK.Unset.t(), parent: String.t() | ArchAstro.SDK.Unset.t(), + source_scope: String.t() | ArchAstro.SDK.Unset.t(), + source_type: String.t() | ArchAstro.SDK.Unset.t(), + source_id: String.t() | ArchAstro.SDK.Unset.t(), + epic: String.t() | ArchAstro.SDK.Unset.t(), limit: integer() | ArchAstro.SDK.Unset.t(), after_cursor: String.t() | ArchAstro.SDK.Unset.t() } @@ -1797,6 +1798,10 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1UsersUserTasksSearch.Params do priority: {"priority", {:optional, :integer}}, tag: {"tag", {:optional, :string}}, parent: {"parent", {:optional, :string}}, + source_scope: {"source_scope", {:optional, :string}}, + source_type: {"source_type", {:optional, :string}}, + source_id: {"source_id", {:optional, :string}}, + epic: {"epic", {:optional, :string}}, limit: {"limit", {:optional, :integer}}, after_cursor: {"after_cursor", {:optional, :string}} ] @@ -2004,6 +2009,7 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1UsersUserTasksSearch.Response.N current_lease: :__archastro_unset__, description: :__archastro_unset__, due_date: :__archastro_unset__, + epic: :__archastro_unset__, id: nil, is_blocked: :__archastro_unset__, links: :__archastro_unset__, @@ -2016,6 +2022,9 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1UsersUserTasksSearch.Response.N parent: :__archastro_unset__, priority: :__archastro_unset__, sandbox: :__archastro_unset__, + source_id: :__archastro_unset__, + source_scope: :__archastro_unset__, + source_type: :__archastro_unset__, status: nil, subtasks_count: :__archastro_unset__, tags: :__archastro_unset__, @@ -2042,6 +2051,7 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1UsersUserTasksSearch.Response.N | ArchAstro.SDK.Unset.t(), description: String.t() | nil | ArchAstro.SDK.Unset.t(), due_date: DateTime.t() | nil | ArchAstro.SDK.Unset.t(), + epic: String.t() | nil | ArchAstro.SDK.Unset.t(), id: String.t(), is_blocked: boolean() | ArchAstro.SDK.Unset.t(), links: %{optional(String.t()) => ArchAstro.SDK.JSON.t()} | ArchAstro.SDK.Unset.t(), @@ -2057,6 +2067,9 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1UsersUserTasksSearch.Response.N parent: String.t() | nil | ArchAstro.SDK.Unset.t(), priority: integer() | ArchAstro.SDK.Unset.t(), sandbox: String.t() | nil | ArchAstro.SDK.Unset.t(), + source_id: String.t() | nil | ArchAstro.SDK.Unset.t(), + source_scope: String.t() | nil | ArchAstro.SDK.Unset.t(), + source_type: String.t() | nil | ArchAstro.SDK.Unset.t(), status: String.t(), subtasks_count: integer() | ArchAstro.SDK.Unset.t(), tags: [String.t()] | ArchAstro.SDK.Unset.t(), @@ -2088,6 +2101,7 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1UsersUserTasksSearch.Response.N ArchAstro.SDK.Types.Operations.GetApiV1UsersUserTasksSearch.Response.Nested.DataItemCurrentLease}}}}, description: {"description", {:optional, {:nullable, :string}}}, due_date: {"due_date", {:optional, {:nullable, :datetime}}}, + epic: {"epic", {:optional, {:nullable, :string}}}, id: {"id", :string}, is_blocked: {"is_blocked", {:optional, :boolean}}, links: {"links", {:optional, {:map, :unknown}}}, @@ -2105,6 +2119,9 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1UsersUserTasksSearch.Response.N parent: {"parent", {:optional, {:nullable, :string}}}, priority: {"priority", {:optional, :integer}}, sandbox: {"sandbox", {:optional, {:nullable, :string}}}, + source_id: {"source_id", {:optional, {:nullable, :string}}}, + source_scope: {"source_scope", {:optional, {:nullable, :string}}}, + source_type: {"source_type", {:optional, {:nullable, :string}}}, status: {"status", :string}, subtasks_count: {"subtasks_count", {:optional, :integer}}, tags: {"tags", {:optional, {:list, :string}}}, @@ -3284,7 +3301,6 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1UsersUserThreads.Response.Neste participants: [ ArchAstro.SDK.Types.Operations.GetApiV1UsersUserThreads.Response.Nested.DataItemParticipatingAgentsItemSourceSolutionCurrentSolutionTemplatesItemDetailsInvokeContractParticipantsItem.t() - | nil ] | nil | ArchAstro.SDK.Unset.t(), @@ -3299,9 +3315,8 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1UsersUserThreads.Response.Neste {:optional, {:nullable, {:list, - {:nullable, - {:ref, - ArchAstro.SDK.Types.Operations.GetApiV1UsersUserThreads.Response.Nested.DataItemParticipatingAgentsItemSourceSolutionCurrentSolutionTemplatesItemDetailsInvokeContractParticipantsItem}}}}}}, + {:ref, + ArchAstro.SDK.Types.Operations.GetApiV1UsersUserThreads.Response.Nested.DataItemParticipatingAgentsItemSourceSolutionCurrentSolutionTemplatesItemDetailsInvokeContractParticipantsItem}}}}}, prefills: {"prefills", {:ref, @@ -3620,7 +3635,6 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1UsersUserThreads.Response.Neste participants: [ ArchAstro.SDK.Types.Operations.GetApiV1UsersUserThreads.Response.Nested.DataItemParticipatingAgentsItemSourceSolutionSolutionTemplatesItemDetailsInvokeContractParticipantsItem.t() - | nil ] | nil | ArchAstro.SDK.Unset.t(), @@ -3635,9 +3649,8 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1UsersUserThreads.Response.Neste {:optional, {:nullable, {:list, - {:nullable, - {:ref, - ArchAstro.SDK.Types.Operations.GetApiV1UsersUserThreads.Response.Nested.DataItemParticipatingAgentsItemSourceSolutionSolutionTemplatesItemDetailsInvokeContractParticipantsItem}}}}}}, + {:ref, + ArchAstro.SDK.Types.Operations.GetApiV1UsersUserThreads.Response.Nested.DataItemParticipatingAgentsItemSourceSolutionSolutionTemplatesItemDetailsInvokeContractParticipantsItem}}}}}, prefills: {"prefills", {:ref, @@ -4138,7 +4151,6 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1UsersUserThreads.Response.Neste participating_agents: [ ArchAstro.SDK.Types.Operations.GetApiV1UsersUserThreads.Response.Nested.DataItemParticipatingAgentsItem.t() - | nil ] | nil | ArchAstro.SDK.Unset.t(), @@ -4149,9 +4161,7 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1UsersUserThreads.Response.Neste | ArchAstro.SDK.Unset.t(), slug: String.t() | nil | ArchAstro.SDK.Unset.t(), sub_threads: - [%{optional(String.t()) => ArchAstro.SDK.JSON.t()} | nil] - | nil - | ArchAstro.SDK.Unset.t(), + [%{optional(String.t()) => ArchAstro.SDK.JSON.t()}] | nil | ArchAstro.SDK.Unset.t(), tags: [String.t()] | ArchAstro.SDK.Unset.t(), team: String.t() | nil | ArchAstro.SDK.Unset.t(), title: String.t() | nil | ArchAstro.SDK.Unset.t(), @@ -4208,9 +4218,8 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1UsersUserThreads.Response.Neste {:optional, {:nullable, {:list, - {:nullable, - {:ref, - ArchAstro.SDK.Types.Operations.GetApiV1UsersUserThreads.Response.Nested.DataItemParticipatingAgentsItem}}}}}}, + {:ref, + ArchAstro.SDK.Types.Operations.GetApiV1UsersUserThreads.Response.Nested.DataItemParticipatingAgentsItem}}}}}, role: {"role", {:optional, {:nullable, :string}}}, sandbox: {"sandbox", {:optional, {:nullable, :string}}}, settings: @@ -4219,7 +4228,7 @@ defmodule ArchAstro.SDK.Types.Operations.GetApiV1UsersUserThreads.Response.Neste {:ref, ArchAstro.SDK.Types.Operations.GetApiV1UsersUserThreads.Response.Nested.DataItemSettings}}}, slug: {"slug", {:optional, {:nullable, :string}}}, - sub_threads: {"sub_threads", {:optional, {:nullable, {:list, {:nullable, {:map, :unknown}}}}}}, + sub_threads: {"sub_threads", {:optional, {:nullable, {:list, {:map, :unknown}}}}}, tags: {"tags", {:optional, {:list, :string}}}, team: {"team", {:optional, {:nullable, :string}}}, title: {"title", {:optional, {:nullable, :string}}}, @@ -4339,6 +4348,7 @@ defmodule ArchAstro.SDK.Types.Operations.PostApiV1UsersUserThreads.Input.Nested. description: :__archastro_unset__, is_unlisted: :__archastro_unset__, key: :__archastro_unset__, + kind: :__archastro_unset__, members: :__archastro_unset__, metadata: :__archastro_unset__, muted: :__archastro_unset__, @@ -4354,6 +4364,7 @@ defmodule ArchAstro.SDK.Types.Operations.PostApiV1UsersUserThreads.Input.Nested. description: String.t() | ArchAstro.SDK.Unset.t(), is_unlisted: boolean() | ArchAstro.SDK.Unset.t(), key: String.t() | ArchAstro.SDK.Unset.t(), + kind: String.t() | ArchAstro.SDK.Unset.t(), members: [ ArchAstro.SDK.Types.Operations.PostApiV1UsersUserThreads.Input.Nested.ThreadMembersItem.t() @@ -4378,6 +4389,7 @@ defmodule ArchAstro.SDK.Types.Operations.PostApiV1UsersUserThreads.Input.Nested. description: {"description", {:optional, :string}}, is_unlisted: {"is_unlisted", {:optional, :boolean}}, key: {"key", {:optional, :string}}, + kind: {"kind", {:optional, {:enum, ["personal"]}}}, members: {"members", {:optional, diff --git a/specs/platform-openapi.json b/specs/platform-openapi.json index 02ae6c1..4f8d6be 100644 --- a/specs/platform-openapi.json +++ b/specs/platform-openapi.json @@ -1613,7 +1613,6 @@ "required": true, "type": "agent_user" }, - "nullable": true, "properties": { "description": { "description": "Workflow-authored explanation of the slot's role. `null` when the workflow declares none.", @@ -2140,7 +2139,6 @@ "required": true, "type": "agent_user" }, - "nullable": true, "properties": { "description": { "description": "Workflow-authored explanation of the slot's role. `null` when the workflow declares none.", @@ -9516,418 +9514,474 @@ ], "type": "object" }, - "ChatMarkThreadReadResponse": { - "description": "Response returned after marking a chat thread as read. Confirms that the read marker was successfully recorded for the authenticated user.", + "ChatLocalToolDefinition": { + "description": "An OpenAI-compatible local function definition supplied while joining a personal thread.", "example": { - "success": true + "function": { + "description": "An example description.", + "name": "Example Name", + "parameters": {} + }, + "type": "function" }, "properties": { - "success": { - "description": "Indicates whether the read marker was successfully applied. Always `true` on success; errors are returned as channel error replies rather than a `false` value here.", - "example": true, - "type": "boolean" + "function": { + "$ref": "#/components/schemas/ChatLocalToolFunction" + }, + "type": { + "enum": [ + "function" + ], + "example": "function", + "type": "string" } }, "required": [ - "success" + "type", + "function" ], "type": "object" }, - "ChatMember": { - "description": "A participant in a chat thread, which may be either a human user or an AI agent. Exactly one of `user` or `agent` is populated depending on `type`.", + "ChatLocalToolFunction": { + "description": "A function implemented by the client connected to a personal thread.", "example": { - "agent": { - "acl": { - "add": [ - { - "actions": [ - "read", - "write" - ], - "principal": "string", - "principal_type": "user" - } - ], - "grants": [ - { - "actions": [ - "read", - "write" - ], - "principal": "string", - "principal_type": "user" - } - ], - "remove": [ - { - "principal": "string", - "principal_type": "user" - } - ] - }, - "app": "dap_0aBcDeFgHiJkLmNoPqRsTu", - "created_at": "2024-01-01T00:00:00Z", - "default_model": "claude-3-7-sonnet-latest", - "description": "An example description.", - "email": "user@example.com", - "id": "agi_0aBcDeFgHiJkLmNoPqRsTu", - "identity": "You are a helpful assistant that answers questions about ArchAstro products.", - "last_applied_template_config": "cfg_0aBcDeFgHiJkLmNoPqRsTu", - "lookup_key": "string", - "metadata": { - "key": "value" - }, - "name": "Example Name", - "org": "org_0aBcDeFgHiJkLmNoPqRsTu", - "org_name": "Example Name", - "originator": "deploy-pipeline", - "phone_number": "+15555550123", - "sandbox": "dsb_0aBcDeFgHiJkLmNoPqRsTu", - "source_solution": { - "current_solution": { - "category_keys": [ - "string" - ], - "created_at": "2024-01-01T00:00:00Z", - "description": "An example description.", - "events": {}, - "id": "id_0aBcDeFgHiJkLmNoPqRsTu", - "image_url": "https://example.com", - "kind": "Solution", - "latest_solution": "id_0aBcDeFgHiJkLmNoPqRsTu", - "latest_version": "1.0.0", - "lookup_key": "string", - "metadata": { - "key": "value" - }, - "name": "Example Name", - "org": "org_0aBcDeFgHiJkLmNoPqRsTu", - "org_logo": { - "file": "fil_0aBcDeFgHiJkLmNoPqRsTu", - "height": 600, - "media": "med_0aBcDeFgHiJkLmNoPqRsTu", - "mime_type": "application/json", - "refresh_url": "https://example.com", - "url": "https://example.com", - "width": 800 - }, - "org_name": "Example Name", - "org_slug": "example-slug", - "owners": [ - "string" - ], - "readme_url": "https://example.com", - "screenshot_urls": [ - "https://example.com" - ], - "solution_id": "01234567-89ab-cdef-0123-456789abcdef", - "solution_version": "1.2.0", - "tag_keys": [ - "string" - ], - "template_kind": "AgentTemplate", - "templates": [ - { - "description": "An example description.", - "display_name": "Example Name", - "id": "id_0aBcDeFgHiJkLmNoPqRsTu", - "kind": "AgentTemplate", - "lookup_key": "string", - "name": "Example Name", - "readme_url": "https://example.com", - "virtual_path": "string" - } - ], - "updated_at": "2024-01-01T00:00:00Z", - "upgrade_available": true, - "virtual_path": "string" - }, - "solution": { - "category_keys": [ - "string" - ], - "created_at": "2024-01-01T00:00:00Z", - "description": "An example description.", - "events": {}, - "id": "id_0aBcDeFgHiJkLmNoPqRsTu", - "image_url": "https://example.com", - "kind": "Solution", - "latest_solution": "id_0aBcDeFgHiJkLmNoPqRsTu", - "latest_version": "1.0.0", - "lookup_key": "string", - "metadata": { - "key": "value" - }, - "name": "Example Name", - "org": "org_0aBcDeFgHiJkLmNoPqRsTu", - "org_logo": { - "file": "fil_0aBcDeFgHiJkLmNoPqRsTu", - "height": 600, - "media": "med_0aBcDeFgHiJkLmNoPqRsTu", - "mime_type": "application/json", - "refresh_url": "https://example.com", - "url": "https://example.com", - "width": 800 - }, - "org_name": "Example Name", - "org_slug": "example-slug", - "owners": [ - "string" - ], - "readme_url": "https://example.com", - "screenshot_urls": [ - "https://example.com" - ], - "solution_id": "01234567-89ab-cdef-0123-456789abcdef", - "solution_version": "1.2.0", - "tag_keys": [ - "string" - ], - "template_kind": "AgentTemplate", - "templates": [ - { - "description": "An example description.", - "display_name": "Example Name", - "id": "id_0aBcDeFgHiJkLmNoPqRsTu", - "kind": "AgentTemplate", - "lookup_key": "string", - "name": "Example Name", - "readme_url": "https://example.com", - "virtual_path": "string" - } - ], - "updated_at": "2024-01-01T00:00:00Z", - "upgrade_available": true, - "virtual_path": "string" - }, - "template": { - "created_at": "2024-01-01T00:00:00Z", - "description": "An example description.", - "display_name": "Example Name", - "id": "id_0aBcDeFgHiJkLmNoPqRsTu", - "kind": "agent_tool_template", - "lookup_key": "string", - "name": "Example Name", - "updated_at": "2024-01-01T00:00:00Z", - "virtual_path": "string" - } - }, - "team": "tem_0aBcDeFgHiJkLmNoPqRsTu", - "template_upgrade_available": true, - "updated_at": "2024-01-01T00:00:00Z", - "user": "usr_0aBcDeFgHiJkLmNoPqRsTu" - }, - "membership_type": "owner", - "type": "user", - "user": { - "alias": "jdoe", - "app": "dap_0aBcDeFgHiJkLmNoPqRsTu", - "app_name": "Example Name", - "created_by_agent_user": "usr_0aBcDeFgHiJkLmNoPqRsTu", - "created_by_developer": "dva_0aBcDeFgHiJkLmNoPqRsTu", - "created_by_org": "org_0aBcDeFgHiJkLmNoPqRsTu", - "created_by_team": "tem_0aBcDeFgHiJkLmNoPqRsTu", - "created_by_user": "usr_0aBcDeFgHiJkLmNoPqRsTu", - "email": "user@example.com", - "id": "usr_0aBcDeFgHiJkLmNoPqRsTu", - "is_system_user": true, - "metadata": { - "key": "value" - }, - "name": "Example Name", - "org": "org_0aBcDeFgHiJkLmNoPqRsTu", - "org_name": "Example Name", - "org_role": "member", - "org_slug": "example-slug", - "sandbox": "dsb_0aBcDeFgHiJkLmNoPqRsTu", - "sandbox_name": "Example Name" - } + "description": "An example description.", + "name": "Example Name", + "parameters": {} }, "properties": { - "agent": { - "$ref": "#/components/schemas/Agent", - "description": "Full agent object for this member. Populated when `type` is `\"agent\"`; `null` for user members." - }, - "membership_type": { - "description": "Role of this member within the thread. Common values are `\"owner\"` and `\"member\"`. `null` when the membership type is not applicable.", - "example": "owner", + "description": { + "example": "An example description.", "type": "string" }, - "type": { - "description": "Kind of participant. One of `\"user\"` (a human user) or `\"agent\"` (an AI agent).", - "example": "user", + "name": { + "example": "Example Name", "type": "string" }, - "user": { - "$ref": "#/components/schemas/User", - "description": "Full user object for this member. Populated when `type` is `\"user\"`; `null` for agent members." + "parameters": { + "example": {}, + "type": "object" } }, "required": [ - "type" + "name", + "description", + "parameters" ], "type": "object" }, - "ChatMessageListResponse": { - "description": "Response returned when listing the messages of a joined chat thread. Contains the set of messages currently loaded for the thread.", + "ChatMarkThreadReadResponse": { + "description": "Response returned after marking a chat thread as read. Confirms that the read marker was successfully recorded for the authenticated user.", "example": { - "messages": [ - { - "acl": { - "add": [ - { - "actions": [ - "read", - "write" - ], - "principal": "string", - "principal_type": "user" - } - ], - "grants": [ - { - "actions": [ - "read", - "write" - ], - "principal": "string", - "principal_type": "user" - } - ], - "remove": [ - { - "principal": "string", - "principal_type": "user" - } - ] - }, - "actors": [ - { - "alias": "alice", - "id": "user-usr_01j3k5m7n9p2r4s6t8v0w1x2", - "name": "Example Name", - "profile_picture": { - "file": "fil_0aBcDeFgHiJkLmNoPqRsTu", - "height": 600, - "media": "med_0aBcDeFgHiJkLmNoPqRsTu", - "mime_type": "application/json", - "refresh_url": "https://example.com", - "url": "https://example.com", - "width": 800 - } - } - ], - "agent": "agi_0aBcDeFgHiJkLmNoPqRsTu", - "agent_mode": "cli", - "attachments": [ - { - "content_type": "application/json", - "description": "An example description.", - "filename": "string", - "height": 1, - "id": "string", - "image_height": 1, - "image_source": { - "file": "fil_0aBcDeFgHiJkLmNoPqRsTu", - "height": 600, - "media": "med_0aBcDeFgHiJkLmNoPqRsTu", - "mime_type": "application/json", - "refresh_url": "https://example.com", - "url": "https://example.com", - "width": 800 - }, - "image_url": "https://example.com", - "image_width": 1, - "media_type": "application/json", - "name": "Example Name", - "object": {}, - "title": "Example Title", - "type": "file", - "url": "https://example.com", - "variants": [ - { - "content_type": "application/json", - "created_at": "2024-01-01T00:00:00Z", - "file": "fil_0aBcDeFgHiJkLmNoPqRsTu", - "filename": "string", - "height": 600, - "id": "mvr_0aBcDeFgHiJkLmNoPqRsTu", - "image_source": { - "file": "fil_0aBcDeFgHiJkLmNoPqRsTu", - "height": 600, - "media": "med_0aBcDeFgHiJkLmNoPqRsTu", - "mime_type": "application/json", - "refresh_url": "https://example.com", - "url": "https://example.com", - "width": 800 - }, - "updated_at": "2024-01-01T00:00:00Z", - "url": "https://example.com", - "variant_key": "original", - "width": 800 - } - ], - "version": 1, - "width": 1 - } - ], - "branched_thread": "string", - "content": "Hello, how can I help you today?", - "created_at": "2024-01-01T00:00:00Z", - "has_replies": true, - "id": "msg_0aBcDeFgHiJkLmNoPqRsTu", - "idempotency_key": "01234567-89ab-cdef-0123-456789abcdef", - "is_deleted": true, - "legacy_agent": "string", - "metadata": { - "key": "value" - }, - "org": "org_0aBcDeFgHiJkLmNoPqRsTu", - "reactions": [ - { - "payload": { - "key": "value" - }, - "type": "emoji_reaction", - "user": "string" - } - ], - "rendering_mode": "reply", - "replies": [ - {} - ], - "replies_after_cursor": "string", - "replies_before_cursor": "string", - "reply_count": 1, - "reply_to": {}, - "root_message_id": "string", - "sandbox": "string", - "team": "tem_0aBcDeFgHiJkLmNoPqRsTu", - "thread": "string", - "type": "note", - "user": "usr_0aBcDeFgHiJkLmNoPqRsTu", - "visibility": "default" - } - ] + "success": true }, "properties": { - "messages": { - "description": "Ordered array of message objects currently loaded for the thread, from oldest to newest. Use the `load_more_messages` channel message to fetch earlier pages.", - "items": { - "$ref": "#/components/schemas/Message" - }, - "type": "array" + "success": { + "description": "Indicates whether the read marker was successfully applied. Always `true` on success; errors are returned as channel error replies rather than a `false` value here.", + "example": true, + "type": "boolean" } }, "required": [ - "messages" + "success" ], "type": "object" }, - "ChatPostMessageResponse": { - "description": "Response returned after successfully posting a message to a chat thread. Contains the persisted message object echoed back to the sender.", + "ChatMember": { + "description": "A participant in a chat thread, which may be either a human user or an AI agent. Exactly one of `user` or `agent` is populated depending on `type`.", "example": { - "message": { + "agent": { + "acl": { + "add": [ + { + "actions": [ + "read", + "write" + ], + "principal": "string", + "principal_type": "user" + } + ], + "grants": [ + { + "actions": [ + "read", + "write" + ], + "principal": "string", + "principal_type": "user" + } + ], + "remove": [ + { + "principal": "string", + "principal_type": "user" + } + ] + }, + "app": "dap_0aBcDeFgHiJkLmNoPqRsTu", + "created_at": "2024-01-01T00:00:00Z", + "default_model": "claude-3-7-sonnet-latest", + "description": "An example description.", + "email": "user@example.com", + "id": "agi_0aBcDeFgHiJkLmNoPqRsTu", + "identity": "You are a helpful assistant that answers questions about ArchAstro products.", + "last_applied_template_config": "cfg_0aBcDeFgHiJkLmNoPqRsTu", + "lookup_key": "string", + "metadata": { + "key": "value" + }, + "name": "Example Name", + "org": "org_0aBcDeFgHiJkLmNoPqRsTu", + "org_name": "Example Name", + "originator": "deploy-pipeline", + "phone_number": "+15555550123", + "sandbox": "dsb_0aBcDeFgHiJkLmNoPqRsTu", + "source_solution": { + "current_solution": { + "category_keys": [ + "string" + ], + "created_at": "2024-01-01T00:00:00Z", + "description": "An example description.", + "events": {}, + "id": "id_0aBcDeFgHiJkLmNoPqRsTu", + "image_url": "https://example.com", + "kind": "Solution", + "latest_solution": "id_0aBcDeFgHiJkLmNoPqRsTu", + "latest_version": "1.0.0", + "lookup_key": "string", + "metadata": { + "key": "value" + }, + "name": "Example Name", + "org": "org_0aBcDeFgHiJkLmNoPqRsTu", + "org_logo": { + "file": "fil_0aBcDeFgHiJkLmNoPqRsTu", + "height": 600, + "media": "med_0aBcDeFgHiJkLmNoPqRsTu", + "mime_type": "application/json", + "refresh_url": "https://example.com", + "url": "https://example.com", + "width": 800 + }, + "org_name": "Example Name", + "org_slug": "example-slug", + "owners": [ + "string" + ], + "readme_url": "https://example.com", + "screenshot_urls": [ + "https://example.com" + ], + "solution_id": "01234567-89ab-cdef-0123-456789abcdef", + "solution_version": "1.2.0", + "tag_keys": [ + "string" + ], + "template_kind": "AgentTemplate", + "templates": [ + { + "description": "An example description.", + "display_name": "Example Name", + "id": "id_0aBcDeFgHiJkLmNoPqRsTu", + "kind": "AgentTemplate", + "lookup_key": "string", + "name": "Example Name", + "readme_url": "https://example.com", + "virtual_path": "string" + } + ], + "updated_at": "2024-01-01T00:00:00Z", + "upgrade_available": true, + "virtual_path": "string" + }, + "solution": { + "category_keys": [ + "string" + ], + "created_at": "2024-01-01T00:00:00Z", + "description": "An example description.", + "events": {}, + "id": "id_0aBcDeFgHiJkLmNoPqRsTu", + "image_url": "https://example.com", + "kind": "Solution", + "latest_solution": "id_0aBcDeFgHiJkLmNoPqRsTu", + "latest_version": "1.0.0", + "lookup_key": "string", + "metadata": { + "key": "value" + }, + "name": "Example Name", + "org": "org_0aBcDeFgHiJkLmNoPqRsTu", + "org_logo": { + "file": "fil_0aBcDeFgHiJkLmNoPqRsTu", + "height": 600, + "media": "med_0aBcDeFgHiJkLmNoPqRsTu", + "mime_type": "application/json", + "refresh_url": "https://example.com", + "url": "https://example.com", + "width": 800 + }, + "org_name": "Example Name", + "org_slug": "example-slug", + "owners": [ + "string" + ], + "readme_url": "https://example.com", + "screenshot_urls": [ + "https://example.com" + ], + "solution_id": "01234567-89ab-cdef-0123-456789abcdef", + "solution_version": "1.2.0", + "tag_keys": [ + "string" + ], + "template_kind": "AgentTemplate", + "templates": [ + { + "description": "An example description.", + "display_name": "Example Name", + "id": "id_0aBcDeFgHiJkLmNoPqRsTu", + "kind": "AgentTemplate", + "lookup_key": "string", + "name": "Example Name", + "readme_url": "https://example.com", + "virtual_path": "string" + } + ], + "updated_at": "2024-01-01T00:00:00Z", + "upgrade_available": true, + "virtual_path": "string" + }, + "template": { + "created_at": "2024-01-01T00:00:00Z", + "description": "An example description.", + "display_name": "Example Name", + "id": "id_0aBcDeFgHiJkLmNoPqRsTu", + "kind": "agent_tool_template", + "lookup_key": "string", + "name": "Example Name", + "updated_at": "2024-01-01T00:00:00Z", + "virtual_path": "string" + } + }, + "team": "tem_0aBcDeFgHiJkLmNoPqRsTu", + "template_upgrade_available": true, + "updated_at": "2024-01-01T00:00:00Z", + "user": "usr_0aBcDeFgHiJkLmNoPqRsTu" + }, + "membership_type": "owner", + "type": "user", + "user": { + "alias": "jdoe", + "app": "dap_0aBcDeFgHiJkLmNoPqRsTu", + "app_name": "Example Name", + "created_by_agent_user": "usr_0aBcDeFgHiJkLmNoPqRsTu", + "created_by_developer": "dva_0aBcDeFgHiJkLmNoPqRsTu", + "created_by_org": "org_0aBcDeFgHiJkLmNoPqRsTu", + "created_by_team": "tem_0aBcDeFgHiJkLmNoPqRsTu", + "created_by_user": "usr_0aBcDeFgHiJkLmNoPqRsTu", + "email": "user@example.com", + "id": "usr_0aBcDeFgHiJkLmNoPqRsTu", + "is_system_user": true, + "metadata": { + "key": "value" + }, + "name": "Example Name", + "org": "org_0aBcDeFgHiJkLmNoPqRsTu", + "org_name": "Example Name", + "org_role": "member", + "org_slug": "example-slug", + "sandbox": "dsb_0aBcDeFgHiJkLmNoPqRsTu", + "sandbox_name": "Example Name" + } + }, + "properties": { + "agent": { + "$ref": "#/components/schemas/Agent", + "description": "Full agent object for this member. Populated when `type` is `\"agent\"`; `null` for user members." + }, + "membership_type": { + "description": "Role of this member within the thread. Common values are `\"owner\"` and `\"member\"`. `null` when the membership type is not applicable.", + "example": "owner", + "type": "string" + }, + "type": { + "description": "Kind of participant. One of `\"user\"` (a human user) or `\"agent\"` (an AI agent).", + "example": "user", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/User", + "description": "Full user object for this member. Populated when `type` is `\"user\"`; `null` for agent members." + } + }, + "required": [ + "type" + ], + "type": "object" + }, + "ChatMessageListResponse": { + "description": "Response returned when listing the messages of a joined chat thread. Contains the set of messages currently loaded for the thread.", + "example": { + "messages": [ + { + "acl": { + "add": [ + { + "actions": [ + "read", + "write" + ], + "principal": "string", + "principal_type": "user" + } + ], + "grants": [ + { + "actions": [ + "read", + "write" + ], + "principal": "string", + "principal_type": "user" + } + ], + "remove": [ + { + "principal": "string", + "principal_type": "user" + } + ] + }, + "actors": [ + { + "alias": "alice", + "id": "user-usr_01j3k5m7n9p2r4s6t8v0w1x2", + "name": "Example Name", + "profile_picture": { + "file": "fil_0aBcDeFgHiJkLmNoPqRsTu", + "height": 600, + "media": "med_0aBcDeFgHiJkLmNoPqRsTu", + "mime_type": "application/json", + "refresh_url": "https://example.com", + "url": "https://example.com", + "width": 800 + } + } + ], + "agent": "agi_0aBcDeFgHiJkLmNoPqRsTu", + "agent_mode": "cli", + "attachments": [ + { + "content_type": "application/json", + "description": "An example description.", + "filename": "string", + "height": 1, + "id": "string", + "image_height": 1, + "image_source": { + "file": "fil_0aBcDeFgHiJkLmNoPqRsTu", + "height": 600, + "media": "med_0aBcDeFgHiJkLmNoPqRsTu", + "mime_type": "application/json", + "refresh_url": "https://example.com", + "url": "https://example.com", + "width": 800 + }, + "image_url": "https://example.com", + "image_width": 1, + "media_type": "application/json", + "name": "Example Name", + "object": {}, + "title": "Example Title", + "type": "file", + "url": "https://example.com", + "variants": [ + { + "content_type": "application/json", + "created_at": "2024-01-01T00:00:00Z", + "file": "fil_0aBcDeFgHiJkLmNoPqRsTu", + "filename": "string", + "height": 600, + "id": "mvr_0aBcDeFgHiJkLmNoPqRsTu", + "image_source": { + "file": "fil_0aBcDeFgHiJkLmNoPqRsTu", + "height": 600, + "media": "med_0aBcDeFgHiJkLmNoPqRsTu", + "mime_type": "application/json", + "refresh_url": "https://example.com", + "url": "https://example.com", + "width": 800 + }, + "updated_at": "2024-01-01T00:00:00Z", + "url": "https://example.com", + "variant_key": "original", + "width": 800 + } + ], + "version": 1, + "width": 1 + } + ], + "branched_thread": "string", + "content": "Hello, how can I help you today?", + "created_at": "2024-01-01T00:00:00Z", + "has_replies": true, + "id": "msg_0aBcDeFgHiJkLmNoPqRsTu", + "idempotency_key": "01234567-89ab-cdef-0123-456789abcdef", + "is_deleted": true, + "legacy_agent": "string", + "metadata": { + "key": "value" + }, + "org": "org_0aBcDeFgHiJkLmNoPqRsTu", + "reactions": [ + { + "payload": { + "key": "value" + }, + "type": "emoji_reaction", + "user": "string" + } + ], + "rendering_mode": "reply", + "replies": [ + {} + ], + "replies_after_cursor": "string", + "replies_before_cursor": "string", + "reply_count": 1, + "reply_to": {}, + "root_message_id": "string", + "sandbox": "string", + "team": "tem_0aBcDeFgHiJkLmNoPqRsTu", + "thread": "string", + "type": "note", + "user": "usr_0aBcDeFgHiJkLmNoPqRsTu", + "visibility": "default" + } + ] + }, + "properties": { + "messages": { + "description": "Ordered array of message objects currently loaded for the thread, from oldest to newest. Use the `load_more_messages` channel message to fetch earlier pages.", + "items": { + "$ref": "#/components/schemas/Message" + }, + "type": "array" + } + }, + "required": [ + "messages" + ], + "type": "object" + }, + "ChatPostMessageResponse": { + "description": "Response returned after successfully posting a message to a chat thread. Contains the persisted message object echoed back to the sender.", + "example": { + "message": { "acl": { "add": [ { @@ -12235,6 +12289,558 @@ ], "type": "object" }, + "DomainEvent": { + "description": "A domain event with stable attribution fields and an event-specific payload.", + "example": { + "agent": "agi_0aBcDeFgHiJkLmNoPqRsTu", + "created_at": "2024-01-01T00:00:00Z", + "event_name": "Example Name", + "id": "string", + "idempotency_key": "string", + "org": "org_0aBcDeFgHiJkLmNoPqRsTu", + "payload": {}, + "sandbox": "dsb_0aBcDeFgHiJkLmNoPqRsTu", + "team": "tem_0aBcDeFgHiJkLmNoPqRsTu", + "user": "usr_0aBcDeFgHiJkLmNoPqRsTu" + }, + "properties": { + "agent": { + "example": "agi_0aBcDeFgHiJkLmNoPqRsTu", + "type": "string" + }, + "created_at": { + "example": "2024-01-01T00:00:00Z", + "format": "date-time", + "type": "string" + }, + "event_name": { + "example": "Example Name", + "type": "string" + }, + "id": { + "example": "string", + "type": "string" + }, + "idempotency_key": { + "example": "string", + "type": "string" + }, + "org": { + "example": "org_0aBcDeFgHiJkLmNoPqRsTu", + "type": "string" + }, + "payload": { + "description": "Opaque event-specific JSON. Use event_name to select the expected payload schema.", + "example": {}, + "type": "object" + }, + "sandbox": { + "example": "dsb_0aBcDeFgHiJkLmNoPqRsTu", + "type": "string" + }, + "team": { + "example": "tem_0aBcDeFgHiJkLmNoPqRsTu", + "type": "string" + }, + "user": { + "example": "usr_0aBcDeFgHiJkLmNoPqRsTu", + "type": "string" + } + }, + "required": [ + "id", + "event_name", + "payload", + "created_at" + ], + "type": "object" + }, + "EventSubscription": { + "description": "An app-scoped subscription to exact domain-event names.", + "example": { + "agent": "agi_0aBcDeFgHiJkLmNoPqRsTu", + "available_count": 1, + "created_at": "2024-01-01T00:00:00Z", + "dropped_events_total": 1, + "dropped_through_position": 1, + "event_names": [ + "Example Name" + ], + "id": "string", + "last_overflow_at": "2024-01-01T00:00:00Z", + "leased_count": 1, + "max_pending_events": 1, + "name": "Example Name", + "org": "org_0aBcDeFgHiJkLmNoPqRsTu", + "queue_epoch": 1, + "retention_seconds": 1, + "sandbox": "dsb_0aBcDeFgHiJkLmNoPqRsTu", + "status": "active", + "team": "tem_0aBcDeFgHiJkLmNoPqRsTu", + "updated_at": "2024-01-01T00:00:00Z", + "user": "usr_0aBcDeFgHiJkLmNoPqRsTu", + "visibility_timeout_seconds": 1 + }, + "properties": { + "agent": { + "example": "agi_0aBcDeFgHiJkLmNoPqRsTu", + "type": "string" + }, + "available_count": { + "example": 1, + "type": "integer" + }, + "created_at": { + "example": "2024-01-01T00:00:00Z", + "format": "date-time", + "type": "string" + }, + "dropped_events_total": { + "example": 1, + "type": "integer" + }, + "dropped_through_position": { + "example": 1, + "type": "integer" + }, + "event_names": { + "example": [ + "Example Name" + ], + "items": { + "type": "string" + }, + "type": "array" + }, + "id": { + "example": "string", + "type": "string" + }, + "last_overflow_at": { + "example": "2024-01-01T00:00:00Z", + "format": "date-time", + "type": "string" + }, + "leased_count": { + "example": 1, + "type": "integer" + }, + "max_pending_events": { + "example": 1, + "type": "integer" + }, + "name": { + "example": "Example Name", + "type": "string" + }, + "org": { + "example": "org_0aBcDeFgHiJkLmNoPqRsTu", + "type": "string" + }, + "queue_epoch": { + "example": 1, + "type": "integer" + }, + "retention_seconds": { + "example": 1, + "type": "integer" + }, + "sandbox": { + "example": "dsb_0aBcDeFgHiJkLmNoPqRsTu", + "type": "string" + }, + "status": { + "enum": [ + "active", + "paused" + ], + "example": "active", + "type": "string" + }, + "team": { + "example": "tem_0aBcDeFgHiJkLmNoPqRsTu", + "type": "string" + }, + "updated_at": { + "example": "2024-01-01T00:00:00Z", + "format": "date-time", + "type": "string" + }, + "user": { + "example": "usr_0aBcDeFgHiJkLmNoPqRsTu", + "type": "string" + }, + "visibility_timeout_seconds": { + "example": 1, + "type": "integer" + } + }, + "required": [ + "id", + "name", + "event_names", + "status", + "max_pending_events", + "visibility_timeout_seconds", + "retention_seconds", + "available_count", + "leased_count", + "queue_epoch", + "dropped_events_total", + "dropped_through_position", + "created_at", + "updated_at" + ], + "type": "object" + }, + "EventSubscriptionClaim": { + "description": "Result of atomically claiming the head delivery.", + "example": { + "data": [ + { + "delivery_id": "string", + "event": { + "agent": "agi_0aBcDeFgHiJkLmNoPqRsTu", + "created_at": "2024-01-01T00:00:00Z", + "event_name": "Example Name", + "id": "string", + "idempotency_key": "string", + "org": "org_0aBcDeFgHiJkLmNoPqRsTu", + "payload": {}, + "sandbox": "dsb_0aBcDeFgHiJkLmNoPqRsTu", + "team": "tem_0aBcDeFgHiJkLmNoPqRsTu", + "user": "usr_0aBcDeFgHiJkLmNoPqRsTu" + }, + "lease_expires_at": "2024-01-01T00:00:00Z", + "receipt_handle": "string", + "receive_count": 1, + "sequence": 1 + } + ], + "dropped_events_total": 1, + "dropped_through_position": 1, + "has_more": true, + "queue_epoch": 1 + }, + "properties": { + "data": { + "items": { + "$ref": "#/components/schemas/EventSubscriptionDelivery" + }, + "type": "array" + }, + "dropped_events_total": { + "example": 1, + "type": "integer" + }, + "dropped_through_position": { + "example": 1, + "type": "integer" + }, + "has_more": { + "example": true, + "type": "boolean" + }, + "queue_epoch": { + "example": 1, + "type": "integer" + } + }, + "required": [ + "data", + "has_more", + "queue_epoch", + "dropped_events_total", + "dropped_through_position" + ], + "type": "object" + }, + "EventSubscriptionDelivery": { + "description": "A domain event leased from a subscription queue.", + "example": { + "delivery_id": "string", + "event": { + "agent": "agi_0aBcDeFgHiJkLmNoPqRsTu", + "created_at": "2024-01-01T00:00:00Z", + "event_name": "Example Name", + "id": "string", + "idempotency_key": "string", + "org": "org_0aBcDeFgHiJkLmNoPqRsTu", + "payload": {}, + "sandbox": "dsb_0aBcDeFgHiJkLmNoPqRsTu", + "team": "tem_0aBcDeFgHiJkLmNoPqRsTu", + "user": "usr_0aBcDeFgHiJkLmNoPqRsTu" + }, + "lease_expires_at": "2024-01-01T00:00:00Z", + "receipt_handle": "string", + "receive_count": 1, + "sequence": 1 + }, + "properties": { + "delivery_id": { + "example": "string", + "type": "string" + }, + "event": { + "$ref": "#/components/schemas/DomainEvent" + }, + "lease_expires_at": { + "example": "2024-01-01T00:00:00Z", + "format": "date-time", + "type": "string" + }, + "receipt_handle": { + "example": "string", + "type": "string" + }, + "receive_count": { + "example": 1, + "type": "integer" + }, + "sequence": { + "example": 1, + "type": "integer" + } + }, + "required": [ + "delivery_id", + "sequence", + "receipt_handle", + "lease_expires_at", + "receive_count", + "event" + ], + "type": "object" + }, + "EventSubscriptionHead": { + "description": "A non-reserving view of the queue head.", + "example": { + "data": { + "delivery_id": "string", + "event": { + "agent": "agi_0aBcDeFgHiJkLmNoPqRsTu", + "created_at": "2024-01-01T00:00:00Z", + "event_name": "Example Name", + "id": "string", + "idempotency_key": "string", + "org": "org_0aBcDeFgHiJkLmNoPqRsTu", + "payload": {}, + "sandbox": "dsb_0aBcDeFgHiJkLmNoPqRsTu", + "team": "tem_0aBcDeFgHiJkLmNoPqRsTu", + "user": "usr_0aBcDeFgHiJkLmNoPqRsTu" + }, + "lease_expires_at": "2024-01-01T00:00:00Z", + "receive_count": 1, + "sequence": 1, + "state": "available" + } + }, + "properties": { + "data": { + "$ref": "#/components/schemas/EventSubscriptionQueueEntry" + } + }, + "type": "object" + }, + "EventSubscriptionPage": { + "description": "A page of domain-event subscriptions.", + "example": { + "data": [ + { + "agent": "agi_0aBcDeFgHiJkLmNoPqRsTu", + "available_count": 1, + "created_at": "2024-01-01T00:00:00Z", + "dropped_events_total": 1, + "dropped_through_position": 1, + "event_names": [ + "Example Name" + ], + "id": "string", + "last_overflow_at": "2024-01-01T00:00:00Z", + "leased_count": 1, + "max_pending_events": 1, + "name": "Example Name", + "org": "org_0aBcDeFgHiJkLmNoPqRsTu", + "queue_epoch": 1, + "retention_seconds": 1, + "sandbox": "dsb_0aBcDeFgHiJkLmNoPqRsTu", + "status": "active", + "team": "tem_0aBcDeFgHiJkLmNoPqRsTu", + "updated_at": "2024-01-01T00:00:00Z", + "user": "usr_0aBcDeFgHiJkLmNoPqRsTu", + "visibility_timeout_seconds": 1 + } + ], + "page": 1, + "per_page": 1, + "total_count": 1, + "total_pages": 1 + }, + "properties": { + "data": { + "items": { + "$ref": "#/components/schemas/EventSubscription" + }, + "type": "array" + }, + "page": { + "example": 1, + "type": "integer" + }, + "per_page": { + "example": 1, + "type": "integer" + }, + "total_count": { + "example": 1, + "type": "integer" + }, + "total_pages": { + "example": 1, + "type": "integer" + } + }, + "required": [ + "data", + "page", + "per_page", + "total_count", + "total_pages" + ], + "type": "object" + }, + "EventSubscriptionQueue": { + "description": "A cursor-paginated non-reserving view of a subscription queue.", + "example": { + "after_cursor": "string", + "before_cursor": "string", + "data": [ + { + "delivery_id": "string", + "event": { + "agent": "agi_0aBcDeFgHiJkLmNoPqRsTu", + "created_at": "2024-01-01T00:00:00Z", + "event_name": "Example Name", + "id": "string", + "idempotency_key": "string", + "org": "org_0aBcDeFgHiJkLmNoPqRsTu", + "payload": {}, + "sandbox": "dsb_0aBcDeFgHiJkLmNoPqRsTu", + "team": "tem_0aBcDeFgHiJkLmNoPqRsTu", + "user": "usr_0aBcDeFgHiJkLmNoPqRsTu" + }, + "lease_expires_at": "2024-01-01T00:00:00Z", + "receive_count": 1, + "sequence": 1, + "state": "available" + } + ], + "dropped_events_total": 1, + "dropped_through_position": 1, + "has_more": true, + "queue_epoch": 1 + }, + "properties": { + "after_cursor": { + "example": "string", + "type": "string" + }, + "before_cursor": { + "example": "string", + "type": "string" + }, + "data": { + "items": { + "$ref": "#/components/schemas/EventSubscriptionQueueEntry" + }, + "type": "array" + }, + "dropped_events_total": { + "example": 1, + "type": "integer" + }, + "dropped_through_position": { + "example": 1, + "type": "integer" + }, + "has_more": { + "example": true, + "type": "boolean" + }, + "queue_epoch": { + "example": 1, + "type": "integer" + } + }, + "required": [ + "data", + "has_more", + "queue_epoch", + "dropped_events_total", + "dropped_through_position" + ], + "type": "object" + }, + "EventSubscriptionQueueEntry": { + "description": "A non-reserving view of one queued delivery.", + "example": { + "delivery_id": "string", + "event": { + "agent": "agi_0aBcDeFgHiJkLmNoPqRsTu", + "created_at": "2024-01-01T00:00:00Z", + "event_name": "Example Name", + "id": "string", + "idempotency_key": "string", + "org": "org_0aBcDeFgHiJkLmNoPqRsTu", + "payload": {}, + "sandbox": "dsb_0aBcDeFgHiJkLmNoPqRsTu", + "team": "tem_0aBcDeFgHiJkLmNoPqRsTu", + "user": "usr_0aBcDeFgHiJkLmNoPqRsTu" + }, + "lease_expires_at": "2024-01-01T00:00:00Z", + "receive_count": 1, + "sequence": 1, + "state": "available" + }, + "properties": { + "delivery_id": { + "example": "string", + "type": "string" + }, + "event": { + "$ref": "#/components/schemas/DomainEvent" + }, + "lease_expires_at": { + "example": "2024-01-01T00:00:00Z", + "format": "date-time", + "type": "string" + }, + "receive_count": { + "example": 1, + "type": "integer" + }, + "sequence": { + "example": 1, + "type": "integer" + }, + "state": { + "enum": [ + "available", + "leased" + ], + "example": "available", + "type": "string" + } + }, + "required": [ + "delivery_id", + "sequence", + "state", + "receive_count", + "event" + ], + "type": "object" + }, "Extraction": { "description": "An extraction job: yields text from a document or website into a destination namespace, without committing knowledge to an agent.", "example": { @@ -15747,21 +16353,8 @@ }, "participants": { "description": "Named participant slots declared by the workflow, sorted by name. `null` when the workflow declares none. Values supplied under the top-level `participants` field are agent IDs.", - "example": [ - { - "description": "An example description.", - "name": "reporter", - "required": true, - "type": "agent_user" - } - ], "items": { - "allOf": [ - { - "$ref": "#/components/schemas/AutomationParticipantSlot" - } - ], - "nullable": true + "$ref": "#/components/schemas/AutomationParticipantSlot" }, "nullable": true, "type": "array" @@ -18013,6 +18606,7 @@ }, "description": "An example description.", "due_date": "2024-01-01T00:00:00Z", + "epic": "string", "id": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "is_blocked": true, "links": { @@ -18042,6 +18636,9 @@ "parent": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "priority": 2, "sandbox": "dsb_0aBcDeFgHiJkLmNoPqRsTu", + "source_id": "string", + "source_scope": "string", + "source_type": "string", "status": "open", "subtasks_count": 1, "tags": [ @@ -18144,6 +18741,12 @@ "nullable": true, "type": "string" }, + "epic": { + "description": "Free-form grouping label. `null` when the task is not in an epic.", + "example": "string", + "nullable": true, + "type": "string" + }, "id": { "description": "Task ID (`tsk_...`).", "example": "tsk_0aBcDeFgHiJkLmNoPqRsTu", @@ -18231,6 +18834,24 @@ "nullable": true, "type": "string" }, + "source_id": { + "description": "Source object identity (for example `ArchAstro/firstlanding`). `null` when the task has no source.", + "example": "string", + "nullable": true, + "type": "string" + }, + "source_scope": { + "description": "Container of the work this task is about (for example `github.com`). `null` when the task has no source. Set together with `source_type` and `source_id`.", + "example": "string", + "nullable": true, + "type": "string" + }, + "source_type": { + "description": "Kind of source object (for example `repository`). `null` when the task has no source.", + "example": "string", + "nullable": true, + "type": "string" + }, "status": { "description": "Current status of the task. One of `\"open\"`, `\"in_progress\"`, or `\"done\"`.", "example": "open", @@ -20045,7 +20666,7 @@ "type": "string" }, "kind": { - "description": "Thread subtype: `\"standard\"` for ordinary threads, `\"slack_mirror\"` for the membership-strict mirror of a Slack channel, `\"slashwork_mirror\"` for the membership-strict mirror of a Slashwork group. Read-only — derived server-side at creation, never accepted from params.", + "description": "Thread subtype: `\"standard\"` for ordinary threads, `\"personal\"` for a user-and-owned-agents roster, `\"slack_mirror\"` for the membership-strict mirror of a Slack channel, or `\"slashwork_mirror\"` for the membership-strict mirror of a Slashwork group. `personal` is an explicit user-thread creation option; mirror kinds are server-derived.", "example": "string", "nullable": true, "type": "string" @@ -20261,196 +20882,8 @@ }, "participating_agents": { "description": "Expanded agent objects for all agents participating in this thread. Present only when agent enrichment is requested.", - "example": [ - { - "acl": { - "add": [ - { - "actions": [ - "read", - "write" - ], - "principal": "string", - "principal_type": "user" - } - ], - "grants": [ - { - "actions": [ - "read", - "write" - ], - "principal": "string", - "principal_type": "user" - } - ], - "remove": [ - { - "principal": "string", - "principal_type": "user" - } - ] - }, - "app": "dap_0aBcDeFgHiJkLmNoPqRsTu", - "created_at": "2024-01-01T00:00:00Z", - "default_model": "claude-3-7-sonnet-latest", - "description": "An example description.", - "email": "user@example.com", - "id": "agi_0aBcDeFgHiJkLmNoPqRsTu", - "identity": "You are a helpful assistant that answers questions about ArchAstro products.", - "last_applied_template_config": "cfg_0aBcDeFgHiJkLmNoPqRsTu", - "lookup_key": "string", - "metadata": { - "key": "value" - }, - "name": "Example Name", - "org": "org_0aBcDeFgHiJkLmNoPqRsTu", - "org_name": "Example Name", - "originator": "deploy-pipeline", - "phone_number": "+15555550123", - "sandbox": "dsb_0aBcDeFgHiJkLmNoPqRsTu", - "source_solution": { - "current_solution": { - "category_keys": [ - "string" - ], - "created_at": "2024-01-01T00:00:00Z", - "description": "An example description.", - "events": {}, - "id": "id_0aBcDeFgHiJkLmNoPqRsTu", - "image_url": "https://example.com", - "kind": "Solution", - "latest_solution": "id_0aBcDeFgHiJkLmNoPqRsTu", - "latest_version": "1.0.0", - "lookup_key": "string", - "metadata": { - "key": "value" - }, - "name": "Example Name", - "org": "org_0aBcDeFgHiJkLmNoPqRsTu", - "org_logo": { - "file": "fil_0aBcDeFgHiJkLmNoPqRsTu", - "height": 600, - "media": "med_0aBcDeFgHiJkLmNoPqRsTu", - "mime_type": "application/json", - "refresh_url": "https://example.com", - "url": "https://example.com", - "width": 800 - }, - "org_name": "Example Name", - "org_slug": "example-slug", - "owners": [ - "string" - ], - "readme_url": "https://example.com", - "screenshot_urls": [ - "https://example.com" - ], - "solution_id": "01234567-89ab-cdef-0123-456789abcdef", - "solution_version": "1.2.0", - "tag_keys": [ - "string" - ], - "template_kind": "AgentTemplate", - "templates": [ - { - "description": "An example description.", - "display_name": "Example Name", - "id": "id_0aBcDeFgHiJkLmNoPqRsTu", - "kind": "AgentTemplate", - "lookup_key": "string", - "name": "Example Name", - "readme_url": "https://example.com", - "virtual_path": "string" - } - ], - "updated_at": "2024-01-01T00:00:00Z", - "upgrade_available": true, - "virtual_path": "string" - }, - "solution": { - "category_keys": [ - "string" - ], - "created_at": "2024-01-01T00:00:00Z", - "description": "An example description.", - "events": {}, - "id": "id_0aBcDeFgHiJkLmNoPqRsTu", - "image_url": "https://example.com", - "kind": "Solution", - "latest_solution": "id_0aBcDeFgHiJkLmNoPqRsTu", - "latest_version": "1.0.0", - "lookup_key": "string", - "metadata": { - "key": "value" - }, - "name": "Example Name", - "org": "org_0aBcDeFgHiJkLmNoPqRsTu", - "org_logo": { - "file": "fil_0aBcDeFgHiJkLmNoPqRsTu", - "height": 600, - "media": "med_0aBcDeFgHiJkLmNoPqRsTu", - "mime_type": "application/json", - "refresh_url": "https://example.com", - "url": "https://example.com", - "width": 800 - }, - "org_name": "Example Name", - "org_slug": "example-slug", - "owners": [ - "string" - ], - "readme_url": "https://example.com", - "screenshot_urls": [ - "https://example.com" - ], - "solution_id": "01234567-89ab-cdef-0123-456789abcdef", - "solution_version": "1.2.0", - "tag_keys": [ - "string" - ], - "template_kind": "AgentTemplate", - "templates": [ - { - "description": "An example description.", - "display_name": "Example Name", - "id": "id_0aBcDeFgHiJkLmNoPqRsTu", - "kind": "AgentTemplate", - "lookup_key": "string", - "name": "Example Name", - "readme_url": "https://example.com", - "virtual_path": "string" - } - ], - "updated_at": "2024-01-01T00:00:00Z", - "upgrade_available": true, - "virtual_path": "string" - }, - "template": { - "created_at": "2024-01-01T00:00:00Z", - "description": "An example description.", - "display_name": "Example Name", - "id": "id_0aBcDeFgHiJkLmNoPqRsTu", - "kind": "agent_tool_template", - "lookup_key": "string", - "name": "Example Name", - "updated_at": "2024-01-01T00:00:00Z", - "virtual_path": "string" - } - }, - "team": "tem_0aBcDeFgHiJkLmNoPqRsTu", - "template_upgrade_available": true, - "updated_at": "2024-01-01T00:00:00Z", - "user": "usr_0aBcDeFgHiJkLmNoPqRsTu" - } - ], "items": { - "allOf": [ - { - "$ref": "#/components/schemas/Agent" - } - ], - "nullable": true + "$ref": "#/components/schemas/Agent" }, "nullable": true, "type": "array" @@ -20483,7 +20916,6 @@ {} ], "items": { - "nullable": true, "type": "object" }, "nullable": true, @@ -22929,7 +23361,6 @@ "required": true, "type": "agent_user" }, - "nullable": true, "properties": { "description": { "description": "Workflow-authored explanation of the slot's role. `null` when the workflow declares none.", @@ -23456,7 +23887,6 @@ "required": true, "type": "agent_user" }, - "nullable": true, "properties": { "description": { "description": "Workflow-authored explanation of the slot's role. `null` when the workflow declares none.", @@ -31158,6 +31588,7 @@ "description": "An example description.", "is_unlisted": true, "key": "string", + "kind": "personal", "members": [ { "id": "string", @@ -31195,6 +31626,7 @@ "description": "An example description.", "is_unlisted": true, "key": "string", + "kind": "personal", "members": [ { "id": "string", @@ -31239,6 +31671,14 @@ "example": "string", "type": "string" }, + "kind": { + "description": "Optional behavioral subtype. `personal` is accepted only for a user-owned thread and limits membership to that user and agents currently owned by them. Mirror kinds remain server-derived and cannot be selected by callers.", + "enum": [ + "personal" + ], + "example": "personal", + "type": "string" + }, "members": { "description": "Users and agents to add atomically when the thread is created. Each target must pass the same authorization rules as a post-creation member add. Slack mirror threads reject non-empty caller-supplied rosters because their membership is sync-owned.", "example": [ @@ -38178,6 +38618,584 @@ ] } }, + "/api/v1/event_subscription_deliveries/{delivery}/acknowledge": { + "post": { + "description": "Acknowledges a delivery using its current receipt handle. Repeating the same acknowledgement is idempotent; a stale or incorrect receipt returns 409. Acknowledging a delivery that aged out under the subscription's retention returns `delivery_not_found` — the event was already counted in `dropped_events_total`, and the acknowledgement should not be retried.", + "operationId": "post_api_v1_event_subscription_deliveries__delivery_acknowledge", + "parameters": [ + { + "description": "Delivery ID (`esd_...`).", + "example": "string", + "in": "path", + "name": "delivery", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "example": { + "receipt_handle": "string" + }, + "properties": { + "receipt_handle": { + "description": "Opaque handle returned by claim.", + "example": "string", + "type": "string" + } + }, + "required": [ + "receipt_handle" + ], + "type": "object" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "No content" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Event subscription delivery not found" + }, + "409": { + "description": "The delivery lease is no longer current" + } + }, + "summary": "Acknowledge a claimed event", + "x-auth": [ + "publishable_key", + "bearer" + ] + } + }, + "/api/v1/event_subscriptions": { + "get": { + "description": "Lists the subscriptions visible to the caller, with current queue counters.", + "operationId": "get_api_v1_event_subscriptions", + "parameters": [ + { + "description": "Page number, starting at 1.", + "example": 1, + "in": "query", + "name": "page", + "required": false, + "schema": { + "type": "integer" + } + }, + { + "description": "Subscriptions per page, from 1 through 100.", + "example": 1, + "in": "query", + "name": "per_page", + "required": false, + "schema": { + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EventSubscriptionPage" + } + } + }, + "description": "Subscriptions visible to this caller." + }, + "401": { + "description": "Unauthorized" + }, + "422": { + "description": "Invalid parameters" + } + }, + "summary": "List domain-event subscriptions", + "x-auth": [ + "publishable_key", + "bearer" + ] + }, + "post": { + "description": "Creates a durable subscription that receives exportable domain events matching its exact event names. Matching events fan out into a per-subscription queue bounded by max_pending_events and retention_seconds; consume with claim and acknowledge.", + "operationId": "post_api_v1_event_subscriptions", + "parameters": [], + "requestBody": { + "content": { + "application/json": { + "schema": { + "example": { + "event_names": [ + "Example Name" + ], + "max_pending_events": 1, + "name": "Example Name", + "retention_seconds": 1, + "status": "active", + "visibility_timeout_seconds": 1 + }, + "properties": { + "event_names": { + "description": "Exact event names to receive.", + "example": [ + "Example Name" + ], + "items": { + "type": "string" + }, + "type": "array" + }, + "max_pending_events": { + "description": "Queue cap. Defaults to 100; maximum 1000.", + "example": 1, + "type": "integer" + }, + "name": { + "description": "Customer-defined subscription name.", + "example": "Example Name", + "type": "string" + }, + "retention_seconds": { + "description": "Delivery retention in seconds. Defaults to 86400 (24 hours); between 7200 and 2592000. Applies to future deliveries only.", + "example": 1, + "type": "integer" + }, + "status": { + "description": "Initial status. Defaults to active.", + "enum": [ + "active", + "paused" + ], + "example": "active", + "type": "string" + }, + "visibility_timeout_seconds": { + "description": "Default claim lease in seconds. Defaults to 300.", + "example": 1, + "type": "integer" + } + }, + "required": [ + "name", + "event_names" + ], + "type": "object" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EventSubscription" + } + } + }, + "description": "The new volatile subscription." + }, + "401": { + "description": "Unauthorized" + }, + "422": { + "description": "Invalid parameters; Validation failed" + } + }, + "summary": "Create a domain-event subscription", + "x-auth": [ + "publishable_key", + "bearer" + ] + } + }, + "/api/v1/event_subscriptions/{subscription}": { + "delete": { + "description": "Deletes the subscription and every delivery still in its queue.", + "operationId": "delete_api_v1_event_subscriptions__subscription", + "parameters": [ + { + "description": "Subscription ID (`esub_...`).", + "example": "string", + "in": "path", + "name": "subscription", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "No content" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Event subscription not found" + } + }, + "summary": "Delete a domain-event subscription", + "x-auth": [ + "publishable_key", + "bearer" + ] + }, + "get": { + "description": "Returns one subscription and its current queue counters.", + "operationId": "get_api_v1_event_subscriptions__subscription", + "parameters": [ + { + "description": "Subscription ID (`esub_...`).", + "example": "string", + "in": "path", + "name": "subscription", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EventSubscription" + } + } + }, + "description": "Successful response" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Event subscription not found" + } + }, + "summary": "Get a domain-event subscription", + "x-auth": [ + "publishable_key", + "bearer" + ] + }, + "patch": { + "description": "Updates matching, status, or queue limits for future fanout. Already queued deliveries remain unless a lower cap trims the oldest entries; retention changes apply to future deliveries only.", + "operationId": "patch_api_v1_event_subscriptions__subscription", + "parameters": [ + { + "description": "Subscription ID (`esub_...`).", + "example": "string", + "in": "path", + "name": "subscription", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "example": { + "event_names": [ + "Example Name" + ], + "max_pending_events": 1, + "name": "Example Name", + "retention_seconds": 1, + "status": "active", + "visibility_timeout_seconds": 1 + }, + "properties": { + "event_names": { + "example": [ + "Example Name" + ], + "items": { + "type": "string" + }, + "type": "array" + }, + "max_pending_events": { + "example": 1, + "type": "integer" + }, + "name": { + "example": "Example Name", + "type": "string" + }, + "retention_seconds": { + "description": "Delivery retention in seconds. Defaults to 86400 (24 hours); between 7200 and 2592000. Applies to future deliveries only.", + "example": 1, + "type": "integer" + }, + "status": { + "enum": [ + "active", + "paused" + ], + "example": "active", + "type": "string" + }, + "visibility_timeout_seconds": { + "example": 1, + "type": "integer" + } + }, + "type": "object" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EventSubscription" + } + } + }, + "description": "Successful response" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Event subscription not found" + }, + "422": { + "description": "Invalid parameters; Validation failed" + } + }, + "summary": "Update a domain-event subscription", + "x-auth": [ + "publishable_key", + "bearer" + ] + } + }, + "/api/v1/event_subscriptions/{subscription}/claim": { + "post": { + "description": "Atomically leases the oldest unacknowledged delivery. Returns an empty data array when the queue is empty or its head already has an active lease. Passing max_events opts into batch mode, where leased entries are skipped instead of blocking; wait_seconds bounds a long poll on an empty queue.", + "operationId": "post_api_v1_event_subscriptions__subscription_claim", + "parameters": [ + { + "description": "Subscription ID (`esub_...`).", + "example": "string", + "in": "path", + "name": "subscription", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "example": { + "consumer_id": "string", + "max_events": 1, + "request_id": "string", + "visibility_timeout_seconds": 1, + "wait_seconds": 1 + }, + "properties": { + "consumer_id": { + "description": "Consumer identity between 1 and 128 bytes, recorded on the lease for attribution.", + "example": "string", + "type": "string" + }, + "max_events": { + "description": "Opts into batch mode: leases up to this many lease-available deliveries (between 1 and 20) in sequence order, skipping leased entries instead of blocking on the head. Omit to keep strict head-of-line semantics.", + "example": 1, + "type": "integer" + }, + "request_id": { + "description": "Idempotency key between 1 and 128 bytes. Use a value unique per claim attempt (e.g. a UUID) — the key is scoped to the subscription, so a reused value takes over whatever leases it last stamped. Retrying a claim with the same request_id while its leases are unexpired returns the same deliveries (regardless of max_events) with fresh receipt handles and refreshed leases.", + "example": "string", + "type": "string" + }, + "visibility_timeout_seconds": { + "description": "Lease duration override between 15 and 3600 seconds.", + "example": 1, + "type": "integer" + }, + "wait_seconds": { + "description": "Long-poll bound between 0 and 20 seconds. When the queue is empty, the request waits up to this long for a delivery before returning an empty data array. 0 (or omitting) returns immediately.", + "example": 1, + "type": "integer" + } + }, + "type": "object" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EventSubscriptionClaim" + } + } + }, + "description": "Successful response" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Event subscription not found" + }, + "422": { + "description": "Invalid parameters; Validation failed" + } + }, + "summary": "Claim events from a subscription", + "x-auth": [ + "publishable_key", + "bearer" + ] + } + }, + "/api/v1/event_subscriptions/{subscription}/head": { + "get": { + "description": "Returns the oldest unacknowledged delivery without reserving it. This diagnostic read cannot be used as a safe substitute for claim.", + "operationId": "get_api_v1_event_subscriptions__subscription_head", + "parameters": [ + { + "description": "Subscription ID (`esub_...`).", + "example": "string", + "in": "path", + "name": "subscription", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EventSubscriptionHead" + } + } + }, + "description": "Successful response" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Event subscription not found" + } + }, + "summary": "Peek at the head of a subscription queue", + "x-auth": [ + "publishable_key", + "bearer" + ] + } + }, + "/api/v1/event_subscriptions/{subscription}/queue": { + "get": { + "description": "Returns a non-reserving, oldest-first view of unacknowledged deliveries, including the queue's loss indicators (queue_epoch, dropped_events_total, dropped_through_position). Use claim to obtain a receipt handle before acknowledging.", + "operationId": "get_api_v1_event_subscriptions__subscription_queue", + "parameters": [ + { + "description": "Subscription ID (`esub_...`).", + "example": "string", + "in": "path", + "name": "subscription", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "Maximum entries to return, from 1 through 100.", + "example": 1, + "in": "query", + "name": "limit", + "required": false, + "schema": { + "type": "integer" + } + }, + { + "description": "Opaque cursor for the preceding page.", + "example": "string", + "in": "query", + "name": "before_cursor", + "required": false, + "schema": { + "type": "string" + } + }, + { + "description": "Opaque cursor for the following page.", + "example": "string", + "in": "query", + "name": "after_cursor", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EventSubscriptionQueue" + } + } + }, + "description": "Successful response" + }, + "400": { + "description": "Invalid cursor" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Event subscription not found" + } + }, + "summary": "Read a subscription queue", + "x-auth": [ + "publishable_key", + "bearer" + ] + } + }, "/api/v1/extractions": { "post": { "description": "Records a text-extraction job for a document (`file`) or a URL (`url` + `mode`).\nThe job is owner-scoped and tagged with the caller-supplied `destination`\nnamespace, **without** committing knowledge to an agent (no embeddings, no\nagent attach).\n\nExactly one of `file` or (`url` + `mode`) is required.\n\nDocument extraction (`file`) runs synchronously: the response already\nreflects the final state (`done` with its output, or an error if extraction\ncouldn't complete), status `201`. URL extraction (`url` + `mode`) submits an\nasync crawl and returns immediately with state `running`, status `202` —\npoll `GET /extractions/:extraction` for its terminal state.\n", @@ -45285,6 +46303,7 @@ "agent": "string", "description": "An example description.", "due_date": "2024-01-01T00:00:00Z", + "epic": "string", "lease_id": "string", "lease_session_id": "string", "links": {}, @@ -45297,6 +46316,9 @@ "owner_user": "string", "parent": "string", "priority": 1, + "source_id": "string", + "source_scope": "string", + "source_type": "string", "status": "string", "tags": [ "string" @@ -45321,6 +46343,11 @@ "format": "date-time", "type": "string" }, + "epic": { + "description": "Replacement grouping label. Pass null to clear it.", + "example": "string", + "type": "string" + }, "lease_id": { "description": "Current caller-held lease UUID. Must be paired with `lease_session_id`.", "example": "string", @@ -45373,6 +46400,21 @@ "example": 1, "type": "integer" }, + "source_id": { + "description": "Replacement source object identity. Must be supplied with the other source fields.", + "example": "string", + "type": "string" + }, + "source_scope": { + "description": "Replacement source container. Pass together with `source_type` and `source_id`, or pass all three as null to clear the source.", + "example": "string", + "type": "string" + }, + "source_type": { + "description": "Replacement source object kind. Must be supplied with the other source fields.", + "example": "string", + "type": "string" + }, "status": { "description": "Updated status: `open`, `in_progress`, or `done`.", "example": "string", @@ -45726,6 +46768,7 @@ }, "description": "An example description.", "due_date": "2024-01-01T00:00:00Z", + "epic": "string", "id": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "is_blocked": true, "links": { @@ -45755,6 +46798,9 @@ "parent": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "priority": 2, "sandbox": "dsb_0aBcDeFgHiJkLmNoPqRsTu", + "source_id": "string", + "source_scope": "string", + "source_type": "string", "status": "open", "subtasks_count": 1, "tags": [ @@ -45808,6 +46854,7 @@ }, "description": "An example description.", "due_date": "2024-01-01T00:00:00Z", + "epic": "string", "id": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "is_blocked": true, "links": { @@ -45837,6 +46884,9 @@ "parent": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "priority": 2, "sandbox": "dsb_0aBcDeFgHiJkLmNoPqRsTu", + "source_id": "string", + "source_scope": "string", + "source_type": "string", "status": "open", "subtasks_count": 1, "tags": [ @@ -45879,6 +46929,7 @@ }, "description": "An example description.", "due_date": "2024-01-01T00:00:00Z", + "epic": "string", "id": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "is_blocked": true, "links": { @@ -45908,6 +46959,9 @@ "parent": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "priority": 2, "sandbox": "dsb_0aBcDeFgHiJkLmNoPqRsTu", + "source_id": "string", + "source_scope": "string", + "source_type": "string", "status": "open", "subtasks_count": 1, "tags": [ @@ -46103,6 +47157,12 @@ "nullable": true, "type": "string" }, + "epic": { + "description": "Free-form grouping label. `null` when the task is not in an epic.", + "example": "string", + "nullable": true, + "type": "string" + }, "id": { "description": "Task ID (`tsk_...`).", "example": "tsk_0aBcDeFgHiJkLmNoPqRsTu", @@ -46264,6 +47324,24 @@ "nullable": true, "type": "string" }, + "source_id": { + "description": "Source object identity (for example `ArchAstro/firstlanding`). `null` when the task has no source.", + "example": "string", + "nullable": true, + "type": "string" + }, + "source_scope": { + "description": "Container of the work this task is about (for example `github.com`). `null` when the task has no source. Set together with `source_type` and `source_id`.", + "example": "string", + "nullable": true, + "type": "string" + }, + "source_type": { + "description": "Kind of source object (for example `repository`). `null` when the task has no source.", + "example": "string", + "nullable": true, + "type": "string" + }, "status": { "description": "Current status of the task. One of `\"open\"`, `\"in_progress\"`, or `\"done\"`.", "example": "open", @@ -46601,6 +47679,7 @@ }, "description": "An example description.", "due_date": "2024-01-01T00:00:00Z", + "epic": "string", "id": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "is_blocked": true, "links": { @@ -46630,6 +47709,9 @@ "parent": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "priority": 2, "sandbox": "dsb_0aBcDeFgHiJkLmNoPqRsTu", + "source_id": "string", + "source_scope": "string", + "source_type": "string", "status": "open", "subtasks_count": 1, "tags": [ @@ -46683,6 +47765,7 @@ }, "description": "An example description.", "due_date": "2024-01-01T00:00:00Z", + "epic": "string", "id": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "is_blocked": true, "links": { @@ -46712,6 +47795,9 @@ "parent": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "priority": 2, "sandbox": "dsb_0aBcDeFgHiJkLmNoPqRsTu", + "source_id": "string", + "source_scope": "string", + "source_type": "string", "status": "open", "subtasks_count": 1, "tags": [ @@ -46754,6 +47840,7 @@ }, "description": "An example description.", "due_date": "2024-01-01T00:00:00Z", + "epic": "string", "id": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "is_blocked": true, "links": { @@ -46783,6 +47870,9 @@ "parent": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "priority": 2, "sandbox": "dsb_0aBcDeFgHiJkLmNoPqRsTu", + "source_id": "string", + "source_scope": "string", + "source_type": "string", "status": "open", "subtasks_count": 1, "tags": [ @@ -46978,6 +48068,12 @@ "nullable": true, "type": "string" }, + "epic": { + "description": "Free-form grouping label. `null` when the task is not in an epic.", + "example": "string", + "nullable": true, + "type": "string" + }, "id": { "description": "Task ID (`tsk_...`).", "example": "tsk_0aBcDeFgHiJkLmNoPqRsTu", @@ -47139,6 +48235,24 @@ "nullable": true, "type": "string" }, + "source_id": { + "description": "Source object identity (for example `ArchAstro/firstlanding`). `null` when the task has no source.", + "example": "string", + "nullable": true, + "type": "string" + }, + "source_scope": { + "description": "Container of the work this task is about (for example `github.com`). `null` when the task has no source. Set together with `source_type` and `source_id`.", + "example": "string", + "nullable": true, + "type": "string" + }, + "source_type": { + "description": "Kind of source object (for example `repository`). `null` when the task has no source.", + "example": "string", + "nullable": true, + "type": "string" + }, "status": { "description": "Current status of the task. One of `\"open\"`, `\"in_progress\"`, or `\"done\"`.", "example": "open", @@ -48321,6 +49435,7 @@ }, "description": "An example description.", "due_date": "2024-01-01T00:00:00Z", + "epic": "string", "id": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "is_blocked": true, "links": { @@ -48350,6 +49465,9 @@ "parent": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "priority": 2, "sandbox": "dsb_0aBcDeFgHiJkLmNoPqRsTu", + "source_id": "string", + "source_scope": "string", + "source_type": "string", "status": "open", "subtasks_count": 1, "tags": [ @@ -48403,6 +49521,7 @@ }, "description": "An example description.", "due_date": "2024-01-01T00:00:00Z", + "epic": "string", "id": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "is_blocked": true, "links": { @@ -48432,6 +49551,9 @@ "parent": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "priority": 2, "sandbox": "dsb_0aBcDeFgHiJkLmNoPqRsTu", + "source_id": "string", + "source_scope": "string", + "source_type": "string", "status": "open", "subtasks_count": 1, "tags": [ @@ -48474,6 +49596,7 @@ }, "description": "An example description.", "due_date": "2024-01-01T00:00:00Z", + "epic": "string", "id": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "is_blocked": true, "links": { @@ -48503,6 +49626,9 @@ "parent": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "priority": 2, "sandbox": "dsb_0aBcDeFgHiJkLmNoPqRsTu", + "source_id": "string", + "source_scope": "string", + "source_type": "string", "status": "open", "subtasks_count": 1, "tags": [ @@ -48698,6 +49824,12 @@ "nullable": true, "type": "string" }, + "epic": { + "description": "Free-form grouping label. `null` when the task is not in an epic.", + "example": "string", + "nullable": true, + "type": "string" + }, "id": { "description": "Task ID (`tsk_...`).", "example": "tsk_0aBcDeFgHiJkLmNoPqRsTu", @@ -48859,6 +49991,24 @@ "nullable": true, "type": "string" }, + "source_id": { + "description": "Source object identity (for example `ArchAstro/firstlanding`). `null` when the task has no source.", + "example": "string", + "nullable": true, + "type": "string" + }, + "source_scope": { + "description": "Container of the work this task is about (for example `github.com`). `null` when the task has no source. Set together with `source_type` and `source_id`.", + "example": "string", + "nullable": true, + "type": "string" + }, + "source_type": { + "description": "Kind of source object (for example `repository`). `null` when the task has no source.", + "example": "string", + "nullable": true, + "type": "string" + }, "status": { "description": "Current status of the task. One of `\"open\"`, `\"in_progress\"`, or `\"done\"`.", "example": "open", @@ -49066,6 +50216,9 @@ "401": { "description": "Unauthorized" }, + "403": { + "description": "Forbidden" + }, "404": { "description": "Team or member not found" } @@ -53215,7 +54368,6 @@ "required": true, "type": "agent_user" }, - "nullable": true, "properties": { "description": { "description": "Workflow-authored explanation of the slot's role. `null` when the workflow declares none.", @@ -53742,7 +54894,6 @@ "required": true, "type": "agent_user" }, - "nullable": true, "properties": { "description": { "description": "Workflow-authored explanation of the slot's role. `null` when the workflow declares none.", @@ -54291,7 +55442,7 @@ ] }, "post": { - "description": "Adds a user or agent as a member of the specified team and returns the new\nmembership with HTTP 201. Provide exactly one of `user` or `agent` — supplying\nboth or neither returns a 400 error.\n\nThe caller must have permission to manage the team. When an `app` is provided,\nthe request is scoped to that app and the caller must hold a valid app-scoped\ntoken. The default role is `\"member\"` when `role` is omitted.\n", + "description": "Adds a user or agent as a member of the specified team and returns the new\nmembership with HTTP 201. Provide exactly one of `user` or `agent` — supplying\nboth or neither returns a 400 error.\n\nAdding a user requires permission to manage the team (team owner, team\nadmin, or org admin). Adding an agent with the default `\"member\"` role is\nalso open to any existing member of the team; assigning an elevated role to\nan agent still requires team-manage permission. When an `app` is provided,\nthe request is scoped to that app and the caller must hold a valid app-scoped\ntoken. The default role is `\"member\"` when `role` is omitted.\n", "operationId": "post_api_v1_teams__team_members", "parameters": [ { @@ -54790,6 +55941,46 @@ "type": "string" } }, + { + "description": "Return only tasks whose source matches this container. Must be supplied with `source_type` and `source_id`.", + "example": "string", + "in": "query", + "name": "source_scope", + "required": false, + "schema": { + "type": "string" + } + }, + { + "description": "Return only tasks whose source matches this object kind. Must be supplied with the other source filters.", + "example": "string", + "in": "query", + "name": "source_type", + "required": false, + "schema": { + "type": "string" + } + }, + { + "description": "Return only tasks whose source matches this object identity. Must be supplied with the other source filters.", + "example": "string", + "in": "query", + "name": "source_id", + "required": false, + "schema": { + "type": "string" + } + }, + { + "description": "Return only tasks with this exact epic label.", + "example": "string", + "in": "query", + "name": "epic", + "required": false, + "schema": { + "type": "string" + } + }, { "description": "Restrict results to tasks whose name or description contains this string.", "example": "string", @@ -54920,6 +56111,7 @@ }, "description": "An example description.", "due_date": "2024-01-01T00:00:00Z", + "epic": "string", "id": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "is_blocked": true, "links": { @@ -54949,6 +56141,9 @@ "parent": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "priority": 2, "sandbox": "dsb_0aBcDeFgHiJkLmNoPqRsTu", + "source_id": "string", + "source_scope": "string", + "source_type": "string", "status": "open", "subtasks_count": 1, "tags": [ @@ -55005,6 +56200,7 @@ }, "description": "An example description.", "due_date": "2024-01-01T00:00:00Z", + "epic": "string", "id": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "is_blocked": true, "links": { @@ -55034,6 +56230,9 @@ "parent": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "priority": 2, "sandbox": "dsb_0aBcDeFgHiJkLmNoPqRsTu", + "source_id": "string", + "source_scope": "string", + "source_type": "string", "status": "open", "subtasks_count": 1, "tags": [ @@ -55076,6 +56275,7 @@ }, "description": "An example description.", "due_date": "2024-01-01T00:00:00Z", + "epic": "string", "id": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "is_blocked": true, "links": { @@ -55105,6 +56305,9 @@ "parent": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "priority": 2, "sandbox": "dsb_0aBcDeFgHiJkLmNoPqRsTu", + "source_id": "string", + "source_scope": "string", + "source_type": "string", "status": "open", "subtasks_count": 1, "tags": [ @@ -55300,6 +56503,12 @@ "nullable": true, "type": "string" }, + "epic": { + "description": "Free-form grouping label. `null` when the task is not in an epic.", + "example": "string", + "nullable": true, + "type": "string" + }, "id": { "description": "Task ID (`tsk_...`).", "example": "tsk_0aBcDeFgHiJkLmNoPqRsTu", @@ -55461,6 +56670,24 @@ "nullable": true, "type": "string" }, + "source_id": { + "description": "Source object identity (for example `ArchAstro/firstlanding`). `null` when the task has no source.", + "example": "string", + "nullable": true, + "type": "string" + }, + "source_scope": { + "description": "Container of the work this task is about (for example `github.com`). `null` when the task has no source. Set together with `source_type` and `source_id`.", + "example": "string", + "nullable": true, + "type": "string" + }, + "source_type": { + "description": "Kind of source object (for example `repository`). `null` when the task has no source.", + "example": "string", + "nullable": true, + "type": "string" + }, "status": { "description": "Current status of the task. One of `\"open\"`, `\"in_progress\"`, or `\"done\"`.", "example": "open", @@ -55571,6 +56798,7 @@ "task": { "description": "An example description.", "due_date": "2024-01-01T00:00:00Z", + "epic": "billing-cadence", "links": { "key": "value" }, @@ -55582,6 +56810,9 @@ "owner_user": "string", "parent": "tsk_01j3k5m7n9p2r4s6t8v0w1x2", "priority": 2, + "source_id": "ArchAstro/firstlanding", + "source_scope": "github.com", + "source_type": "repository", "status": "open", "tags": [ "backend", @@ -55607,6 +56838,7 @@ "example": { "description": "An example description.", "due_date": "2024-01-01T00:00:00Z", + "epic": "billing-cadence", "links": { "key": "value" }, @@ -55618,6 +56850,9 @@ "owner_user": "string", "parent": "tsk_01j3k5m7n9p2r4s6t8v0w1x2", "priority": 2, + "source_id": "ArchAstro/firstlanding", + "source_scope": "github.com", + "source_type": "repository", "status": "open", "tags": [ "backend", @@ -55637,6 +56872,11 @@ "format": "date-time", "type": "string" }, + "epic": { + "description": "Optional free-form grouping label.", + "example": "billing-cadence", + "type": "string" + }, "links": { "description": "Arbitrary key-value map of named URLs or references associated with the task (e.g. external ticket links).", "example": { @@ -55676,6 +56916,21 @@ "example": 2, "type": "integer" }, + "source_id": { + "description": "Source object identity (for example `ArchAstro/firstlanding`).", + "example": "ArchAstro/firstlanding", + "type": "string" + }, + "source_scope": { + "description": "Container of the work this task is about (for example `github.com`). Must be supplied with `source_type` and `source_id`.", + "example": "github.com", + "type": "string" + }, + "source_type": { + "description": "Kind of source object (for example `repository`).", + "example": "repository", + "type": "string" + }, "status": { "description": "Initial status for the task. One of `\"open\"`, `\"in_progress\"`, or `\"done\"`. Defaults to `\"open\"` when omitted.", "example": "open", @@ -55843,6 +57098,7 @@ }, "description": "An example description.", "due_date": "2024-01-01T00:00:00Z", + "epic": "string", "id": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "is_blocked": true, "links": { @@ -55872,6 +57128,9 @@ "parent": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "priority": 2, "sandbox": "dsb_0aBcDeFgHiJkLmNoPqRsTu", + "source_id": "string", + "source_scope": "string", + "source_type": "string", "status": "open", "subtasks_count": 1, "tags": [ @@ -55929,6 +57188,7 @@ }, "description": "An example description.", "due_date": "2024-01-01T00:00:00Z", + "epic": "string", "id": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "is_blocked": true, "links": { @@ -55958,6 +57218,9 @@ "parent": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "priority": 2, "sandbox": "dsb_0aBcDeFgHiJkLmNoPqRsTu", + "source_id": "string", + "source_scope": "string", + "source_type": "string", "status": "open", "subtasks_count": 1, "tags": [ @@ -56004,6 +57267,7 @@ }, "description": "An example description.", "due_date": "2024-01-01T00:00:00Z", + "epic": "string", "id": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "is_blocked": true, "links": { @@ -56033,6 +57297,9 @@ "parent": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "priority": 2, "sandbox": "dsb_0aBcDeFgHiJkLmNoPqRsTu", + "source_id": "string", + "source_scope": "string", + "source_type": "string", "status": "open", "subtasks_count": 1, "tags": [ @@ -56078,6 +57345,7 @@ }, "description": "An example description.", "due_date": "2024-01-01T00:00:00Z", + "epic": "string", "id": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "is_blocked": true, "links": { @@ -56107,6 +57375,9 @@ "parent": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "priority": 2, "sandbox": "dsb_0aBcDeFgHiJkLmNoPqRsTu", + "source_id": "string", + "source_scope": "string", + "source_type": "string", "status": "open", "subtasks_count": 1, "tags": [ @@ -56149,6 +57420,7 @@ }, "description": "An example description.", "due_date": "2024-01-01T00:00:00Z", + "epic": "string", "id": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "is_blocked": true, "links": { @@ -56178,6 +57450,9 @@ "parent": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "priority": 2, "sandbox": "dsb_0aBcDeFgHiJkLmNoPqRsTu", + "source_id": "string", + "source_scope": "string", + "source_type": "string", "status": "open", "subtasks_count": 1, "tags": [ @@ -56373,6 +57648,12 @@ "nullable": true, "type": "string" }, + "epic": { + "description": "Free-form grouping label. `null` when the task is not in an epic.", + "example": "string", + "nullable": true, + "type": "string" + }, "id": { "description": "Task ID (`tsk_...`).", "example": "tsk_0aBcDeFgHiJkLmNoPqRsTu", @@ -56534,6 +57815,24 @@ "nullable": true, "type": "string" }, + "source_id": { + "description": "Source object identity (for example `ArchAstro/firstlanding`). `null` when the task has no source.", + "example": "string", + "nullable": true, + "type": "string" + }, + "source_scope": { + "description": "Container of the work this task is about (for example `github.com`). `null` when the task has no source. Set together with `source_type` and `source_id`.", + "example": "string", + "nullable": true, + "type": "string" + }, + "source_type": { + "description": "Kind of source object (for example `repository`). `null` when the task has no source.", + "example": "string", + "nullable": true, + "type": "string" + }, "status": { "description": "Current status of the task. One of `\"open\"`, `\"in_progress\"`, or `\"done\"`.", "example": "open", @@ -56796,6 +58095,46 @@ "type": "boolean" } }, + { + "description": "Only include tasks whose source matches this container. Must be supplied with `source_type` and `source_id`.", + "example": "string", + "in": "query", + "name": "source_scope", + "required": false, + "schema": { + "type": "string" + } + }, + { + "description": "Only include tasks whose source matches this object kind.", + "example": "string", + "in": "query", + "name": "source_type", + "required": false, + "schema": { + "type": "string" + } + }, + { + "description": "Only include tasks whose source matches this object identity.", + "example": "string", + "in": "query", + "name": "source_id", + "required": false, + "schema": { + "type": "string" + } + }, + { + "description": "Only include tasks with this exact epic label.", + "example": "string", + "in": "query", + "name": "epic", + "required": false, + "schema": { + "type": "string" + } + }, { "description": "Maximum number of readiness entries to return. Capped at 100.", "example": 1, @@ -56860,6 +58199,7 @@ }, "description": "An example description.", "due_date": "2024-01-01T00:00:00Z", + "epic": "string", "id": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "is_blocked": true, "links": { @@ -56889,6 +58229,9 @@ "parent": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "priority": 2, "sandbox": "dsb_0aBcDeFgHiJkLmNoPqRsTu", + "source_id": "string", + "source_scope": "string", + "source_type": "string", "status": "open", "subtasks_count": 1, "tags": [ @@ -56951,6 +58294,7 @@ }, "description": "An example description.", "due_date": "2024-01-01T00:00:00Z", + "epic": "string", "id": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "is_blocked": true, "links": { @@ -56980,6 +58324,9 @@ "parent": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "priority": 2, "sandbox": "dsb_0aBcDeFgHiJkLmNoPqRsTu", + "source_id": "string", + "source_scope": "string", + "source_type": "string", "status": "open", "subtasks_count": 1, "tags": [ @@ -57026,6 +58373,7 @@ }, "description": "An example description.", "due_date": "2024-01-01T00:00:00Z", + "epic": "string", "id": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "is_blocked": true, "links": { @@ -57055,6 +58403,9 @@ "parent": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "priority": 2, "sandbox": "dsb_0aBcDeFgHiJkLmNoPqRsTu", + "source_id": "string", + "source_scope": "string", + "source_type": "string", "status": "open", "subtasks_count": 1, "tags": [ @@ -57118,6 +58469,7 @@ }, "description": "An example description.", "due_date": "2024-01-01T00:00:00Z", + "epic": "string", "id": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "is_blocked": true, "links": { @@ -57147,6 +58499,9 @@ "parent": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "priority": 2, "sandbox": "dsb_0aBcDeFgHiJkLmNoPqRsTu", + "source_id": "string", + "source_scope": "string", + "source_type": "string", "status": "open", "subtasks_count": 1, "tags": [ @@ -57342,6 +58697,12 @@ "nullable": true, "type": "string" }, + "epic": { + "description": "Free-form grouping label. `null` when the task is not in an epic.", + "example": "string", + "nullable": true, + "type": "string" + }, "id": { "description": "Task ID (`tsk_...`).", "example": "tsk_0aBcDeFgHiJkLmNoPqRsTu", @@ -57503,6 +58864,24 @@ "nullable": true, "type": "string" }, + "source_id": { + "description": "Source object identity (for example `ArchAstro/firstlanding`). `null` when the task has no source.", + "example": "string", + "nullable": true, + "type": "string" + }, + "source_scope": { + "description": "Container of the work this task is about (for example `github.com`). `null` when the task has no source. Set together with `source_type` and `source_id`.", + "example": "string", + "nullable": true, + "type": "string" + }, + "source_type": { + "description": "Kind of source object (for example `repository`). `null` when the task has no source.", + "example": "string", + "nullable": true, + "type": "string" + }, "status": { "description": "Current status of the task. One of `\"open\"`, `\"in_progress\"`, or `\"done\"`.", "example": "open", @@ -57712,6 +59091,46 @@ "type": "string" } }, + { + "description": "Return only tasks whose source matches this container. Must be supplied with `source_type` and `source_id`.", + "example": "string", + "in": "query", + "name": "source_scope", + "required": false, + "schema": { + "type": "string" + } + }, + { + "description": "Return only tasks whose source matches this object kind.", + "example": "string", + "in": "query", + "name": "source_type", + "required": false, + "schema": { + "type": "string" + } + }, + { + "description": "Return only tasks whose source matches this object identity.", + "example": "string", + "in": "query", + "name": "source_id", + "required": false, + "schema": { + "type": "string" + } + }, + { + "description": "Return only tasks with this exact epic label.", + "example": "string", + "in": "query", + "name": "epic", + "required": false, + "schema": { + "type": "string" + } + }, { "description": "Maximum number of tasks to return. Capped at 100.", "example": 1, @@ -57772,6 +59191,7 @@ }, "description": "An example description.", "due_date": "2024-01-01T00:00:00Z", + "epic": "string", "id": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "is_blocked": true, "links": { @@ -57801,6 +59221,9 @@ "parent": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "priority": 2, "sandbox": "dsb_0aBcDeFgHiJkLmNoPqRsTu", + "source_id": "string", + "source_scope": "string", + "source_type": "string", "status": "open", "subtasks_count": 1, "tags": [ @@ -57856,6 +59279,7 @@ }, "description": "An example description.", "due_date": "2024-01-01T00:00:00Z", + "epic": "string", "id": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "is_blocked": true, "links": { @@ -57885,6 +59309,9 @@ "parent": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "priority": 2, "sandbox": "dsb_0aBcDeFgHiJkLmNoPqRsTu", + "source_id": "string", + "source_scope": "string", + "source_type": "string", "status": "open", "subtasks_count": 1, "tags": [ @@ -57927,6 +59354,7 @@ }, "description": "An example description.", "due_date": "2024-01-01T00:00:00Z", + "epic": "string", "id": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "is_blocked": true, "links": { @@ -57956,6 +59384,9 @@ "parent": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "priority": 2, "sandbox": "dsb_0aBcDeFgHiJkLmNoPqRsTu", + "source_id": "string", + "source_scope": "string", + "source_type": "string", "status": "open", "subtasks_count": 1, "tags": [ @@ -58151,6 +59582,12 @@ "nullable": true, "type": "string" }, + "epic": { + "description": "Free-form grouping label. `null` when the task is not in an epic.", + "example": "string", + "nullable": true, + "type": "string" + }, "id": { "description": "Task ID (`tsk_...`).", "example": "tsk_0aBcDeFgHiJkLmNoPqRsTu", @@ -58312,6 +59749,24 @@ "nullable": true, "type": "string" }, + "source_id": { + "description": "Source object identity (for example `ArchAstro/firstlanding`). `null` when the task has no source.", + "example": "string", + "nullable": true, + "type": "string" + }, + "source_scope": { + "description": "Container of the work this task is about (for example `github.com`). `null` when the task has no source. Set together with `source_type` and `source_id`.", + "example": "string", + "nullable": true, + "type": "string" + }, + "source_type": { + "description": "Kind of source object (for example `repository`). `null` when the task has no source.", + "example": "string", + "nullable": true, + "type": "string" + }, "status": { "description": "Current status of the task. One of `\"open\"`, `\"in_progress\"`, or `\"done\"`.", "example": "open", @@ -59829,7 +61284,7 @@ "type": "string" }, "kind": { - "description": "Thread subtype: `\"standard\"` for ordinary threads, `\"slack_mirror\"` for the membership-strict mirror of a Slack channel, `\"slashwork_mirror\"` for the membership-strict mirror of a Slashwork group. Read-only — derived server-side at creation, never accepted from params.", + "description": "Thread subtype: `\"standard\"` for ordinary threads, `\"personal\"` for a user-and-owned-agents roster, `\"slack_mirror\"` for the membership-strict mirror of a Slack channel, or `\"slashwork_mirror\"` for the membership-strict mirror of a Slashwork group. `personal` is an explicit user-thread creation option; mirror kinds are server-derived.", "example": "string", "nullable": true, "type": "string" @@ -61793,7 +63248,6 @@ "updated_at": "string", "user": "usr_0aBcDeFgHiJkLmNoPqRsTu" }, - "nullable": true, "properties": { "acl": { "description": "Access control list for the agent. Contains a `grants` array where each entry specifies `principal_type`, `principal`, and `actions`. `null` when no ACL restrictions are applied and the agent is accessible to all members of its scope.", @@ -62570,7 +64024,6 @@ "required": true, "type": "agent_user" }, - "nullable": true, "properties": { "description": { "description": "Workflow-authored explanation of the slot's role. `null` when the workflow declares none.", @@ -63097,7 +64550,6 @@ "required": true, "type": "agent_user" }, - "nullable": true, "properties": { "description": { "description": "Workflow-authored explanation of the slot's role. `null` when the workflow declares none.", @@ -63400,7 +64852,6 @@ {} ], "items": { - "nullable": true, "type": "object" }, "nullable": true, @@ -63520,6 +64971,7 @@ "description": "An example description.", "is_unlisted": true, "key": "string", + "kind": "personal", "members": [ { "id": "string", @@ -63557,6 +65009,7 @@ "description": "An example description.", "is_unlisted": true, "key": "string", + "kind": "personal", "members": [ { "id": "string", @@ -63601,6 +65054,14 @@ "example": "string", "type": "string" }, + "kind": { + "description": "Optional behavioral subtype. `personal` is accepted only for a user-owned thread and limits membership to that user and agents currently owned by them. Mirror kinds remain server-derived and cannot be selected by callers.", + "enum": [ + "personal" + ], + "example": "personal", + "type": "string" + }, "members": { "description": "Users and agents to add atomically when the thread is created. Each target must pass the same authorization rules as a post-creation member add. Slack mirror threads reject non-empty caller-supplied rosters because their membership is sync-owned.", "example": [ @@ -68416,7 +69877,7 @@ }, "/api/v1/threads/{thread}/trajectories": { "get": { - "description": "Returns a cursor-paginated list of thread message trajectories associated with the\nspecified thread. Each trajectory links a user message and its agent response to the\nunderlying AI trajectory record that captured the model's reasoning steps.\n\nThe authenticated user must own the thread or be a member of the workspace it belongs\nto. Results are returned in reverse chronological order by default. Use `before_cursor`\nand `after_cursor` to navigate pages; provide at most one cursor per request.\n\nOptionally filter results to trajectories produced in response to a specific message\nby supplying the `message` parameter. When no trajectories match the query, `data`\nis an empty array and both cursor fields are `null`.\n", + "description": "Returns a cursor-paginated list of thread message trajectories associated with the\nspecified thread. Each trajectory links a user message and its agent response to the\nunderlying AI trajectory record that captured the model's reasoning steps.\n\nThe authenticated user must own the thread or be a member of the workspace it belongs\nto. Results are returned in reverse chronological order by default. Use `before_cursor`\nand `after_cursor` to navigate pages; provide at most one cursor per request.\n\nOptionally filter results to trajectories produced in response to a specific message\nby supplying the `message` parameter. When no trajectories match the query, `data`\nis an empty array and both cursor fields are `null`. A cursor that cannot be decoded\nreturns a 400 `invalid_cursor` error.\n", "operationId": "get_api_v1_threads__thread_trajectories", "parameters": [ { @@ -68602,6 +70063,9 @@ }, "description": "Successful response" }, + "400": { + "description": "Invalid cursor" + }, "401": { "description": "Unauthorized" }, @@ -69218,19 +70682,6 @@ "slug": "example-slug", "status": "active", "updated_at": "2024-01-01T00:00:00Z", - "vendor": { - "id": "org_0aBcDeFgHiJkLmNoPqRsTu", - "logo": { - "file": "fil_0aBcDeFgHiJkLmNoPqRsTu", - "height": 600, - "media": "med_0aBcDeFgHiJkLmNoPqRsTu", - "mime_type": "application/json", - "refresh_url": "https://example.com", - "url": "https://example.com", - "width": 800 - }, - "name": "Example Name" - }, "website": "https://example.com" } ] @@ -69255,19 +70706,6 @@ "slug": "example-slug", "status": "active", "updated_at": "2024-01-01T00:00:00Z", - "vendor": { - "id": "org_0aBcDeFgHiJkLmNoPqRsTu", - "logo": { - "file": "fil_0aBcDeFgHiJkLmNoPqRsTu", - "height": 600, - "media": "med_0aBcDeFgHiJkLmNoPqRsTu", - "mime_type": "application/json", - "refresh_url": "https://example.com", - "url": "https://example.com", - "width": 800 - }, - "name": "Example Name" - }, "website": "https://example.com" } ], @@ -69289,19 +70727,6 @@ "slug": "example-slug", "status": "active", "updated_at": "2024-01-01T00:00:00Z", - "vendor": { - "id": "org_0aBcDeFgHiJkLmNoPqRsTu", - "logo": { - "file": "fil_0aBcDeFgHiJkLmNoPqRsTu", - "height": 600, - "media": "med_0aBcDeFgHiJkLmNoPqRsTu", - "mime_type": "application/json", - "refresh_url": "https://example.com", - "url": "https://example.com", - "width": 800 - }, - "name": "Example Name" - }, "website": "https://example.com" }, "properties": { @@ -69337,7 +70762,7 @@ "type": "string" }, "onboarding_solution_lookup_key": { - "description": "Lookup key (`sol-...`) of the Solution that drove this org's customer onboarding, stamped when the org was first linked into a vendor's network via an explore-install. `null` for vendor-track orgs and invite-driven customers. The onboarding UI reads the referenced Solution's `metadata.onboarding` block to tailor the customer checklist.", + "description": "Lookup key (`sol-...`) of the Solution currently driving this org's customer onboarding — the active onboarding solution pointer. Stamped when the org is linked into a vendor's network via an explore-install and re-stamped by every later solution-driven link, so the latest install wins. `null` for vendor-track orgs and invite-driven customers. The onboarding UI reads the referenced Solution's `metadata.onboarding` block to tailor the customer checklist.", "example": "string", "type": "string" }, @@ -69377,95 +70802,6 @@ "format": "date-time", "type": "string" }, - "vendor": { - "description": "Branding of the solution vendor whose network this organization belongs to — the vendor of the oldest active vendor relationship. Only present for organizations on the `\"customer\"` onboarding track; `null` for vendor-track organizations (including vendors that later joined another vendor's network) and for customers with no active vendor link. Clients use it to co-brand the workspace (\"ArchAgents by Acme\").", - "example": { - "id": "org_0aBcDeFgHiJkLmNoPqRsTu", - "logo": { - "file": "fil_0aBcDeFgHiJkLmNoPqRsTu", - "height": 600, - "media": "med_0aBcDeFgHiJkLmNoPqRsTu", - "mime_type": "application/json", - "refresh_url": "https://example.com", - "url": "https://example.com", - "width": 800 - }, - "name": "Example Name" - }, - "properties": { - "id": { - "description": "Organization ID of the vendor (`org_...`).", - "example": "org_0aBcDeFgHiJkLmNoPqRsTu", - "type": "string" - }, - "logo": { - "description": "Logo of the vendor organization. The `url` is a stable, non-expiring capability URL served by the platform (the same mechanism as catalog `org_logo` fields), safe to hold in caches; `refresh_url` is `null`. `null` when the vendor has no logo.", - "example": { - "file": "fil_0aBcDeFgHiJkLmNoPqRsTu", - "height": 600, - "media": "med_0aBcDeFgHiJkLmNoPqRsTu", - "mime_type": "application/json", - "refresh_url": "https://example.com", - "url": "https://example.com", - "width": 800 - }, - "properties": { - "file": { - "description": "ID of the underlying storage file (`fil_...`). `null` when the image is not backed by a platform storage file.", - "example": "fil_0aBcDeFgHiJkLmNoPqRsTu", - "nullable": true, - "type": "string" - }, - "height": { - "description": "Height of the image in pixels. `null` if not known.", - "example": 600, - "nullable": true, - "type": "integer" - }, - "media": { - "description": "ID of the associated media record (`med_...`). `null` when the image is not linked to a media entity.", - "example": "med_0aBcDeFgHiJkLmNoPqRsTu", - "nullable": true, - "type": "string" - }, - "mime_type": { - "description": "MIME type of the image, e.g. `\"image/png\"` or `\"image/jpeg\"`. `null` if not known.", - "example": "application/json", - "nullable": true, - "type": "string" - }, - "refresh_url": { - "description": "Endpoint URL you can call to obtain a fresh signed `url` when the current one has expired. `null` if the URL does not require refreshing.", - "example": "https://example.com", - "nullable": true, - "type": "string" - }, - "url": { - "description": "Signed or public URL for downloading the image. May be time-limited; use `refresh_url` to obtain a new URL when this one expires.", - "example": "https://example.com", - "nullable": true, - "type": "string" - }, - "width": { - "description": "Width of the image in pixels. `null` if not known.", - "example": 800, - "nullable": true, - "type": "integer" - } - }, - "type": "object" - }, - "name": { - "description": "Display name of the vendor organization. `null` if the vendor has not set a name.", - "example": "Example Name", - "type": "string" - } - }, - "required": [ - "id" - ], - "type": "object" - }, "website": { "description": "Public website URL for the organization. `null` if not set.", "example": "https://example.com", @@ -69703,6 +71039,46 @@ "type": "string" } }, + { + "description": "Return only tasks whose source matches this container. Must be supplied with `source_type` and `source_id`.", + "example": "string", + "in": "query", + "name": "source_scope", + "required": false, + "schema": { + "type": "string" + } + }, + { + "description": "Return only tasks whose source matches this object kind. Must be supplied with the other source filters.", + "example": "string", + "in": "query", + "name": "source_type", + "required": false, + "schema": { + "type": "string" + } + }, + { + "description": "Return only tasks whose source matches this object identity. Must be supplied with the other source filters.", + "example": "string", + "in": "query", + "name": "source_id", + "required": false, + "schema": { + "type": "string" + } + }, + { + "description": "Return only tasks with this exact epic label.", + "example": "string", + "in": "query", + "name": "epic", + "required": false, + "schema": { + "type": "string" + } + }, { "description": "Restrict results to tasks whose name or description contains this string.", "example": "string", @@ -69833,6 +71209,7 @@ }, "description": "An example description.", "due_date": "2024-01-01T00:00:00Z", + "epic": "string", "id": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "is_blocked": true, "links": { @@ -69862,6 +71239,9 @@ "parent": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "priority": 2, "sandbox": "dsb_0aBcDeFgHiJkLmNoPqRsTu", + "source_id": "string", + "source_scope": "string", + "source_type": "string", "status": "open", "subtasks_count": 1, "tags": [ @@ -69918,6 +71298,7 @@ }, "description": "An example description.", "due_date": "2024-01-01T00:00:00Z", + "epic": "string", "id": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "is_blocked": true, "links": { @@ -69947,6 +71328,9 @@ "parent": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "priority": 2, "sandbox": "dsb_0aBcDeFgHiJkLmNoPqRsTu", + "source_id": "string", + "source_scope": "string", + "source_type": "string", "status": "open", "subtasks_count": 1, "tags": [ @@ -69989,6 +71373,7 @@ }, "description": "An example description.", "due_date": "2024-01-01T00:00:00Z", + "epic": "string", "id": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "is_blocked": true, "links": { @@ -70018,6 +71403,9 @@ "parent": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "priority": 2, "sandbox": "dsb_0aBcDeFgHiJkLmNoPqRsTu", + "source_id": "string", + "source_scope": "string", + "source_type": "string", "status": "open", "subtasks_count": 1, "tags": [ @@ -70213,6 +71601,12 @@ "nullable": true, "type": "string" }, + "epic": { + "description": "Free-form grouping label. `null` when the task is not in an epic.", + "example": "string", + "nullable": true, + "type": "string" + }, "id": { "description": "Task ID (`tsk_...`).", "example": "tsk_0aBcDeFgHiJkLmNoPqRsTu", @@ -70374,6 +71768,24 @@ "nullable": true, "type": "string" }, + "source_id": { + "description": "Source object identity (for example `ArchAstro/firstlanding`). `null` when the task has no source.", + "example": "string", + "nullable": true, + "type": "string" + }, + "source_scope": { + "description": "Container of the work this task is about (for example `github.com`). `null` when the task has no source. Set together with `source_type` and `source_id`.", + "example": "string", + "nullable": true, + "type": "string" + }, + "source_type": { + "description": "Kind of source object (for example `repository`). `null` when the task has no source.", + "example": "string", + "nullable": true, + "type": "string" + }, "status": { "description": "Current status of the task. One of `\"open\"`, `\"in_progress\"`, or `\"done\"`.", "example": "open", @@ -70484,6 +71896,7 @@ "task": { "description": "An example description.", "due_date": "2024-01-01T00:00:00Z", + "epic": "billing-cadence", "links": { "key": "value" }, @@ -70495,6 +71908,9 @@ "owner_user": "string", "parent": "tsk_01j3k5m7n9p2r4s6t8v0w1x2", "priority": 2, + "source_id": "ArchAstro/firstlanding", + "source_scope": "github.com", + "source_type": "repository", "status": "open", "tags": [ "backend", @@ -70520,6 +71936,7 @@ "example": { "description": "An example description.", "due_date": "2024-01-01T00:00:00Z", + "epic": "billing-cadence", "links": { "key": "value" }, @@ -70531,6 +71948,9 @@ "owner_user": "string", "parent": "tsk_01j3k5m7n9p2r4s6t8v0w1x2", "priority": 2, + "source_id": "ArchAstro/firstlanding", + "source_scope": "github.com", + "source_type": "repository", "status": "open", "tags": [ "backend", @@ -70550,6 +71970,11 @@ "format": "date-time", "type": "string" }, + "epic": { + "description": "Optional free-form grouping label.", + "example": "billing-cadence", + "type": "string" + }, "links": { "description": "Arbitrary key-value map of named URLs or references associated with the task (e.g. external ticket links).", "example": { @@ -70589,6 +72014,21 @@ "example": 2, "type": "integer" }, + "source_id": { + "description": "Source object identity (for example `ArchAstro/firstlanding`).", + "example": "ArchAstro/firstlanding", + "type": "string" + }, + "source_scope": { + "description": "Container of the work this task is about (for example `github.com`). Must be supplied with `source_type` and `source_id`.", + "example": "github.com", + "type": "string" + }, + "source_type": { + "description": "Kind of source object (for example `repository`).", + "example": "repository", + "type": "string" + }, "status": { "description": "Initial status for the task. One of `\"open\"`, `\"in_progress\"`, or `\"done\"`. Defaults to `\"open\"` when omitted.", "example": "open", @@ -70756,6 +72196,7 @@ }, "description": "An example description.", "due_date": "2024-01-01T00:00:00Z", + "epic": "string", "id": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "is_blocked": true, "links": { @@ -70785,6 +72226,9 @@ "parent": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "priority": 2, "sandbox": "dsb_0aBcDeFgHiJkLmNoPqRsTu", + "source_id": "string", + "source_scope": "string", + "source_type": "string", "status": "open", "subtasks_count": 1, "tags": [ @@ -70842,6 +72286,7 @@ }, "description": "An example description.", "due_date": "2024-01-01T00:00:00Z", + "epic": "string", "id": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "is_blocked": true, "links": { @@ -70871,6 +72316,9 @@ "parent": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "priority": 2, "sandbox": "dsb_0aBcDeFgHiJkLmNoPqRsTu", + "source_id": "string", + "source_scope": "string", + "source_type": "string", "status": "open", "subtasks_count": 1, "tags": [ @@ -70917,6 +72365,7 @@ }, "description": "An example description.", "due_date": "2024-01-01T00:00:00Z", + "epic": "string", "id": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "is_blocked": true, "links": { @@ -70946,6 +72395,9 @@ "parent": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "priority": 2, "sandbox": "dsb_0aBcDeFgHiJkLmNoPqRsTu", + "source_id": "string", + "source_scope": "string", + "source_type": "string", "status": "open", "subtasks_count": 1, "tags": [ @@ -70991,6 +72443,7 @@ }, "description": "An example description.", "due_date": "2024-01-01T00:00:00Z", + "epic": "string", "id": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "is_blocked": true, "links": { @@ -71020,6 +72473,9 @@ "parent": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "priority": 2, "sandbox": "dsb_0aBcDeFgHiJkLmNoPqRsTu", + "source_id": "string", + "source_scope": "string", + "source_type": "string", "status": "open", "subtasks_count": 1, "tags": [ @@ -71062,6 +72518,7 @@ }, "description": "An example description.", "due_date": "2024-01-01T00:00:00Z", + "epic": "string", "id": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "is_blocked": true, "links": { @@ -71091,6 +72548,9 @@ "parent": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "priority": 2, "sandbox": "dsb_0aBcDeFgHiJkLmNoPqRsTu", + "source_id": "string", + "source_scope": "string", + "source_type": "string", "status": "open", "subtasks_count": 1, "tags": [ @@ -71286,6 +72746,12 @@ "nullable": true, "type": "string" }, + "epic": { + "description": "Free-form grouping label. `null` when the task is not in an epic.", + "example": "string", + "nullable": true, + "type": "string" + }, "id": { "description": "Task ID (`tsk_...`).", "example": "tsk_0aBcDeFgHiJkLmNoPqRsTu", @@ -71447,6 +72913,24 @@ "nullable": true, "type": "string" }, + "source_id": { + "description": "Source object identity (for example `ArchAstro/firstlanding`). `null` when the task has no source.", + "example": "string", + "nullable": true, + "type": "string" + }, + "source_scope": { + "description": "Container of the work this task is about (for example `github.com`). `null` when the task has no source. Set together with `source_type` and `source_id`.", + "example": "string", + "nullable": true, + "type": "string" + }, + "source_type": { + "description": "Kind of source object (for example `repository`). `null` when the task has no source.", + "example": "string", + "nullable": true, + "type": "string" + }, "status": { "description": "Current status of the task. One of `\"open\"`, `\"in_progress\"`, or `\"done\"`.", "example": "open", @@ -71596,6 +73080,46 @@ "type": "boolean" } }, + { + "description": "Only include tasks whose source matches this container. Must be supplied with `source_type` and `source_id`.", + "example": "string", + "in": "query", + "name": "source_scope", + "required": false, + "schema": { + "type": "string" + } + }, + { + "description": "Only include tasks whose source matches this object kind.", + "example": "string", + "in": "query", + "name": "source_type", + "required": false, + "schema": { + "type": "string" + } + }, + { + "description": "Only include tasks whose source matches this object identity.", + "example": "string", + "in": "query", + "name": "source_id", + "required": false, + "schema": { + "type": "string" + } + }, + { + "description": "Only include tasks with this exact epic label.", + "example": "string", + "in": "query", + "name": "epic", + "required": false, + "schema": { + "type": "string" + } + }, { "description": "Maximum number of readiness entries to return. Capped at 100.", "example": 1, @@ -71660,6 +73184,7 @@ }, "description": "An example description.", "due_date": "2024-01-01T00:00:00Z", + "epic": "string", "id": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "is_blocked": true, "links": { @@ -71689,6 +73214,9 @@ "parent": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "priority": 2, "sandbox": "dsb_0aBcDeFgHiJkLmNoPqRsTu", + "source_id": "string", + "source_scope": "string", + "source_type": "string", "status": "open", "subtasks_count": 1, "tags": [ @@ -71751,6 +73279,7 @@ }, "description": "An example description.", "due_date": "2024-01-01T00:00:00Z", + "epic": "string", "id": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "is_blocked": true, "links": { @@ -71780,6 +73309,9 @@ "parent": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "priority": 2, "sandbox": "dsb_0aBcDeFgHiJkLmNoPqRsTu", + "source_id": "string", + "source_scope": "string", + "source_type": "string", "status": "open", "subtasks_count": 1, "tags": [ @@ -71826,6 +73358,7 @@ }, "description": "An example description.", "due_date": "2024-01-01T00:00:00Z", + "epic": "string", "id": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "is_blocked": true, "links": { @@ -71855,6 +73388,9 @@ "parent": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "priority": 2, "sandbox": "dsb_0aBcDeFgHiJkLmNoPqRsTu", + "source_id": "string", + "source_scope": "string", + "source_type": "string", "status": "open", "subtasks_count": 1, "tags": [ @@ -71918,6 +73454,7 @@ }, "description": "An example description.", "due_date": "2024-01-01T00:00:00Z", + "epic": "string", "id": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "is_blocked": true, "links": { @@ -71947,6 +73484,9 @@ "parent": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "priority": 2, "sandbox": "dsb_0aBcDeFgHiJkLmNoPqRsTu", + "source_id": "string", + "source_scope": "string", + "source_type": "string", "status": "open", "subtasks_count": 1, "tags": [ @@ -72142,6 +73682,12 @@ "nullable": true, "type": "string" }, + "epic": { + "description": "Free-form grouping label. `null` when the task is not in an epic.", + "example": "string", + "nullable": true, + "type": "string" + }, "id": { "description": "Task ID (`tsk_...`).", "example": "tsk_0aBcDeFgHiJkLmNoPqRsTu", @@ -72303,6 +73849,24 @@ "nullable": true, "type": "string" }, + "source_id": { + "description": "Source object identity (for example `ArchAstro/firstlanding`). `null` when the task has no source.", + "example": "string", + "nullable": true, + "type": "string" + }, + "source_scope": { + "description": "Container of the work this task is about (for example `github.com`). `null` when the task has no source. Set together with `source_type` and `source_id`.", + "example": "string", + "nullable": true, + "type": "string" + }, + "source_type": { + "description": "Kind of source object (for example `repository`). `null` when the task has no source.", + "example": "string", + "nullable": true, + "type": "string" + }, "status": { "description": "Current status of the task. One of `\"open\"`, `\"in_progress\"`, or `\"done\"`.", "example": "open", @@ -72512,6 +74076,46 @@ "type": "string" } }, + { + "description": "Return only tasks whose source matches this container. Must be supplied with `source_type` and `source_id`.", + "example": "string", + "in": "query", + "name": "source_scope", + "required": false, + "schema": { + "type": "string" + } + }, + { + "description": "Return only tasks whose source matches this object kind.", + "example": "string", + "in": "query", + "name": "source_type", + "required": false, + "schema": { + "type": "string" + } + }, + { + "description": "Return only tasks whose source matches this object identity.", + "example": "string", + "in": "query", + "name": "source_id", + "required": false, + "schema": { + "type": "string" + } + }, + { + "description": "Return only tasks with this exact epic label.", + "example": "string", + "in": "query", + "name": "epic", + "required": false, + "schema": { + "type": "string" + } + }, { "description": "Maximum number of tasks to return. Capped at 100.", "example": 1, @@ -72572,6 +74176,7 @@ }, "description": "An example description.", "due_date": "2024-01-01T00:00:00Z", + "epic": "string", "id": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "is_blocked": true, "links": { @@ -72601,6 +74206,9 @@ "parent": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "priority": 2, "sandbox": "dsb_0aBcDeFgHiJkLmNoPqRsTu", + "source_id": "string", + "source_scope": "string", + "source_type": "string", "status": "open", "subtasks_count": 1, "tags": [ @@ -72656,6 +74264,7 @@ }, "description": "An example description.", "due_date": "2024-01-01T00:00:00Z", + "epic": "string", "id": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "is_blocked": true, "links": { @@ -72685,6 +74294,9 @@ "parent": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "priority": 2, "sandbox": "dsb_0aBcDeFgHiJkLmNoPqRsTu", + "source_id": "string", + "source_scope": "string", + "source_type": "string", "status": "open", "subtasks_count": 1, "tags": [ @@ -72727,6 +74339,7 @@ }, "description": "An example description.", "due_date": "2024-01-01T00:00:00Z", + "epic": "string", "id": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "is_blocked": true, "links": { @@ -72756,6 +74369,9 @@ "parent": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "priority": 2, "sandbox": "dsb_0aBcDeFgHiJkLmNoPqRsTu", + "source_id": "string", + "source_scope": "string", + "source_type": "string", "status": "open", "subtasks_count": 1, "tags": [ @@ -72951,6 +74567,12 @@ "nullable": true, "type": "string" }, + "epic": { + "description": "Free-form grouping label. `null` when the task is not in an epic.", + "example": "string", + "nullable": true, + "type": "string" + }, "id": { "description": "Task ID (`tsk_...`).", "example": "tsk_0aBcDeFgHiJkLmNoPqRsTu", @@ -73112,6 +74734,24 @@ "nullable": true, "type": "string" }, + "source_id": { + "description": "Source object identity (for example `ArchAstro/firstlanding`). `null` when the task has no source.", + "example": "string", + "nullable": true, + "type": "string" + }, + "source_scope": { + "description": "Container of the work this task is about (for example `github.com`). `null` when the task has no source. Set together with `source_type` and `source_id`.", + "example": "string", + "nullable": true, + "type": "string" + }, + "source_type": { + "description": "Kind of source object (for example `repository`). `null` when the task has no source.", + "example": "string", + "nullable": true, + "type": "string" + }, "status": { "description": "Current status of the task. One of `\"open\"`, `\"in_progress\"`, or `\"done\"`.", "example": "open", @@ -74676,7 +76316,7 @@ "type": "string" }, "kind": { - "description": "Thread subtype: `\"standard\"` for ordinary threads, `\"slack_mirror\"` for the membership-strict mirror of a Slack channel, `\"slashwork_mirror\"` for the membership-strict mirror of a Slashwork group. Read-only — derived server-side at creation, never accepted from params.", + "description": "Thread subtype: `\"standard\"` for ordinary threads, `\"personal\"` for a user-and-owned-agents roster, `\"slack_mirror\"` for the membership-strict mirror of a Slack channel, or `\"slashwork_mirror\"` for the membership-strict mirror of a Slashwork group. `personal` is an explicit user-thread creation option; mirror kinds are server-derived.", "example": "string", "nullable": true, "type": "string" @@ -76640,7 +78280,6 @@ "updated_at": "string", "user": "usr_0aBcDeFgHiJkLmNoPqRsTu" }, - "nullable": true, "properties": { "acl": { "description": "Access control list for the agent. Contains a `grants` array where each entry specifies `principal_type`, `principal`, and `actions`. `null` when no ACL restrictions are applied and the agent is accessible to all members of its scope.", @@ -77417,7 +79056,6 @@ "required": true, "type": "agent_user" }, - "nullable": true, "properties": { "description": { "description": "Workflow-authored explanation of the slot's role. `null` when the workflow declares none.", @@ -77944,7 +79582,6 @@ "required": true, "type": "agent_user" }, - "nullable": true, "properties": { "description": { "description": "Workflow-authored explanation of the slot's role. `null` when the workflow declares none.", @@ -78247,7 +79884,6 @@ {} ], "items": { - "nullable": true, "type": "object" }, "nullable": true, @@ -78367,6 +80003,7 @@ "description": "An example description.", "is_unlisted": true, "key": "string", + "kind": "personal", "members": [ { "id": "string", @@ -78404,6 +80041,7 @@ "description": "An example description.", "is_unlisted": true, "key": "string", + "kind": "personal", "members": [ { "id": "string", @@ -78448,6 +80086,14 @@ "example": "string", "type": "string" }, + "kind": { + "description": "Optional behavioral subtype. `personal` is accepted only for a user-owned thread and limits membership to that user and agents currently owned by them. Mirror kinds remain server-derived and cannot be selected by callers.", + "enum": [ + "personal" + ], + "example": "personal", + "type": "string" + }, "members": { "description": "Users and agents to add atomically when the thread is created. Each target must pass the same authorization rules as a post-creation member add. Slack mirror threads reject non-empty caller-supplied rosters because their membership is sync-owned.", "example": [ @@ -80795,7 +82441,6 @@ "required": true, "type": "agent_user" }, - "nullable": true, "properties": { "description": { "description": "Workflow-authored explanation of the slot's role. `null` when the workflow declares none.", @@ -81322,7 +82967,6 @@ "required": true, "type": "agent_user" }, - "nullable": true, "properties": { "description": { "description": "Workflow-authored explanation of the slot's role. `null` when the workflow declares none.", @@ -82034,7 +83678,7 @@ } }, { - "description": "Join a user-scoped thread by ID", + "description": "Join a user-scoped thread by ID, optionally supplying local tools for a personal thread", "name": "join_user_thread", "params": { "example": { @@ -82042,6 +83686,17 @@ "before_cursor": "string", "include_metadata": true, "limit": 1, + "local_tool_provider_id": "string", + "local_tools": [ + { + "function": { + "description": "An example description.", + "name": "Example Name", + "parameters": {} + }, + "type": "function" + } + ], "thread_id": "string" }, "properties": { @@ -82061,6 +83716,76 @@ "example": 1, "type": "integer" }, + "local_tool_provider_id": { + "example": "string", + "type": "string" + }, + "local_tools": { + "example": [ + { + "function": { + "description": "An example description.", + "name": "Example Name", + "parameters": {} + }, + "type": "function" + } + ], + "items": { + "description": "An OpenAI-compatible local function definition supplied while joining a personal thread.", + "example": { + "function": { + "description": "An example description.", + "name": "Example Name", + "parameters": {} + }, + "type": "function" + }, + "properties": { + "function": { + "description": "A function implemented by the client connected to a personal thread.", + "example": { + "description": "An example description.", + "name": "Example Name", + "parameters": {} + }, + "properties": { + "description": { + "example": "An example description.", + "type": "string" + }, + "name": { + "example": "Example Name", + "type": "string" + }, + "parameters": { + "example": {}, + "type": "object" + } + }, + "required": [ + "name", + "description", + "parameters" + ], + "type": "object" + }, + "type": { + "enum": [ + "function" + ], + "example": "function", + "type": "string" + } + }, + "required": [ + "type", + "function" + ], + "type": "object" + }, + "type": "array" + }, "thread_id": { "example": "string", "type": "string" @@ -85534,7 +87259,6 @@ "required": true, "type": "agent_user" }, - "nullable": true, "properties": { "description": { "description": "Workflow-authored explanation of the slot's role. `null` when the workflow declares none.", @@ -86061,7 +87785,6 @@ "required": true, "type": "agent_user" }, - "nullable": true, "properties": { "description": { "description": "Workflow-authored explanation of the slot's role. `null` when the workflow declares none.", @@ -87714,7 +89437,6 @@ "required": true, "type": "agent_user" }, - "nullable": true, "properties": { "description": { "description": "Workflow-authored explanation of the slot's role. `null` when the workflow declares none.", @@ -88241,7 +89963,6 @@ "required": true, "type": "agent_user" }, - "nullable": true, "properties": { "description": { "description": "Workflow-authored explanation of the slot's role. `null` when the workflow declares none.", @@ -91201,7 +92922,7 @@ "type": "string" }, "kind": { - "description": "Thread subtype: `\"standard\"` for ordinary threads, `\"slack_mirror\"` for the membership-strict mirror of a Slack channel, `\"slashwork_mirror\"` for the membership-strict mirror of a Slashwork group. Read-only — derived server-side at creation, never accepted from params.", + "description": "Thread subtype: `\"standard\"` for ordinary threads, `\"personal\"` for a user-and-owned-agents roster, `\"slack_mirror\"` for the membership-strict mirror of a Slack channel, or `\"slashwork_mirror\"` for the membership-strict mirror of a Slashwork group. `personal` is an explicit user-thread creation option; mirror kinds are server-derived.", "example": "string", "nullable": true, "type": "string" @@ -93165,7 +94886,6 @@ "updated_at": "string", "user": "usr_0aBcDeFgHiJkLmNoPqRsTu" }, - "nullable": true, "properties": { "acl": { "description": "Access control list for the agent. Contains a `grants` array where each entry specifies `principal_type`, `principal`, and `actions`. `null` when no ACL restrictions are applied and the agent is accessible to all members of its scope.", @@ -93942,7 +95662,6 @@ "required": true, "type": "agent_user" }, - "nullable": true, "properties": { "description": { "description": "Workflow-authored explanation of the slot's role. `null` when the workflow declares none.", @@ -94469,7 +96188,6 @@ "required": true, "type": "agent_user" }, - "nullable": true, "properties": { "description": { "description": "Workflow-authored explanation of the slot's role. `null` when the workflow declares none.", @@ -94772,7 +96490,6 @@ {} ], "items": { - "nullable": true, "type": "object" }, "nullable": true, @@ -95745,7 +97462,7 @@ "type": "string" }, "kind": { - "description": "Thread subtype: `\"standard\"` for ordinary threads, `\"slack_mirror\"` for the membership-strict mirror of a Slack channel, `\"slashwork_mirror\"` for the membership-strict mirror of a Slashwork group. Read-only — derived server-side at creation, never accepted from params.", + "description": "Thread subtype: `\"standard\"` for ordinary threads, `\"personal\"` for a user-and-owned-agents roster, `\"slack_mirror\"` for the membership-strict mirror of a Slack channel, or `\"slashwork_mirror\"` for the membership-strict mirror of a Slashwork group. `personal` is an explicit user-thread creation option; mirror kinds are server-derived.", "example": "string", "nullable": true, "type": "string" @@ -97709,7 +99426,6 @@ "updated_at": "string", "user": "usr_0aBcDeFgHiJkLmNoPqRsTu" }, - "nullable": true, "properties": { "acl": { "description": "Access control list for the agent. Contains a `grants` array where each entry specifies `principal_type`, `principal`, and `actions`. `null` when no ACL restrictions are applied and the agent is accessible to all members of its scope.", @@ -98486,7 +100202,6 @@ "required": true, "type": "agent_user" }, - "nullable": true, "properties": { "description": { "description": "Workflow-authored explanation of the slot's role. `null` when the workflow declares none.", @@ -99013,7 +100728,6 @@ "required": true, "type": "agent_user" }, - "nullable": true, "properties": { "description": { "description": "Workflow-authored explanation of the slot's role. `null` when the workflow declares none.", @@ -99316,7 +101030,6 @@ {} ], "items": { - "nullable": true, "type": "object" }, "nullable": true, @@ -104163,7 +105876,6 @@ "required": true, "type": "agent_user" }, - "nullable": true, "properties": { "description": { "description": "Workflow-authored explanation of the slot's role. `null` when the workflow declares none.", @@ -104690,7 +106402,6 @@ "required": true, "type": "agent_user" }, - "nullable": true, "properties": { "description": { "description": "Workflow-authored explanation of the slot's role. `null` when the workflow declares none.", @@ -106343,7 +108054,6 @@ "required": true, "type": "agent_user" }, - "nullable": true, "properties": { "description": { "description": "Workflow-authored explanation of the slot's role. `null` when the workflow declares none.", @@ -106870,7 +108580,6 @@ "required": true, "type": "agent_user" }, - "nullable": true, "properties": { "description": { "description": "Workflow-authored explanation of the slot's role. `null` when the workflow declares none.", @@ -109830,7 +111539,7 @@ "type": "string" }, "kind": { - "description": "Thread subtype: `\"standard\"` for ordinary threads, `\"slack_mirror\"` for the membership-strict mirror of a Slack channel, `\"slashwork_mirror\"` for the membership-strict mirror of a Slashwork group. Read-only — derived server-side at creation, never accepted from params.", + "description": "Thread subtype: `\"standard\"` for ordinary threads, `\"personal\"` for a user-and-owned-agents roster, `\"slack_mirror\"` for the membership-strict mirror of a Slack channel, or `\"slashwork_mirror\"` for the membership-strict mirror of a Slashwork group. `personal` is an explicit user-thread creation option; mirror kinds are server-derived.", "example": "string", "nullable": true, "type": "string" @@ -111794,7 +113503,6 @@ "updated_at": "string", "user": "usr_0aBcDeFgHiJkLmNoPqRsTu" }, - "nullable": true, "properties": { "acl": { "description": "Access control list for the agent. Contains a `grants` array where each entry specifies `principal_type`, `principal`, and `actions`. `null` when no ACL restrictions are applied and the agent is accessible to all members of its scope.", @@ -112571,7 +114279,6 @@ "required": true, "type": "agent_user" }, - "nullable": true, "properties": { "description": { "description": "Workflow-authored explanation of the slot's role. `null` when the workflow declares none.", @@ -113098,7 +114805,6 @@ "required": true, "type": "agent_user" }, - "nullable": true, "properties": { "description": { "description": "Workflow-authored explanation of the slot's role. `null` when the workflow declares none.", @@ -113401,7 +115107,6 @@ {} ], "items": { - "nullable": true, "type": "object" }, "nullable": true, @@ -120451,6 +122156,7 @@ }, "description": "An example description.", "due_date": "2024-01-01T00:00:00Z", + "epic": "string", "id": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "is_blocked": true, "links": { @@ -120480,6 +122186,9 @@ "parent": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "priority": 2, "sandbox": "dsb_0aBcDeFgHiJkLmNoPqRsTu", + "source_id": "string", + "source_scope": "string", + "source_type": "string", "status": "open", "subtasks_count": 1, "tags": [ @@ -120524,6 +122233,7 @@ }, "description": "An example description.", "due_date": "2024-01-01T00:00:00Z", + "epic": "string", "id": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "is_blocked": true, "links": { @@ -120553,6 +122263,9 @@ "parent": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "priority": 2, "sandbox": "dsb_0aBcDeFgHiJkLmNoPqRsTu", + "source_id": "string", + "source_scope": "string", + "source_type": "string", "status": "open", "subtasks_count": 1, "tags": [ @@ -120595,6 +122308,7 @@ }, "description": "An example description.", "due_date": "2024-01-01T00:00:00Z", + "epic": "string", "id": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "is_blocked": true, "links": { @@ -120624,6 +122338,9 @@ "parent": "tsk_0aBcDeFgHiJkLmNoPqRsTu", "priority": 2, "sandbox": "dsb_0aBcDeFgHiJkLmNoPqRsTu", + "source_id": "string", + "source_scope": "string", + "source_type": "string", "status": "open", "subtasks_count": 1, "tags": [ @@ -120819,6 +122536,12 @@ "nullable": true, "type": "string" }, + "epic": { + "description": "Free-form grouping label. `null` when the task is not in an epic.", + "example": "string", + "nullable": true, + "type": "string" + }, "id": { "description": "Task ID (`tsk_...`).", "example": "tsk_0aBcDeFgHiJkLmNoPqRsTu", @@ -120980,6 +122703,24 @@ "nullable": true, "type": "string" }, + "source_id": { + "description": "Source object identity (for example `ArchAstro/firstlanding`). `null` when the task has no source.", + "example": "string", + "nullable": true, + "type": "string" + }, + "source_scope": { + "description": "Container of the work this task is about (for example `github.com`). `null` when the task has no source. Set together with `source_type` and `source_id`.", + "example": "string", + "nullable": true, + "type": "string" + }, + "source_type": { + "description": "Kind of source object (for example `repository`). `null` when the task has no source.", + "example": "string", + "nullable": true, + "type": "string" + }, "status": { "description": "Current status of the task. One of `\"open\"`, `\"in_progress\"`, or `\"done\"`.", "example": "open", diff --git a/test/contract/v1/event_subscription_deliveries_contract_test.exs b/test/contract/v1/event_subscription_deliveries_contract_test.exs new file mode 100644 index 0000000..404b4fa --- /dev/null +++ b/test/contract/v1/event_subscription_deliveries_contract_test.exs @@ -0,0 +1,61 @@ +# Copyright (c) 2026 ArchAstro Inc. Licensed under the MIT License. +# This file is auto-generated by @archastro/sdk-generator. Do not edit. +# Content hash: 7ddaa08a663e + +defmodule ArchAstro.SDK.Contract.V1.EventSubscriptionDeliveriesTest do + use ExUnit.Case, async: false + + setup do + {:ok, client: ArchAstro.SDK.ContractSupport.client()} + end + + test "POST /api/v1/event_subscription_deliveries/{delivery}/acknowledge", %{client: client} do + assert {:ok, :ok} = + ArchAstro.SDK.V1.EventSubscriptionDeliveries.acknowledge( + client, + "test-value", + %ArchAstro.SDK.Types.Operations.PostApiV1EventSubscriptionDeliveriesDeliveryAcknowledge.Input{ + receipt_handle: "test-value" + } + ) + end + + test "POST /api/v1/event_subscription_deliveries/{delivery}/acknowledge returns 401" do + client = ArchAstro.SDK.ContractSupport.error_client(401) + + assert {:error, %ArchAstro.SDK.Error{status: 401}} = + ArchAstro.SDK.V1.EventSubscriptionDeliveries.acknowledge( + client, + "test-value", + %ArchAstro.SDK.Types.Operations.PostApiV1EventSubscriptionDeliveriesDeliveryAcknowledge.Input{ + receipt_handle: "test-value" + } + ) + end + + test "POST /api/v1/event_subscription_deliveries/{delivery}/acknowledge returns 404" do + client = ArchAstro.SDK.ContractSupport.error_client(404) + + assert {:error, %ArchAstro.SDK.Error{status: 404}} = + ArchAstro.SDK.V1.EventSubscriptionDeliveries.acknowledge( + client, + "test-value", + %ArchAstro.SDK.Types.Operations.PostApiV1EventSubscriptionDeliveriesDeliveryAcknowledge.Input{ + receipt_handle: "test-value" + } + ) + end + + test "POST /api/v1/event_subscription_deliveries/{delivery}/acknowledge returns 409" do + client = ArchAstro.SDK.ContractSupport.error_client(409) + + assert {:error, %ArchAstro.SDK.Error{status: 409}} = + ArchAstro.SDK.V1.EventSubscriptionDeliveries.acknowledge( + client, + "test-value", + %ArchAstro.SDK.Types.Operations.PostApiV1EventSubscriptionDeliveriesDeliveryAcknowledge.Input{ + receipt_handle: "test-value" + } + ) + end +end diff --git a/test/contract/v1/event_subscriptions_contract_test.exs b/test/contract/v1/event_subscriptions_contract_test.exs new file mode 100644 index 0000000..c8023a9 --- /dev/null +++ b/test/contract/v1/event_subscriptions_contract_test.exs @@ -0,0 +1,258 @@ +# Copyright (c) 2026 ArchAstro Inc. Licensed under the MIT License. +# This file is auto-generated by @archastro/sdk-generator. Do not edit. +# Content hash: f3a53570f2d6 + +defmodule ArchAstro.SDK.Contract.V1.EventSubscriptionsTest do + use ExUnit.Case, async: false + + setup do + {:ok, client: ArchAstro.SDK.ContractSupport.client()} + end + + test "GET /api/v1/event_subscriptions", %{client: client} do + assert {:ok, %ArchAstro.SDK.Types.EventSubscriptionPage{}} = + ArchAstro.SDK.V1.EventSubscriptions.list( + client, + %ArchAstro.SDK.Types.Operations.GetApiV1EventSubscriptions.Params{} + ) + end + + test "GET /api/v1/event_subscriptions returns 401" do + client = ArchAstro.SDK.ContractSupport.error_client(401) + + assert {:error, %ArchAstro.SDK.Error{status: 401}} = + ArchAstro.SDK.V1.EventSubscriptions.list( + client, + %ArchAstro.SDK.Types.Operations.GetApiV1EventSubscriptions.Params{} + ) + end + + test "GET /api/v1/event_subscriptions returns 422" do + client = ArchAstro.SDK.ContractSupport.error_client(422) + + assert {:error, %ArchAstro.SDK.Error{status: 422}} = + ArchAstro.SDK.V1.EventSubscriptions.list( + client, + %ArchAstro.SDK.Types.Operations.GetApiV1EventSubscriptions.Params{} + ) + end + + test "POST /api/v1/event_subscriptions", %{client: client} do + assert {:ok, %ArchAstro.SDK.Types.EventSubscription{}} = + ArchAstro.SDK.V1.EventSubscriptions.create( + client, + %ArchAstro.SDK.Types.Operations.PostApiV1EventSubscriptions.Input{ + event_names: [], + name: "test-name" + } + ) + end + + test "POST /api/v1/event_subscriptions returns 401" do + client = ArchAstro.SDK.ContractSupport.error_client(401) + + assert {:error, %ArchAstro.SDK.Error{status: 401}} = + ArchAstro.SDK.V1.EventSubscriptions.create( + client, + %ArchAstro.SDK.Types.Operations.PostApiV1EventSubscriptions.Input{ + event_names: [], + name: "test-name" + } + ) + end + + test "POST /api/v1/event_subscriptions returns 422" do + client = ArchAstro.SDK.ContractSupport.error_client(422) + + assert {:error, %ArchAstro.SDK.Error{status: 422}} = + ArchAstro.SDK.V1.EventSubscriptions.create( + client, + %ArchAstro.SDK.Types.Operations.PostApiV1EventSubscriptions.Input{ + event_names: [], + name: "test-name" + } + ) + end + + test "DELETE /api/v1/event_subscriptions/{subscription}", %{client: client} do + assert {:ok, :ok} = ArchAstro.SDK.V1.EventSubscriptions.delete(client, "test-value") + end + + test "DELETE /api/v1/event_subscriptions/{subscription} returns 401" do + client = ArchAstro.SDK.ContractSupport.error_client(401) + + assert {:error, %ArchAstro.SDK.Error{status: 401}} = + ArchAstro.SDK.V1.EventSubscriptions.delete(client, "test-value") + end + + test "DELETE /api/v1/event_subscriptions/{subscription} returns 404" do + client = ArchAstro.SDK.ContractSupport.error_client(404) + + assert {:error, %ArchAstro.SDK.Error{status: 404}} = + ArchAstro.SDK.V1.EventSubscriptions.delete(client, "test-value") + end + + test "GET /api/v1/event_subscriptions/{subscription}", %{client: client} do + assert {:ok, %ArchAstro.SDK.Types.EventSubscription{}} = + ArchAstro.SDK.V1.EventSubscriptions.get(client, "test-value") + end + + test "GET /api/v1/event_subscriptions/{subscription} returns 401" do + client = ArchAstro.SDK.ContractSupport.error_client(401) + + assert {:error, %ArchAstro.SDK.Error{status: 401}} = + ArchAstro.SDK.V1.EventSubscriptions.get(client, "test-value") + end + + test "GET /api/v1/event_subscriptions/{subscription} returns 404" do + client = ArchAstro.SDK.ContractSupport.error_client(404) + + assert {:error, %ArchAstro.SDK.Error{status: 404}} = + ArchAstro.SDK.V1.EventSubscriptions.get(client, "test-value") + end + + test "PATCH /api/v1/event_subscriptions/{subscription}", %{client: client} do + assert {:ok, %ArchAstro.SDK.Types.EventSubscription{}} = + ArchAstro.SDK.V1.EventSubscriptions.update( + client, + "test-value", + %ArchAstro.SDK.Types.Operations.PatchApiV1EventSubscriptionsSubscription.Input{} + ) + end + + test "PATCH /api/v1/event_subscriptions/{subscription} returns 401" do + client = ArchAstro.SDK.ContractSupport.error_client(401) + + assert {:error, %ArchAstro.SDK.Error{status: 401}} = + ArchAstro.SDK.V1.EventSubscriptions.update( + client, + "test-value", + %ArchAstro.SDK.Types.Operations.PatchApiV1EventSubscriptionsSubscription.Input{} + ) + end + + test "PATCH /api/v1/event_subscriptions/{subscription} returns 404" do + client = ArchAstro.SDK.ContractSupport.error_client(404) + + assert {:error, %ArchAstro.SDK.Error{status: 404}} = + ArchAstro.SDK.V1.EventSubscriptions.update( + client, + "test-value", + %ArchAstro.SDK.Types.Operations.PatchApiV1EventSubscriptionsSubscription.Input{} + ) + end + + test "PATCH /api/v1/event_subscriptions/{subscription} returns 422" do + client = ArchAstro.SDK.ContractSupport.error_client(422) + + assert {:error, %ArchAstro.SDK.Error{status: 422}} = + ArchAstro.SDK.V1.EventSubscriptions.update( + client, + "test-value", + %ArchAstro.SDK.Types.Operations.PatchApiV1EventSubscriptionsSubscription.Input{} + ) + end + + test "POST /api/v1/event_subscriptions/{subscription}/claim", %{client: client} do + assert {:ok, %ArchAstro.SDK.Types.EventSubscriptionClaim{}} = + ArchAstro.SDK.V1.EventSubscriptions.claim( + client, + "test-value", + %ArchAstro.SDK.Types.Operations.PostApiV1EventSubscriptionsSubscriptionClaim.Input{} + ) + end + + test "POST /api/v1/event_subscriptions/{subscription}/claim returns 401" do + client = ArchAstro.SDK.ContractSupport.error_client(401) + + assert {:error, %ArchAstro.SDK.Error{status: 401}} = + ArchAstro.SDK.V1.EventSubscriptions.claim( + client, + "test-value", + %ArchAstro.SDK.Types.Operations.PostApiV1EventSubscriptionsSubscriptionClaim.Input{} + ) + end + + test "POST /api/v1/event_subscriptions/{subscription}/claim returns 404" do + client = ArchAstro.SDK.ContractSupport.error_client(404) + + assert {:error, %ArchAstro.SDK.Error{status: 404}} = + ArchAstro.SDK.V1.EventSubscriptions.claim( + client, + "test-value", + %ArchAstro.SDK.Types.Operations.PostApiV1EventSubscriptionsSubscriptionClaim.Input{} + ) + end + + test "POST /api/v1/event_subscriptions/{subscription}/claim returns 422" do + client = ArchAstro.SDK.ContractSupport.error_client(422) + + assert {:error, %ArchAstro.SDK.Error{status: 422}} = + ArchAstro.SDK.V1.EventSubscriptions.claim( + client, + "test-value", + %ArchAstro.SDK.Types.Operations.PostApiV1EventSubscriptionsSubscriptionClaim.Input{} + ) + end + + test "GET /api/v1/event_subscriptions/{subscription}/head", %{client: client} do + assert {:ok, %ArchAstro.SDK.Types.EventSubscriptionHead{}} = + ArchAstro.SDK.V1.EventSubscriptions.head(client, "test-value") + end + + test "GET /api/v1/event_subscriptions/{subscription}/head returns 401" do + client = ArchAstro.SDK.ContractSupport.error_client(401) + + assert {:error, %ArchAstro.SDK.Error{status: 401}} = + ArchAstro.SDK.V1.EventSubscriptions.head(client, "test-value") + end + + test "GET /api/v1/event_subscriptions/{subscription}/head returns 404" do + client = ArchAstro.SDK.ContractSupport.error_client(404) + + assert {:error, %ArchAstro.SDK.Error{status: 404}} = + ArchAstro.SDK.V1.EventSubscriptions.head(client, "test-value") + end + + test "GET /api/v1/event_subscriptions/{subscription}/queue", %{client: client} do + assert {:ok, %ArchAstro.SDK.Types.EventSubscriptionQueue{}} = + ArchAstro.SDK.V1.EventSubscriptions.queue( + client, + "test-value", + %ArchAstro.SDK.Types.Operations.GetApiV1EventSubscriptionsSubscriptionQueue.Params{} + ) + end + + test "GET /api/v1/event_subscriptions/{subscription}/queue returns 400" do + client = ArchAstro.SDK.ContractSupport.error_client(400) + + assert {:error, %ArchAstro.SDK.Error{status: 400}} = + ArchAstro.SDK.V1.EventSubscriptions.queue( + client, + "test-value", + %ArchAstro.SDK.Types.Operations.GetApiV1EventSubscriptionsSubscriptionQueue.Params{} + ) + end + + test "GET /api/v1/event_subscriptions/{subscription}/queue returns 401" do + client = ArchAstro.SDK.ContractSupport.error_client(401) + + assert {:error, %ArchAstro.SDK.Error{status: 401}} = + ArchAstro.SDK.V1.EventSubscriptions.queue( + client, + "test-value", + %ArchAstro.SDK.Types.Operations.GetApiV1EventSubscriptionsSubscriptionQueue.Params{} + ) + end + + test "GET /api/v1/event_subscriptions/{subscription}/queue returns 404" do + client = ArchAstro.SDK.ContractSupport.error_client(404) + + assert {:error, %ArchAstro.SDK.Error{status: 404}} = + ArchAstro.SDK.V1.EventSubscriptions.queue( + client, + "test-value", + %ArchAstro.SDK.Types.Operations.GetApiV1EventSubscriptionsSubscriptionQueue.Params{} + ) + end +end diff --git a/test/contract/v1/team_memberships_contract_test.exs b/test/contract/v1/team_memberships_contract_test.exs index 9a63031..70c229d 100644 --- a/test/contract/v1/team_memberships_contract_test.exs +++ b/test/contract/v1/team_memberships_contract_test.exs @@ -1,6 +1,6 @@ # Copyright (c) 2026 ArchAstro Inc. Licensed under the MIT License. # This file is auto-generated by @archastro/sdk-generator. Do not edit. -# Content hash: 5c0fa98bbafc +# Content hash: 6e759a21fb76 defmodule ArchAstro.SDK.Contract.V1.TeamMembershipsTest do use ExUnit.Case, async: false @@ -48,6 +48,13 @@ defmodule ArchAstro.SDK.Contract.V1.TeamMembershipsTest do ArchAstro.SDK.V1.TeamMemberships.delete(client, "test-value") end + test "DELETE /api/v1/team_memberships/{team_membership} returns 403" do + client = ArchAstro.SDK.ContractSupport.error_client(403) + + assert {:error, %ArchAstro.SDK.Error{status: 403}} = + ArchAstro.SDK.V1.TeamMemberships.delete(client, "test-value") + end + test "DELETE /api/v1/team_memberships/{team_membership} returns 404" do client = ArchAstro.SDK.ContractSupport.error_client(404) diff --git a/test/contract/v1/threads_contract_test.exs b/test/contract/v1/threads_contract_test.exs index 97655cc..ad7d686 100644 --- a/test/contract/v1/threads_contract_test.exs +++ b/test/contract/v1/threads_contract_test.exs @@ -1,6 +1,6 @@ # Copyright (c) 2026 ArchAstro Inc. Licensed under the MIT License. # This file is auto-generated by @archastro/sdk-generator. Do not edit. -# Content hash: 54895de69fd6 +# Content hash: bec1a0a7e6c7 defmodule ArchAstro.SDK.Contract.V1.ThreadsTest do use ExUnit.Case, async: false @@ -484,6 +484,17 @@ defmodule ArchAstro.SDK.Contract.V1.ThreadsTest do ) end + test "GET /api/v1/threads/{thread}/trajectories returns 400" do + client = ArchAstro.SDK.ContractSupport.error_client(400) + + assert {:error, %ArchAstro.SDK.Error{status: 400}} = + ArchAstro.SDK.V1.Threads.trajectories( + client, + "test-value", + %ArchAstro.SDK.Types.Operations.GetApiV1ThreadsThreadTrajectories.Params{} + ) + end + test "GET /api/v1/threads/{thread}/trajectories returns 401" do client = ArchAstro.SDK.ContractSupport.error_client(401)