autorender 0.1.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 (152) hide show
  1. checksums.yaml +7 -0
  2. data/.ignore +2 -0
  3. data/CHANGELOG.md +41 -0
  4. data/README.md +266 -0
  5. data/SECURITY.md +27 -0
  6. data/lib/autorender/client.rb +98 -0
  7. data/lib/autorender/errors.rb +228 -0
  8. data/lib/autorender/file_part.rb +58 -0
  9. data/lib/autorender/internal/page_pagination.rb +96 -0
  10. data/lib/autorender/internal/transport/base_client.rb +576 -0
  11. data/lib/autorender/internal/transport/pooled_net_requester.rb +210 -0
  12. data/lib/autorender/internal/type/array_of.rb +168 -0
  13. data/lib/autorender/internal/type/base_model.rb +531 -0
  14. data/lib/autorender/internal/type/base_page.rb +55 -0
  15. data/lib/autorender/internal/type/boolean.rb +77 -0
  16. data/lib/autorender/internal/type/converter.rb +327 -0
  17. data/lib/autorender/internal/type/enum.rb +131 -0
  18. data/lib/autorender/internal/type/file_input.rb +111 -0
  19. data/lib/autorender/internal/type/hash_of.rb +188 -0
  20. data/lib/autorender/internal/type/request_parameters.rb +42 -0
  21. data/lib/autorender/internal/type/union.rb +237 -0
  22. data/lib/autorender/internal/type/unknown.rb +81 -0
  23. data/lib/autorender/internal/util.rb +968 -0
  24. data/lib/autorender/internal.rb +20 -0
  25. data/lib/autorender/models/file_delete_params.rb +20 -0
  26. data/lib/autorender/models/file_list_params.rb +65 -0
  27. data/lib/autorender/models/file_list_response.rb +167 -0
  28. data/lib/autorender/models/file_rename_params.rb +29 -0
  29. data/lib/autorender/models/file_rename_response.rb +143 -0
  30. data/lib/autorender/models/file_retrieve_params.rb +20 -0
  31. data/lib/autorender/models/file_retrieve_response.rb +143 -0
  32. data/lib/autorender/models/folder_create_params.rb +30 -0
  33. data/lib/autorender/models/folder_create_response.rb +54 -0
  34. data/lib/autorender/models/folder_delete_params.rb +20 -0
  35. data/lib/autorender/models/folder_list_params.rb +49 -0
  36. data/lib/autorender/models/folder_list_response.rb +65 -0
  37. data/lib/autorender/models/folder_rename_params.rb +29 -0
  38. data/lib/autorender/models/folder_rename_response.rb +54 -0
  39. data/lib/autorender/models/multipart_upload_complete_params.rb +26 -0
  40. data/lib/autorender/models/multipart_upload_complete_response.rb +144 -0
  41. data/lib/autorender/models/multipart_upload_start_params.rb +82 -0
  42. data/lib/autorender/models/multipart_upload_start_response.rb +105 -0
  43. data/lib/autorender/models/upload_create_from_url_params.rb +76 -0
  44. data/lib/autorender/models/upload_create_from_url_response.rb +144 -0
  45. data/lib/autorender/models/upload_create_params.rb +86 -0
  46. data/lib/autorender/models/upload_create_response.rb +144 -0
  47. data/lib/autorender/models.rb +65 -0
  48. data/lib/autorender/request_options.rb +77 -0
  49. data/lib/autorender/resources/files.rb +108 -0
  50. data/lib/autorender/resources/folders.rb +109 -0
  51. data/lib/autorender/resources/multipart_uploads.rb +66 -0
  52. data/lib/autorender/resources/uploads.rb +90 -0
  53. data/lib/autorender/version.rb +5 -0
  54. data/lib/autorender.rb +82 -0
  55. data/manifest.yaml +17 -0
  56. data/rbi/autorender/client.rbi +62 -0
  57. data/rbi/autorender/errors.rbi +205 -0
  58. data/rbi/autorender/file_part.rbi +37 -0
  59. data/rbi/autorender/internal/page_pagination.rbi +28 -0
  60. data/rbi/autorender/internal/transport/base_client.rbi +300 -0
  61. data/rbi/autorender/internal/transport/pooled_net_requester.rbi +84 -0
  62. data/rbi/autorender/internal/type/array_of.rbi +104 -0
  63. data/rbi/autorender/internal/type/base_model.rbi +308 -0
  64. data/rbi/autorender/internal/type/base_page.rbi +42 -0
  65. data/rbi/autorender/internal/type/boolean.rbi +58 -0
  66. data/rbi/autorender/internal/type/converter.rbi +216 -0
  67. data/rbi/autorender/internal/type/enum.rbi +82 -0
  68. data/rbi/autorender/internal/type/file_input.rbi +59 -0
  69. data/rbi/autorender/internal/type/hash_of.rbi +104 -0
  70. data/rbi/autorender/internal/type/request_parameters.rbi +29 -0
  71. data/rbi/autorender/internal/type/union.rbi +128 -0
  72. data/rbi/autorender/internal/type/unknown.rbi +58 -0
  73. data/rbi/autorender/internal/util.rbi +515 -0
  74. data/rbi/autorender/internal.rbi +18 -0
  75. data/rbi/autorender/models/file_delete_params.rbi +35 -0
  76. data/rbi/autorender/models/file_list_params.rbi +116 -0
  77. data/rbi/autorender/models/file_list_response.rbi +227 -0
  78. data/rbi/autorender/models/file_rename_params.rbi +49 -0
  79. data/rbi/autorender/models/file_rename_response.rbi +205 -0
  80. data/rbi/autorender/models/file_retrieve_params.rbi +35 -0
  81. data/rbi/autorender/models/file_retrieve_response.rbi +209 -0
  82. data/rbi/autorender/models/folder_create_params.rbi +54 -0
  83. data/rbi/autorender/models/folder_create_response.rbi +75 -0
  84. data/rbi/autorender/models/folder_delete_params.rbi +35 -0
  85. data/rbi/autorender/models/folder_list_params.rbi +97 -0
  86. data/rbi/autorender/models/folder_list_response.rbi +105 -0
  87. data/rbi/autorender/models/folder_rename_params.rbi +49 -0
  88. data/rbi/autorender/models/folder_rename_response.rbi +75 -0
  89. data/rbi/autorender/models/multipart_upload_complete_params.rbi +49 -0
  90. data/rbi/autorender/models/multipart_upload_complete_response.rbi +174 -0
  91. data/rbi/autorender/models/multipart_upload_start_params.rbi +138 -0
  92. data/rbi/autorender/models/multipart_upload_start_response.rbi +146 -0
  93. data/rbi/autorender/models/upload_create_from_url_params.rbi +119 -0
  94. data/rbi/autorender/models/upload_create_from_url_response.rbi +174 -0
  95. data/rbi/autorender/models/upload_create_params.rbi +128 -0
  96. data/rbi/autorender/models/upload_create_response.rbi +174 -0
  97. data/rbi/autorender/models.rbi +28 -0
  98. data/rbi/autorender/request_options.rbi +59 -0
  99. data/rbi/autorender/resources/files.rbi +72 -0
  100. data/rbi/autorender/resources/folders.rbi +75 -0
  101. data/rbi/autorender/resources/multipart_uploads.rbi +53 -0
  102. data/rbi/autorender/resources/uploads.rbi +84 -0
  103. data/rbi/autorender/version.rbi +5 -0
  104. data/sig/autorender/client.rbs +32 -0
  105. data/sig/autorender/errors.rbs +117 -0
  106. data/sig/autorender/file_part.rbs +21 -0
  107. data/sig/autorender/internal/page_pagination.rbs +17 -0
  108. data/sig/autorender/internal/transport/base_client.rbs +133 -0
  109. data/sig/autorender/internal/transport/pooled_net_requester.rbs +48 -0
  110. data/sig/autorender/internal/type/array_of.rbs +48 -0
  111. data/sig/autorender/internal/type/base_model.rbs +102 -0
  112. data/sig/autorender/internal/type/base_page.rbs +24 -0
  113. data/sig/autorender/internal/type/boolean.rbs +26 -0
  114. data/sig/autorender/internal/type/converter.rbs +79 -0
  115. data/sig/autorender/internal/type/enum.rbs +32 -0
  116. data/sig/autorender/internal/type/file_input.rbs +25 -0
  117. data/sig/autorender/internal/type/hash_of.rbs +48 -0
  118. data/sig/autorender/internal/type/request_parameters.rbs +19 -0
  119. data/sig/autorender/internal/type/union.rbs +52 -0
  120. data/sig/autorender/internal/type/unknown.rbs +26 -0
  121. data/sig/autorender/internal/util.rbs +199 -0
  122. data/sig/autorender/internal.rbs +9 -0
  123. data/sig/autorender/models/file_delete_params.rbs +23 -0
  124. data/sig/autorender/models/file_list_params.rbs +79 -0
  125. data/sig/autorender/models/file_list_response.rbs +159 -0
  126. data/sig/autorender/models/file_rename_params.rbs +28 -0
  127. data/sig/autorender/models/file_rename_response.rbs +132 -0
  128. data/sig/autorender/models/file_retrieve_params.rbs +23 -0
  129. data/sig/autorender/models/file_retrieve_response.rbs +132 -0
  130. data/sig/autorender/models/folder_create_params.rbs +30 -0
  131. data/sig/autorender/models/folder_create_response.rbs +50 -0
  132. data/sig/autorender/models/folder_delete_params.rbs +23 -0
  133. data/sig/autorender/models/folder_list_params.rbs +57 -0
  134. data/sig/autorender/models/folder_list_response.rbs +65 -0
  135. data/sig/autorender/models/folder_rename_params.rbs +28 -0
  136. data/sig/autorender/models/folder_rename_response.rbs +50 -0
  137. data/sig/autorender/models/multipart_upload_complete_params.rbs +30 -0
  138. data/sig/autorender/models/multipart_upload_complete_response.rbs +131 -0
  139. data/sig/autorender/models/multipart_upload_start_params.rbs +90 -0
  140. data/sig/autorender/models/multipart_upload_start_response.rbs +92 -0
  141. data/sig/autorender/models/upload_create_from_url_params.rbs +75 -0
  142. data/sig/autorender/models/upload_create_from_url_response.rbs +131 -0
  143. data/sig/autorender/models/upload_create_params.rbs +80 -0
  144. data/sig/autorender/models/upload_create_response.rbs +131 -0
  145. data/sig/autorender/models.rbs +25 -0
  146. data/sig/autorender/request_options.rbs +36 -0
  147. data/sig/autorender/resources/files.rbs +32 -0
  148. data/sig/autorender/resources/folders.rbs +31 -0
  149. data/sig/autorender/resources/multipart_uploads.rbs +26 -0
  150. data/sig/autorender/resources/uploads.rbs +32 -0
  151. data/sig/autorender/version.rbs +3 -0
  152. metadata +223 -0
