anthropic 2.1.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (172) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +23 -0
  3. data/README.md +1 -1
  4. data/lib/anthropic/client.rb +8 -0
  5. data/lib/anthropic/helpers/bedrock/client.rb +5 -0
  6. data/lib/anthropic/helpers/bedrock/mantle_client.rb +5 -0
  7. data/lib/anthropic/helpers/stainless_helper_header.rb +1 -0
  8. data/lib/anthropic/helpers/threads/beta_message_thread.rb +635 -0
  9. data/lib/anthropic/helpers/tools/runner.rb +79 -11
  10. data/lib/anthropic/helpers/vertex/client.rb +5 -0
  11. data/lib/anthropic/internal/report_page_cursor.rb +2 -2
  12. data/lib/anthropic/internal/tracing.rb +2 -0
  13. data/lib/anthropic/models/anthropic_beta.rb +6 -0
  14. data/lib/anthropic/models/beta/beta_message_thread_param.rb +61 -0
  15. data/lib/anthropic/models/beta/beta_thread_continue_params.rb +29 -0
  16. data/lib/anthropic/models/beta/beta_thread_create_params.rb +21 -0
  17. data/lib/anthropic/models/beta/message_create_params.rb +13 -1
  18. data/lib/anthropic/models/beta/messages/batch_create_params.rb +13 -1
  19. data/lib/anthropic/models/beta/organization/analytics/beta_analytics_cost_group.rb +271 -0
  20. data/lib/anthropic/models/beta/organization/analytics/beta_analytics_cost_group_by.rb +40 -0
  21. data/lib/anthropic/models/beta/organization/analytics/beta_analytics_cost_item.rb +57 -0
  22. data/lib/anthropic/models/beta/organization/analytics/beta_analytics_cost_metrics.rb +57 -0
  23. data/lib/anthropic/models/beta/organization/analytics/beta_analytics_cost_order_by.rb +22 -0
  24. data/lib/anthropic/models/beta/organization/analytics/beta_analytics_usage_group.rb +247 -0
  25. data/lib/anthropic/models/beta/organization/analytics/beta_analytics_usage_group_by.rb +38 -0
  26. data/lib/anthropic/models/beta/organization/analytics/beta_analytics_usage_item.rb +57 -0
  27. data/lib/anthropic/models/beta/organization/analytics/beta_analytics_usage_metrics.rb +79 -0
  28. data/lib/anthropic/models/beta/organization/analytics/beta_analytics_usage_order_by.rb +24 -0
  29. data/lib/anthropic/models/beta/organization/analytics/cost_list_params.rb +360 -0
  30. data/lib/anthropic/models/beta/organization/analytics/usage_list_params.rb +353 -0
  31. data/lib/anthropic/models/beta/organization/beta_analytics_actor.rb +81 -0
  32. data/lib/anthropic/models/beta/organization/beta_analytics_actor_type.rb +22 -0
  33. data/lib/anthropic/models/beta/organization/beta_analytics_api_actor.rb +27 -0
  34. data/lib/anthropic/models/beta/organization/beta_analytics_federated_actor.rb +42 -0
  35. data/lib/anthropic/models/beta/organization/beta_analytics_federated_actor_aws_provider.rb +35 -0
  36. data/lib/anthropic/models/beta/organization/beta_analytics_federated_actor_azure_provider.rb +27 -0
  37. data/lib/anthropic/models/beta/organization/beta_analytics_federated_actor_gcp_provider.rb +27 -0
  38. data/lib/anthropic/models/beta/organization/beta_analytics_federated_actor_oidc_provider.rb +27 -0
  39. data/lib/anthropic/models/beta/organization/beta_analytics_federated_actor_provider.rb +72 -0
  40. data/lib/anthropic/models/beta/organization/beta_analytics_grouped_cost_type.rb +21 -0
  41. data/lib/anthropic/models/beta/organization/beta_analytics_report_user_actor.rb +65 -0
  42. data/lib/anthropic/models/beta/organization/beta_analytics_service_account_actor.rb +27 -0
  43. data/lib/anthropic/models/beta/organization/beta_analytics_service_tier.rb +23 -0
  44. data/lib/anthropic/models/beta/organization/beta_analytics_speed.rb +19 -0
  45. data/lib/anthropic/models/beta/organization/beta_analytics_time_bucket_width.rb +20 -0
  46. data/lib/anthropic/models/beta/organization/beta_analytics_usage_cost_inference_geo.rb +19 -0
  47. data/lib/anthropic/models/beta/organization/beta_analytics_usage_cost_product_filter.rb +34 -0
  48. data/lib/anthropic/models/beta/organization/beta_analytics_usage_cost_sort_order.rb +19 -0
  49. data/lib/anthropic/models/beta/organization/beta_organization_rate_limit.rb +2 -1
  50. data/lib/anthropic/models/beta/organization/beta_plugin.rb +12 -6
  51. data/lib/anthropic/models/beta/organization/beta_plugin_content_scan.rb +11 -5
  52. data/lib/anthropic/models/beta/organization/workspaces/beta_workspace_rate_limit.rb +2 -1
  53. data/lib/anthropic/models/organization/organization_rate_limit.rb +2 -1
  54. data/lib/anthropic/models/organization/workspaces/workspace_rate_limit.rb +2 -1
  55. data/lib/anthropic/resources/beta/messages.rb +78 -4
  56. data/lib/anthropic/resources/beta/organization/analytics/cost.rb +175 -0
  57. data/lib/anthropic/resources/beta/organization/analytics/cost_report.rb +13 -6
  58. data/lib/anthropic/resources/beta/organization/analytics/usage.rb +176 -0
  59. data/lib/anthropic/resources/beta/organization/analytics/usage_report.rb +9 -2
  60. data/lib/anthropic/resources/beta/organization/analytics/user_cost_report.rb +12 -5
  61. data/lib/anthropic/resources/beta/organization/analytics/user_usage_report.rb +15 -8
  62. data/lib/anthropic/resources/beta/organization/analytics.rb +8 -0
  63. data/lib/anthropic/resources/beta/organization/plugin_marketplaces.rb +6 -6
  64. data/lib/anthropic/resources/beta/organization/plugins.rb +12 -9
  65. data/lib/anthropic/version.rb +1 -1
  66. data/lib/anthropic.rb +36 -0
  67. data/rbi/anthropic/client.rbi +5 -0
  68. data/rbi/anthropic/helpers/bedrock/client.rbi +5 -0
  69. data/rbi/anthropic/helpers/bedrock/mantle_client.rbi +5 -0
  70. data/rbi/anthropic/helpers/threads/beta_message_thread.rbi +100 -0
  71. data/rbi/anthropic/helpers/vertex/client.rbi +5 -0
  72. data/rbi/anthropic/internal/tracing.rbi +4 -0
  73. data/rbi/anthropic/models/anthropic_beta.rbi +10 -0
  74. data/rbi/anthropic/models/beta/beta_message_thread_param.rbi +80 -0
  75. data/rbi/anthropic/models/beta/beta_thread_continue_params.rbi +43 -0
  76. data/rbi/anthropic/models/beta/beta_thread_create_params.rbi +31 -0
  77. data/rbi/anthropic/models/beta/message_create_params.rbi +37 -0
  78. data/rbi/anthropic/models/beta/messages/batch_create_params.rbi +37 -0
  79. data/rbi/anthropic/models/beta/organization/analytics/beta_analytics_cost_group.rbi +439 -0
  80. data/rbi/anthropic/models/beta/organization/analytics/beta_analytics_cost_group_by.rbi +140 -0
  81. data/rbi/anthropic/models/beta/organization/analytics/beta_analytics_cost_item.rbi +110 -0
  82. data/rbi/anthropic/models/beta/organization/analytics/beta_analytics_cost_metrics.rbi +79 -0
  83. data/rbi/anthropic/models/beta/organization/analytics/beta_analytics_cost_order_by.rbi +50 -0
  84. data/rbi/anthropic/models/beta/organization/analytics/beta_analytics_usage_group.rbi +399 -0
  85. data/rbi/anthropic/models/beta/organization/analytics/beta_analytics_usage_group_by.rbi +130 -0
  86. data/rbi/anthropic/models/beta/organization/analytics/beta_analytics_usage_item.rbi +110 -0
  87. data/rbi/anthropic/models/beta/organization/analytics/beta_analytics_usage_metrics.rbi +120 -0
  88. data/rbi/anthropic/models/beta/organization/analytics/beta_analytics_usage_order_by.rbi +60 -0
  89. data/rbi/anthropic/models/beta/organization/analytics/cost_list_params.rbi +624 -0
  90. data/rbi/anthropic/models/beta/organization/analytics/usage_list_params.rbi +612 -0
  91. data/rbi/anthropic/models/beta/organization/beta_analytics_actor.rbi +134 -0
  92. data/rbi/anthropic/models/beta/organization/beta_analytics_actor_type.rbi +54 -0
  93. data/rbi/anthropic/models/beta/organization/beta_analytics_api_actor.rbi +40 -0
  94. data/rbi/anthropic/models/beta/organization/beta_analytics_federated_actor.rbi +75 -0
  95. data/rbi/anthropic/models/beta/organization/beta_analytics_federated_actor_aws_provider.rbi +54 -0
  96. data/rbi/anthropic/models/beta/organization/beta_analytics_federated_actor_azure_provider.rbi +42 -0
  97. data/rbi/anthropic/models/beta/organization/beta_analytics_federated_actor_gcp_provider.rbi +42 -0
  98. data/rbi/anthropic/models/beta/organization/beta_analytics_federated_actor_oidc_provider.rbi +42 -0
  99. data/rbi/anthropic/models/beta/organization/beta_analytics_federated_actor_provider.rbi +107 -0
  100. data/rbi/anthropic/models/beta/organization/beta_analytics_grouped_cost_type.rbi +53 -0
  101. data/rbi/anthropic/models/beta/organization/beta_analytics_report_user_actor.rbi +94 -0
  102. data/rbi/anthropic/models/beta/organization/beta_analytics_service_account_actor.rbi +42 -0
  103. data/rbi/anthropic/models/beta/organization/beta_analytics_service_tier.rbi +63 -0
  104. data/rbi/anthropic/models/beta/organization/beta_analytics_speed.rbi +40 -0
  105. data/rbi/anthropic/models/beta/organization/beta_analytics_time_bucket_width.rbi +48 -0
  106. data/rbi/anthropic/models/beta/organization/beta_analytics_usage_cost_inference_geo.rbi +43 -0
  107. data/rbi/anthropic/models/beta/organization/beta_analytics_usage_cost_product_filter.rbi +98 -0
  108. data/rbi/anthropic/models/beta/organization/beta_analytics_usage_cost_sort_order.rbi +43 -0
  109. data/rbi/anthropic/models/beta/organization/beta_organization_rate_limit.rbi +4 -2
  110. data/rbi/anthropic/models/beta/organization/beta_plugin.rbi +20 -8
  111. data/rbi/anthropic/models/beta/organization/beta_plugin_content_scan.rbi +15 -6
  112. data/rbi/anthropic/models/beta/organization/workspaces/beta_workspace_rate_limit.rbi +4 -2
  113. data/rbi/anthropic/models/organization/organization_rate_limit.rbi +4 -2
  114. data/rbi/anthropic/models/organization/workspaces/workspace_rate_limit.rbi +4 -2
  115. data/rbi/anthropic/resources/beta/messages.rbi +191 -0
  116. data/rbi/anthropic/resources/beta/organization/analytics/cost.rbi +245 -0
  117. data/rbi/anthropic/resources/beta/organization/analytics/cost_report.rbi +12 -5
  118. data/rbi/anthropic/resources/beta/organization/analytics/usage.rbi +240 -0
  119. data/rbi/anthropic/resources/beta/organization/analytics/usage_report.rbi +9 -2
  120. data/rbi/anthropic/resources/beta/organization/analytics/user_cost_report.rbi +12 -5
  121. data/rbi/anthropic/resources/beta/organization/analytics/user_usage_report.rbi +14 -7
  122. data/rbi/anthropic/resources/beta/organization/analytics.rbi +10 -0
  123. data/rbi/anthropic/resources/beta/organization/plugin_marketplaces.rbi +6 -6
  124. data/rbi/anthropic/resources/beta/organization/plugins.rbi +12 -9
  125. data/rbi/lib/anthropic/helpers/stainless_helper_header.rbi +2 -0
  126. data/sig/anthropic/client.rbs +2 -0
  127. data/sig/anthropic/helpers/bedrock/client.rbs +2 -0
  128. data/sig/anthropic/helpers/threads/beta_message_thread.rbs +40 -0
  129. data/sig/anthropic/helpers/tools/runner.rbs +40 -0
  130. data/sig/anthropic/helpers/vertex/client.rbs +2 -0
  131. data/sig/anthropic/internal/tracing.rbs +2 -0
  132. data/sig/anthropic/models/anthropic_beta.rbs +4 -0
  133. data/sig/anthropic/models/beta/beta_message_thread_param.rbs +40 -0
  134. data/sig/anthropic/models/beta/beta_thread_continue_params.rbs +20 -0
  135. data/sig/anthropic/models/beta/beta_thread_create_params.rbs +17 -0
  136. data/sig/anthropic/models/beta/message_create_params.rbs +5 -0
  137. data/sig/anthropic/models/beta/messages/batch_create_params.rbs +5 -0
  138. data/sig/anthropic/models/beta/organization/analytics/beta_analytics_cost_group.rbs +126 -0
  139. data/sig/anthropic/models/beta/organization/analytics/beta_analytics_cost_group_by.rbs +60 -0
  140. data/sig/anthropic/models/beta/organization/analytics/beta_analytics_cost_item.rbs +41 -0
  141. data/sig/anthropic/models/beta/organization/analytics/beta_analytics_cost_metrics.rbs +41 -0
  142. data/sig/anthropic/models/beta/organization/analytics/beta_analytics_cost_order_by.rbs +21 -0
  143. data/sig/anthropic/models/beta/organization/analytics/beta_analytics_usage_group.rbs +116 -0
  144. data/sig/anthropic/models/beta/organization/analytics/beta_analytics_usage_group_by.rbs +56 -0
  145. data/sig/anthropic/models/beta/organization/analytics/beta_analytics_usage_item.rbs +41 -0
  146. data/sig/anthropic/models/beta/organization/analytics/beta_analytics_usage_metrics.rbs +56 -0
  147. data/sig/anthropic/models/beta/organization/analytics/beta_analytics_usage_order_by.rbs +28 -0
  148. data/sig/anthropic/models/beta/organization/analytics/cost_list_params.rbs +188 -0
  149. data/sig/anthropic/models/beta/organization/analytics/usage_list_params.rbs +188 -0
  150. data/sig/anthropic/models/beta/organization/beta_analytics_actor.rbs +67 -0
  151. data/sig/anthropic/models/beta/organization/beta_analytics_actor_type.rbs +21 -0
  152. data/sig/anthropic/models/beta/organization/beta_analytics_api_actor.rbs +19 -0
  153. data/sig/anthropic/models/beta/organization/beta_analytics_federated_actor.rbs +34 -0
  154. data/sig/anthropic/models/beta/organization/beta_analytics_federated_actor_aws_provider.rbs +30 -0
  155. data/sig/anthropic/models/beta/organization/beta_analytics_federated_actor_azure_provider.rbs +20 -0
  156. data/sig/anthropic/models/beta/organization/beta_analytics_federated_actor_gcp_provider.rbs +20 -0
  157. data/sig/anthropic/models/beta/organization/beta_analytics_federated_actor_oidc_provider.rbs +20 -0
  158. data/sig/anthropic/models/beta/organization/beta_analytics_federated_actor_provider.rbs +60 -0
  159. data/sig/anthropic/models/beta/organization/beta_analytics_grouped_cost_type.rbs +21 -0
  160. data/sig/anthropic/models/beta/organization/beta_analytics_report_user_actor.rbs +44 -0
  161. data/sig/anthropic/models/beta/organization/beta_analytics_service_account_actor.rbs +26 -0
  162. data/sig/anthropic/models/beta/organization/beta_analytics_service_tier.rbs +28 -0
  163. data/sig/anthropic/models/beta/organization/beta_analytics_speed.rbs +18 -0
  164. data/sig/anthropic/models/beta/organization/beta_analytics_time_bucket_width.rbs +19 -0
  165. data/sig/anthropic/models/beta/organization/beta_analytics_usage_cost_inference_geo.rbs +18 -0
  166. data/sig/anthropic/models/beta/organization/beta_analytics_usage_cost_product_filter.rbs +40 -0
  167. data/sig/anthropic/models/beta/organization/beta_analytics_usage_cost_sort_order.rbs +18 -0
  168. data/sig/anthropic/resources/beta/messages.rbs +33 -0
  169. data/sig/anthropic/resources/beta/organization/analytics/cost.rbs +46 -0
  170. data/sig/anthropic/resources/beta/organization/analytics/usage.rbs +46 -0
  171. data/sig/anthropic/resources/beta/organization/analytics.rbs +4 -0
  172. metadata +111 -2
