onlyfans 0.1.0 → 0.3.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 (338) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +323 -0
  3. data/README.md +9 -4
  4. data/lib/onlyfans/client.rb +11 -3
  5. data/lib/onlyfans/internal/transport/base_client.rb +4 -1
  6. data/lib/onlyfans/models/analytics/financial/profitability_get_history_response.rb +114 -36
  7. data/lib/onlyfans/models/analytics/financial/profitability_get_profitability_response.rb +112 -46
  8. data/lib/onlyfans/models/authenticate_start_params.rb +1 -0
  9. data/lib/onlyfans/models/chat_list_media_params.rb +6 -2
  10. data/lib/onlyfans/models/chat_list_params.rb +8 -3
  11. data/lib/onlyfans/models/chats/message_list_params.rb +6 -6
  12. data/lib/onlyfans/models/chats/message_send_params.rb +41 -6
  13. data/lib/onlyfans/models/client_session_create_params.rb +1 -0
  14. data/lib/onlyfans/models/data_export_create_params.rb +36 -21
  15. data/lib/onlyfans/models/data_export_list_params.rb +5 -0
  16. data/lib/onlyfans/models/data_export_list_response.rb +7 -1
  17. data/lib/onlyfans/models/data_export_retrieve_response.rb +7 -1
  18. data/lib/onlyfans/models/engagement/message_get_message_buyers_params.rb +2 -2
  19. data/lib/onlyfans/models/engagement/message_get_top_message_params.rb +3 -3
  20. data/lib/onlyfans/models/engagement/messages/direct_message_chart_params.rb +2 -2
  21. data/lib/onlyfans/models/engagement/messages/direct_message_list_params.rb +3 -3
  22. data/lib/onlyfans/models/engagement/messages/mass_message_chart_params.rb +2 -2
  23. data/lib/onlyfans/models/engagement/messages/mass_message_list_params.rb +3 -3
  24. data/lib/onlyfans/models/fan_list_active_params.rb +55 -13
  25. data/lib/onlyfans/models/fan_list_all_params.rb +55 -13
  26. data/lib/onlyfans/models/fan_list_expired_params.rb +55 -13
  27. data/lib/onlyfans/models/fan_list_latest_params.rb +8 -8
  28. data/lib/onlyfans/models/fan_list_top_params.rb +6 -6
  29. data/lib/onlyfans/models/fans/summary_get_summary_response.rb +49 -2
  30. data/lib/onlyfans/models/following_list_active_params.rb +79 -1
  31. data/lib/onlyfans/models/following_list_all_params.rb +79 -1
  32. data/lib/onlyfans/models/following_list_expired_params.rb +79 -1
  33. data/lib/onlyfans/models/link_tag_list_params.rb +4 -3
  34. data/lib/onlyfans/models/mass_messaging_retrieve_overview_params.rb +3 -3
  35. data/lib/onlyfans/models/mass_messaging_send_params.rb +44 -6
  36. data/lib/onlyfans/models/mass_messaging_update_params.rb +34 -6
  37. data/lib/onlyfans/models/media/upload_get_status_response.rb +54 -27
  38. data/lib/onlyfans/models/media/vault/list_list_params.rb +14 -1
  39. data/lib/onlyfans/models/media/vault/list_list_response.rb +420 -202
  40. data/lib/onlyfans/models/media/vault/list_update_params.rb +11 -1
  41. data/lib/onlyfans/models/media/vault_upload_params.rb +3 -1
  42. data/lib/onlyfans/models/media_upload_params.rb +3 -1
  43. data/lib/onlyfans/models/notification_list_params.rb +3 -3
  44. data/lib/onlyfans/models/post_create_params.rb +29 -1
  45. data/lib/onlyfans/models/post_update_params.rb +29 -1
  46. data/lib/onlyfans/models/queue_list_params.rb +36 -15
  47. data/lib/onlyfans/models/release_form_list_taggable_users_response.rb +8 -8
  48. data/lib/onlyfans/models/shared_tracking_link_list_params.rb +75 -10
  49. data/lib/onlyfans/models/shared_trial_link_list_params.rb +26 -10
  50. data/lib/onlyfans/models/smart_link_create_response.rb +2 -2
  51. data/lib/onlyfans/models/smart_link_list_clicks_response.rb +19 -1
  52. data/lib/onlyfans/models/smart_link_list_conversions_params.rb +1 -0
  53. data/lib/onlyfans/models/smart_link_list_conversions_response.rb +19 -1
  54. data/lib/onlyfans/models/smart_link_list_fans_params.rb +21 -1
  55. data/lib/onlyfans/models/smart_link_list_fans_response.rb +99 -3
  56. data/lib/onlyfans/models/smart_link_list_params.rb +27 -9
  57. data/lib/onlyfans/models/smart_link_postback_create_params.rb +66 -4
  58. data/lib/onlyfans/models/smart_link_postback_create_response.rb +48 -1
  59. data/lib/onlyfans/models/smart_link_postback_list_response.rb +48 -1
  60. data/lib/onlyfans/models/smart_link_postback_retrieve_response.rb +48 -1
  61. data/lib/onlyfans/models/smart_link_postback_update_params.rb +65 -1
  62. data/lib/onlyfans/models/smart_link_postback_update_response.rb +48 -1
  63. data/lib/onlyfans/models/statistic_calculate_total_transactions_params.rb +5 -5
  64. data/lib/onlyfans/models/statistic_get_subscriber_metrics_params.rb +25 -1
  65. data/lib/onlyfans/models/statistics/reach_get_profile_visitors_params.rb +2 -2
  66. data/lib/onlyfans/models/statistics/statement_get_earnings_params.rb +10 -10
  67. data/lib/onlyfans/models/stored_list_tracking_links_response.rb +7 -1
  68. data/lib/onlyfans/models/stored_list_trial_links_response.rb +7 -1
  69. data/lib/onlyfans/models/story_create_params.rb +293 -6
  70. data/lib/onlyfans/models/story_create_response.rb +330 -7
  71. data/lib/onlyfans/models/tracking_link_get_stats_response.rb +7 -1
  72. data/lib/onlyfans/models/tracking_link_list_params.rb +58 -30
  73. data/lib/onlyfans/models/tracking_link_list_response.rb +7 -1
  74. data/lib/onlyfans/models/tracking_link_list_spenders_response.rb +7 -1
  75. data/lib/onlyfans/models/tracking_link_retrieve_response.rb +7 -1
  76. data/lib/onlyfans/models/transaction_list_params.rb +2 -2
  77. data/lib/onlyfans/models/trial_link_list_params.rb +44 -27
  78. data/lib/onlyfans/models/trial_link_list_response.rb +7 -1
  79. data/lib/onlyfans/models/trial_link_list_spenders_response.rb +7 -1
  80. data/lib/onlyfans/models/trial_link_retrieve_response.rb +7 -1
  81. data/lib/onlyfans/models/trial_link_retrieve_stats_response.rb +7 -1
  82. data/lib/onlyfans/models/user_list_list_params.rb +21 -1
  83. data/lib/onlyfans/models/user_lists/user_add_params.rb +18 -1
  84. data/lib/onlyfans/models/user_lists/user_add_response.rb +246 -88
  85. data/lib/onlyfans/models/webhook_create_params.rb +11 -7
  86. data/lib/onlyfans/models/webhook_update_params.rb +11 -7
  87. data/lib/onlyfans/models.rb +0 -2
  88. data/lib/onlyfans/resources/analytics/financial/profitability.rb +4 -4
  89. data/lib/onlyfans/resources/chats/messages.rb +47 -8
  90. data/lib/onlyfans/resources/chats.rb +7 -4
  91. data/lib/onlyfans/resources/data_exports.rb +1 -1
  92. data/lib/onlyfans/resources/engagement/messages/direct_messages.rb +2 -2
  93. data/lib/onlyfans/resources/engagement/messages/mass_messages.rb +2 -2
  94. data/lib/onlyfans/resources/engagement/messages.rb +2 -2
  95. data/lib/onlyfans/resources/fans.rb +43 -10
  96. data/lib/onlyfans/resources/following.rb +58 -12
  97. data/lib/onlyfans/resources/link_tags.rb +4 -4
  98. data/lib/onlyfans/resources/mass_messaging.rb +18 -9
  99. data/lib/onlyfans/resources/media/uploads.rb +6 -1
  100. data/lib/onlyfans/resources/media/vault/lists.rb +30 -5
  101. data/lib/onlyfans/resources/media.rb +14 -8
  102. data/lib/onlyfans/resources/messages.rb +0 -39
  103. data/lib/onlyfans/resources/notifications.rb +1 -1
  104. data/lib/onlyfans/resources/posts.rb +6 -2
  105. data/lib/onlyfans/resources/queue.rb +9 -6
  106. data/lib/onlyfans/resources/release_forms.rb +2 -1
  107. data/lib/onlyfans/resources/shared_tracking_links.rb +12 -5
  108. data/lib/onlyfans/resources/shared_trial_links.rb +6 -5
  109. data/lib/onlyfans/resources/smart_link_postbacks.rb +18 -3
  110. data/lib/onlyfans/resources/smart_links.rb +13 -4
  111. data/lib/onlyfans/resources/statistics/reach.rb +1 -1
  112. data/lib/onlyfans/resources/statistics/statements.rb +3 -3
  113. data/lib/onlyfans/resources/statistics.rb +5 -3
  114. data/lib/onlyfans/resources/stories.rb +13 -6
  115. data/lib/onlyfans/resources/tracking_links/tags.rb +5 -1
  116. data/lib/onlyfans/resources/tracking_links.rb +21 -11
  117. data/lib/onlyfans/resources/transactions.rb +1 -1
  118. data/lib/onlyfans/resources/trial_links/tags.rb +5 -1
  119. data/lib/onlyfans/resources/trial_links.rb +22 -10
  120. data/lib/onlyfans/resources/user_lists/users.rb +7 -2
  121. data/lib/onlyfans/resources/user_lists.rb +5 -2
  122. data/lib/onlyfans/resources/users.rb +4 -1
  123. data/lib/onlyfans/resources/webhooks.rb +6 -4
  124. data/lib/onlyfans/version.rb +1 -1
  125. data/lib/onlyfans.rb +0 -3
  126. data/rbi/onlyfans/client.rbi +11 -3
  127. data/rbi/onlyfans/models/analytics/financial/profitability_get_history_response.rbi +203 -63
  128. data/rbi/onlyfans/models/analytics/financial/profitability_get_profitability_response.rbi +201 -79
  129. data/rbi/onlyfans/models/authenticate_start_params.rbi +5 -0
  130. data/rbi/onlyfans/models/chat_list_media_params.rbi +4 -2
  131. data/rbi/onlyfans/models/chat_list_params.rbi +6 -3
  132. data/rbi/onlyfans/models/chats/message_list_params.rbi +8 -8
  133. data/rbi/onlyfans/models/chats/message_send_params.rbi +88 -6
  134. data/rbi/onlyfans/models/client_session_create_params.rbi +5 -0
  135. data/rbi/onlyfans/models/data_export_create_params.rbi +69 -37
  136. data/rbi/onlyfans/models/data_export_list_params.rbi +18 -0
  137. data/rbi/onlyfans/models/data_export_list_response.rbi +9 -0
  138. data/rbi/onlyfans/models/data_export_retrieve_response.rbi +9 -0
  139. data/rbi/onlyfans/models/engagement/message_get_message_buyers_params.rbi +2 -2
  140. data/rbi/onlyfans/models/engagement/message_get_top_message_params.rbi +4 -4
  141. data/rbi/onlyfans/models/engagement/messages/direct_message_chart_params.rbi +2 -2
  142. data/rbi/onlyfans/models/engagement/messages/direct_message_list_params.rbi +4 -4
  143. data/rbi/onlyfans/models/engagement/messages/mass_message_chart_params.rbi +2 -2
  144. data/rbi/onlyfans/models/engagement/messages/mass_message_list_params.rbi +4 -4
  145. data/rbi/onlyfans/models/fan_list_active_params.rbi +84 -13
  146. data/rbi/onlyfans/models/fan_list_all_params.rbi +84 -13
  147. data/rbi/onlyfans/models/fan_list_expired_params.rbi +84 -13
  148. data/rbi/onlyfans/models/fan_list_latest_params.rbi +10 -10
  149. data/rbi/onlyfans/models/fan_list_top_params.rbi +8 -8
  150. data/rbi/onlyfans/models/fans/summary_get_summary_response.rbi +96 -0
  151. data/rbi/onlyfans/models/following_list_active_params.rbi +160 -0
  152. data/rbi/onlyfans/models/following_list_all_params.rbi +155 -0
  153. data/rbi/onlyfans/models/following_list_expired_params.rbi +160 -0
  154. data/rbi/onlyfans/models/link_tag_list_params.rbi +5 -3
  155. data/rbi/onlyfans/models/mass_messaging_retrieve_overview_params.rbi +4 -4
  156. data/rbi/onlyfans/models/mass_messaging_send_params.rbi +91 -6
  157. data/rbi/onlyfans/models/mass_messaging_update_params.rbi +76 -6
  158. data/rbi/onlyfans/models/media/upload_get_status_response.rbi +79 -33
  159. data/rbi/onlyfans/models/media/vault/list_list_params.rbi +15 -0
  160. data/rbi/onlyfans/models/media/vault/list_list_response.rbi +972 -428
  161. data/rbi/onlyfans/models/media/vault/list_update_params.rbi +13 -1
  162. data/rbi/onlyfans/models/media/vault_upload_params.rbi +6 -2
  163. data/rbi/onlyfans/models/media_upload_params.rbi +6 -2
  164. data/rbi/onlyfans/models/notification_list_params.rbi +3 -3
  165. data/rbi/onlyfans/models/post_create_params.rbi +66 -0
  166. data/rbi/onlyfans/models/post_update_params.rbi +66 -0
  167. data/rbi/onlyfans/models/queue_list_params.rbi +59 -16
  168. data/rbi/onlyfans/models/release_form_list_taggable_users_response.rbi +12 -12
  169. data/rbi/onlyfans/models/shared_tracking_link_list_params.rbi +198 -11
  170. data/rbi/onlyfans/models/shared_trial_link_list_params.rbi +64 -11
  171. data/rbi/onlyfans/models/smart_link_create_response.rbi +6 -3
  172. data/rbi/onlyfans/models/smart_link_list_clicks_response.rbi +21 -3
  173. data/rbi/onlyfans/models/smart_link_list_conversions_params.rbi +5 -0
  174. data/rbi/onlyfans/models/smart_link_list_conversions_response.rbi +21 -3
  175. data/rbi/onlyfans/models/smart_link_list_fans_params.rbi +24 -0
  176. data/rbi/onlyfans/models/smart_link_list_fans_response.rbi +205 -3
  177. data/rbi/onlyfans/models/smart_link_list_params.rbi +45 -8
  178. data/rbi/onlyfans/models/smart_link_postback_create_params.rbi +139 -4
  179. data/rbi/onlyfans/models/smart_link_postback_create_response.rbi +96 -0
  180. data/rbi/onlyfans/models/smart_link_postback_list_response.rbi +96 -0
  181. data/rbi/onlyfans/models/smart_link_postback_retrieve_response.rbi +96 -0
  182. data/rbi/onlyfans/models/smart_link_postback_update_params.rbi +133 -0
  183. data/rbi/onlyfans/models/smart_link_postback_update_response.rbi +96 -0
  184. data/rbi/onlyfans/models/statistic_calculate_total_transactions_params.rbi +12 -6
  185. data/rbi/onlyfans/models/statistic_get_subscriber_metrics_params.rbi +63 -0
  186. data/rbi/onlyfans/models/statistics/reach_get_profile_visitors_params.rbi +2 -2
  187. data/rbi/onlyfans/models/statistics/statement_get_earnings_params.rbi +10 -13
  188. data/rbi/onlyfans/models/stored_list_tracking_links_response.rbi +9 -0
  189. data/rbi/onlyfans/models/stored_list_trial_links_response.rbi +9 -0
  190. data/rbi/onlyfans/models/story_create_params.rbi +548 -4
  191. data/rbi/onlyfans/models/story_create_response.rbi +670 -8
  192. data/rbi/onlyfans/models/tracking_link_get_stats_response.rbi +9 -0
  193. data/rbi/onlyfans/models/tracking_link_list_params.rbi +144 -45
  194. data/rbi/onlyfans/models/tracking_link_list_response.rbi +9 -0
  195. data/rbi/onlyfans/models/tracking_link_list_spenders_response.rbi +17 -5
  196. data/rbi/onlyfans/models/tracking_link_retrieve_response.rbi +9 -0
  197. data/rbi/onlyfans/models/transaction_list_params.rbi +2 -2
  198. data/rbi/onlyfans/models/trial_link_list_params.rbi +66 -33
  199. data/rbi/onlyfans/models/trial_link_list_response.rbi +9 -0
  200. data/rbi/onlyfans/models/trial_link_list_spenders_response.rbi +17 -5
  201. data/rbi/onlyfans/models/trial_link_retrieve_response.rbi +9 -0
  202. data/rbi/onlyfans/models/trial_link_retrieve_stats_response.rbi +9 -0
  203. data/rbi/onlyfans/models/user_list_list_params.rbi +33 -0
  204. data/rbi/onlyfans/models/user_lists/user_add_params.rbi +23 -0
  205. data/rbi/onlyfans/models/user_lists/user_add_response.rbi +596 -181
  206. data/rbi/onlyfans/models/webhook_create_params.rbi +16 -10
  207. data/rbi/onlyfans/models/webhook_update_params.rbi +16 -10
  208. data/rbi/onlyfans/models.rbi +0 -2
  209. data/rbi/onlyfans/resources/analytics/financial/profitability.rbi +2 -6
  210. data/rbi/onlyfans/resources/chats/messages.rbi +53 -10
  211. data/rbi/onlyfans/resources/chats.rbi +6 -5
  212. data/rbi/onlyfans/resources/data_exports.rbi +26 -17
  213. data/rbi/onlyfans/resources/engagement/messages/direct_messages.rbi +3 -3
  214. data/rbi/onlyfans/resources/engagement/messages/mass_messages.rbi +3 -3
  215. data/rbi/onlyfans/resources/engagement/messages.rbi +3 -3
  216. data/rbi/onlyfans/resources/fans.rbi +50 -17
  217. data/rbi/onlyfans/resources/following.rbi +122 -4
  218. data/rbi/onlyfans/resources/link_tags.rbi +4 -4
  219. data/rbi/onlyfans/resources/mass_messaging.rbi +32 -10
  220. data/rbi/onlyfans/resources/media/uploads.rbi +5 -0
  221. data/rbi/onlyfans/resources/media/vault/lists.rbi +28 -3
  222. data/rbi/onlyfans/resources/media/vault.rbi +3 -1
  223. data/rbi/onlyfans/resources/media.rbi +16 -7
  224. data/rbi/onlyfans/resources/messages.rbi +0 -29
  225. data/rbi/onlyfans/resources/notifications.rbi +1 -1
  226. data/rbi/onlyfans/resources/posts.rbi +14 -0
  227. data/rbi/onlyfans/resources/queue.rbi +15 -8
  228. data/rbi/onlyfans/resources/release_forms.rbi +2 -1
  229. data/rbi/onlyfans/resources/shared_tracking_links.rbi +21 -5
  230. data/rbi/onlyfans/resources/shared_trial_links.rbi +8 -5
  231. data/rbi/onlyfans/resources/smart_link_postbacks.rbi +27 -2
  232. data/rbi/onlyfans/resources/smart_links.rbi +12 -3
  233. data/rbi/onlyfans/resources/statistics/reach.rbi +1 -1
  234. data/rbi/onlyfans/resources/statistics/statements.rbi +4 -4
  235. data/rbi/onlyfans/resources/statistics.rbi +9 -2
  236. data/rbi/onlyfans/resources/stories.rbi +16 -3
  237. data/rbi/onlyfans/resources/tracking_links/tags.rbi +5 -1
  238. data/rbi/onlyfans/resources/tracking_links.rbi +30 -19
  239. data/rbi/onlyfans/resources/transactions.rbi +1 -1
  240. data/rbi/onlyfans/resources/trial_links/tags.rbi +5 -1
  241. data/rbi/onlyfans/resources/trial_links.rbi +29 -14
  242. data/rbi/onlyfans/resources/user_lists/users.rbi +10 -1
  243. data/rbi/onlyfans/resources/user_lists.rbi +6 -1
  244. data/rbi/onlyfans/resources/users.rbi +2 -1
  245. data/rbi/onlyfans/resources/webhooks.rbi +16 -10
  246. data/sig/onlyfans/models/analytics/financial/profitability_get_history_response.rbs +129 -40
  247. data/sig/onlyfans/models/analytics/financial/profitability_get_profitability_response.rbs +125 -50
  248. data/sig/onlyfans/models/authenticate_start_params.rbs +2 -1
  249. data/sig/onlyfans/models/chats/message_send_params.rbs +34 -6
  250. data/sig/onlyfans/models/client_session_create_params.rbs +2 -1
  251. data/sig/onlyfans/models/data_export_create_params.rbs +4 -0
  252. data/sig/onlyfans/models/data_export_list_params.rbs +10 -0
  253. data/sig/onlyfans/models/data_export_list_response.rbs +7 -0
  254. data/sig/onlyfans/models/data_export_retrieve_response.rbs +7 -0
  255. data/sig/onlyfans/models/fan_list_active_params.rbs +7 -0
  256. data/sig/onlyfans/models/fan_list_all_params.rbs +7 -0
  257. data/sig/onlyfans/models/fan_list_expired_params.rbs +7 -0
  258. data/sig/onlyfans/models/fans/summary_get_summary_response.rbs +53 -0
  259. data/sig/onlyfans/models/following_list_active_params.rbs +35 -1
  260. data/sig/onlyfans/models/following_list_all_params.rbs +35 -1
  261. data/sig/onlyfans/models/following_list_expired_params.rbs +35 -1
  262. data/sig/onlyfans/models/link_tag_list_params.rbs +2 -1
  263. data/sig/onlyfans/models/mass_messaging_send_params.rbs +33 -5
  264. data/sig/onlyfans/models/mass_messaging_update_params.rbs +26 -5
  265. data/sig/onlyfans/models/media/upload_get_status_response.rbs +65 -39
  266. data/sig/onlyfans/models/media/vault/list_list_params.rbs +13 -1
  267. data/sig/onlyfans/models/media/vault/list_list_response.rbs +519 -235
  268. data/sig/onlyfans/models/media/vault/list_update_params.rbs +5 -1
  269. data/sig/onlyfans/models/post_create_params.rbs +21 -0
  270. data/sig/onlyfans/models/post_update_params.rbs +21 -0
  271. data/sig/onlyfans/models/queue_list_params.rbs +28 -6
  272. data/sig/onlyfans/models/release_form_list_taggable_users_response.rbs +7 -10
  273. data/sig/onlyfans/models/shared_tracking_link_list_params.rbs +78 -4
  274. data/sig/onlyfans/models/shared_trial_link_list_params.rbs +31 -4
  275. data/sig/onlyfans/models/smart_link_create_response.rbs +6 -4
  276. data/sig/onlyfans/models/smart_link_list_clicks_response.rbs +18 -3
  277. data/sig/onlyfans/models/smart_link_list_conversions_params.rbs +2 -0
  278. data/sig/onlyfans/models/smart_link_list_conversions_response.rbs +18 -3
  279. data/sig/onlyfans/models/smart_link_list_fans_params.rbs +15 -1
  280. data/sig/onlyfans/models/smart_link_list_fans_response.rbs +125 -3
  281. data/sig/onlyfans/models/smart_link_list_params.rbs +27 -6
  282. data/sig/onlyfans/models/smart_link_postback_create_params.rbs +48 -0
  283. data/sig/onlyfans/models/smart_link_postback_create_response.rbs +53 -0
  284. data/sig/onlyfans/models/smart_link_postback_list_response.rbs +53 -0
  285. data/sig/onlyfans/models/smart_link_postback_retrieve_response.rbs +53 -0
  286. data/sig/onlyfans/models/smart_link_postback_update_params.rbs +48 -0
  287. data/sig/onlyfans/models/smart_link_postback_update_response.rbs +53 -0
  288. data/sig/onlyfans/models/statistic_calculate_total_transactions_params.rbs +8 -4
  289. data/sig/onlyfans/models/statistic_get_subscriber_metrics_params.rbs +23 -1
  290. data/sig/onlyfans/models/statistics/statement_get_earnings_params.rbs +5 -7
  291. data/sig/onlyfans/models/stored_list_tracking_links_response.rbs +7 -0
  292. data/sig/onlyfans/models/stored_list_trial_links_response.rbs +7 -0
  293. data/sig/onlyfans/models/story_create_params.rbs +271 -1
  294. data/sig/onlyfans/models/story_create_response.rbs +419 -9
  295. data/sig/onlyfans/models/tracking_link_get_stats_response.rbs +7 -0
  296. data/sig/onlyfans/models/tracking_link_list_params.rbs +75 -26
  297. data/sig/onlyfans/models/tracking_link_list_response.rbs +7 -0
  298. data/sig/onlyfans/models/tracking_link_list_spenders_response.rbs +16 -3
  299. data/sig/onlyfans/models/tracking_link_retrieve_response.rbs +7 -0
  300. data/sig/onlyfans/models/trial_link_list_params.rbs +42 -18
  301. data/sig/onlyfans/models/trial_link_list_response.rbs +7 -0
  302. data/sig/onlyfans/models/trial_link_list_spenders_response.rbs +16 -3
  303. data/sig/onlyfans/models/trial_link_retrieve_response.rbs +7 -0
  304. data/sig/onlyfans/models/trial_link_retrieve_stats_response.rbs +7 -0
  305. data/sig/onlyfans/models/user_list_list_params.rbs +24 -1
  306. data/sig/onlyfans/models/user_lists/user_add_params.rbs +12 -1
  307. data/sig/onlyfans/models/user_lists/user_add_response.rbs +300 -101
  308. data/sig/onlyfans/models.rbs +0 -2
  309. data/sig/onlyfans/resources/analytics/financial/profitability.rbs +2 -2
  310. data/sig/onlyfans/resources/chats/messages.rbs +3 -1
  311. data/sig/onlyfans/resources/following.rbs +6 -0
  312. data/sig/onlyfans/resources/mass_messaging.rbs +5 -2
  313. data/sig/onlyfans/resources/media/vault/lists.rbs +3 -1
  314. data/sig/onlyfans/resources/media.rbs +1 -1
  315. data/sig/onlyfans/resources/messages.rbs +0 -9
  316. data/sig/onlyfans/resources/posts.rbs +2 -0
  317. data/sig/onlyfans/resources/queue.rbs +2 -1
  318. data/sig/onlyfans/resources/shared_tracking_links.rbs +5 -1
  319. data/sig/onlyfans/resources/shared_trial_links.rbs +2 -1
  320. data/sig/onlyfans/resources/smart_link_postbacks.rbs +6 -0
  321. data/sig/onlyfans/resources/smart_links.rbs +4 -1
  322. data/sig/onlyfans/resources/statistics/statements.rbs +1 -1
  323. data/sig/onlyfans/resources/statistics.rbs +3 -2
  324. data/sig/onlyfans/resources/stories.rbs +4 -0
  325. data/sig/onlyfans/resources/tracking_links.rbs +7 -6
  326. data/sig/onlyfans/resources/trial_links.rbs +7 -5
  327. data/sig/onlyfans/resources/user_lists/users.rbs +2 -1
  328. data/sig/onlyfans/resources/user_lists.rbs +1 -0
  329. metadata +9 -15
  330. data/lib/onlyfans/models/media_download_response.rb +0 -7
  331. data/lib/onlyfans/models/message_attach_tags_params.rb +0 -52
  332. data/lib/onlyfans/models/message_attach_tags_response.rb +0 -125
  333. data/rbi/onlyfans/models/media_download_response.rbi +0 -7
  334. data/rbi/onlyfans/models/message_attach_tags_params.rbi +0 -80
  335. data/rbi/onlyfans/models/message_attach_tags_response.rbi +0 -308
  336. data/sig/onlyfans/models/media_download_response.rbs +0 -5
  337. data/sig/onlyfans/models/message_attach_tags_params.rbs +0 -52
  338. data/sig/onlyfans/models/message_attach_tags_response.rbs +0 -164
