@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,287 @@
1
+ {
2
+ "openapi": "3.1.1",
3
+ "info": {
4
+ "title": "IP Currency API - Convert Any Amount to Local Currency from an IP Address",
5
+ "version": "1.0.0",
6
+ "description": "Convert an amount from one currency to the local currency of a given IP address using the latest exchange rates. Uses IP geolocation to determine the target currency based on the visitor country. Accepts source currency, IP address, and amount. Supports fiat, crypto, and metals. All parameters are case-insensitive for both fiat/currency codes and crypto/symbols.",
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": "Geolocalized Currency Converter API Server"
17
+ }
18
+ ],
19
+ "paths": {
20
+ "/currency/converter/ip-to-currency": {
21
+ "get": {
22
+ "tags": ["Currency APIs"],
23
+ "summary": "Convert currency based on IP geolocation",
24
+ "description": "Converts an amount to the local currency of a given IP address.",
25
+ "operationId": "convertByIp",
26
+ "parameters": [
27
+ {
28
+ "name": "format",
29
+ "in": "query",
30
+ "required": false,
31
+ "description": "Response format: `json` (default) or `xml`.",
32
+ "schema": {
33
+ "type": "string",
34
+ "enum": ["json", "xml"],
35
+ "default": "json"
36
+ }
37
+ },
38
+ {
39
+ "name": "from",
40
+ "in": "query",
41
+ "required": true,
42
+ "description": "Source currency code.",
43
+ "schema": {
44
+ "type": "string"
45
+ }
46
+ },
47
+ {
48
+ "name": "ip",
49
+ "in": "query",
50
+ "required": false,
51
+ "description": "IPv4 or IPv6 address. Defaults to the request IP.",
52
+ "schema": {
53
+ "type": "string"
54
+ }
55
+ },
56
+ {
57
+ "name": "amount",
58
+ "in": "query",
59
+ "required": false,
60
+ "description": "Amount to convert, as a decimal. Defaults to `1`. Non-numeric values return a 400.",
61
+ "schema": {
62
+ "type": "string",
63
+ "default": "1"
64
+ }
65
+ },
66
+ {
67
+ "name": "updates",
68
+ "in": "query",
69
+ "required": false,
70
+ "description": "Update frequency: `1m` (default), `10m`, `1h`, or `1d`.",
71
+ "schema": {
72
+ "type": "string",
73
+ "enum": ["1m", "10m", "1h", "1d"],
74
+ "default": "1m"
75
+ }
76
+ }
77
+ ],
78
+ "responses": {
79
+ "200": {
80
+ "description": "Successful operation",
81
+ "content": {
82
+ "application/json": {
83
+ "schema": {
84
+ "$ref": "#/components/schemas/GeolocalizedCurrencyConverterResponse"
85
+ },
86
+ "examples": {
87
+ "success": {
88
+ "summary": "Successful response",
89
+ "value": {
90
+ "date": "2026-07-27 12:10:00+00",
91
+ "from": "USD",
92
+ "to": "PKR",
93
+ "rate": "277.863",
94
+ "ipAddress": "182.186.18.91",
95
+ "givenAmount": "100.0",
96
+ "convertedAmount": "27786.300"
97
+ }
98
+ }
99
+ }
100
+ }
101
+ }
102
+ },
103
+ "400": {
104
+ "description": "Bad request - Invalid IP, amount, or updates",
105
+ "content": {
106
+ "application/json": {
107
+ "schema": {
108
+ "$ref": "#/components/schemas/ErrorResponse"
109
+ },
110
+ "examples": {
111
+ "missingFrom": {
112
+ "summary": "Missing required from parameter",
113
+ "value": {
114
+ "error": "Invalid Param Exception",
115
+ "message": "please pass correct parameters",
116
+ "path": "/v1.0/currency/converter/ip-to-currency",
117
+ "status": 400,
118
+ "timestamp": "2026-07-27T12:10:31.824Z"
119
+ }
120
+ },
121
+ "invalidAmount": {
122
+ "summary": "amount is not numeric",
123
+ "value": {
124
+ "timestamp": 1785154232373,
125
+ "status": 400,
126
+ "error": "Method Argument Type Mismatch",
127
+ "message": "Invalid Amount. Please provide amount in decimal format and greater than 0!",
128
+ "path": "/v2.0/iptocurrency"
129
+ }
130
+ },
131
+ "invalidIp": {
132
+ "summary": "ip is not a valid IPv4/IPv6 address",
133
+ "value": {
134
+ "timestamp": 1785154232944,
135
+ "status": 400,
136
+ "error": "Invalid Param Exception",
137
+ "message": "Provided IP Address not-an-ip is invalid.",
138
+ "path": "/v2.0/iptocurrency"
139
+ }
140
+ },
141
+ "invalidUpdates": {
142
+ "summary": "updates is not one of 1m/10m/1h/1d",
143
+ "value": {
144
+ "timestamp": 1785154262483,
145
+ "status": 400,
146
+ "error": "Invalid Param Exception",
147
+ "message": "Please provide valid updates parameter (1d,1h,10m,1m)",
148
+ "path": "/v2.0/iptocurrency"
149
+ }
150
+ }
151
+ }
152
+ }
153
+ }
154
+ },
155
+ "404": {
156
+ "description": "Not found - IP geolocation or currency not available",
157
+ "content": {
158
+ "application/json": {
159
+ "schema": {
160
+ "$ref": "#/components/schemas/ErrorResponse"
161
+ },
162
+ "examples": {
163
+ "unknownIp": {
164
+ "summary": "IP could not be geolocated",
165
+ "value": {
166
+ "timestamp": 1785154233555,
167
+ "status": 404,
168
+ "error": "Not Found Exception",
169
+ "message": "Geolocation of provided IP 0.0.0.0 is unknown.",
170
+ "path": "/v2.0/iptocurrency"
171
+ }
172
+ },
173
+ "invalidBase": {
174
+ "summary": "from currency not supported",
175
+ "value": {
176
+ "timestamp": 1785154234101,
177
+ "status": 404,
178
+ "error": "Not Found Exception",
179
+ "message": "Rates of provided currency ZZZ are not available in our database!",
180
+ "path": "/v2.0/iptocurrency"
181
+ }
182
+ }
183
+ }
184
+ }
185
+ }
186
+ }
187
+ }
188
+ }
189
+ }
190
+ },
191
+ "components": {
192
+ "securitySchemes": {
193
+ "ApiKeyAuthHeader": {
194
+ "type": "apiKey",
195
+ "in": "header",
196
+ "name": "X-apiKey",
197
+ "description": "Pass your API key via the X-apiKey request header."
198
+ },
199
+ "ApiKeyAuthQuery": {
200
+ "type": "apiKey",
201
+ "in": "query",
202
+ "name": "apiKey",
203
+ "description": "Pass your API key via the apiKey query parameter."
204
+ }
205
+ },
206
+ "schemas": {
207
+ "GeolocalizedCurrencyConverterResponse": {
208
+ "type": "object",
209
+ "required": [
210
+ "date",
211
+ "from",
212
+ "to",
213
+ "rate",
214
+ "ipAddress",
215
+ "givenAmount",
216
+ "convertedAmount"
217
+ ],
218
+ "properties": {
219
+ "date": {
220
+ "type": "string",
221
+ "description": "Date and time with timezone (UTC) when the rate was recorded."
222
+ },
223
+ "from": {
224
+ "type": "string",
225
+ "description": "Source currency code."
226
+ },
227
+ "to": {
228
+ "type": "string",
229
+ "description": "Target currency code — the local currency of the IP."
230
+ },
231
+ "rate": {
232
+ "type": "string",
233
+ "description": "Exchange rate from source to target currency."
234
+ },
235
+ "ipAddress": {
236
+ "type": "string",
237
+ "description": "IP address used for geolocation."
238
+ },
239
+ "givenAmount": {
240
+ "type": "string",
241
+ "description": "Amount provided for conversion."
242
+ },
243
+ "convertedAmount": {
244
+ "type": "string",
245
+ "description": "Converted amount in the target (local) currency."
246
+ }
247
+ },
248
+ "description": "Geolocalized currency conversion response containing the rate and converted amount based on IP geolocation."
249
+ },
250
+ "ErrorResponse": {
251
+ "type": "object",
252
+ "description": "Standard error envelope returned by the API on failed requests. Gateway-level validation errors use an ISO 8601 timestamp and the public endpoint path; currency-service errors use a Unix millisecond timestamp and an internal service path instead.",
253
+ "required": ["message"],
254
+ "properties": {
255
+ "timestamp": {
256
+ "type": ["string", "integer"],
257
+ "description": "Timestamp when the error occurred — ISO 8601 string for gateway errors, Unix milliseconds integer for currency-service errors."
258
+ },
259
+ "status": {
260
+ "type": "integer",
261
+ "description": "HTTP status code returned with the error."
262
+ },
263
+ "error": {
264
+ "type": "string",
265
+ "description": "Specific error type (e.g., Invalid Param Exception, Method Argument Type Mismatch, Not Found Exception)."
266
+ },
267
+ "message": {
268
+ "type": "string",
269
+ "description": "Human-readable error message describing the failure."
270
+ },
271
+ "path": {
272
+ "type": "string",
273
+ "description": "API endpoint path (gateway errors) or internal service path (currency-service errors) that produced the error."
274
+ }
275
+ }
276
+ }
277
+ }
278
+ },
279
+ "security": [
280
+ {
281
+ "ApiKeyAuthHeader": []
282
+ },
283
+ {
284
+ "ApiKeyAuthQuery": []
285
+ }
286
+ ]
287
+ }
@@ -0,0 +1,269 @@
1
+ {
2
+ "openapi": "3.1.1",
3
+ "info": {
4
+ "title": "Historical Currency Converter API Reference",
5
+ "version": "1.0.0",
6
+ "description": "Convert an amount from one currency to another using exchange rates from a specific historical date. Supports fiat, crypto, and metals. Returns the date, source and target currencies, the historical rate, and the converted amount. All parameters are case-insensitive for both fiat/currency codes and crypto/symbols.",
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": "Historical Currency Converter API Server"
17
+ }
18
+ ],
19
+ "paths": {
20
+ "/currency/converter/historical/prices": {
21
+ "get": {
22
+ "tags": ["Currency APIs"],
23
+ "summary": "Convert currency with historical rates",
24
+ "description": "Converts an amount using exchange rates from a specific historical date.",
25
+ "operationId": "convertHistorical",
26
+ "parameters": [
27
+ {
28
+ "name": "format",
29
+ "in": "query",
30
+ "required": false,
31
+ "description": "Response format: `json` (default) or `xml`.",
32
+ "schema": {
33
+ "type": "string",
34
+ "enum": ["json", "xml"],
35
+ "default": "json"
36
+ }
37
+ },
38
+ {
39
+ "name": "from",
40
+ "in": "query",
41
+ "required": true,
42
+ "description": "Source currency code.",
43
+ "schema": {
44
+ "type": "string"
45
+ }
46
+ },
47
+ {
48
+ "name": "to",
49
+ "in": "query",
50
+ "required": true,
51
+ "description": "Target currency code.",
52
+ "schema": {
53
+ "type": "string"
54
+ }
55
+ },
56
+ {
57
+ "name": "amount",
58
+ "in": "query",
59
+ "required": false,
60
+ "description": "Amount to convert, as a decimal. Defaults to `1`. Must be numeric — non-numeric values return a 400 (negative values are accepted despite the error message's wording).",
61
+ "schema": {
62
+ "type": "string",
63
+ "default": "1"
64
+ }
65
+ },
66
+ {
67
+ "name": "date",
68
+ "in": "query",
69
+ "required": true,
70
+ "description": "Historical date in `YYYY-MM-DD` format.",
71
+ "schema": {
72
+ "type": "string"
73
+ }
74
+ }
75
+ ],
76
+ "responses": {
77
+ "200": {
78
+ "description": "Successful operation",
79
+ "content": {
80
+ "application/json": {
81
+ "schema": {
82
+ "$ref": "#/components/schemas/HistoricalCurrencyConverterResponse"
83
+ },
84
+ "examples": {
85
+ "success": {
86
+ "summary": "Successful response",
87
+ "value": {
88
+ "date": "2025-01-10",
89
+ "from": "USD",
90
+ "to": "EUR",
91
+ "rate": "0.97620",
92
+ "givenAmount": "100.0",
93
+ "convertedAmount": "97.620"
94
+ }
95
+ }
96
+ }
97
+ }
98
+ }
99
+ },
100
+ "400": {
101
+ "description": "Bad request - Invalid amount or date format",
102
+ "content": {
103
+ "application/json": {
104
+ "schema": {
105
+ "$ref": "#/components/schemas/ErrorResponse"
106
+ },
107
+ "examples": {
108
+ "missingParams": {
109
+ "summary": "Missing required from/to/date parameter",
110
+ "value": {
111
+ "error": "Invalid Param Exception",
112
+ "message": "please pass correct parameters",
113
+ "path": "/v1.0/currency/converter/historical/prices",
114
+ "status": 400,
115
+ "timestamp": "2026-07-27T12:07:03.772Z"
116
+ }
117
+ },
118
+ "invalidAmount": {
119
+ "summary": "amount is not numeric",
120
+ "value": {
121
+ "timestamp": 1785154024296,
122
+ "status": 400,
123
+ "error": "Method Argument Type Mismatch",
124
+ "message": "Invalid Amount. Please provide amount in decimal format and greater than 0!",
125
+ "path": "/v2.0/convert/historical"
126
+ }
127
+ },
128
+ "invalidDateFormat": {
129
+ "summary": "date is not in YYYY-MM-DD format",
130
+ "value": {
131
+ "timestamp": 1785154024931,
132
+ "status": 400,
133
+ "error": "Invalid Param Exception",
134
+ "message": "Provided Date 10-01-2025 is in invalid format. It should be like YYYY-MM-DD!",
135
+ "path": "/v2.0/convert/historical"
136
+ }
137
+ }
138
+ }
139
+ }
140
+ }
141
+ },
142
+ "404": {
143
+ "description": "Not found - Currency or date not available",
144
+ "content": {
145
+ "application/json": {
146
+ "schema": {
147
+ "$ref": "#/components/schemas/ErrorResponse"
148
+ },
149
+ "examples": {
150
+ "dateNotFound": {
151
+ "summary": "No data for the given date",
152
+ "value": {
153
+ "timestamp": 1785154025547,
154
+ "status": 404,
155
+ "error": "Not Found Exception",
156
+ "message": "Rates of provided date 2099-01-01 are not available in our database.",
157
+ "path": "/v2.0/convert/historical"
158
+ }
159
+ },
160
+ "invalidBase": {
161
+ "summary": "from currency not supported",
162
+ "value": {
163
+ "timestamp": 1785154026188,
164
+ "status": 404,
165
+ "error": "Not Found Exception",
166
+ "message": "Rates of provided currency ZZZ are not available in our database!",
167
+ "path": "/v2.0/convert/historical"
168
+ }
169
+ }
170
+ }
171
+ }
172
+ }
173
+ }
174
+ }
175
+ }
176
+ }
177
+ },
178
+ "components": {
179
+ "securitySchemes": {
180
+ "ApiKeyAuthHeader": {
181
+ "type": "apiKey",
182
+ "in": "header",
183
+ "name": "X-apiKey",
184
+ "description": "Pass your API key via the X-apiKey request header."
185
+ },
186
+ "ApiKeyAuthQuery": {
187
+ "type": "apiKey",
188
+ "in": "query",
189
+ "name": "apiKey",
190
+ "description": "Pass your API key via the apiKey query parameter."
191
+ }
192
+ },
193
+ "schemas": {
194
+ "HistoricalCurrencyConverterResponse": {
195
+ "type": "object",
196
+ "required": [
197
+ "date",
198
+ "from",
199
+ "to",
200
+ "rate",
201
+ "givenAmount",
202
+ "convertedAmount"
203
+ ],
204
+ "properties": {
205
+ "date": {
206
+ "type": "string",
207
+ "description": "Date and time with timezone (UTC) when the rate was recorded."
208
+ },
209
+ "from": {
210
+ "type": "string",
211
+ "description": "Source currency code."
212
+ },
213
+ "to": {
214
+ "type": "string",
215
+ "description": "Target currency code."
216
+ },
217
+ "rate": {
218
+ "type": "string",
219
+ "description": "Conversion rate from source to target currency."
220
+ },
221
+ "givenAmount": {
222
+ "type": "string",
223
+ "description": "The amount provided for conversion."
224
+ },
225
+ "convertedAmount": {
226
+ "type": "string",
227
+ "description": "The converted amount in the target currency."
228
+ }
229
+ },
230
+ "description": "Historical currency conversion response containing the historical rate and converted amount."
231
+ },
232
+ "ErrorResponse": {
233
+ "type": "object",
234
+ "description": "Standard error envelope returned by the API on failed requests. Gateway-level validation errors use an ISO 8601 timestamp and the public endpoint path; currency-service errors use a Unix millisecond timestamp and an internal service path instead.",
235
+ "required": ["message"],
236
+ "properties": {
237
+ "timestamp": {
238
+ "type": ["string", "integer"],
239
+ "description": "Timestamp when the error occurred — ISO 8601 string for gateway errors, Unix milliseconds integer for currency-service errors."
240
+ },
241
+ "status": {
242
+ "type": "integer",
243
+ "description": "HTTP status code returned with the error."
244
+ },
245
+ "error": {
246
+ "type": "string",
247
+ "description": "Specific error type (e.g., Invalid Param Exception, Method Argument Type Mismatch, Not Found Exception)."
248
+ },
249
+ "message": {
250
+ "type": "string",
251
+ "description": "Human-readable error message describing the failure."
252
+ },
253
+ "path": {
254
+ "type": "string",
255
+ "description": "API endpoint path (gateway errors) or internal service path (currency-service errors) that produced the error."
256
+ }
257
+ }
258
+ }
259
+ }
260
+ },
261
+ "security": [
262
+ {
263
+ "ApiKeyAuthHeader": []
264
+ },
265
+ {
266
+ "ApiKeyAuthQuery": []
267
+ }
268
+ ]
269
+ }