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,624 @@
1
+ # typed: strong
2
+
3
+ module Anthropic
4
+ module Models
5
+ module Beta
6
+ module Organization
7
+ module Analytics
8
+ class CostListParams < Anthropic::Internal::Type::BaseModel
9
+ extend Anthropic::Internal::Type::RequestParameters::Converter
10
+ include Anthropic::Internal::Type::RequestParameters
11
+
12
+ OrHash =
13
+ T.type_alias do
14
+ T.any(
15
+ Anthropic::Beta::Organization::Analytics::CostListParams,
16
+ Anthropic::Internal::AnyHash
17
+ )
18
+ end
19
+
20
+ # Start of range, inclusive. RFC 3339 tz-aware. Must be within the last 365 days
21
+ # and no earlier than 2026-01-01T00:00:00Z.
22
+ sig { returns(Time) }
23
+ attr_accessor :starting_at
24
+
25
+ # Filter to usage attributed to specific identities, by tagged ID: a `user_...`,
26
+ # `svac_...` (service account), or `apikey_...` ID. An `apikey_` entry matches
27
+ # only usage attributed to the key itself, not usage on that key attributed to a
28
+ # user or service account (use `api_key_ids[]` for every request a key
29
+ # authenticated). Federated identities have no tagged ID; select them with
30
+ # `actor_types[]`. Use `group_by[]=actor` to break out per-identity values.
31
+ sig { returns(T.nilable(T::Array[String])) }
32
+ attr_accessor :actor_ids
33
+
34
+ # Filter to usage attributed to specific kinds of identity. Use
35
+ # `group_by[]=actor_type` to break out per-kind values.
36
+ sig do
37
+ returns(
38
+ T.nilable(
39
+ T::Array[
40
+ Anthropic::Beta::Organization::BetaAnalyticsActorType::OrSymbol
41
+ ]
42
+ )
43
+ )
44
+ end
45
+ attr_accessor :actor_types
46
+
47
+ # Filter to usage incurred by sessions of specific Claude Managed Agents agents.
48
+ # Use `group_by[]=agent_id` to break out per-agent values. Claude Developer
49
+ # Platform organizations only.
50
+ sig { returns(T.nilable(T::Array[String])) }
51
+ attr_accessor :agent_ids
52
+
53
+ # Filter to usage authenticated by specific API keys, by tagged API key ID
54
+ # (`apikey_...`), whichever identity the usage is attributed to. Include an empty
55
+ # entry (`api_key_ids[]=`) to also match usage that no API key authenticated. Use
56
+ # `group_by[]=api_key_id` to break out per-key values; usage without a key has a
57
+ # null `api_key_id`. Claude Developer Platform organizations only.
58
+ sig { returns(T.nilable(T::Array[String])) }
59
+ attr_accessor :api_key_ids
60
+
61
+ # Filter to Claude Tag (Claude in Slack) usage in specific spend categories. Usage
62
+ # with no category never matches. `dm` usage is reported under the user's product
63
+ # rather than `claude_tag`, so combining this filter with `products[]=claude_tag`
64
+ # excludes it. Use `group_by[]=claude_tag_category` to break out per-category
65
+ # values.
66
+ sig do
67
+ returns(
68
+ T.nilable(
69
+ T::Array[
70
+ Anthropic::Beta::Organization::BetaAnalyticsClaudeTagCategory::OrSymbol
71
+ ]
72
+ )
73
+ )
74
+ end
75
+ attr_accessor :claude_tag_categories
76
+
77
+ # Filter to Claude Tag (Claude in Slack) usage attributed to specific Slack users,
78
+ # by Slack user ID (for example `U0123ABCDEF`), not claude.ai user ID. Usage that
79
+ # is not Claude Tag, and Claude Tag usage not attributed to a single user, never
80
+ # matches. Use `group_by[]=claude_tag_user_id` to break out per-user values.
81
+ sig { returns(T.nilable(T::Array[String])) }
82
+ attr_accessor :claude_tag_user_ids
83
+
84
+ # Filter to specific context-window pricing tiers. Use `group_by[]=context_window`
85
+ # to break out per-tier values.
86
+ sig do
87
+ returns(
88
+ T.nilable(
89
+ T::Array[
90
+ Anthropic::Beta::Organization::BetaAnalyticsContextWindow::OrSymbol
91
+ ]
92
+ )
93
+ )
94
+ end
95
+ attr_accessor :context_windows
96
+
97
+ # Filter to usage incurred by Claude Managed Agents sessions that specific
98
+ # deployments started. Use `group_by[]=deployment_id` to break out per-deployment
99
+ # values. Claude Developer Platform organizations only.
100
+ sig { returns(T.nilable(T::Array[String])) }
101
+ attr_accessor :deployment_ids
102
+
103
+ # End of range, exclusive. Required when `time_bucket_width` is set. Without
104
+ # `time_bucket_width`, defaults to the earlier of now and `starting_at` + 31 days.
105
+ # The range may span at most 31 days.
106
+ sig { returns(T.nilable(Time)) }
107
+ attr_accessor :ending_at
108
+
109
+ # Filter to usage incurred by Claude Managed Agents sessions that ran in specific
110
+ # environments. Use `group_by[]=environment_id` to break out per-environment
111
+ # values. Claude Developer Platform organizations only.
112
+ sig { returns(T.nilable(T::Array[String])) }
113
+ attr_accessor :environment_ids
114
+
115
+ # If true, omit rows whose `actor` is a `user_actor` with `deleted: true`.
116
+ # Requires `group_by[]=actor`. Rows for other actor types, and rows whose `actor`
117
+ # is null, are always kept. A page may contain fewer than `limit` rows; use
118
+ # `has_more` and `next_page` to paginate as usual.
119
+ sig { returns(T.nilable(T::Boolean)) }
120
+ attr_reader :exclude_deleted_users
121
+
122
+ sig { params(exclude_deleted_users: T::Boolean).void }
123
+ attr_writer :exclude_deleted_users
124
+
125
+ # Dimensions to break cost out by (at most 5, not counting `cost_type` and
126
+ # `token_type`): one row per combination of their values with cost in the range
127
+ # (and per time bucket, when `time_bucket_width` is set), every combination
128
+ # returned across pages rather than a capped top set. `cost_type` and `token_type`
129
+ # do not count toward `limit`: `cost_type` returns one row per cost component
130
+ # (tokens, web search, code execution, and `session_usage`, Claude Managed Agents
131
+ # session time); `token_type` returns one row per token type, each with
132
+ # `cost_type: "tokens"`; combining both returns the per-token-type rows plus the
133
+ # web-search, code-execution and session-usage rows. When omitted, a single row
134
+ # aggregates the whole range.
135
+ sig do
136
+ returns(
137
+ T.nilable(
138
+ T::Array[
139
+ Anthropic::Beta::Organization::Analytics::BetaAnalyticsCostGroupBy::OrSymbol
140
+ ]
141
+ )
142
+ )
143
+ end
144
+ attr_accessor :group_by
145
+
146
+ # Filter to specific inference regions. `not_available` matches rows where the
147
+ # region is unset. Use `group_by[]=inference_geo` to break out per-region values.
148
+ sig do
149
+ returns(
150
+ T.nilable(
151
+ T::Array[
152
+ Anthropic::Beta::Organization::BetaAnalyticsInferenceGeoFilter::OrSymbol
153
+ ]
154
+ )
155
+ )
156
+ end
157
+ attr_accessor :inference_geos
158
+
159
+ # Number of rows per page (1-1000, default 20). `cost_type`/`token_type` fan-out
160
+ # rows (cost endpoint only) do not count toward this limit, so `data` can exceed
161
+ # it.
162
+ sig { returns(T.nilable(Integer)) }
163
+ attr_reader :limit
164
+
165
+ sig { params(limit: Integer).void }
166
+ attr_writer :limit
167
+
168
+ # Models to include. Defaults to all models. Use `group_by[]=model` to break out
169
+ # per-model values.
170
+ sig { returns(T.nilable(T::Array[String])) }
171
+ attr_accessor :models
172
+
173
+ # Sort direction of the `order_by` metric, or of the time buckets when `order_by`
174
+ # is `time` and `time_bucket_width` is set. Defaults to `desc`.
175
+ sig do
176
+ returns(
177
+ T.nilable(
178
+ Anthropic::Beta::Organization::BetaAnalyticsUsageCostSortOrder::OrSymbol
179
+ )
180
+ )
181
+ end
182
+ attr_reader :order
183
+
184
+ sig do
185
+ params(
186
+ order:
187
+ Anthropic::Beta::Organization::BetaAnalyticsUsageCostSortOrder::OrSymbol
188
+ ).void
189
+ end
190
+ attr_writer :order
191
+
192
+ # Row order. A metric ranks rows by that metric in the `order` direction. `time`
193
+ # orders rows by time bucket in the `order` direction (newest first by default)
194
+ # and, within a bucket, by `amount`, highest first. `time` takes effect only with
195
+ # `time_bucket_width`; without it, `time` is the same as `amount`. Defaults to
196
+ # `amount`.
197
+ sig do
198
+ returns(
199
+ T.nilable(
200
+ Anthropic::Beta::Organization::Analytics::BetaAnalyticsCostOrderBy::OrSymbol
201
+ )
202
+ )
203
+ end
204
+ attr_reader :order_by
205
+
206
+ sig do
207
+ params(
208
+ order_by:
209
+ Anthropic::Beta::Organization::Analytics::BetaAnalyticsCostOrderBy::OrSymbol
210
+ ).void
211
+ end
212
+ attr_writer :order_by
213
+
214
+ # Opaque cursor from a previous response's `next_page` field.
215
+ sig { returns(T.nilable(String)) }
216
+ attr_accessor :page
217
+
218
+ # Product surfaces to include. Defaults to all products.
219
+ sig do
220
+ returns(
221
+ T.nilable(
222
+ T::Array[
223
+ Anthropic::Beta::Organization::BetaAnalyticsUsageCostProductFilter::OrSymbol
224
+ ]
225
+ )
226
+ )
227
+ end
228
+ attr_accessor :products
229
+
230
+ # Filter to usage attributed to specific RBAC groups. Accepts tagged RBAC group
231
+ # IDs (`rbac_group_...`) or bare group UUIDs. A row matches when the user belonged
232
+ # to any of the listed groups on the (UTC) day the usage occurred; usage with no
233
+ # group attribution never matches.
234
+ sig { returns(T.nilable(T::Array[String])) }
235
+ attr_accessor :rbac_group_ids
236
+
237
+ # Filter to specific service tiers. Use `group_by[]=service_tier` to break out
238
+ # per-tier values. Claude Developer Platform organizations only; matches nothing
239
+ # for a Claude Enterprise organization.
240
+ sig do
241
+ returns(
242
+ T.nilable(
243
+ T::Array[
244
+ Anthropic::Beta::Organization::BetaAnalyticsServiceTier::OrSymbol
245
+ ]
246
+ )
247
+ )
248
+ end
249
+ attr_accessor :service_tiers
250
+
251
+ # Filter to usage incurred by specific Claude Managed Agents sessions, by tagged
252
+ # session ID (`sesn_...`). Use `group_by[]=session_id` to break out per-session
253
+ # values. Claude Developer Platform organizations only.
254
+ sig { returns(T.nilable(T::Array[String])) }
255
+ attr_accessor :session_ids
256
+
257
+ # Filter to usage originating from specific Slack channels. Use
258
+ # `group_by[]=slack_channel_id` to break out per-channel values.
259
+ sig { returns(T.nilable(T::Array[String])) }
260
+ attr_accessor :slack_channel_ids
261
+
262
+ # Filter to fast or standard inference mode. Use `group_by[]=speed` to break out
263
+ # per-mode values.
264
+ sig do
265
+ returns(
266
+ T.nilable(
267
+ T::Array[
268
+ Anthropic::Beta::Organization::BetaAnalyticsSpeed::OrSymbol
269
+ ]
270
+ )
271
+ )
272
+ end
273
+ attr_accessor :speeds
274
+
275
+ # Time-bucket granularity. When set, rows are returned per time bucket (one per
276
+ # bucket and dimension combination with usage) and each row's `starting_at` and
277
+ # `ending_at` are that bucket's bounds; the time bucket counts toward `limit`.
278
+ # `ending_at` is required when `time_bucket_width` is set, and with
279
+ # `time_bucket_width="1m"` the range may span at most 24 hours. When omitted, each
280
+ # row aggregates the requested range with `starting_at` and `ending_at` each
281
+ # rounded down to the hour.
282
+ sig do
283
+ returns(
284
+ T.nilable(
285
+ Anthropic::Beta::Organization::BetaAnalyticsTimeBucketWidth::OrSymbol
286
+ )
287
+ )
288
+ end
289
+ attr_accessor :time_bucket_width
290
+
291
+ # Filter to usage attributed to specific user profiles, by tagged user profile ID
292
+ # (`uprof_...`). Use `group_by[]=user_profile_id` to break out per-profile values.
293
+ # Claude Developer Platform organizations only.
294
+ sig { returns(T.nilable(T::Array[String])) }
295
+ attr_accessor :user_profile_ids
296
+
297
+ # Filter to usage in specific workspaces, by tagged workspace ID (`wrkspc_...`).
298
+ # Use `group_by[]=workspace_id` to break out per-workspace values. Claude
299
+ # Developer Platform organizations only; matches nothing for a Claude Enterprise
300
+ # organization.
301
+ sig { returns(T.nilable(T::Array[String])) }
302
+ attr_accessor :workspace_ids
303
+
304
+ # This endpoint is in beta: requests must send `analytics-usage-cost-2026-08-24`
305
+ # in this header.
306
+ sig do
307
+ returns(
308
+ T.nilable(
309
+ T::Array[T.any(Anthropic::AnthropicBeta::OrSymbol, String)]
310
+ )
311
+ )
312
+ end
313
+ attr_reader :betas
314
+
315
+ sig do
316
+ params(
317
+ betas:
318
+ T::Array[T.any(Anthropic::AnthropicBeta::OrSymbol, String)]
319
+ ).void
320
+ end
321
+ attr_writer :betas
322
+
323
+ sig do
324
+ params(
325
+ starting_at: Time,
326
+ actor_ids: T.nilable(T::Array[String]),
327
+ actor_types:
328
+ T.nilable(
329
+ T::Array[
330
+ Anthropic::Beta::Organization::BetaAnalyticsActorType::OrSymbol
331
+ ]
332
+ ),
333
+ agent_ids: T.nilable(T::Array[String]),
334
+ api_key_ids: T.nilable(T::Array[String]),
335
+ claude_tag_categories:
336
+ T.nilable(
337
+ T::Array[
338
+ Anthropic::Beta::Organization::BetaAnalyticsClaudeTagCategory::OrSymbol
339
+ ]
340
+ ),
341
+ claude_tag_user_ids: T.nilable(T::Array[String]),
342
+ context_windows:
343
+ T.nilable(
344
+ T::Array[
345
+ Anthropic::Beta::Organization::BetaAnalyticsContextWindow::OrSymbol
346
+ ]
347
+ ),
348
+ deployment_ids: T.nilable(T::Array[String]),
349
+ ending_at: T.nilable(Time),
350
+ environment_ids: T.nilable(T::Array[String]),
351
+ exclude_deleted_users: T::Boolean,
352
+ group_by:
353
+ T.nilable(
354
+ T::Array[
355
+ Anthropic::Beta::Organization::Analytics::BetaAnalyticsCostGroupBy::OrSymbol
356
+ ]
357
+ ),
358
+ inference_geos:
359
+ T.nilable(
360
+ T::Array[
361
+ Anthropic::Beta::Organization::BetaAnalyticsInferenceGeoFilter::OrSymbol
362
+ ]
363
+ ),
364
+ limit: Integer,
365
+ models: T.nilable(T::Array[String]),
366
+ order:
367
+ Anthropic::Beta::Organization::BetaAnalyticsUsageCostSortOrder::OrSymbol,
368
+ order_by:
369
+ Anthropic::Beta::Organization::Analytics::BetaAnalyticsCostOrderBy::OrSymbol,
370
+ page: T.nilable(String),
371
+ products:
372
+ T.nilable(
373
+ T::Array[
374
+ Anthropic::Beta::Organization::BetaAnalyticsUsageCostProductFilter::OrSymbol
375
+ ]
376
+ ),
377
+ rbac_group_ids: T.nilable(T::Array[String]),
378
+ service_tiers:
379
+ T.nilable(
380
+ T::Array[
381
+ Anthropic::Beta::Organization::BetaAnalyticsServiceTier::OrSymbol
382
+ ]
383
+ ),
384
+ session_ids: T.nilable(T::Array[String]),
385
+ slack_channel_ids: T.nilable(T::Array[String]),
386
+ speeds:
387
+ T.nilable(
388
+ T::Array[
389
+ Anthropic::Beta::Organization::BetaAnalyticsSpeed::OrSymbol
390
+ ]
391
+ ),
392
+ time_bucket_width:
393
+ T.nilable(
394
+ Anthropic::Beta::Organization::BetaAnalyticsTimeBucketWidth::OrSymbol
395
+ ),
396
+ user_profile_ids: T.nilable(T::Array[String]),
397
+ workspace_ids: T.nilable(T::Array[String]),
398
+ betas:
399
+ T::Array[T.any(Anthropic::AnthropicBeta::OrSymbol, String)],
400
+ request_options: Anthropic::RequestOptions::OrHash
401
+ ).returns(T.attached_class)
402
+ end
403
+ def self.new(
404
+ # Start of range, inclusive. RFC 3339 tz-aware. Must be within the last 365 days
405
+ # and no earlier than 2026-01-01T00:00:00Z.
406
+ starting_at:,
407
+ # Filter to usage attributed to specific identities, by tagged ID: a `user_...`,
408
+ # `svac_...` (service account), or `apikey_...` ID. An `apikey_` entry matches
409
+ # only usage attributed to the key itself, not usage on that key attributed to a
410
+ # user or service account (use `api_key_ids[]` for every request a key
411
+ # authenticated). Federated identities have no tagged ID; select them with
412
+ # `actor_types[]`. Use `group_by[]=actor` to break out per-identity values.
413
+ actor_ids: nil,
414
+ # Filter to usage attributed to specific kinds of identity. Use
415
+ # `group_by[]=actor_type` to break out per-kind values.
416
+ actor_types: nil,
417
+ # Filter to usage incurred by sessions of specific Claude Managed Agents agents.
418
+ # Use `group_by[]=agent_id` to break out per-agent values. Claude Developer
419
+ # Platform organizations only.
420
+ agent_ids: nil,
421
+ # Filter to usage authenticated by specific API keys, by tagged API key ID
422
+ # (`apikey_...`), whichever identity the usage is attributed to. Include an empty
423
+ # entry (`api_key_ids[]=`) to also match usage that no API key authenticated. Use
424
+ # `group_by[]=api_key_id` to break out per-key values; usage without a key has a
425
+ # null `api_key_id`. Claude Developer Platform organizations only.
426
+ api_key_ids: nil,
427
+ # Filter to Claude Tag (Claude in Slack) usage in specific spend categories. Usage
428
+ # with no category never matches. `dm` usage is reported under the user's product
429
+ # rather than `claude_tag`, so combining this filter with `products[]=claude_tag`
430
+ # excludes it. Use `group_by[]=claude_tag_category` to break out per-category
431
+ # values.
432
+ claude_tag_categories: nil,
433
+ # Filter to Claude Tag (Claude in Slack) usage attributed to specific Slack users,
434
+ # by Slack user ID (for example `U0123ABCDEF`), not claude.ai user ID. Usage that
435
+ # is not Claude Tag, and Claude Tag usage not attributed to a single user, never
436
+ # matches. Use `group_by[]=claude_tag_user_id` to break out per-user values.
437
+ claude_tag_user_ids: nil,
438
+ # Filter to specific context-window pricing tiers. Use `group_by[]=context_window`
439
+ # to break out per-tier values.
440
+ context_windows: nil,
441
+ # Filter to usage incurred by Claude Managed Agents sessions that specific
442
+ # deployments started. Use `group_by[]=deployment_id` to break out per-deployment
443
+ # values. Claude Developer Platform organizations only.
444
+ deployment_ids: nil,
445
+ # End of range, exclusive. Required when `time_bucket_width` is set. Without
446
+ # `time_bucket_width`, defaults to the earlier of now and `starting_at` + 31 days.
447
+ # The range may span at most 31 days.
448
+ ending_at: nil,
449
+ # Filter to usage incurred by Claude Managed Agents sessions that ran in specific
450
+ # environments. Use `group_by[]=environment_id` to break out per-environment
451
+ # values. Claude Developer Platform organizations only.
452
+ environment_ids: nil,
453
+ # If true, omit rows whose `actor` is a `user_actor` with `deleted: true`.
454
+ # Requires `group_by[]=actor`. Rows for other actor types, and rows whose `actor`
455
+ # is null, are always kept. A page may contain fewer than `limit` rows; use
456
+ # `has_more` and `next_page` to paginate as usual.
457
+ exclude_deleted_users: nil,
458
+ # Dimensions to break cost out by (at most 5, not counting `cost_type` and
459
+ # `token_type`): one row per combination of their values with cost in the range
460
+ # (and per time bucket, when `time_bucket_width` is set), every combination
461
+ # returned across pages rather than a capped top set. `cost_type` and `token_type`
462
+ # do not count toward `limit`: `cost_type` returns one row per cost component
463
+ # (tokens, web search, code execution, and `session_usage`, Claude Managed Agents
464
+ # session time); `token_type` returns one row per token type, each with
465
+ # `cost_type: "tokens"`; combining both returns the per-token-type rows plus the
466
+ # web-search, code-execution and session-usage rows. When omitted, a single row
467
+ # aggregates the whole range.
468
+ group_by: nil,
469
+ # Filter to specific inference regions. `not_available` matches rows where the
470
+ # region is unset. Use `group_by[]=inference_geo` to break out per-region values.
471
+ inference_geos: nil,
472
+ # Number of rows per page (1-1000, default 20). `cost_type`/`token_type` fan-out
473
+ # rows (cost endpoint only) do not count toward this limit, so `data` can exceed
474
+ # it.
475
+ limit: nil,
476
+ # Models to include. Defaults to all models. Use `group_by[]=model` to break out
477
+ # per-model values.
478
+ models: nil,
479
+ # Sort direction of the `order_by` metric, or of the time buckets when `order_by`
480
+ # is `time` and `time_bucket_width` is set. Defaults to `desc`.
481
+ order: nil,
482
+ # Row order. A metric ranks rows by that metric in the `order` direction. `time`
483
+ # orders rows by time bucket in the `order` direction (newest first by default)
484
+ # and, within a bucket, by `amount`, highest first. `time` takes effect only with
485
+ # `time_bucket_width`; without it, `time` is the same as `amount`. Defaults to
486
+ # `amount`.
487
+ order_by: nil,
488
+ # Opaque cursor from a previous response's `next_page` field.
489
+ page: nil,
490
+ # Product surfaces to include. Defaults to all products.
491
+ products: nil,
492
+ # Filter to usage attributed to specific RBAC groups. Accepts tagged RBAC group
493
+ # IDs (`rbac_group_...`) or bare group UUIDs. A row matches when the user belonged
494
+ # to any of the listed groups on the (UTC) day the usage occurred; usage with no
495
+ # group attribution never matches.
496
+ rbac_group_ids: nil,
497
+ # Filter to specific service tiers. Use `group_by[]=service_tier` to break out
498
+ # per-tier values. Claude Developer Platform organizations only; matches nothing
499
+ # for a Claude Enterprise organization.
500
+ service_tiers: nil,
501
+ # Filter to usage incurred by specific Claude Managed Agents sessions, by tagged
502
+ # session ID (`sesn_...`). Use `group_by[]=session_id` to break out per-session
503
+ # values. Claude Developer Platform organizations only.
504
+ session_ids: nil,
505
+ # Filter to usage originating from specific Slack channels. Use
506
+ # `group_by[]=slack_channel_id` to break out per-channel values.
507
+ slack_channel_ids: nil,
508
+ # Filter to fast or standard inference mode. Use `group_by[]=speed` to break out
509
+ # per-mode values.
510
+ speeds: nil,
511
+ # Time-bucket granularity. When set, rows are returned per time bucket (one per
512
+ # bucket and dimension combination with usage) and each row's `starting_at` and
513
+ # `ending_at` are that bucket's bounds; the time bucket counts toward `limit`.
514
+ # `ending_at` is required when `time_bucket_width` is set, and with
515
+ # `time_bucket_width="1m"` the range may span at most 24 hours. When omitted, each
516
+ # row aggregates the requested range with `starting_at` and `ending_at` each
517
+ # rounded down to the hour.
518
+ time_bucket_width: nil,
519
+ # Filter to usage attributed to specific user profiles, by tagged user profile ID
520
+ # (`uprof_...`). Use `group_by[]=user_profile_id` to break out per-profile values.
521
+ # Claude Developer Platform organizations only.
522
+ user_profile_ids: nil,
523
+ # Filter to usage in specific workspaces, by tagged workspace ID (`wrkspc_...`).
524
+ # Use `group_by[]=workspace_id` to break out per-workspace values. Claude
525
+ # Developer Platform organizations only; matches nothing for a Claude Enterprise
526
+ # organization.
527
+ workspace_ids: nil,
528
+ # This endpoint is in beta: requests must send `analytics-usage-cost-2026-08-24`
529
+ # in this header.
530
+ betas: nil,
531
+ request_options: {}
532
+ )
533
+ end
534
+
535
+ sig do
536
+ override.returns(
537
+ {
538
+ starting_at: Time,
539
+ actor_ids: T.nilable(T::Array[String]),
540
+ actor_types:
541
+ T.nilable(
542
+ T::Array[
543
+ Anthropic::Beta::Organization::BetaAnalyticsActorType::OrSymbol
544
+ ]
545
+ ),
546
+ agent_ids: T.nilable(T::Array[String]),
547
+ api_key_ids: T.nilable(T::Array[String]),
548
+ claude_tag_categories:
549
+ T.nilable(
550
+ T::Array[
551
+ Anthropic::Beta::Organization::BetaAnalyticsClaudeTagCategory::OrSymbol
552
+ ]
553
+ ),
554
+ claude_tag_user_ids: T.nilable(T::Array[String]),
555
+ context_windows:
556
+ T.nilable(
557
+ T::Array[
558
+ Anthropic::Beta::Organization::BetaAnalyticsContextWindow::OrSymbol
559
+ ]
560
+ ),
561
+ deployment_ids: T.nilable(T::Array[String]),
562
+ ending_at: T.nilable(Time),
563
+ environment_ids: T.nilable(T::Array[String]),
564
+ exclude_deleted_users: T::Boolean,
565
+ group_by:
566
+ T.nilable(
567
+ T::Array[
568
+ Anthropic::Beta::Organization::Analytics::BetaAnalyticsCostGroupBy::OrSymbol
569
+ ]
570
+ ),
571
+ inference_geos:
572
+ T.nilable(
573
+ T::Array[
574
+ Anthropic::Beta::Organization::BetaAnalyticsInferenceGeoFilter::OrSymbol
575
+ ]
576
+ ),
577
+ limit: Integer,
578
+ models: T.nilable(T::Array[String]),
579
+ order:
580
+ Anthropic::Beta::Organization::BetaAnalyticsUsageCostSortOrder::OrSymbol,
581
+ order_by:
582
+ Anthropic::Beta::Organization::Analytics::BetaAnalyticsCostOrderBy::OrSymbol,
583
+ page: T.nilable(String),
584
+ products:
585
+ T.nilable(
586
+ T::Array[
587
+ Anthropic::Beta::Organization::BetaAnalyticsUsageCostProductFilter::OrSymbol
588
+ ]
589
+ ),
590
+ rbac_group_ids: T.nilable(T::Array[String]),
591
+ service_tiers:
592
+ T.nilable(
593
+ T::Array[
594
+ Anthropic::Beta::Organization::BetaAnalyticsServiceTier::OrSymbol
595
+ ]
596
+ ),
597
+ session_ids: T.nilable(T::Array[String]),
598
+ slack_channel_ids: T.nilable(T::Array[String]),
599
+ speeds:
600
+ T.nilable(
601
+ T::Array[
602
+ Anthropic::Beta::Organization::BetaAnalyticsSpeed::OrSymbol
603
+ ]
604
+ ),
605
+ time_bucket_width:
606
+ T.nilable(
607
+ Anthropic::Beta::Organization::BetaAnalyticsTimeBucketWidth::OrSymbol
608
+ ),
609
+ user_profile_ids: T.nilable(T::Array[String]),
610
+ workspace_ids: T.nilable(T::Array[String]),
611
+ betas:
612
+ T::Array[T.any(Anthropic::AnthropicBeta::OrSymbol, String)],
613
+ request_options: Anthropic::RequestOptions
614
+ }
615
+ )
616
+ end
617
+ def to_hash
618
+ end
619
+ end
620
+ end
621
+ end
622
+ end
623
+ end
624
+ end