@@ -4,7 +4,16 @@ module Onlyfans
4
4
  module Resources
5
5
  # APIs for managing OnlyFans followings (people you're subscribed to)
6
6
  class Following
7
- # Get a paginated list of followings for an Account. Newest followings are first.
7
+ # Get a paginated list of followings for an Account. By default OnlyFans returns
8
+ # this list newest-first, sorted by `subscribedByData.subscribeAt` descending. The
9
+ # expired list does not share this order, so do not assume it applies there. Pass
10
+ # `sort` (optionally with `sortDirection`) to reorder the list — see the parameter
11
+ # description for the caveat that OnlyFans persists the chosen order account-wide.
12
+ # An empty page is not the end of the list: OnlyFans applies `offset` to the whole
13
+ # following collection before filtering it down to the requested list, so a page
14
+ # can come back empty while more results follow. Keep following
15
+ # `_pagination.next_page` until it is `null` instead of stopping at the first
16
+ # empty page.
8
17
  sig do
9
18
  params(
10
19
  account: String,
@@ -12,6 +21,11 @@ module Onlyfans
12
21
  limit: Integer,
13
22
  offset: Integer,
14
23
  query: T.nilable(String),
24
+ sort: T.nilable(Onlyfans::FollowingListActiveParams::Sort::OrSymbol),
25
+ sort_direction:
26
+ T.nilable(
27
+ Onlyfans::FollowingListActiveParams::SortDirection::OrSymbol
28
+ ),
15
29
  request_options: Onlyfans::RequestOptions::OrHash
16
30
  ).returns(Onlyfans::Models::FollowingListActiveResponse)
