@apifreaks/openapi-specs 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 (109) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +156 -0
  3. package/dist/index.cjs +44663 -0
  4. package/dist/index.d.cts +30 -0
  5. package/dist/index.d.ts +30 -0
  6. package/dist/index.js +44631 -0
  7. package/package.json +81 -0
  8. package/specs/commodity/commodity-fluctuation.json +301 -0
  9. package/specs/commodity/commodity-prices.json +317 -0
  10. package/specs/commodity/commodity-symbols.json +215 -0
  11. package/specs/commodity/commodity-time-series.json +329 -0
  12. package/specs/commodity/historical-commodity-prices.json +273 -0
  13. package/specs/currency/currency-converter.json +261 -0
  14. package/specs/currency/currency-fluctuation.json +282 -0
  15. package/specs/currency/currency-historical-data-limit.json +158 -0
  16. package/specs/currency/currency-rate.json +229 -0
  17. package/specs/currency/currency-supported.json +234 -0
  18. package/specs/currency/currency-symbols.json +161 -0
  19. package/specs/currency/currency-time-series.json +325 -0
  20. package/specs/currency/geolocalized-currency-conversion.json +287 -0
  21. package/specs/currency/historical-currency-converter.json +269 -0
  22. package/specs/currency/historical-currency-rate.json +246 -0
  23. package/specs/dns/bulk-dns-lookup.json +624 -0
  24. package/specs/dns/dns-history-lookup.json +579 -0
  25. package/specs/dns/dns-lookup.json +466 -0
  26. package/specs/dns/reverse-dns-lookup.json +414 -0
  27. package/specs/domain/bulk-domain-checker.json +284 -0
  28. package/specs/domain/domain-search-with-suggestions.json +280 -0
  29. package/specs/domain/domain-search.json +206 -0
  30. package/specs/domain/subdomain-lookup.json +343 -0
  31. package/specs/email-validation/bulk-email-validation.json +534 -0
  32. package/specs/email-validation/email-checker.json +586 -0
  33. package/specs/financial/bulk-vat-rates-country.json +341 -0
  34. package/specs/financial/financial-apis-supported-countries.json +204 -0
  35. package/specs/financial/iban-validation.json +328 -0
  36. package/specs/financial/swift-code-finder.json +192 -0
  37. package/specs/financial/swift-code-lookup.json +220 -0
  38. package/specs/financial/vat-number-validation.json +283 -0
  39. package/specs/financial/vat-rates-by-ip.json +275 -0
  40. package/specs/financial/vat-rates-country.json +288 -0
  41. package/specs/general/usage-credits.json +218 -0
  42. package/specs/geocoding/forward-geocoding.json +402 -0
  43. package/specs/geocoding/reverse-geocoding.json +326 -0
  44. package/specs/geodb/administrative-units-details.json +250 -0
  45. package/specs/geodb/administrative-units-levels.json +198 -0
  46. package/specs/geodb/administrative-units.json +237 -0
  47. package/specs/geodb/cities.json +288 -0
  48. package/specs/geodb/countries-details.json +274 -0
  49. package/specs/geodb/countries.json +276 -0
  50. package/specs/geodb/flags-supported.json +166 -0
  51. package/specs/geodb/flags.json +227 -0
  52. package/specs/geodb/regions.json +109 -0
  53. package/specs/geodb/subregions.json +217 -0
  54. package/specs/ip-intelligence/bulk-ip-lookup.json +1162 -0
  55. package/specs/ip-intelligence/bulk-ip-threat-intelligence.json +417 -0
  56. package/specs/ip-intelligence/ip-locator.json +941 -0
  57. package/specs/ip-intelligence/ip-threat-intelligence.json +316 -0
  58. package/specs/other/astronomy-data.json +803 -0
  59. package/specs/pdf/delete-pdf-page.json +286 -0
  60. package/specs/pdf/linearize-pdf.json +277 -0
  61. package/specs/pdf/merge-pdf.json +285 -0
  62. package/specs/pdf/pdf-compress.json +304 -0
  63. package/specs/pdf/pdf-decrypt.json +297 -0
  64. package/specs/pdf/pdf-encrypt.json +314 -0
  65. package/specs/pdf/pdf-extract-pages.json +295 -0
  66. package/specs/pdf/pdf-file-status.json +208 -0
  67. package/specs/pdf/pdf-file.json +190 -0
  68. package/specs/pdf/pdf-files.json +126 -0
  69. package/specs/pdf/pdf-resource-download.json +168 -0
  70. package/specs/pdf/pdf-resource-upload-binary.json +218 -0
  71. package/specs/pdf/pdf-resource-upload.json +248 -0
  72. package/specs/pdf/pdf-restrict.json +343 -0
  73. package/specs/pdf/pdf-split-pages.json +281 -0
  74. package/specs/pdf/pdf-task-status.json +252 -0
  75. package/specs/pdf/pdf-to-image.json +1219 -0
  76. package/specs/pdf/pdf-unrestrict.json +324 -0
  77. package/specs/pdf/rotate-pdf-pages.json +305 -0
  78. package/specs/phone-validation/bulk-phone-number-validation.json +518 -0
  79. package/specs/phone-validation/phone-number-validation.json +456 -0
  80. package/specs/scraper/web-scraper.json +674 -0
  81. package/specs/screenshot/bulk-screenshot.json +949 -0
  82. package/specs/screenshot/website-screenshot.json +1147 -0
  83. package/specs/ssl/ssl-certificate-chain-lookup.json +756 -0
  84. package/specs/ssl/ssl-certificate-lookup.json +634 -0
  85. package/specs/timezone/timezone-converter.json +362 -0
  86. package/specs/timezone/timezone-lookup.json +910 -0
  87. package/specs/user-agent/bulk-user-agent-parser.json +441 -0
  88. package/specs/user-agent/user-agent-parser.json +346 -0
  89. package/specs/weather/air-quality.json +779 -0
  90. package/specs/weather/bulk-live-weather.json +834 -0
  91. package/specs/weather/flood-forecast.json +693 -0
  92. package/specs/weather/historical-weather.json +1019 -0
  93. package/specs/weather/live-weather.json +789 -0
  94. package/specs/weather/marine-weather.json +940 -0
  95. package/specs/weather/time-series-weather.json +1056 -0
  96. package/specs/weather/weather-forecast.json +1202 -0
  97. package/specs/whois/asn-lookup.json +729 -0
  98. package/specs/whois/bulk-whois-lookup.json +698 -0
  99. package/specs/whois/domain-whois-history-lookup.json +500 -0
  100. package/specs/whois/reverse-whois.json +625 -0
  101. package/specs/whois/whois-domain-lookup.json +533 -0
  102. package/specs/whois/whois-ip-lookup.json +1110 -0
  103. package/specs/zip-code/bulk-zip-code-lookup.json +318 -0
  104. package/specs/zip-code/zip-code-api.json +299 -0
  105. package/specs/zip-code/zip-code-distance-match.json +311 -0
  106. package/specs/zip-code/zip-code-distance.json +307 -0
  107. package/specs/zip-code/zip-codes-by-city.json +279 -0
  108. package/specs/zip-code/zip-codes-by-region.json +278 -0
  109. package/specs/zip-code/zip-codes-radius-search.json +349 -0