@@ -0,0 +1,79 @@
1
+ # typed: strong
2
+
3
+ module Anthropic
4
+ module Models
5
+ module Beta
6
+ module Organization
7
+ module Analytics
8
+ class BetaAnalyticsCostMetrics < Anthropic::Internal::Type::BaseModel
9
+ OrHash =
10
+ T.type_alias do
11
+ T.any(
12
+ Anthropic::Beta::Organization::Analytics::BetaAnalyticsCostMetrics,
13
+ Anthropic::Internal::AnyHash
14
+ )
15
+ end
16
+
17
+ # Amount (post-discount, pre-credit) in fractional cents (minor units).
18
+ sig { returns(String) }
19
+ attr_accessor :amount
20
+
21
+ # Currency code for the cost amount. Currently always `"USD"`.
22
+ sig { returns(String) }
23
+ attr_accessor :currency
24
+
25
+ # List-price amount (pre-discount) in fractional cents.
26
+ sig { returns(String) }
27
+ attr_accessor :list_amount
28
+
29
+ # Number of API requests in this row's scope. Null when `group_by` includes
30
+ # `cost_type` or `token_type` (the count has no per-component attribution; read it
31
+ # from the ungrouped response). For sandbox / code-execution events, this counts
32
+ # execution spans rather than HTTP requests (these rows surface with
33
+ # `product: null`).
34
+ sig { returns(T.nilable(Integer)) }
35
+ attr_accessor :requests
36
+
37
+ # The cost of one row.
38
+ sig do
39
+ params(
40
+ amount: String,
41
+ currency: String,
42
+ list_amount: String,
43
+ requests: T.nilable(Integer)
44
+ ).returns(T.attached_class)
45
+ end
46
+ def self.new(
47
+ # Amount (post-discount, pre-credit) in fractional cents (minor units).
48
+ amount:,
49
+ # Currency code for the cost amount. Currently always `"USD"`.
50
+ currency:,
51
+ # List-price amount (pre-discount) in fractional cents.
52
+ list_amount:,
53
+ # Number of API requests in this row's scope. Null when `group_by` includes
54
+ # `cost_type` or `token_type` (the count has no per-component attribution; read it
55
+ # from the ungrouped response). For sandbox / code-execution events, this counts
56
+ # execution spans rather than HTTP requests (these rows surface with
57
+ # `product: null`).
58
+ requests:
59
+ )
60
+ end
61
+
62
+ sig do
63
+ override.returns(
64
+ {
65
+ amount: String,
66
+ currency: String,
67
+ list_amount: String,
68
+ requests: T.nilable(Integer)
69
+ }
70
+ )
71
+ end
72
+ def to_hash
73
+ end
74
+ end
75
+ end
76
+ end
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,50 @@
1
+ # typed: strong
2
+
3
+ module Anthropic
4
+ module Models
5
+ module Beta
6
+ module Organization
7
+ module Analytics
8
+ module BetaAnalyticsCostOrderBy
9
+ extend Anthropic::Internal::Type::Enum
10
+
11
+ TaggedSymbol =
12
+ T.type_alias do
13
+ T.all(
14
+ Symbol,
15
+ Anthropic::Beta::Organization::Analytics::BetaAnalyticsCostOrderBy
16
+ )
17
+ end
18
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
19
+
20
+ AMOUNT =
21
+ T.let(
22
+ :amount,
23
+ Anthropic::Beta::Organization::Analytics::BetaAnalyticsCostOrderBy::TaggedSymbol
24
+ )
25
+ LIST_AMOUNT =
26
+ T.let(
27
+ :list_amount,
28
+ Anthropic::Beta::Organization::Analytics::BetaAnalyticsCostOrderBy::TaggedSymbol
29
+ )
30
+ TIME =
31
+ T.let(
32
+ :time,
33
+ Anthropic::Beta::Organization::Analytics::BetaAnalyticsCostOrderBy::TaggedSymbol
34
+ )
35
+
36
+ sig do
37
+ override.returns(
38
+ T::Array[
39
+ Anthropic::Beta::Organization::Analytics::BetaAnalyticsCostOrderBy::TaggedSymbol
40
+ ]
41
+ )
42
+ end
43
+ def self.values
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,399 @@
1
+ # typed: strong
2
+
3
+ module Anthropic
4
+ module Models
5
+ module Beta
6
+ module Organization
7
+ module Analytics
8
+ class BetaAnalyticsUsageGroup < Anthropic::Internal::Type::BaseModel
9
+ OrHash =
10
+ T.type_alias do
11
+ T.any(
12
+ Anthropic::Beta::Organization::Analytics::BetaAnalyticsUsageGroup,
13
+ Anthropic::Internal::AnyHash
14
+ )
15
+ end
16
+
17
+ # The identity the usage is attributed to: the user if one is attributed, else the
18
+ # service account, else the federated (cloud-platform) identity, else the API key.
19
+ # Populated only when `actor` is in `group_by[]`; null for usage with no
20
+ # attributable identity, and for users' and federated identities' usage when the
21
+ # reader is a member who can see only some workspaces. Distinct identities the
22
+ # server cannot render also read null, each as its own row.
23
+ sig do
24
+ returns(
25
+ T.nilable(
26
+ Anthropic::Beta::Organization::BetaAnalyticsActor::Variants
27
+ )
28
+ )
29
+ end
30
+ attr_accessor :actor
31
+
32
+ # Kind of identity the usage is attributed to; matches `actor.type` when `actor`
33
+ # is set. Populated only when `actor_type` is in `group_by[]`.
34
+ sig do
35
+ returns(
36
+ T.nilable(
37
+ Anthropic::Beta::Organization::BetaAnalyticsActorType::TaggedSymbol
38
+ )
39
+ )
40
+ end
41
+ attr_accessor :actor_type
42
+
43
+ # Claude Managed Agents agent whose session incurred the usage. Populated only
44
+ # when `agent_id` is in `group_by[]`; null for usage outside a managed session.
45
+ sig { returns(T.nilable(String)) }
46
+ attr_accessor :agent_id
47
+
48
+ # API key that authenticated the requests, as a tagged API key ID, whichever
49
+ # identity `actor` resolves to. Populated only when `api_key_id` is in
50
+ # `group_by[]`; null for usage not authenticated by an API key.
51
+ sig { returns(T.nilable(String)) }
52
+ attr_accessor :api_key_id
53
+
54
+ # Claude Tag (Claude in Slack) spend category: `engaged` (a person addressed
55
+ # Claude in a channel or thread), `proactive` (Claude responded without being
56
+ # addressed), `scheduled` (a scheduled routine ran), `monitoring` (Claude watching
57
+ # a channel it was asked to monitor), or `dm` (direct messages with Claude).
58
+ # Populated only when `claude_tag_category` is in `group_by[]`; null for usage
59
+ # that is not Claude Tag. Direct-message usage is billed to the individual user
60
+ # and is reported under that user's product, not under `claude_tag`. New
61
+ # categories may be added over time.
62
+ sig do
63
+ returns(
64
+ T.nilable(
65
+ Anthropic::Beta::Organization::BetaAnalyticsClaudeTagCategory::TaggedSymbol
66
+ )
67
+ )
68
+ end
69
+ attr_accessor :claude_tag_category
70
+
71
+ # Slack user ID (for example `U0123ABCDEF`) of the member the Claude Tag (Claude
72
+ # in Slack) usage is attributed to, not a claude.ai user ID. Populated only when
73
+ # `claude_tag_user_id` is in `group_by[]`; null for usage that is not Claude Tag
74
+ # and for Claude Tag usage that is not attributed to a single user (for example
75
+ # `monitoring`, and `proactive` usage Claude initiated), so per-user rows can sum
76
+ # to less than the Claude Tag total. Cannot be combined with
77
+ # `group_by[]=rbac_group_id` or the `rbac_group_ids[]` filter.
78
+ sig { returns(T.nilable(String)) }
79
+ attr_accessor :claude_tag_user_id
80
+
81
+ # Context-window pricing tier of the usage or cost. Null unless `context_window`
82
+ # is in `group_by[]`; it can also be null on grouped rows with no context-window
83
+ # tier, such as code execution.
84
+ sig do
85
+ returns(
86
+ T.nilable(
87
+ Anthropic::Beta::Organization::BetaAnalyticsContextWindow::TaggedSymbol
88
+ )
89
+ )
90
+ end
91
+ attr_accessor :context_window
92
+
93
+ # Deployment that started the Claude Managed Agents session. Populated only when
94
+ # `deployment_id` is in `group_by[]`; null for usage outside a managed session and
95
+ # for sessions no deployment started.
96
+ sig { returns(T.nilable(String)) }
97
+ attr_accessor :deployment_id
98
+
99
+ # Claude Managed Agents environment the session ran in. Populated only when
100
+ # `environment_id` is in `group_by[]`; null for usage outside a managed session.
101
+ sig { returns(T.nilable(String)) }
102
+ attr_accessor :environment_id
103
+
104
+ # Inference region of the usage or cost. Null unless `inference_geo` is in
105
+ # `group_by[]`; it can also be null on grouped rows where the region is not set
106
+ # (the rows that `inference_geos[]=not_available` matches).
107
+ sig do
108
+ returns(
109
+ T.nilable(
110
+ Anthropic::Beta::Organization::BetaAnalyticsUsageCostInferenceGeo::TaggedSymbol
111
+ )
112
+ )
113
+ end
114
+ attr_accessor :inference_geo
115
+
116
+ # Model that produced the usage or cost, as a model name in the form the
117
+ # `models[]` filter accepts (for example, `claude-opus-5-5`). Null unless `model`
118
+ # is in `group_by[]`; it can also be null on grouped rows whose usage or cost is
119
+ # not attributed to a specific model, such as code execution.
120
+ sig { returns(T.nilable(String)) }
121
+ attr_accessor :model
122
+
123
+ # Product surface that produced the usage or cost. Null unless product is in
124
+ # `group_by[]`; it can also be null on grouped rows whose usage cannot be
125
+ # attributed to a known surface. Values include `chat`, `claude_code`, `cowork`,
126
+ # `office_agent`, `claude_in_chrome`, `claude_design`, `claude_tag`, and
127
+ # `chat_cowork_unified`. `claude_tag` is Claude Tag, the Claude product in Slack.
128
+ # `chat_cowork_unified` is Chat and Cowork unified, Cowork's features inside
129
+ # claude.ai chat: chat and Cowork usage by a member who has it turned on is
130
+ # reported under this value instead of `chat` or `cowork`. It is accepted as a
131
+ # filter only on deployments that offer Chat and Cowork unified. Some unattributed
132
+ # usage is reported as "other".
133
+ sig { returns(T.nilable(String)) }
134
+ attr_accessor :product
135
+
136
+ # RBAC group (team) the usage is attributed to, in the public tagged
137
+ # `rbac_group_...` spelling — the same spelling the activity resources use for
138
+ # this key, so the same team has one id across resources and it round-trips as an
139
+ # `rbac_group_ids[]` filter value. Populated only when `rbac_group_id` is in
140
+ # `group_by[]`. Any-membership semantics: a user in several groups contributes
141
+ # their full usage to each of those groups' rows, so the named-group rows overlap
142
+ # and their sum can exceed the org total. A null value is the single unassigned
143
+ # row: users in no group on that (UTC) day. For the true org total, run the same
144
+ # query without `group_by[]`.
145
+ sig { returns(T.nilable(String)) }
146
+ attr_accessor :rbac_group_id
147
+
148
+ # Service tier the usage was served at. Populated only when `service_tier` is in
149
+ # `group_by[]`; null for usage with no service tier (for example, code execution)
150
+ # and for Claude Enterprise usage.
151
+ sig do
152
+ returns(
153
+ T.nilable(
154
+ Anthropic::Beta::Organization::BetaAnalyticsServiceTier::TaggedSymbol
155
+ )
156
+ )
157
+ end
158
+ attr_accessor :service_tier
159
+
160
+ # Claude Managed Agents session that incurred the usage. Populated only when
161
+ # `session_id` is in `group_by[]`; null for usage outside a managed session.
162
+ sig { returns(T.nilable(String)) }
163
+ attr_accessor :session_id
164
+
165
+ # Slack channel the usage originated from. Populated only when `slack_channel_id`
166
+ # is in `group_by[]`; null for usage outside Slack (and for rows recorded before
167
+ # channel attribution was enabled).
168
+ sig { returns(T.nilable(String)) }
169
+ attr_accessor :slack_channel_id
170
+
171
+ # Inference speed mode of the usage or cost: `fast` or `standard`. Null unless
172
+ # `speed` is in `group_by[]`.
173
+ sig do
174
+ returns(
175
+ T.nilable(
176
+ Anthropic::Beta::Organization::BetaAnalyticsSpeed::TaggedSymbol
177
+ )
178
+ )
179
+ end
180
+ attr_accessor :speed
181
+
182
+ # User profile the usage was attributed to, as a tagged `uprof_` ID. Populated
183
+ # only when `user_profile_id` is in `group_by[]`; null for usage that named no
184
+ # profile and for Claude Enterprise usage.
185
+ sig { returns(T.nilable(String)) }
186
+ attr_accessor :user_profile_id
187
+
188
+ # Workspace the usage occurred in, as a tagged workspace ID, including the
189
+ # organization's default workspace. Populated only when `workspace_id` is in
190
+ # `group_by[]`; null for Claude Enterprise usage.
191
+ sig { returns(T.nilable(String)) }
192
+ attr_accessor :workspace_id
193
+
194
+ # The dimension values one usage row is broken out by; each is null unless its
195
+ # dimension is in `group_by[]`.
196
+ sig do
197
+ params(
198
+ actor:
199
+ T.nilable(
200
+ T.any(
201
+ Anthropic::Beta::Organization::BetaAnalyticsReportUserActor::OrHash,
202
+ Anthropic::Beta::Organization::BetaAnalyticsServiceAccountActor::OrHash,
203
+ Anthropic::Beta::Organization::BetaAnalyticsFederatedActor::OrHash,
204
+ Anthropic::Beta::Organization::BetaAnalyticsAPIActor::OrHash
205
+ )
206
+ ),
207
+ actor_type:
208
+ T.nilable(
209
+ Anthropic::Beta::Organization::BetaAnalyticsActorType::OrSymbol
210
+ ),
211
+ agent_id: T.nilable(String),
212
+ api_key_id: T.nilable(String),
213
+ claude_tag_category:
214
+ T.nilable(
215
+ Anthropic::Beta::Organization::BetaAnalyticsClaudeTagCategory::OrSymbol
216
+ ),
217
+ claude_tag_user_id: T.nilable(String),
218
+ context_window:
219
+ T.nilable(
220
+ Anthropic::Beta::Organization::BetaAnalyticsContextWindow::OrSymbol
221
+ ),
222
+ deployment_id: T.nilable(String),
223
+ environment_id: T.nilable(String),
224
+ inference_geo:
225
+ T.nilable(
226
+ Anthropic::Beta::Organization::BetaAnalyticsUsageCostInferenceGeo::OrSymbol
227
+ ),
228
+ model: T.nilable(String),
229
+ product: T.nilable(String),
230
+ rbac_group_id: T.nilable(String),
231
+ service_tier:
232
+ T.nilable(
233
+ Anthropic::Beta::Organization::BetaAnalyticsServiceTier::OrSymbol
234
+ ),
235
+ session_id: T.nilable(String),
236
+ slack_channel_id: T.nilable(String),
237
+ speed:
238
+ T.nilable(
239
+ Anthropic::Beta::Organization::BetaAnalyticsSpeed::OrSymbol
240
+ ),
241
+ user_profile_id: T.nilable(String),
242
+ workspace_id: T.nilable(String)
243
+ ).returns(T.attached_class)
244
+ end
245
+ def self.new(
246
+ # The identity the usage is attributed to: the user if one is attributed, else the
247
+ # service account, else the federated (cloud-platform) identity, else the API key.
248
+ # Populated only when `actor` is in `group_by[]`; null for usage with no
249
+ # attributable identity, and for users' and federated identities' usage when the
250
+ # reader is a member who can see only some workspaces. Distinct identities the
251
+ # server cannot render also read null, each as its own row.
252
+ actor:,
253
+ # Kind of identity the usage is attributed to; matches `actor.type` when `actor`
254
+ # is set. Populated only when `actor_type` is in `group_by[]`.
255
+ actor_type:,
256
+ # Claude Managed Agents agent whose session incurred the usage. Populated only
257
+ # when `agent_id` is in `group_by[]`; null for usage outside a managed session.
258
+ agent_id:,
259
+ # API key that authenticated the requests, as a tagged API key ID, whichever
260
+ # identity `actor` resolves to. Populated only when `api_key_id` is in
261
+ # `group_by[]`; null for usage not authenticated by an API key.
262
+ api_key_id:,
263
+ # Claude Tag (Claude in Slack) spend category: `engaged` (a person addressed
264
+ # Claude in a channel or thread), `proactive` (Claude responded without being
265
+ # addressed), `scheduled` (a scheduled routine ran), `monitoring` (Claude watching
266
+ # a channel it was asked to monitor), or `dm` (direct messages with Claude).
267
+ # Populated only when `claude_tag_category` is in `group_by[]`; null for usage
268
+ # that is not Claude Tag. Direct-message usage is billed to the individual user
269
+ # and is reported under that user's product, not under `claude_tag`. New
270
+ # categories may be added over time.
271
+ claude_tag_category:,
272
+ # Slack user ID (for example `U0123ABCDEF`) of the member the Claude Tag (Claude
273
+ # in Slack) usage is attributed to, not a claude.ai user ID. Populated only when
274
+ # `claude_tag_user_id` is in `group_by[]`; null for usage that is not Claude Tag
275
+ # and for Claude Tag usage that is not attributed to a single user (for example
276
+ # `monitoring`, and `proactive` usage Claude initiated), so per-user rows can sum
277
+ # to less than the Claude Tag total. Cannot be combined with
278
+ # `group_by[]=rbac_group_id` or the `rbac_group_ids[]` filter.
279
+ claude_tag_user_id:,
280
+ # Context-window pricing tier of the usage or cost. Null unless `context_window`
281
+ # is in `group_by[]`; it can also be null on grouped rows with no context-window
282
+ # tier, such as code execution.
283
+ context_window:,
284
+ # Deployment that started the Claude Managed Agents session. Populated only when
285
+ # `deployment_id` is in `group_by[]`; null for usage outside a managed session and
286
+ # for sessions no deployment started.
287
+ deployment_id:,
288
+ # Claude Managed Agents environment the session ran in. Populated only when
289
+ # `environment_id` is in `group_by[]`; null for usage outside a managed session.
290
+ environment_id:,
291
+ # Inference region of the usage or cost. Null unless `inference_geo` is in
292
+ # `group_by[]`; it can also be null on grouped rows where the region is not set
293
+ # (the rows that `inference_geos[]=not_available` matches).
294
+ inference_geo:,
295
+ # Model that produced the usage or cost, as a model name in the form the
296
+ # `models[]` filter accepts (for example, `claude-opus-5-5`). Null unless `model`
297
+ # is in `group_by[]`; it can also be null on grouped rows whose usage or cost is
298
+ # not attributed to a specific model, such as code execution.
299
+ model:,
300
+ # Product surface that produced the usage or cost. Null unless product is in
301
+ # `group_by[]`; it can also be null on grouped rows whose usage cannot be
302
+ # attributed to a known surface. Values include `chat`, `claude_code`, `cowork`,
303
+ # `office_agent`, `claude_in_chrome`, `claude_design`, `claude_tag`, and
304
+ # `chat_cowork_unified`. `claude_tag` is Claude Tag, the Claude product in Slack.
305
+ # `chat_cowork_unified` is Chat and Cowork unified, Cowork's features inside
306
+ # claude.ai chat: chat and Cowork usage by a member who has it turned on is
307
+ # reported under this value instead of `chat` or `cowork`. It is accepted as a
308
+ # filter only on deployments that offer Chat and Cowork unified. Some unattributed
309
+ # usage is reported as "other".
310
+ product:,
311
+ # RBAC group (team) the usage is attributed to, in the public tagged
312
+ # `rbac_group_...` spelling — the same spelling the activity resources use for
313
+ # this key, so the same team has one id across resources and it round-trips as an
314
+ # `rbac_group_ids[]` filter value. Populated only when `rbac_group_id` is in
315
+ # `group_by[]`. Any-membership semantics: a user in several groups contributes
316
+ # their full usage to each of those groups' rows, so the named-group rows overlap
317
+ # and their sum can exceed the org total. A null value is the single unassigned
318
+ # row: users in no group on that (UTC) day. For the true org total, run the same
319
+ # query without `group_by[]`.
320
+ rbac_group_id:,
321
+ # Service tier the usage was served at. Populated only when `service_tier` is in
322
+ # `group_by[]`; null for usage with no service tier (for example, code execution)
323
+ # and for Claude Enterprise usage.
324
+ service_tier:,
325
+ # Claude Managed Agents session that incurred the usage. Populated only when
326
+ # `session_id` is in `group_by[]`; null for usage outside a managed session.
327
+ session_id:,
328
+ # Slack channel the usage originated from. Populated only when `slack_channel_id`
329
+ # is in `group_by[]`; null for usage outside Slack (and for rows recorded before
330
+ # channel attribution was enabled).
331
+ slack_channel_id:,
332
+ # Inference speed mode of the usage or cost: `fast` or `standard`. Null unless
333
+ # `speed` is in `group_by[]`.
334
+ speed:,
335
+ # User profile the usage was attributed to, as a tagged `uprof_` ID. Populated
336
+ # only when `user_profile_id` is in `group_by[]`; null for usage that named no
337
+ # profile and for Claude Enterprise usage.
338
+ user_profile_id:,
339
+ # Workspace the usage occurred in, as a tagged workspace ID, including the
340
+ # organization's default workspace. Populated only when `workspace_id` is in
341
+ # `group_by[]`; null for Claude Enterprise usage.
342
+ workspace_id:
343
+ )
344
+ end
345
+
346
+ sig do
347
+ override.returns(
348
+ {
349
+ actor:
350
+ T.nilable(
351
+ Anthropic::Beta::Organization::BetaAnalyticsActor::Variants
352
+ ),
353
+ actor_type:
354
+ T.nilable(
355
+ Anthropic::Beta::Organization::BetaAnalyticsActorType::TaggedSymbol
356
+ ),
357
+ agent_id: T.nilable(String),
358
+ api_key_id: T.nilable(String),
359
+ claude_tag_category:
360
+ T.nilable(
361
+ Anthropic::Beta::Organization::BetaAnalyticsClaudeTagCategory::TaggedSymbol
362
+ ),
363
+ claude_tag_user_id: T.nilable(String),
364
+ context_window:
365
+ T.nilable(
366
+ Anthropic::Beta::Organization::BetaAnalyticsContextWindow::TaggedSymbol
367
+ ),
368
+ deployment_id: T.nilable(String),
369
+ environment_id: T.nilable(String),
370
+ inference_geo:
371
+ T.nilable(
372
+ Anthropic::Beta::Organization::BetaAnalyticsUsageCostInferenceGeo::TaggedSymbol
373
+ ),
374
+ model: T.nilable(String),
375
+ product: T.nilable(String),
376
+ rbac_group_id: T.nilable(String),
377
+ service_tier:
378
+ T.nilable(
379
+ Anthropic::Beta::Organization::BetaAnalyticsServiceTier::TaggedSymbol
380
+ ),
381
+ session_id: T.nilable(String),
382
+ slack_channel_id: T.nilable(String),
383
+ speed:
384
+ T.nilable(
385
+ Anthropic::Beta::Organization::BetaAnalyticsSpeed::TaggedSymbol
386
+ ),
387
+ user_profile_id: T.nilable(String),
388
+ workspace_id: T.nilable(String)
389
+ }
390
+ )
391
+ end
392
+ def to_hash
393
+ end
394
+ end
395
+ end
396
+ end
397
+ end
398
+ end
399
+ end
@@ -0,0 +1,130 @@
1
+ # typed: strong
2
+
3
+ module Anthropic
4
+ module Models
5
+ module Beta
6
+ module Organization
7
+ module Analytics
8
+ module BetaAnalyticsUsageGroupBy
9
+ extend Anthropic::Internal::Type::Enum
10
+
11
+ TaggedSymbol =
12
+ T.type_alias do
13
+ T.all(
14
+ Symbol,
15
+ Anthropic::Beta::Organization::Analytics::BetaAnalyticsUsageGroupBy
16
+ )
17
+ end
18
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
19
+
20
+ ACTOR =
21
+ T.let(
22
+ :actor,
23
+ Anthropic::Beta::Organization::Analytics::BetaAnalyticsUsageGroupBy::TaggedSymbol
24
+ )
25
+ ACTOR_TYPE =
26
+ T.let(
27
+ :actor_type,
28
+ Anthropic::Beta::Organization::Analytics::BetaAnalyticsUsageGroupBy::TaggedSymbol
29
+ )
30
+ AGENT_ID =
31
+ T.let(
32
+ :agent_id,
33
+ Anthropic::Beta::Organization::Analytics::BetaAnalyticsUsageGroupBy::TaggedSymbol
34
+ )
35
+ API_KEY_ID =
36
+ T.let(
37
+ :api_key_id,
38
+ Anthropic::Beta::Organization::Analytics::BetaAnalyticsUsageGroupBy::TaggedSymbol
39
+ )
40
+ CLAUDE_TAG_CATEGORY =
41
+ T.let(
42
+ :claude_tag_category,
43
+ Anthropic::Beta::Organization::Analytics::BetaAnalyticsUsageGroupBy::TaggedSymbol
44
+ )
45
+ CLAUDE_TAG_USER_ID =
46
+ T.let(
47
+ :claude_tag_user_id,
48
+ Anthropic::Beta::Organization::Analytics::BetaAnalyticsUsageGroupBy::TaggedSymbol
49
+ )
50
+ CONTEXT_WINDOW =
51
+ T.let(
52
+ :context_window,
53
+ Anthropic::Beta::Organization::Analytics::BetaAnalyticsUsageGroupBy::TaggedSymbol
54
+ )
55
+ DEPLOYMENT_ID =
56
+ T.let(
57
+ :deployment_id,
58
+ Anthropic::Beta::Organization::Analytics::BetaAnalyticsUsageGroupBy::TaggedSymbol
59
+ )
60
+ ENVIRONMENT_ID =
61
+ T.let(
62
+ :environment_id,
63
+ Anthropic::Beta::Organization::Analytics::BetaAnalyticsUsageGroupBy::TaggedSymbol
64
+ )
65
+ INFERENCE_GEO =
66
+ T.let(
67
+ :inference_geo,
68
+ Anthropic::Beta::Organization::Analytics::BetaAnalyticsUsageGroupBy::TaggedSymbol
69
+ )
70
+ MODEL =
71
+ T.let(
72
+ :model,
73
+ Anthropic::Beta::Organization::Analytics::BetaAnalyticsUsageGroupBy::TaggedSymbol
74
+ )
75
+ PRODUCT =
76
+ T.let(
77
+ :product,
78
+ Anthropic::Beta::Organization::Analytics::BetaAnalyticsUsageGroupBy::TaggedSymbol
79
+ )
80
+ RBAC_GROUP_ID =
81
+ T.let(
82
+ :rbac_group_id,
83
+ Anthropic::Beta::Organization::Analytics::BetaAnalyticsUsageGroupBy::TaggedSymbol
84
+ )
85
+ SERVICE_TIER =
86
+ T.let(
87
+ :service_tier,
88
+ Anthropic::Beta::Organization::Analytics::BetaAnalyticsUsageGroupBy::TaggedSymbol
89
+ )
90
+ SESSION_ID =
91
+ T.let(
92
+ :session_id,
93
+ Anthropic::Beta::Organization::Analytics::BetaAnalyticsUsageGroupBy::TaggedSymbol
94
+ )
95
+ SLACK_CHANNEL_ID =
96
+ T.let(
97
+ :slack_channel_id,
98
+ Anthropic::Beta::Organization::Analytics::BetaAnalyticsUsageGroupBy::TaggedSymbol
99
+ )
100
+ SPEED =
101
+ T.let(
102
+ :speed,
103
+ Anthropic::Beta::Organization::Analytics::BetaAnalyticsUsageGroupBy::TaggedSymbol
104
+ )
105
+ USER_PROFILE_ID =
106
+ T.let(
107
+ :user_profile_id,
108
+ Anthropic::Beta::Organization::Analytics::BetaAnalyticsUsageGroupBy::TaggedSymbol
109
+ )
110
+ WORKSPACE_ID =
111
+ T.let(
112
+ :workspace_id,
113
+ Anthropic::Beta::Organization::Analytics::BetaAnalyticsUsageGroupBy::TaggedSymbol
114
+ )
115
+
116
+ sig do
117
+ override.returns(
118
+ T::Array[
119
+ Anthropic::Beta::Organization::Analytics::BetaAnalyticsUsageGroupBy::TaggedSymbol
120
+ ]
121
+ )
122
+ end
123
+ def self.values
124
+ end
125
+ end
126
+ end
127
+ end
128
+ end
129
+ end
130
+ end