17
31
  end
@@ -26,11 +40,43 @@ module Onlyfans
26
40
  offset: nil,
27
41
  # Search within following name/username.
28
42
  query: nil,
43
+ # Order the list by `last_activity` (the followed creator's last activity),
44
+ # `expire_date` (subscription expiry), `subscribe_date` (subscription start) or
45
+ # `is_expired` (expired first — OnlyFans only offers this one on the expired
46
+ # list). Omit it to keep whichever order is currently stored for the account.
47
+ # **Note:** OnlyFans persists this order account-wide, so it also applies to later
48
+ # requests that omit `sort` and to the creator's own onlyfans.com UI, until it is
49
+ # changed again. **Expired list:** OnlyFans applies `offset` to the whole
50
+ # following collection and only then filters it down to expired subscriptions, so
51
+ # ordering by expiry descending puts the still-active subscriptions first and
52
+ # moves the expired rows to the tail of the collection — the first several hundred
53
+ # offsets then come back empty. Use `sortDirection=asc` or `sort=is_expired` to
54
+ # get expired-first results. For that reason `sort=expire_date` on the expired
55
+ # list defaults to `asc` instead of `desc` when you do not pass `sortDirection`.
56
+ # Whatever order you pick, an empty page is **not** the end of the list: keep
57
+ # following `_pagination.next_page` until it is `null` rather than stopping at the
58
+ # first empty page. This field is required when <code>sortDirection</code> is
59
+ # present.
60
+ sort: nil,
61
+ # Direction for `sort`: `desc` (default) or `asc`. Requires `sort` to be set.
62
+ # Exception: `sort=expire_date` on the expired list defaults to `asc`, because
63
+ # `desc` moves the expired rows to the tail of the underlying collection and
64
+ # leaves the early pages empty. Passing `sortDirection` explicitly always wins.
65
+ sort_direction: nil,
29
66
  request_options: {}