@@ -0,0 +1,324 @@
1
+ {
2
+ "openapi": "3.1.1",
3
+ "info": {
4
+ "title": "PDF Unrestrict API Reference",
5
+ "version": "1.0.0",
6
+ "description": "Remove all restrictions from a restricted PDF file using the owner password. Returns a task ID for tracking the unrestrict progress.",
7
+ "contact": {
8
+ "name": "APIFreaks Support",
9
+ "url": "https://apifreaks.com/contact",
10
+ "email": "support@apifreaks.com"
11
+ }
12
+ },
13
+ "servers": [
14
+ {
15
+ "url": "https://api.apifreaks.com/v1.0",
16
+ "description": "PDF Unrestrict API Server"
17
+ }
18
+ ],
19
+ "paths": {
20
+ "/pdf/unrestrict": {
21
+ "post": {
22
+ "tags": [
23
+ "PDF Security APIs"
24
+ ],
25
+ "summary": "Remove permission restrictions from a PDF while keeping it encrypted.",
26
+ "description": "This API removes permission restrictions from a PDF while keeping it encrypted. If you want to remove all security (including encryption), use the `/pdf/decrypt` endpoint instead.",
27
+ "parameters": [
28
+ {
29
+ "name": "format",
30
+ "in": "query",
31
+ "required": false,
32
+ "schema": {
33
+ "type": "string",
34
+ "enum": [
35
+ "json",
36
+ "xml"
37
+ ],
38
+ "default": "json"
39
+ },
40
+ "description": "Specifies the desired format for the API response. Choose 'json' for a JSON object or 'xml' for an XML structure."
41
+ },
42
+ {
43
+ "name": "file_id",
44
+ "in": "query",
45
+ "required": false,
46
+ "schema": {
47
+ "type": "string"
48
+ },
49
+ "description": "The unique ID of a PDF file already uploaded to the API Freaks server. Use this as an alternative to uploading a new file directly."
50
+ },
51
+ {
52
+ "name": "destroy",
53
+ "in": "query",
54
+ "required": false,
55
+ "schema": {
56
+ "type": "boolean"
57
+ },
58
+ "description": "If set to `true`, the input file(s) will be permanently deleted from the server immediately after the output PDF is generated."
59
+ },
60
+ {
61
+ "name": "output",
62
+ "in": "query",
63
+ "required": false,
64
+ "schema": {
65
+ "type": "string"
66
+ },
67
+ "description": "The desired name for the output unrestricted PDF file. If not provided, a default name will be assigned."
68
+ },
69
+ {
70
+ "name": "file_password",
71
+ "in": "query",
72
+ "required": true,
73
+ "schema": {
74
+ "type": "string"
75
+ },
76
+ "description": "The password to unlock the input file. Either the owner password or user password can be provided. The owner password takes precedence. Password Length should be between 6 and 128 characters."
77
+ },
78
+ {
79
+ "name": "user_password",
80
+ "in": "query",
81
+ "required": true,
82
+ "schema": {
83
+ "type": "string"
84
+ },
85
+ "description": "Sets the user password for the PDF file. Required \u2014 providing only owner_password without user_password is rejected. Password Length should be between 6 and 128 characters."
86
+ },
87
+ {
88
+ "name": "owner_password",
89
+ "in": "query",
90
+ "required": false,
91
+ "schema": {
92
+ "type": "string"
93
+ },
94
+ "description": "Sets the owner password for the PDF file. If the owner password is not provided, the `user_password` will also be used as the owner password. Password Length should be between 6 and 128 characters."
95
+ },
96
+ {
97
+ "name": "webhook_url",
98
+ "in": "query",
99
+ "required": false,
100
+ "schema": {
101
+ "type": "string"
102
+ },
103
+ "description": "The URL to which the webhook notification will be sent after the task is completed."
104
+ },
105
+ {
106
+ "name": "webhook_failure_notification",
107
+ "in": "query",
108
+ "required": false,
109
+ "schema": {
110
+ "type": "boolean"
111
+ },
112
+ "description": "If true, a notification will also be sent by email in case the webhook request fails all the retries. The email notification will be sent to the requesting user or their organization\u2019s admin if part of one."
113
+ },
114
+ {
115
+ "name": "X-Webhook-Authorization",
116
+ "in": "header",
117
+ "required": false,
118
+ "schema": {
119
+ "type": "string"
120
+ },
121
+ "description": "Optional custom header for webhook requests. Format: `Key:Value` (e.g., `Authorization:Bearer token123`). This will be sent as an HTTP header in the webhook call."
122
+ }
123
+ ],
124
+ "requestBody": {
125
+ "description": "Multipart form-data body carrying the PDF file to unrestrict. Alternatively, reference an already-uploaded file via the file_id query parameter instead of uploading here.",
126
+ "required": false,
127
+ "content": {
128
+ "multipart/form-data": {
129
+ "schema": {
130
+ "$ref": "#/components/schemas/PdfFileUploadRequest"
131
+ }
132
+ }
133
+ }
134
+ },
135
+ "responses": {
136
+ "200": {
137
+ "description": "PDF unrestrict successfully",
138
+ "content": {
139
+ "application/json": {
140
+ "schema": {
141
+ "$ref": "#/components/schemas/PDFResponse"
142
+ },
143
+ "examples": {
144
+ "success": {
145
+ "summary": "Task created",
146
+ "value": {
147
+ "taskId": "16cc979a-55b9-476c-bfef-0977314478ec",
148
+ "inputIds": [
149
+ "9c809ef8-583a-40f1-afe2-424d1d953b69"
150
+ ]
151
+ }
152
+ }
153
+ }
154
+ }
155
+ }
156
+ },
157
+ "400": {
158
+ "description": "Bad Request \u2014 Missing/invalid parameters, file ID, or password",
159
+ "content": {
160
+ "application/json": {
161
+ "examples": {
162
+ "MissingParams": {
163
+ "summary": "Missing required file_password or user_password parameter",
164
+ "value": {
165
+ "error": "Invalid Param Exception",
166
+ "message": "please pass correct parameters",
167
+ "path": "/v1.0/pdf/unrestrict",
168
+ "status": 400,
169
+ "timestamp": "2026-07-27T10:59:22.835Z"
170
+ }
171
+ },
172
+ "MissingFileOrID": {
173
+ "summary": "Neither a file nor a file ID was provided",
174
+ "value": {
175
+ "timestamp": "2026-07-27T10:59:23.398Z",
176
+ "path": "/v1.0/pdf/unrestrict-pdf",
177
+ "status": 400,
178
+ "error": "Missing File or ID",
179
+ "message": "Please provide either a file or a file ID."
180
+ }
181
+ },
182
+ "InvalidID": {
183
+ "summary": "file_id is malformed or does not exist",
184
+ "value": {
185
+ "error": "Invalid File ID Provided",
186
+ "message": "Please provide a valid file ID",
187
+ "path": "/v1.0/pdf/unrestrict",
188
+ "status": 400,
189
+ "timestamp": "2026-07-27T10:59:23.936Z"
190
+ }
191
+ },
192
+ "WeakPassword": {
193
+ "summary": "New password does not meet strength requirements",
194
+ "value": {
195
+ "timestamp": "2026-07-27T10:59:25.041Z",
196
+ "path": "/v1.0/pdf/unrestrict-pdf",
197
+ "status": 400,
198
+ "error": "Weak Password Provided",
199
+ "message": "Please provide a strong password. Refer to the documentation for password requirements."
200
+ }
201
+ }
202
+ },
203
+ "schema": {
204
+ "$ref": "#/components/schemas/ErrorResponse"
205
+ }
206
+ }
207
+ }
208
+ },
209
+ "415": {
210
+ "description": "Unsupported Media Type \u2014 File type not supported",
211
+ "content": {
212
+ "application/json": {
213
+ "schema": {
214
+ "$ref": "#/components/schemas/ErrorResponse"
215
+ },
216
+ "examples": {
217
+ "UnsupportedFileType": {
218
+ "summary": "Uploaded file is not a supported type",
219
+ "value": {
220
+ "timestamp": "2026-07-27T10:59:24.507Z",
221
+ "path": "/v1.0/pdf/unrestrict-pdf",
222
+ "status": 415,
223
+ "error": "Unsupported File Type",
224
+ "message": "The provided file type is not supported. Refer to the documentation for valid file types."
225
+ }
226
+ }
227
+ }
228
+ }
229
+ }
230
+ }
231
+ },
232
+ "operationId": "unrestrictPdf"
233
+ }
234
+ }
235
+ },
236
+ "components": {
237
+ "securitySchemes": {
238
+ "ApiKeyAuthHeader": {
239
+ "type": "apiKey",
240
+ "in": "header",
241
+ "name": "X-apiKey",
242
+ "description": "Pass your API key via the X-apiKey request header."
243
+ },
244
+ "ApiKeyAuthQuery": {
245
+ "type": "apiKey",
246
+ "in": "query",
247
+ "name": "apiKey",
248
+ "description": "Pass your API key via the apiKey query parameter."
249
+ }
250
+ },
251
+ "schemas": {
252
+ "PDFResponse": {
253
+ "type": "object",
254
+ "description": "Response containing the task ID and input file IDs for a PDF processing task.",
255
+ "required": [
256
+ "taskId"
257
+ ],
258
+ "properties": {
259
+ "taskId": {
260
+ "type": "string",
261
+ "description": "Task ID of the requested task, used to check the task status."
262
+ },
263
+ "inputIds": {
264
+ "type": "array",
265
+ "items": {
266
+ "type": "string"
267
+ },
268
+ "description": "File IDs for the input files provided for the task. Not returned when destroy parameter is true."
269
+ }
270
+ }
271
+ },
272
+ "PdfFileUploadRequest": {
273
+ "type": "object",
274
+ "description": "Multipart form-data request body containing the PDF file to process.",
275
+ "required": [],
276
+ "properties": {
277
+ "file": {
278
+ "type": "string",
279
+ "format": "binary",
280
+ "description": "Raw PDF file bytes sent as a multipart/form-data field named 'file'. Omit this field entirely and pass file_id in the query string instead to use an already-uploaded file."
281
+ }
282
+ }
283
+ },
284
+ "ErrorResponse": {
285
+ "type": "object",
286
+ "description": "Standard error envelope returned by the API on failed requests.",
287
+ "required": [
288
+ "message"
289
+ ],
290
+ "properties": {
291
+ "error": {
292
+ "type": "string",
293
+ "description": "Short error category or exception type."
294
+ },
295
+ "message": {
296
+ "type": "string",
297
+ "description": "Human-readable error message describing the failure."
298
+ },
299
+ "path": {
300
+ "type": "string",
301
+ "description": "API endpoint path that produced the error."
302
+ },
303
+ "status": {
304
+ "type": "integer",
305
+ "description": "HTTP status code returned with the error."
306
+ },
307
+ "timestamp": {
308
+ "type": "string",
309
+ "format": "date-time",
310
+ "description": "Timestamp when the error occurred (ISO 8601)."
311
+ }
312
+ }
313
+ }
314
+ }
315
+ },
316
+ "security": [
317
+ {
318
+ "ApiKeyAuthHeader": []
319
+ },
320
+ {
321
+ "ApiKeyAuthQuery": []
322
+ }
323
+ ]
324
+ }
@@ -0,0 +1,305 @@
1
+ {
2
+ "openapi": "3.1.1",
3
+ "info": {
4
+ "title": "PDF Rotate API - Instantly Change Page Orientation",
5
+ "version": "1.0.0",
6
+ "description": "Rotate pages in a PDF file by 90, 180, or 270 degrees. Supports individual page rotation or batch rotation. Returns a task ID.",
7
+ "contact": {
8
+ "name": "APIFreaks Support",
9
+ "url": "https://apifreaks.com/contact",
10
+ "email": "support@apifreaks.com"
11
+ }
12
+ },
13
+ "servers": [
14
+ {
15
+ "url": "https://api.apifreaks.com/v1.0",
16
+ "description": "PDF Rotate API Server"
17
+ }
18
+ ],
19
+ "paths": {
20
+ "/pdf/rotate": {
21
+ "post": {
22
+ "tags": [
23
+ "PDF Operations APIs"
24
+ ],
25
+ "summary": "Rotate pages in a PDF",
26
+ "description": "This API rotates pages of a PDF by a specified angle (in multiples of 90 degrees).",
27
+ "parameters": [
28
+ {
29
+ "name": "format",
30
+ "in": "query",
31
+ "required": false,
32
+ "schema": {
33
+ "type": "string",
34
+ "enum": [
35
+ "json",
36
+ "xml"
37
+ ],
38
+ "default": "json"
39
+ },
40
+ "description": "Specifies the desired format for the API response. Choose 'json' for a JSON object or 'xml' for an XML structure."
41
+ },
42
+ {
43
+ "name": "file_id",
44
+ "in": "query",
45
+ "required": false,
46
+ "schema": {
47
+ "type": "string"
48
+ },
49
+ "description": "The unique ID of a PDF file already uploaded to the API Freaks server. Use this as an alternative to uploading a new file directly."
50
+ },
51
+ {
52
+ "name": "destroy",
53
+ "in": "query",
54
+ "required": false,
55
+ "schema": {
56
+ "type": "boolean"
57
+ },
58
+ "description": "If set to `true`, the input file(s) will be permanently deleted from the server immediately after the output PDF is generated."
59
+ },
60
+ {
61
+ "name": "output",
62
+ "in": "query",
63
+ "required": false,
64
+ "schema": {
65
+ "type": "string"
66
+ },
67
+ "description": "The desired name for the output PDF file after rotation. If not provided, a default name will be assigned."
68
+ },
69
+ {
70
+ "name": "pages",
71
+ "in": "query",
72
+ "required": false,
73
+ "schema": {
74
+ "type": "string"
75
+ },
76
+ "description": "Specifies which pages to rotate. Accepts individual page numbers (e.g., '1,7') and/or ascending page ranges (e.g., '3-5'). Use commas to separate entries and hyphens for ranges. Reverse ranges (e.g., '5-3') are not allowed. Alternatively, provide only one of the following keywords: 'even' (rotate all even-numbered pages), 'odd' (rotate all odd-numbered pages), 'last' (rotate only the last page), or 'all' (rotate all pages). Examples: '1,3-5', 'odd', 'all'. Mixing special keywords with specific pages/ranges is not allowed."
77
+ },
78
+ {
79
+ "name": "rotate",
80
+ "in": "query",
81
+ "required": true,
82
+ "schema": {
83
+ "type": "integer"
84
+ },
85
+ "description": "The angle in degrees to rotate the selected pages. Must be one of the following values: 0, 90, 180, 270, -90, -180, or -270. All rotations are applied clockwise."
86
+ },
87
+ {
88
+ "name": "webhook_url",
89
+ "in": "query",
90
+ "required": false,
91
+ "schema": {
92
+ "type": "string"
93
+ },
94
+ "description": "The URL to which the webhook notification will be sent after the task is completed."
95
+ },
96
+ {
97
+ "name": "webhook_failure_notification",
98
+ "in": "query",
99
+ "required": false,
100
+ "schema": {
101
+ "type": "boolean"
102
+ },
103
+ "description": "If true, a notification will also be sent by email in case the webhook request fails all the retries. The email notification will be sent to the requesting user or their organization\u2019s admin if part of one."
104
+ },
105
+ {
106
+ "name": "X-Webhook-Authorization",
107
+ "in": "header",
108
+ "required": false,
109
+ "schema": {
110
+ "type": "string"
111
+ },
112
+ "description": "Optional custom header for webhook requests. Format: `Key:Value` (e.g., `Authorization:Bearer token123`). This will be sent as an HTTP header in the webhook call."
113
+ }
114
+ ],
115
+ "requestBody": {
116
+ "description": "Multipart form-data body carrying the PDF file to rotate. Alternatively, reference an already-uploaded file via the file_id query parameter instead of uploading here.",
117
+ "required": false,
118
+ "content": {
119
+ "multipart/form-data": {
120
+ "schema": {
121
+ "$ref": "#/components/schemas/PdfFileUploadRequest"
122
+ }
123
+ }
124
+ }
125
+ },
126
+ "responses": {
127
+ "200": {
128
+ "description": "Rotate task created successfully. Malformed or out-of-range page specifications are not rejected synchronously \u2014 the task is created, then fails asynchronously; poll the task status endpoint and check for status \"failed\" with an error/message pair.",
129
+ "content": {
130
+ "application/json": {
131
+ "schema": {
132
+ "$ref": "#/components/schemas/PDFResponse"
133
+ },
134
+ "examples": {
135
+ "success": {
136
+ "summary": "Task created",
137
+ "value": {
138
+ "taskId": "b59d27fa-9865-4ad8-8e7c-818eb263892b",
139
+ "inputIds": [
140
+ "0fb39c16-db08-4ac8-bb5f-51656f934aaa"
141
+ ]
142
+ }
143
+ }
144
+ }
145
+ }
146
+ }
147
+ },
148
+ "400": {
149
+ "description": "Bad Request \u2014 Missing/invalid parameters or file ID",
150
+ "content": {
151
+ "application/json": {
152
+ "examples": {
153
+ "MissingRotate": {
154
+ "summary": "Missing required rotate parameter",
155
+ "value": {
156
+ "error": "Invalid Param Exception",
157
+ "message": "please pass correct parameters",
158
+ "path": "/v1.0/pdf/rotate",
159
+ "status": 400,
160
+ "timestamp": "2026-07-27T10:54:37.098Z"
161
+ }
162
+ },
163
+ "InvalidRotation": {
164
+ "summary": "rotate value is not a supported angle",
165
+ "value": {
166
+ "timestamp": "2026-07-27T10:54:37.663Z",
167
+ "path": "/v1.0/pdf/rotate",
168
+ "status": 400,
169
+ "error": "Invalid Rotation Angle",
170
+ "message": "Please provide a valid rotation angle. Refer to the documentation for valid rotation angles."
171
+ }
172
+ },
173
+ "InvalidID": {
174
+ "summary": "file_id is malformed or does not exist",
175
+ "value": {
176
+ "error": "Invalid File ID Provided",
177
+ "message": "Please provide a valid file ID",
178
+ "path": "/v1.0/pdf/rotate",
179
+ "status": 400,
180
+ "timestamp": "2026-07-27T10:54:38.253Z"
181
+ }
182
+ }
183
+ },
184
+ "schema": {
185
+ "$ref": "#/components/schemas/ErrorResponse"
186
+ }
187
+ }
188
+ }
189
+ },
190
+ "415": {
191
+ "description": "Unsupported Media Type \u2014 File type not supported",
192
+ "content": {
193
+ "application/json": {
194
+ "examples": {
195
+ "UnsupportedFileType": {
196
+ "summary": "Uploaded file is not a supported type",
197
+ "value": {
198
+ "timestamp": "2026-07-27T10:54:38.800Z",
199
+ "path": "/v1.0/pdf/rotate",
200
+ "status": 415,
201
+ "error": "Unsupported File Type",
202
+ "message": "The provided file type is not supported. Refer to the documentation for valid file types."
203
+ }
204
+ }
205
+ },
206
+ "schema": {
207
+ "$ref": "#/components/schemas/ErrorResponse"
208
+ }
209
+ }
210
+ }
211
+ }
212
+ },
213
+ "operationId": "rotatePdfPages"
214
+ }
215
+ }
216
+ },
217
+ "components": {
218
+ "securitySchemes": {
219
+ "ApiKeyAuthHeader": {
220
+ "type": "apiKey",
221
+ "in": "header",
222
+ "name": "X-apiKey",
223
+ "description": "Pass your API key via the X-apiKey request header."
224
+ },
225
+ "ApiKeyAuthQuery": {
226
+ "type": "apiKey",
227
+ "in": "query",
228
+ "name": "apiKey",
229
+ "description": "Pass your API key via the apiKey query parameter."
230
+ }
231
+ },
232
+ "schemas": {
233
+ "PDFResponse": {
234
+ "type": "object",
235
+ "description": "Response containing the task ID and input file IDs for a PDF processing task.",
236
+ "required": [
237
+ "taskId"
238
+ ],
239
+ "properties": {
240
+ "taskId": {
241
+ "type": "string",
242
+ "description": "Task ID of the requested task, used to check the task status."
243
+ },
244
+ "inputIds": {
245
+ "type": "array",
246
+ "items": {
247
+ "type": "string"
248
+ },
249
+ "description": "File IDs for the input files provided for the task. Not returned when destroy parameter is true."
250
+ }
251
+ }
252
+ },
253
+ "PdfFileUploadRequest": {
254
+ "type": "object",
255
+ "description": "Multipart form-data request body containing the PDF file to process.",
256
+ "required": [],
257
+ "properties": {
258
+ "file": {
259
+ "type": "string",
260
+ "format": "binary",
261
+ "description": "Raw PDF file bytes sent as a multipart/form-data field named 'file'. Omit this field entirely and pass file_id in the query string instead to use an already-uploaded file."
262
+ }
263
+ }
264
+ },
265
+ "ErrorResponse": {
266
+ "type": "object",
267
+ "description": "Standard error envelope returned by the API on failed requests.",
268
+ "required": [
269
+ "message"
270
+ ],
271
+ "properties": {
272
+ "error": {
273
+ "type": "string",
274
+ "description": "Short error category or exception type."
275
+ },
276
+ "message": {
277
+ "type": "string",
278
+ "description": "Human-readable error message describing the failure."
279
+ },
280
+ "path": {
281
+ "type": "string",
282
+ "description": "API endpoint path that produced the error."
283
+ },
284
+ "status": {
285
+ "type": "integer",
286
+ "description": "HTTP status code returned with the error."
287
+ },
288
+ "timestamp": {
289
+ "type": "string",
290
+ "format": "date-time",
291
+ "description": "Timestamp when the error occurred (ISO 8601)."
292
+ }
293
+ }
294
+ }
295
+ }
296
+ },
297
+ "security": [
298
+ {
299
+ "ApiKeyAuthHeader": []
300
+ },
301
+ {
302
+ "ApiKeyAuthQuery": []
303
+ }
304
+ ]
305
+ }