@@ -0,0 +1,174 @@
1
+ # typed: strong
2
+
3
+ module Autorender
4
+ module Models
5
+ class UploadCreateResponse < Autorender::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(
9
+ Autorender::Models::UploadCreateResponse,
10
+ Autorender::Internal::AnyHash
11
+ )
12
+ end
13
+
14
+ sig { returns(String) }
15
+ attr_accessor :id
16
+
17
+ sig { returns(Time) }
18
+ attr_accessor :created_at
19
+
20
+ sig { returns(T.nilable(String)) }
21
+ attr_accessor :custom_id
22
+
23
+ sig { returns(String) }
24
+ attr_accessor :extension
25
+
26
+ sig { returns(String) }
27
+ attr_accessor :file_no
28
+
29
+ sig { returns(T.nilable(String)) }
30
+ attr_accessor :folder_no
31
+
32
+ sig { returns(T.nilable(Integer)) }
33
+ attr_accessor :height
34
+
35
+ sig { returns(T::Boolean) }
36
+ attr_accessor :is_duplicate
37
+
38
+ sig { returns(T.nilable(T::Hash[Symbol, T.anything])) }
39
+ attr_accessor :metadata
40
+
41
+ sig { returns(String) }
42
+ attr_accessor :mime_type
43
+
44
+ sig { returns(String) }
45
+ attr_accessor :name
46
+
47
+ sig { returns(String) }
48
+ attr_accessor :path
49
+
50
+ sig { returns(Integer) }
51
+ attr_accessor :size
52
+
53
+ sig { returns(T::Array[String]) }
54
+ attr_accessor :tags
55
+
56
+ sig { returns(String) }
57
+ attr_accessor :thumbnail
58
+
59
+ sig { returns(String) }
60
+ attr_accessor :upload_source
61
+
62
+ sig { returns(String) }
63
+ attr_accessor :url
64
+
65
+ sig { returns(T.nilable(Integer)) }
66
+ attr_accessor :width
67
+
68
+ sig { returns(String) }
69
+ attr_accessor :workspace_id
70
+
71
+ sig { returns(T.nilable(String)) }
72
+ attr_reader :format_
73
+
74
+ sig { params(format_: String).void }
75
+ attr_writer :format_
76
+
77
+ sig { returns(T.nilable(String)) }
78
+ attr_reader :hash_
79
+
80
+ sig { params(hash_: String).void }
81
+ attr_writer :hash_
82
+
83
+ sig { returns(T.nilable(T::Boolean)) }
84
+ attr_reader :is_private
85
+
86
+ sig { params(is_private: T::Boolean).void }
87
+ attr_writer :is_private
88
+
89
+ # Upload created
90
+ sig do
91
+ params(
92
+ id: String,
93
+ created_at: Time,
94
+ custom_id: T.nilable(String),
95
+ extension: String,
96
+ file_no: String,
97
+ folder_no: T.nilable(String),
98
+ height: T.nilable(Integer),
99
+ is_duplicate: T::Boolean,
100
+ metadata: T.nilable(T::Hash[Symbol, T.anything]),
101
+ mime_type: String,
102
+ name: String,
103
+ path: String,
104
+ size: Integer,
105
+ tags: T::Array[String],
106
+ thumbnail: String,
107
+ upload_source: String,
108
+ url: String,
109
+ width: T.nilable(Integer),
110
+ workspace_id: String,
111
+ format_: String,
112
+ hash_: String,
113
+ is_private: T::Boolean
114
+ ).returns(T.attached_class)
115
+ end
116
+ def self.new(
117
+ id:,
118
+ created_at:,
119
+ custom_id:,
120
+ extension:,
121
+ file_no:,
122
+ folder_no:,
123
+ height:,
124
+ is_duplicate:,
125
+ metadata:,
126
+ mime_type:,
127
+ name:,
128
+ path:,
129
+ size:,
130
+ tags:,
131
+ thumbnail:,
132
+ upload_source:,
133
+ url:,
134
+ width:,
135
+ workspace_id:,
136
+ format_: nil,
137
+ hash_: nil,
138
+ is_private: nil
139
+ )
140
+ end
141
+
142
+ sig do
143
+ override.returns(
144
+ {
145
+ id: String,
146
+ created_at: Time,
147
+ custom_id: T.nilable(String),
148
+ extension: String,
149
+ file_no: String,
150
+ folder_no: T.nilable(String),
151
+ height: T.nilable(Integer),
152
+ is_duplicate: T::Boolean,
153
+ metadata: T.nilable(T::Hash[Symbol, T.anything]),
154
+ mime_type: String,
155
+ name: String,
156
+ path: String,
157
+ size: Integer,
158
+ tags: T::Array[String],
159
+ thumbnail: String,
160
+ upload_source: String,
161
+ url: String,
162
+ width: T.nilable(Integer),
163
+ workspace_id: String,
164
+ format_: String,
165
+ hash_: String,
166
+ is_private: T::Boolean
167
+ }
168
+ )
169
+ end
170
+ def to_hash
171
+ end
172
+ end
173
+ end
174
+ end
@@ -0,0 +1,28 @@
1
+ # typed: strong
2
+
3
+ module Autorender
4
+ FileDeleteParams = Autorender::Models::FileDeleteParams
5
+
6
+ FileListParams = Autorender::Models::FileListParams
7
+
8
+ FileRenameParams = Autorender::Models::FileRenameParams
9
+
10
+ FileRetrieveParams = Autorender::Models::FileRetrieveParams
11
+
12
+ FolderCreateParams = Autorender::Models::FolderCreateParams
13
+
14
+ FolderDeleteParams = Autorender::Models::FolderDeleteParams
15
+
16
+ FolderListParams = Autorender::Models::FolderListParams
17
+
18
+ FolderRenameParams = Autorender::Models::FolderRenameParams
19
+
20
+ MultipartUploadCompleteParams =
21
+ Autorender::Models::MultipartUploadCompleteParams
22
+
23
+ MultipartUploadStartParams = Autorender::Models::MultipartUploadStartParams
24
+
25
+ UploadCreateFromURLParams = Autorender::Models::UploadCreateFromURLParams
26
+
27
+ UploadCreateParams = Autorender::Models::UploadCreateParams
28
+ end
@@ -0,0 +1,59 @@
1
+ # typed: strong
2
+
3
+ module Autorender
4
+ # Specify HTTP behaviour to use for a specific request. These options supplement
5
+ # or override those provided at the client level.
6
+ #
7
+ # When making a request, you can pass an actual {RequestOptions} instance, or
8
+ # simply pass a Hash with symbol keys matching the attributes on this class.
9
+ class RequestOptions < Autorender::Internal::Type::BaseModel
10
+ OrHash =
11
+ T.type_alias do
12
+ T.any(Autorender::RequestOptions, Autorender::Internal::AnyHash)
13
+ end
14
+
15
+ # @api private
16
+ sig { params(opts: Autorender::RequestOptions::OrHash).void }
17
+ def self.validate!(opts)
18
+ end
19
+
20
+ # Idempotency key to send with request and all associated retries. Will only be
21
+ # sent for write requests.
22
+ sig { returns(T.nilable(String)) }
23
+ attr_accessor :idempotency_key
24
+
25
+ # Extra query params to send with the request. These are `.merge`’d into any
26
+ # `query` given at the client level.
27
+ sig do
28
+ returns(
29
+ T.nilable(T::Hash[String, T.nilable(T.any(T::Array[String], String))])
30
+ )
31
+ end
32
+ attr_accessor :extra_query
33
+
34
+ # Extra headers to send with the request. These are `.merged`’d into any
35
+ # `extra_headers` given at the client level.
36
+ sig { returns(T.nilable(T::Hash[String, T.nilable(String)])) }
37
+ attr_accessor :extra_headers
38
+
39
+ # Extra data to send with the request. These are deep merged into any data
40
+ # generated as part of the normal request.
41
+ sig { returns(T.nilable(T.anything)) }
42
+ attr_accessor :extra_body
43
+
44
+ # Maximum number of retries to attempt after a failed initial request.
45
+ sig { returns(T.nilable(Integer)) }
46
+ attr_accessor :max_retries
47
+
48
+ # Request timeout in seconds.
49
+ sig { returns(T.nilable(Float)) }
50
+ attr_accessor :timeout
51
+
52
+ # Returns a new instance of RequestOptions.
53
+ sig do
54
+ params(values: Autorender::Internal::AnyHash).returns(T.attached_class)
55
+ end
56
+ def self.new(values = {})
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,72 @@
1
+ # typed: strong
2
+
3
+ module Autorender
4
+ module Resources
5
+ # File management endpoints (API key required)
6
+ class Files
7
+ # Get file details
8
+ sig do
9
+ params(
10
+ file_no: String,
11
+ request_options: Autorender::RequestOptions::OrHash
12
+ ).returns(Autorender::Models::FileRetrieveResponse)
13
+ end
14
+ def retrieve(file_no, request_options: {})
15
+ end
16
+
17
+ # List/search files with pagination, filtering, and sorting.
18
+ sig do
19
+ params(
20
+ folder_no: String,
21
+ limit: Integer,
22
+ page: Integer,
23
+ search: String,
24
+ sort: Autorender::FileListParams::Sort::OrSymbol,
25
+ request_options: Autorender::RequestOptions::OrHash
26
+ ).returns(Autorender::Models::FileListResponse)
27
+ end
28
+ def list(
29
+ # Filter by folder number
30
+ folder_no: nil,
31
+ limit: nil,
32
+ page: nil,
33
+ # Partial name match (case-insensitive)
34
+ search: nil,
35
+ sort: nil,
36
+ request_options: {}
37
+ )
38
+ end
39
+
40
+ # Delete file
41
+ sig do
42
+ params(
43
+ file_no: String,
44
+ request_options: Autorender::RequestOptions::OrHash
45
+ ).void
46
+ end
47
+ def delete(file_no, request_options: {})
48
+ end
49
+
50
+ # Rename file
51
+ sig do
52
+ params(
53
+ file_no: String,
54
+ name: String,
55
+ request_options: Autorender::RequestOptions::OrHash
56
+ ).returns(Autorender::Models::FileRenameResponse)
57
+ end
58
+ def rename(
59
+ file_no,
60
+ # New file name without extension or path separators
61
+ name:,
62
+ request_options: {}
63
+ )
64
+ end
65
+
66
+ # @api private
67
+ sig { params(client: Autorender::Client).returns(T.attached_class) }
68
+ def self.new(client:)
69
+ end
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,75 @@
1
+ # typed: strong
2
+
3
+ module Autorender
4
+ module Resources
5
+ # Folder management endpoints (API key required)
6
+ class Folders
7
+ # Create folder
8
+ sig do
9
+ params(
10
+ name: String,
11
+ parent_folder_no: String,
12
+ request_options: Autorender::RequestOptions::OrHash
13
+ ).returns(Autorender::Models::FolderCreateResponse)
14
+ end
15
+ def create(
16
+ # Folder name without slashes
17
+ name:,
18
+ # Parent folder number
19
+ parent_folder_no: nil,
20
+ request_options: {}
21
+ )
22
+ end
23
+
24
+ # List folders
25
+ sig do
26
+ params(
27
+ parent_folder_no: String,
28
+ search: String,
29
+ sort: Autorender::FolderListParams::Sort::OrSymbol,
30
+ request_options: Autorender::RequestOptions::OrHash
31
+ ).returns(Autorender::Models::FolderListResponse)
32
+ end
33
+ def list(
34
+ # Filter by parent folder number
35
+ parent_folder_no: nil,
36
+ # Partial name match (case-insensitive)
37
+ search: nil,
38
+ sort: nil,
39
+ request_options: {}
40
+ )
41
+ end
42
+
43
+ # Delete folder
44
+ sig do
45
+ params(
46
+ folder_no: String,
47
+ request_options: Autorender::RequestOptions::OrHash
48
+ ).void
49
+ end
50
+ def delete(folder_no, request_options: {})
51
+ end
52
+
53
+ # Rename folder
54
+ sig do
55
+ params(
56
+ folder_no: String,
57
+ name: String,
58
+ request_options: Autorender::RequestOptions::OrHash
59
+ ).returns(Autorender::Models::FolderRenameResponse)
60
+ end
61
+ def rename(
62
+ folder_no,
63
+ # New folder name without slashes
64
+ name:,
65
+ request_options: {}
66
+ )
67
+ end
68
+
69
+ # @api private
70
+ sig { params(client: Autorender::Client).returns(T.attached_class) }
71
+ def self.new(client:)
72
+ end
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,53 @@
1
+ # typed: strong
2
+
3
+ module Autorender
4
+ module Resources
5
+ # Upload endpoints (API key required)
6
+ class MultipartUploads
7
+ # Finalise a multipart upload session and return the stored file record.
8
+ sig do
9
+ params(
10
+ session_id: String,
11
+ uuid: String,
12
+ request_options: Autorender::RequestOptions::OrHash
13
+ ).returns(Autorender::Models::MultipartUploadCompleteResponse)
14
+ end
15
+ def complete(session_id:, uuid: nil, request_options: {})
16
+ end
17
+
18
+ # Initialise a multipart upload session and receive pre-signed part URLs.
19
+ sig do
20
+ params(
21
+ file_name: String,
22
+ format_: String,
23
+ size: Integer,
24
+ custom_id: String,
25
+ folder: String,
26
+ metadata: T::Hash[Symbol, T.anything],
27
+ random_prefix: T::Boolean,
28
+ tags: Autorender::MultipartUploadStartParams::Tags::Variants,
29
+ ttl_seconds: Integer,
30
+ request_options: Autorender::RequestOptions::OrHash
31
+ ).returns(Autorender::Models::MultipartUploadStartResponse)
32
+ end
33
+ def start(
34
+ file_name:,
35
+ format_:,
36
+ size:,
37
+ custom_id: nil,
38
+ folder: nil,
39
+ metadata: nil,
40
+ random_prefix: nil,
41
+ tags: nil,
42
+ ttl_seconds: nil,
43
+ request_options: {}
44
+ )
45
+ end
46
+
47
+ # @api private
48
+ sig { params(client: Autorender::Client).returns(T.attached_class) }
49
+ def self.new(client:)
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,84 @@
1
+ # typed: strong
2
+
3
+ module Autorender
4
+ module Resources
5
+ # Upload endpoints (API key required)
6
+ class Uploads
7
+ # Upload a file from your backend server using multipart/form-data.
8
+ sig do
9
+ params(
10
+ file: Autorender::Internal::FileInput,
11
+ file_name: String,
12
+ custom_id: String,
13
+ folder: String,
14
+ metadata: String,
15
+ random_prefix: String,
16
+ tags: String,
17
+ transform: String,
18
+ webhook_url: String,
19
+ request_options: Autorender::RequestOptions::OrHash
20
+ ).returns(Autorender::Models::UploadCreateResponse)
21
+ end
22
+ def create(
23
+ # File to upload.
24
+ file:,
25
+ # File name (e.g. product.jpg)
26
+ file_name:,
27
+ # Custom identifier
28
+ custom_id: nil,
29
+ # Optional folder path
30
+ folder: nil,
31
+ # JSON string of metadata
32
+ metadata: nil,
33
+ # true/false to append random suffix
34
+ random_prefix: nil,
35
+ # Comma-separated tags
36
+ tags: nil,
37
+ # Transform string (w_300,h_300,c_crop,...)
38
+ transform: nil,
39
+ # URL to notify on success
40
+ webhook_url: nil,
41
+ request_options: {}
42
+ )
43
+ end
44
+
45
+ # Download a file from a remote URL and store it in AutoRender.
46
+ sig do
47
+ params(
48
+ remote_url: String,
49
+ custom_id: String,
50
+ file_name: String,
51
+ folder: String,
52
+ metadata: String,
53
+ random_prefix: String,
54
+ tags: String,
55
+ webhook_url: String,
56
+ request_options: Autorender::RequestOptions::OrHash
57
+ ).returns(Autorender::Models::UploadCreateFromURLResponse)
58
+ end
59
+ def create_from_url(
60
+ # HTTP/HTTPS URL to fetch
61
+ remote_url:,
62
+ custom_id: nil,
63
+ # Override file name
64
+ file_name: nil,
65
+ # Destination folder path
66
+ folder: nil,
67
+ # JSON string of metadata object
68
+ metadata: nil,
69
+ # true/false to append random suffix
70
+ random_prefix: nil,
71
+ # Comma-separated tags
72
+ tags: nil,
73
+ webhook_url: nil,
74
+ request_options: {}
75
+ )
76
+ end
77
+
78
+ # @api private
79
+ sig { params(client: Autorender::Client).returns(T.attached_class) }
80
+ def self.new(client:)
81
+ end
82
+ end
83
+ end
84
+ end
@@ -0,0 +1,5 @@
1
+ # typed: strong
2
+
3
+ module Autorender
4
+ VERSION = T.let(T.unsafe(nil), String)
5
+ end
@@ -0,0 +1,32 @@
1
+ module Autorender
2
+ class Client < Autorender::Internal::Transport::BaseClient
3
+ DEFAULT_MAX_RETRIES: 2
4
+
5
+ DEFAULT_TIMEOUT_IN_SECONDS: Float
6
+
7
+ DEFAULT_INITIAL_RETRY_DELAY: Float
8
+
9
+ DEFAULT_MAX_RETRY_DELAY: Float
10
+
11
+ attr_reader api_key: String?
12
+
13
+ attr_reader uploads: Autorender::Resources::Uploads
14
+
15
+ attr_reader files: Autorender::Resources::Files
16
+
17
+ attr_reader folders: Autorender::Resources::Folders
18
+
19
+ attr_reader multipart_uploads: Autorender::Resources::MultipartUploads
20
+
21
+ private def auth_headers: -> ::Hash[String, String]
22
+
23
+ def initialize: (
24
+ ?api_key: String?,
25
+ ?base_url: String?,
26
+ ?max_retries: Integer,
27
+ ?timeout: Float,
28
+ ?initial_retry_delay: Float,
29
+ ?max_retry_delay: Float
30
+ ) -> void
31
+ end
32
+ end
@@ -0,0 +1,117 @@
1
+ module Autorender
2
+ module Errors
3
+ class Error < StandardError
4
+ attr_accessor cause: StandardError?
5
+ end
6
+
7
+ class ConversionError < Autorender::Errors::Error
8
+ def cause: -> StandardError?
9
+
10
+ def initialize: (
11
+ on: Class,
12
+ method: Symbol,
13
+ target: top,
14
+ value: top,
15
+ ?cause: StandardError?
16
+ ) -> void
17
+ end
18
+
19
+ class APIError < Autorender::Errors::Error
20
+ attr_accessor url: URI::Generic
21
+
22
+ attr_accessor status: Integer?
23
+
24
+ attr_accessor headers: ::Hash[String, String]?
25
+
26
+ attr_accessor body: top?
27
+
28
+ def initialize: (
29
+ url: URI::Generic,
30
+ ?status: Integer?,
31
+ ?headers: ::Hash[String, String]?,
32
+ ?body: Object?,
33
+ ?request: nil,
34
+ ?response: nil,
35
+ ?message: String?
36
+ ) -> void
37
+ end
38
+
39
+ class APIConnectionError < Autorender::Errors::APIError
40
+ def initialize: (
41
+ url: URI::Generic,
42
+ ?status: nil,
43
+ ?headers: ::Hash[String, String]?,
44
+ ?body: nil,
45
+ ?request: nil,
46
+ ?response: nil,
47
+ ?message: String?
48
+ ) -> void
49
+ end
50
+
51
+ class APITimeoutError < Autorender::Errors::APIConnectionError
52
+ def initialize: (
53
+ url: URI::Generic,
54
+ ?status: nil,
55
+ ?headers: ::Hash[String, String]?,
56
+ ?body: nil,
57
+ ?request: nil,
58
+ ?response: nil,
59
+ ?message: String?
60
+ ) -> void
61
+ end
62
+
63
+ class APIStatusError < Autorender::Errors::APIError
64
+ def self.for: (
65
+ url: URI::Generic,
66
+ status: Integer,
67
+ headers: ::Hash[String, String]?,
68
+ body: Object?,
69
+ request: nil,
70
+ response: nil,
71
+ ?message: String?
72
+ ) -> instance
73
+
74
+ def initialize: (
75
+ url: URI::Generic,
76
+ status: Integer,
77
+ headers: ::Hash[String, String]?,
78
+ body: Object?,
79
+ request: nil,
80
+ response: nil,
81
+ ?message: String?
82
+ ) -> void
83
+ end
84
+
85
+ class BadRequestError < Autorender::Errors::APIStatusError
86
+ HTTP_STATUS: 400
87
+ end
88
+
89
+ class AuthenticationError < Autorender::Errors::APIStatusError
90
+ HTTP_STATUS: 401
91
+ end
92
+
93
+ class PermissionDeniedError < Autorender::Errors::APIStatusError
94
+ HTTP_STATUS: 403
95
+ end
96
+
97
+ class NotFoundError < Autorender::Errors::APIStatusError
98
+ HTTP_STATUS: 404
99
+ end
100
+
101
+ class ConflictError < Autorender::Errors::APIStatusError
102
+ HTTP_STATUS: 409
103
+ end
104
+
105
+ class UnprocessableEntityError < Autorender::Errors::APIStatusError
106
+ HTTP_STATUS: 422
107
+ end
108
+
109
+ class RateLimitError < Autorender::Errors::APIStatusError
110
+ HTTP_STATUS: 429
111
+ end
112
+
113
+ class InternalServerError < Autorender::Errors::APIStatusError
114
+ HTTP_STATUS: Range[Integer]
115
+ end
116
+ end
117
+ end