30
67
  )
31
68
  end
32
69
 
33
- # Get a paginated list of followings for an Account. Newest followings are first.
70
+ # Get a paginated list of followings for an Account. By default OnlyFans returns
71
+ # this list newest-first, sorted by `subscribedByData.subscribeAt` descending. The
72
+ # expired list does not share this order, so do not assume it applies there. Pass
73
+ # `sort` (optionally with `sortDirection`) to reorder the list — see the parameter
74
+ # description for the caveat that OnlyFans persists the chosen order account-wide.
75
+ # An empty page is not the end of the list: OnlyFans applies `offset` to the whole
76
+ # following collection before filtering it down to the requested list, so a page
77
+ # can come back empty while more results follow. Keep following
78
+ # `_pagination.next_page` until it is `null` instead of stopping at the first
79
+ # empty page.
34
80
  sig do
35
81
  params(
36
82
  account: String,
@@ -38,6 +84,11 @@ module Onlyfans
38
84
  limit: Integer,
39
85
  offset: Integer,
40
86
  query: T.nilable(String),
87
+ sort: T.nilable(Onlyfans::FollowingListAllParams::Sort::OrSymbol),
88
+ sort_direction:
89
+ T.nilable(
90
+ Onlyfans::FollowingListAllParams::SortDirection::OrSymbol
91
+ ),
41
92
  request_options: Onlyfans::RequestOptions::OrHash
42
93
  ).returns(Onlyfans::Models::FollowingListAllResponse)
43
94
  end
@@ -52,12 +103,51 @@ module Onlyfans
52
103
  offset: nil,
53
104
  # Search within following name/username.
54
105
  query: nil,
106
+ # Order the list by `last_activity` (the followed creator's last activity),
107
+ # `expire_date` (subscription expiry), `subscribe_date` (subscription start) or
108
+ # `is_expired` (expired first — OnlyFans only offers this one on the expired
109
+ # list). Omit it to keep whichever order is currently stored for the account.
110
+ # **Note:** OnlyFans persists this order account-wide, so it also applies to later
111
+ # requests that omit `sort` and to the creator's own onlyfans.com UI, until it is
112
+ # changed again. **Expired list:** OnlyFans applies `offset` to the whole
113
+ # following collection and only then filters it down to expired subscriptions, so
114
+ # ordering by expiry descending puts the still-active subscriptions first and
115
+ # moves the expired rows to the tail of the collection — the first several hundred
116
+ # offsets then come back empty. Use `sortDirection=asc` or `sort=is_expired` to
117
+ # get expired-first results. For that reason `sort=expire_date` on the expired
118
+ # list defaults to `asc` instead of `desc` when you do not pass `sortDirection`.
119
+ # Whatever order you pick, an empty page is **not** the end of the list: keep
120
+ # following `_pagination.next_page` until it is `null` rather than stopping at the
121
+ # first empty page. This field is required when <code>sortDirection</code> is
122
+ # present.
123
+ sort: nil,
124
+ # Direction for `sort`: `desc` (default) or `asc`. Requires `sort` to be set.
125
+ # Exception: `sort=expire_date` on the expired list defaults to `asc`, because
126
+ # `desc` moves the expired rows to the tail of the underlying collection and
127
+ # leaves the early pages empty. Passing `sortDirection` explicitly always wins.
128
+ sort_direction: nil,
55
129
  request_options: {}
56
130
  )
57
131
  end
58
132
 
59
- # Get a paginated list of expired followings for an Account. Newest followings are
60
- # first.
133
+ # Get a paginated list of expired followings for an Account. This list has no
134
+ # order guarantee. Unlike the all and active lists, it is sorted by neither
135
+ # `subscribedByData.subscribeAt` nor `subscribedByData.expiredAt`. To poll for new
136
+ # expirations, page through the full list each cycle (`limit=50`, follow
137
+ # `_pagination.next_page` until it is null) and diff it against your own store
138
+ # using `subscribedByData.expiredAt`. Do NOT stop early at the first entry you
139
+ # have already seen, as that can silently skip real expirations. An empty page is
140
+ # not the end of the list either: OnlyFans applies `offset` to the whole following
141
+ # collection and only then filters that window down to expired subscriptions, so
142
+ # early pages can come back empty while hundreds of expired rows still follow.
143
+ # Keep following `_pagination.next_page` until it is `null` instead of stopping at
144
+ # the first empty page. Pass `sort=expire_date` (optionally with `sortDirection`)
145
+ # to get a deterministic order instead — see the parameter description for the
146
+ # caveat that OnlyFans persists the chosen order account-wide. Ordering by expiry
147
+ # descending puts the still-active subscriptions first and moves the expired rows
148
+ # to the tail of the collection, so prefer `sortDirection=asc` or
149
+ # `sort=is_expired` for expired-first results; for that reason `sort=expire_date`
150
+ # defaults to `asc` on this list when no `sortDirection` is given.
61
151
  sig do
62
152
  params(
63
153
  account: String,
@@ -65,6 +155,11 @@ module Onlyfans
65
155
  limit: Integer,
66
156
  offset: Integer,
67
157
  query: T.nilable(String),
158
+ sort: T.nilable(Onlyfans::FollowingListExpiredParams::Sort::OrSymbol),
159
+ sort_direction:
160
+ T.nilable(
161
+ Onlyfans::FollowingListExpiredParams::SortDirection::OrSymbol
162
+ ),
68
163
  request_options: Onlyfans::RequestOptions::OrHash
69
164
  ).returns(Onlyfans::Models::FollowingListExpiredResponse)
70
165
  end
@@ -79,6 +174,29 @@ module Onlyfans
79
174
  offset: nil,
80
175
  # Search within following name/username.
81
176
  query: nil,
177
+ # Order the list by `last_activity` (the followed creator's last activity),
178
+ # `expire_date` (subscription expiry), `subscribe_date` (subscription start) or
179
+ # `is_expired` (expired first — OnlyFans only offers this one on the expired
180
+ # list). Omit it to keep whichever order is currently stored for the account.
181
+ # **Note:** OnlyFans persists this order account-wide, so it also applies to later
182
+ # requests that omit `sort` and to the creator's own onlyfans.com UI, until it is
183
+ # changed again. **Expired list:** OnlyFans applies `offset` to the whole
184
+ # following collection and only then filters it down to expired subscriptions, so
185
+ # ordering by expiry descending puts the still-active subscriptions first and
186
+ # moves the expired rows to the tail of the collection — the first several hundred
187
+ # offsets then come back empty. Use `sortDirection=asc` or `sort=is_expired` to
188
+ # get expired-first results. For that reason `sort=expire_date` on the expired
189
+ # list defaults to `asc` instead of `desc` when you do not pass `sortDirection`.
190
+ # Whatever order you pick, an empty page is **not** the end of the list: keep
191
+ # following `_pagination.next_page` until it is `null` rather than stopping at the
192
+ # first empty page. This field is required when <code>sortDirection</code> is
193
+ # present.
194
+ sort: nil,
195
+ # Direction for `sort`: `desc` (default) or `asc`. Requires `sort` to be set.
196
+ # Exception: `sort=expire_date` on the expired list defaults to `asc`, because
197
+ # `desc` moves the expired rows to the tail of the underlying collection and
198
+ # leaves the early pages empty. Passing `sortDirection` explicitly always wins.
199
+ sort_direction: nil,
82
200
  request_options: {}
83
201
  )
84
202
  end
@@ -2,10 +2,10 @@
2
2
 
3
3
  module Onlyfans
4
4
  module Resources
5
- # APIs for managing tags on free trial links and tracking links
5
+ # APIs for managing tags on free trial links, tracking links, and Smart Links
6
6
  class LinkTags
7
- # Get all existing tags that have been used on free trial links and/or tracking
8
- # links for this account. This is a free endpoint.
7
+ # Get all existing tags that have been used on free trial links, tracking links,
8
+ # and/or Smart Links for this account. This is a free endpoint.
9
9
  sig do
10
10
  params(
11
11
  type: Onlyfans::LinkTagListParams::Type::OrSymbol,
@@ -13,7 +13,7 @@ module Onlyfans
13
13
  ).returns(Onlyfans::Models::LinkTagListResponse)
14
14
  end
15
15
  def list(
16
- # Filter by link type. If not provided, returns tags for both types.
16
+ # Filter by link type. If not provided, returns tags for all types.
17
17
  type: nil,
18
18
  request_options: {}
19
19
  )
@@ -3,7 +3,8 @@
3
3
  module Onlyfans
4
4
  module Resources
5
5
  class MassMessaging
6
- # Get the content of a mass message.
6
+ # Get the content and settings of a mass message, including a message scheduled
7
+ # for later.
7
8
  sig do
8
9
  params(
9
10
  id: String,
@@ -21,17 +22,20 @@ module Onlyfans
21
22
  )
22
23
  end
23
24
 
24
- # Update a mass message.
25
+ # Update the content, recipients, media, price, or scheduled send time of an
26
+ # existing mass message.
25
27
  sig do
26
28
  params(
27
29
  id: String,
28
30
  account: String,
29
31
  text: String,
32
+ block_banned_words:
33
+ Onlyfans::MassMessagingUpdateParams::BlockBannedWords::OrSymbol,
30
34
  giphy_id: String,
31
35
  locked_text: T::Boolean,
32
36
  media_files: T::Array[String],
33
37
  previews: T::Array[String],
34
- price: Integer,
38
+ price: Float,
35
39
  scheduled_date: String,
36
40
  user_ids: T::Array[String],
37
41
  user_lists: T::Array[String],
@@ -46,6 +50,11 @@ module Onlyfans
46
50
  account:,
47
51
  # Body param: The message text content
48
52
  text:,
53
+ # Body param: Screen `text` for OnlyFans banned words and block the update if any
54
+ # are found (returns a 422 listing the offending words). `strict_ban` blocks all
55
+ # tiers, `risky` blocks Risky + Replace/soften, `replace_soften` blocks
56
+ # Replace/soften only. Omit to disable screening.
57
+ block_banned_words: nil,
49
58
  # Body param: The ID of the Giphy GIF to attach to the message. Get IDs from the
50
59
  # Giphy listing endpoints (`/giphy/trending`, `/giphy/search`).
51
60
  giphy_id: nil,
@@ -58,8 +67,8 @@ module Onlyfans
58
67
  # if price is not 0). Will be shown if `price` is provided. All `previews` values
59
68
  # must also exist in the `mediaFiles` array.
60
69
  previews: nil,
61
- # Body param: Price for paid content (0 or between 3-200). In case this is not
62
- # zero, **mediaFiles** is required
70
+ # Body param: Price for paid content in USD (0 or between 3-200). In case this is
71
+ # not zero, **mediaFiles** is required
63
72
  price: nil,
64
73
  # Body param: Schedule the chat message in the future (UTC timezone).
65
74
  scheduled_date: nil,
@@ -71,7 +80,8 @@ module Onlyfans
71
80
  )
72
81
  end
73
82
 
74
- # List the pending or recently sent mass messages in the message queue.
83
+ # List pending, scheduled, and recently sent mass messages. Use an item ID to
84
+ # retrieve, update, reschedule, delete, or unsend the message.
75
85
  sig do
76
86
  params(
77
87
  account: String,
@@ -118,8 +128,8 @@ module Onlyfans
118
128
  def retrieve_overview(
119
129
  # The Account ID
120
130
  account,
121
- # The latest mass message to retrieve. Keep empty to get all. MUST BE DATE AFTER
122
- # `startDate`. This is also used for pagination.
131
+ # The latest mass message to retrieve. Keep empty to get all. It must be after
132
+ # `startDate` and is also used for pagination.
123
133
  end_date: nil,
124
134
  # Number of mass messages to return (default = 10)
125
135
  limit: nil,
@@ -138,17 +148,20 @@ module Onlyfans
138
148
  params(
139
149
  account: String,
140
150
  text: String,
151
+ block_banned_words:
152
+ Onlyfans::MassMessagingSendParams::BlockBannedWords::OrSymbol,
141
153
  excluded_lists: T::Array[String],
142
154
  giphy_id: String,
143
155
  locked_text: T::Boolean,
144
156
  media_files: T::Array[T.anything],
145
157
  previews: T::Array[T.anything],
146
- price: Integer,
158
+ price: Float,
147
159
  rf_guest: String,
148
160
  rf_partner: String,
149
161
  rf_tag: String,
150
162
  save_for_later: T::Boolean,
151
163
  scheduled_date: String,
164
+ subscribed_within_last_days: Integer,
152
165
  user_ids: T::Array[String],
153
166
  user_lists: T::Array[String],
154
167
  request_options: Onlyfans::RequestOptions::OrHash
@@ -159,6 +172,11 @@ module Onlyfans
159
172
  account,
160
173
  # The message text content
161
174
  text:,
175
+ # Screen `text` for OnlyFans banned words and block the send if any are found
176
+ # (returns a 422 listing the offending words). `strict_ban` blocks all tiers,
177
+ # `risky` blocks Risky + Replace/soften, `replace_soften` blocks Replace/soften
178
+ # only. Omit to disable screening.
179
+ block_banned_words: nil,
162
180
  # Array of user list IDs that the mass message will NOT be sent to.
163
181
  excluded_lists: nil,
164
182
  # The ID of the Giphy GIF to attach to the message. Get IDs from the Giphy listing
@@ -173,7 +191,7 @@ module Onlyfans
173
191
  # referencing uploaded files in `mediaFiles`. Will be shown if `price` is
174
192
  # provided.
175
193
  previews: nil,
176
- # Price for paid content (0 or between 3-200). In case this is not zero,
194
+ # Price for paid content in USD (0 or between 3-200). In case this is not zero,
177
195
  # **mediaFiles** is required
178
196
  price: nil,
179
197
  # Array of OnlyFans Release Form Guest IDs to tag in your mass message
@@ -186,6 +204,10 @@ module Onlyfans
186
204
  save_for_later: nil,
187
205
  # Schedule the chat message in the future (UTC timezone).
188
206
  scheduled_date: nil,
207
+ # Only send to fans who subscribed within the last N calendar days (1-30,
208
+ # including today). Can be combined with `userLists` and `userIds`. Cannot be
209
+ # combined with `scheduledDate` or `saveForLater`.
210
+ subscribed_within_last_days: nil,
189
211
  # Array of user IDs that the mass message will be sent to.
190
212
  user_ids: nil,
191
213
  # Array of user list IDs that the mass message will be sent to.
@@ -13,6 +13,11 @@ module Onlyfans
13
13
  # - `processing` — Download/upload in progress
14
14
  # - `completed` — Upload finished, `media` and `credits_used` are included
15
15
  # - `failed` — Upload failed, `error` is included
16
+ #
17
+ # Instead of polling, you can subscribe to the `media_uploads.completed` and
18
+ # `media_uploads.failed` webhook events. They carry the same fields as this
19
+ # endpoint and are only sent for async (`async=true`) uploads — synchronous
20
+ # uploads return their result directly.
16
21
  sig do
17
22
  params(
18
23
  upload: String,
@@ -47,31 +47,56 @@ module Onlyfans
47
47
  params(
48
48
  list_id: String,
49
49
  account: String,
50
+ name: String,
50
51
  request_options: Onlyfans::RequestOptions::OrHash
51
52
  ).returns(Onlyfans::Models::Media::Vault::ListUpdateResponse)
52
53
  end
53
54
  def update(
54
- # The ID of the list
55
+ # Path param: The ID of the list
55
56
  list_id,
56
- # The Account ID
57
+ # Path param: The Account ID
57
58
  account:,
59
+ # Body param: The new name for the vault list. Must not be greater than 255
60
+ # characters.
61
+ name:,
58
62
  request_options: {}
59
63
  )
60
64
  end
61
65
 
62
66
  # List your Vault lists (categories).
67
+ #
68
+ # Every response carries an `ETag` computed over the `data` payload. Send it back
69
+ # as `If-None-Match` on your next call and you will get a `304 Not Modified` with
70
+ # an empty body when nothing changed, so you can keep serving your cached copy
71
+ # instead of re-parsing the full list. Credits are debited either way — we still
72
+ # have to ask OnlyFans for the current state to know whether it changed.
73
+ #
74
+ # The `ETag` covers `data` only, never `_meta` — your credits balance changes on
75
+ # every call, so including it would mean the `ETag` never matches. Because a `304`
76
+ # has no body, it also has no `_meta`: read the current credits and rate-limit
77
+ # counters from the `X-OFAPI-Credits-Used`, `X-OFAPI-Credits-Balance`,
78
+ # `X-Rate-Limit-Limit-Minute` and `X-Rate-Limit-Remaining-Minute` response
79
+ # headers, which are sent on `304` responses too. The `_meta` inside a body you
80
+ # cached earlier is stale by definition.
63
81
  sig do
64
82
  params(
65
83
  account: String,
84
+ lightweight: T::Boolean,
66
85
  limit: Integer,
67
86
  offset: Integer,
68
87
  query: String,
69
88
  request_options: Onlyfans::RequestOptions::OrHash
70
- ).returns(Onlyfans::Models::Media::Vault::ListListResponse)
89
+ ).returns(
90
+ Onlyfans::Models::Media::Vault::ListListResponse::Variants
91
+ )
71
92
  end
72
93
  def list(
73
94
  # The Account ID
74
95
  account,
96
+ # Set to `true` to return only `id`, `name`, `type`, `canUpdate` and a rolled-up
97
+ # `mediaCount` per list, dropping the `medias` previews. Much smaller payload —
98
+ # ideal for rendering a folder picker. Default: `false`
99
+ lightweight: nil,
75
100
  # Number of media to return per page. Default: `24`
76
101
  limit: nil,
77
102
  # The offset used for pagination. Default `0`
@@ -92,7 +92,9 @@ module Onlyfans
92
92
  # The Account ID
93
93
  account,
94
94
  # Set to `true` to process uploads in the background. Returns a `polling_url` to
95
- # check status. Recommended for large files.
95
+ # check status. Recommended for large files. Instead of polling, you can subscribe
96
+ # to the `media_uploads.completed` and `media_uploads.failed` webhook events —
97
+ # they only fire for async uploads.
96
98
  async: nil,
97
99
  # The file to upload. Required if `file_url` is not provided. Maximum file size:
98
100
  # 100 MB (limited by Cloudflare).
@@ -9,17 +9,24 @@ module Onlyfans
9
9
  sig { returns(Onlyfans::Resources::Media::Vault) }
10
10
  attr_reader :vault
11
11
 
12
- # Downloads a file directly from a `https://cdn*.onlyfans.com/*` URL. When the
13
- # file is already cached on our CDN, this endpoint returns a `302` redirect to a
14
- # `https://cdn.fansapi.com/*` URL. Most HTTP clients follow redirects
15
- # automatically (`curl` requires `-L`). Otherwise, the file is streamed through
16
- # our proxies and queued for caching.
12
+ # Downloads a file from a `https://cdn*.onlyfans.com/*` URL through a `302`
13
+ # redirect. Follow redirects (`curl -L`). Cached `cdn.fansapi.com` files are free;
14
+ # otherwise `dl.fansapi.com` streams through the account proxy. Send one
15
+ # `Range: bytes=start-end` header to request a chunk for playback or a preview. A
16
+ # supported range returns `206`, `Content-Range`, and the chunk Content-Length; an
17
+ # upstream that ignores Range can return a full `200`, so check the response. Each
18
+ # nonempty transfer costs 3 credits per decimal MB streamed (minimum 1 credit).
19
+ # Credits for the selected response are reserved before streaming; unused reserved
20
+ # credits are released on completion, including an interrupted transfer. HEAD
21
+ # follows the same redirects and returns metadata without a body or download
22
+ # charge. HEAD does not populate the media cache. This regular endpoint does not
23
+ # decrypt DRM media.
17
24
  sig do
18
25
  params(
19
26
  cdn_url: String,
20
27
  account: String,
21
28
  request_options: Onlyfans::RequestOptions::OrHash
22
- ).returns(String)
29
+ ).void
23
30
  end
24
31
  def download(
25
32
  # Optional parameter. The CDN URL to scrape. **Keep in mind that these URLs expire
@@ -84,7 +91,9 @@ module Onlyfans
84
91
  # The Account ID
85
92
  account,
86
93
  # Set to `true` to process uploads in the background. Returns a `polling_url` to
87
- # check status. Recommended for large files.
94
+ # check status. Recommended for large files. Instead of polling, you can subscribe
95
+ # to the `media_uploads.completed` and `media_uploads.failed` webhook events —
96
+ # they only fire for async uploads.
88
97
  async: nil,
89
98
  # The file to upload. Required if `file_url` is not provided. Maximum file size:
90
99
  # 100 MB (limited by Cloudflare).
@@ -3,35 +3,6 @@
3
3
  module Onlyfans
4
4
  module Resources
5
5
  class Messages
6
- # Attach Tags (Release Forms) to a message that has already been sent. Please
7
- # note, that this is a "sync" operation - for example, if you provide empty
8
- # `rfTag` it will remove all existing tags already attached to the message.
9
- sig do
10
- params(
11
- message_id: String,
12
- account: String,
13
- rf_guest: String,
14
- rf_partner: String,
15
- rf_tag: String,
16
- request_options: Onlyfans::RequestOptions::OrHash
17
- ).returns(Onlyfans::Models::MessageAttachTagsResponse)
18
- end
19
- def attach_tags(
20
- # Path param: The ID of the message to attach the release forms to. This can be
21
- # ONLY a message sent by the creator.
22
- message_id,
23
- # Path param: The Account ID
24
- account:,
25
- # Body param: Array of OnlyFans Release Form Guest IDs to tag in your message
26
- rf_guest: nil,
27
- # Body param: Array of OnlyFans Release Form Partners IDs to tag in your message
28
- rf_partner: nil,
29
- # Body param: Array of OnlyFans Creator User IDs to tag in your message
30
- rf_tag: nil,
31
- request_options: {}
32
- )
33
- end
34
-
35
6
  # @api private
36
7
  sig { params(client: Onlyfans::Client).returns(T.attached_class) }
37
8
  def self.new(client:)
@@ -27,7 +27,7 @@ module Onlyfans
27
27
  from_id: nil,
28
28
  # The number of notifications. Default `10`
29
29
  limit: nil,
30
- # Whether to skip user details. Default `all`
30
+ # Whether to skip user details. Defaults to `all`.
31
31
  skip_users: nil,
32
32
  # Filter notifications by a specific type
33
33
  type: nil,
@@ -16,6 +16,8 @@ module Onlyfans
16
16
  params(
17
17
  account: String,
18
18
  text: String,
19
+ block_banned_words:
20
+ Onlyfans::PostCreateParams::BlockBannedWords::OrSymbol,
19
21
  expire_days: Integer,
20
22
  fund_raising_target_amount: Integer,
21
23
  fund_raising_tips_presets: T::Array[String],
@@ -37,6 +39,11 @@ module Onlyfans
37
39
  account,
38
40
  # The post text content
39
41
  text:,
42
+ # Screen `text` for OnlyFans banned words and block the post if any are found
43
+ # (returns a 422 listing the offending words). `strict_ban` blocks all tiers,
44
+ # `risky` blocks Risky + Replace/soften, `replace_soften` blocks Replace/soften
45
+ # only. Omit to disable screening.
46
+ block_banned_words: nil,
40
47
  # Number of days after which the post will expire. Between 1 and 30 days. Keep
41
48
  # empty for no expiration.
42
49
  expire_days: nil,
@@ -97,6 +104,8 @@ module Onlyfans
97
104
  post_id: Integer,
98
105
  account: String,
99
106
  text: String,
107
+ block_banned_words:
108
+ Onlyfans::PostUpdateParams::BlockBannedWords::OrSymbol,
100
109
  expire_days: Integer,
101
110
  fund_raising_target_amount: Integer,
102
111
  fund_raising_tips_presets: T::Array[String],
@@ -120,6 +129,11 @@ module Onlyfans
120
129
  account:,
121
130
  # Body param: The post text content
122
131
  text:,
132
+ # Body param: Screen `text` for OnlyFans banned words and block the update if any
133
+ # are found (returns a 422 listing the offending words). `strict_ban` blocks all
134
+ # tiers, `risky` blocks Risky + Replace/soften, `replace_soften` blocks
135
+ # Replace/soften only. Omit to disable screening.
136
+ block_banned_words: nil,
123
137
  # Body param: Number of days after which the post will expire. Between 1 and 30
124
138
  # days. Keep empty for no expiration.
125
139
  expire_days: nil,
@@ -3,29 +3,36 @@
3
3
  module Onlyfans
4
4
  module Resources
5
5
  class Queue
6
- # List posts and messages in the queue.
6
+ # List scheduled posts and mass messages for a date range. Use the type filter to
7
+ # return only posts, messages, or both.
7
8
  sig do
8
9
  params(
9
10
  account: String,
10
- limit: Integer,
11
11
  publish_date_end: String,
12
12
  publish_date_start: String,
13
13
  timezone: String,
14
+ limit: Integer,
15
+ type: T::Array[Onlyfans::QueueListParams::Type::OrSymbol],
14
16
  request_options: Onlyfans::RequestOptions::OrHash
15
17
  ).returns(Onlyfans::Models::QueueListResponse)
16
18
  end
17
19
  def list(
18
20
  # The Account ID
19
21
  account,
20
- # Maximum number of queue items to return (default = 20)
21
- limit:,
22
- # Latest publish date to return
22
+ # Latest publish date to return. Must be a valid date. Must be a valid date. Must
23
+ # be a date after or equal to <code>publishDateStart</code>.
23
24
  publish_date_end:,
24
- # Earliest publish date to return (must be at least today)
25
+ # Earliest publish date to return (must be at least today). Must be a valid date.
26
+ # Must be a valid date. Must be a date after or equal to <code>today</code>.
25
27
  publish_date_start:,
26
- # Time timezone of the provided dates.
27
- # [View available timezone values](https://www.php.net/manual/en/timezones.php)
28
+ # Timezone of the provided dates.
29
+ # [View available timezone values](https://www.php.net/manual/en/timezones.php).
30
+ # Must be a valid time zone, such as <code>Africa/Accra</code>.
28
31
  timezone:,
32
+ # Maximum number of queue items to return (default 20). Must be at least 1. Must
33
+ # not be greater than 100.
34
+ limit: nil,
35
+ type: nil,
29
36
  request_options: {}
30
37
  )
31
38
  end
@@ -40,7 +40,8 @@ module Onlyfans
40
40
 
41
41
  # Get a paginated list of users that can be tagged in release forms. These are
42
42
  # verified creators who have signed release forms to appear in your content. Use
43
- # `offset` and `limit` for pagination.
43
+ # `offset` and `limit` for pagination, following `_pagination.next_page` until it
44
+ # is `null`.
44
45
  sig do
45
46
  params(
46
47
  account: String,
@@ -17,20 +17,36 @@ module Onlyfans
17
17
  account: String,
18
18
  limit: Integer,
19
19
  offset: Integer,
20
- synchronous: T.nilable(T::Boolean),
20
+ pagination:
21
+ Onlyfans::SharedTrackingLinkListParams::Pagination::OrInteger,
22
+ sorting_deleted:
23
+ Onlyfans::SharedTrackingLinkListParams::SortingDeleted::OrInteger,
24
+ stats: String,
25
+ synchronous: T::Boolean,
26
+ with_deleted:
27
+ Onlyfans::SharedTrackingLinkListParams::WithDeleted::OrInteger,
21
28
  request_options: Onlyfans::RequestOptions::OrHash
22
29
  ).returns(Onlyfans::Models::SharedTrackingLinkListResponse)
23
30
  end
24
31
  def list(
25
32
  # The Account ID
26
33
  account,
27
- # The number of shared tracking links to return. Default `10`
34
+ # The number of shared tracking links to return. Default `10`. Must be at least 1.
35
+ # Must not be greater than 100.
28
36
  limit: nil,
29
- # The offset used for pagination. Default `0`
37
+ # The offset used for pagination. Default `0`. Must be at least 0.
30
38
  offset: nil,
31
- # Wait for the database sync to finish, instead of running it in the background.
32
- # **Will result in longer response times, use with caution**. Default `false`
39
+ # Whether pagination metadata is enabled. Default `1`.
40
+ pagination: nil,
41
+ # Whether deleted links participate in sorting. Default `1`.
42
+ sorting_deleted: nil,
43
+ # Whether statistics are included. Default `true`. Must not be greater than 10
44
+ # characters.
45
+ stats: nil,
46
+ # Wait for the database sync instead of processing it in the background.
33
47
  synchronous: nil,
48
+ # Whether to include deleted shared tracking links. Default `1`.
49
+ with_deleted: nil,
34
50
  request_options: {}
35
51
  )
36
52
  end