{"openapi":"3.1.0","info":{"title":"EXDZ Market Data API","version":"1.0.0","summary":"Algeria-focused exchange-rate and gold market data.","description":"Authenticated JSON API for EXDZ parallel, official and transfer DZD rates, market-premium comparisons, localized assets and Algeria gold references.","termsOfService":"https://api.exchangedz.com/docs/acceptable-use","contact":{"name":"EXDZ API support","email":"exchangedz.com@gmail.com","url":"https://api.exchangedz.com/docs"}},"externalDocs":{"description":"EXDZ API documentation","url":"https://api.exchangedz.com/docs"},"servers":[{"url":"https://api.exchangedz.com","description":"Production"}],"tags":[{"name":"Assets","description":"Supported asset metadata."},{"name":"Rates","description":"Latest and historical DZD exchange rates."},{"name":"Market","description":"Cross-source market comparisons."},{"name":"Gold","description":"Per-gram DZD gold references."},{"name":"Account","description":"Authenticated key, grant and quota summary."}],"security":[{"bearerAuth":[]},{"apiKeyHeader":[]}],"paths":{"/v1/assets":{"get":{"tags":["Assets"],"summary":"List assets","description":"Returns supported assets in stable code order with localized names.","operationId":"listAssets","parameters":[{"name":"type","in":"query","required":false,"description":"Optional asset-class filter.","schema":{"type":"string","enum":["currency","metal","crypto"]}}],"responses":{"200":{"description":"Asset directory.","headers":{"X-Request-Id":{"description":"Unique request identifier for diagnostics and support.","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Maximum requests allowed in the current 60-second burst window.","schema":{"type":"integer","minimum":1}},"RateLimit-Remaining":{"description":"Requests remaining in the current burst window.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the current burst window resets.","schema":{"type":"integer","minimum":1}},"RateLimit-Policy":{"description":"Applied burst policy, for example 60;w=60.","schema":{"type":"string"}},"X-Monthly-Quota-Limit":{"description":"Maximum authenticated requests in the current monthly quota period.","schema":{"type":"integer","minimum":1}},"X-Monthly-Quota-Remaining":{"description":"Requests remaining in the current monthly quota period.","schema":{"type":"integer","minimum":0}},"X-Monthly-Quota-Reset":{"description":"UTC timestamp at which the monthly quota resets.","schema":{"type":"string","format":"date-time"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetsResponse"}}}},"400":{"description":"One or more query parameters are invalid.","headers":{"X-Request-Id":{"description":"Unique request identifier for diagnostics and support.","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Maximum requests allowed in the current 60-second burst window.","schema":{"type":"integer","minimum":1}},"RateLimit-Remaining":{"description":"Requests remaining in the current burst window.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the current burst window resets.","schema":{"type":"integer","minimum":1}},"RateLimit-Policy":{"description":"Applied burst policy, for example 60;w=60.","schema":{"type":"string"}},"X-Monthly-Quota-Limit":{"description":"Maximum authenticated requests in the current monthly quota period.","schema":{"type":"integer","minimum":1}},"X-Monthly-Quota-Remaining":{"description":"Requests remaining in the current monthly quota period.","schema":{"type":"integer","minimum":0}},"X-Monthly-Quota-Reset":{"description":"UTC timestamp at which the monthly quota resets.","schema":{"type":"string","format":"date-time"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"API key missing, invalid, revoked or expired.","headers":{"X-Request-Id":{"description":"Unique request identifier for diagnostics and support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Access grant inactive or key missing the required scope.","headers":{"X-Request-Id":{"description":"Unique request identifier for diagnostics and support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Per-minute burst limit or monthly request quota exceeded.","headers":{"X-Request-Id":{"description":"Unique request identifier for diagnostics and support.","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Maximum requests allowed in the current 60-second burst window.","schema":{"type":"integer","minimum":1}},"RateLimit-Remaining":{"description":"Requests remaining in the current burst window.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the current burst window resets.","schema":{"type":"integer","minimum":1}},"RateLimit-Policy":{"description":"Applied burst policy, for example 60;w=60.","schema":{"type":"string"}},"X-Monthly-Quota-Limit":{"description":"Maximum authenticated requests in the current monthly quota period.","schema":{"type":"integer","minimum":1}},"X-Monthly-Quota-Remaining":{"description":"Requests remaining in the current monthly quota period.","schema":{"type":"integer","minimum":0}},"X-Monthly-Quota-Reset":{"description":"UTC timestamp at which the monthly quota resets.","schema":{"type":"string","format":"date-time"}},"Retry-After":{"description":"Seconds until the applicable quota window can accept another request.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"API access is temporarily unavailable or not configured.","headers":{"X-Request-Id":{"description":"Unique request identifier for diagnostics and support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/rates/latest":{"get":{"tags":["Rates"],"summary":"Get latest rates","description":"Returns the newest stored observation per matching asset for one source family.","operationId":"getLatestRates","parameters":[{"name":"currency","in":"query","required":false,"description":"Comma-separated uppercase asset codes. Duplicates are removed; maximum 25.","schema":{"type":"string","example":"EUR,USD","maxLength":274}},{"name":"source","in":"query","required":false,"description":"Rate source family. Defaults to parallel.","schema":{"type":"string","enum":["parallel","official","transfer"],"default":"parallel"}}],"responses":{"200":{"description":"Latest matching DZD rates.","headers":{"X-Request-Id":{"description":"Unique request identifier for diagnostics and support.","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Maximum requests allowed in the current 60-second burst window.","schema":{"type":"integer","minimum":1}},"RateLimit-Remaining":{"description":"Requests remaining in the current burst window.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the current burst window resets.","schema":{"type":"integer","minimum":1}},"RateLimit-Policy":{"description":"Applied burst policy, for example 60;w=60.","schema":{"type":"string"}},"X-Monthly-Quota-Limit":{"description":"Maximum authenticated requests in the current monthly quota period.","schema":{"type":"integer","minimum":1}},"X-Monthly-Quota-Remaining":{"description":"Requests remaining in the current monthly quota period.","schema":{"type":"integer","minimum":0}},"X-Monthly-Quota-Reset":{"description":"UTC timestamp at which the monthly quota resets.","schema":{"type":"string","format":"date-time"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LatestRatesResponse"}}}},"400":{"description":"One or more query parameters are invalid.","headers":{"X-Request-Id":{"description":"Unique request identifier for diagnostics and support.","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Maximum requests allowed in the current 60-second burst window.","schema":{"type":"integer","minimum":1}},"RateLimit-Remaining":{"description":"Requests remaining in the current burst window.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the current burst window resets.","schema":{"type":"integer","minimum":1}},"RateLimit-Policy":{"description":"Applied burst policy, for example 60;w=60.","schema":{"type":"string"}},"X-Monthly-Quota-Limit":{"description":"Maximum authenticated requests in the current monthly quota period.","schema":{"type":"integer","minimum":1}},"X-Monthly-Quota-Remaining":{"description":"Requests remaining in the current monthly quota period.","schema":{"type":"integer","minimum":0}},"X-Monthly-Quota-Reset":{"description":"UTC timestamp at which the monthly quota resets.","schema":{"type":"string","format":"date-time"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"API key missing, invalid, revoked or expired.","headers":{"X-Request-Id":{"description":"Unique request identifier for diagnostics and support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Access grant inactive or key missing the required scope.","headers":{"X-Request-Id":{"description":"Unique request identifier for diagnostics and support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Per-minute burst limit or monthly request quota exceeded.","headers":{"X-Request-Id":{"description":"Unique request identifier for diagnostics and support.","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Maximum requests allowed in the current 60-second burst window.","schema":{"type":"integer","minimum":1}},"RateLimit-Remaining":{"description":"Requests remaining in the current burst window.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the current burst window resets.","schema":{"type":"integer","minimum":1}},"RateLimit-Policy":{"description":"Applied burst policy, for example 60;w=60.","schema":{"type":"string"}},"X-Monthly-Quota-Limit":{"description":"Maximum authenticated requests in the current monthly quota period.","schema":{"type":"integer","minimum":1}},"X-Monthly-Quota-Remaining":{"description":"Requests remaining in the current monthly quota period.","schema":{"type":"integer","minimum":0}},"X-Monthly-Quota-Reset":{"description":"UTC timestamp at which the monthly quota resets.","schema":{"type":"string","format":"date-time"}},"Retry-After":{"description":"Seconds until the applicable quota window can accept another request.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"API access is temporarily unavailable or not configured.","headers":{"X-Request-Id":{"description":"Unique request identifier for diagnostics and support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/rates/history":{"get":{"tags":["Rates"],"summary":"Get rate history","description":"Returns newest-first history for one asset and source in a maximum 366-day window.","operationId":"getRateHistory","parameters":[{"name":"currency","in":"query","required":true,"description":"Exactly one uppercase asset code.","schema":{"type":"string","example":"EUR,USD","maxLength":274}},{"name":"source","in":"query","required":false,"description":"Rate source family. Defaults to parallel.","schema":{"type":"string","enum":["parallel","official","transfer"],"default":"parallel"}},{"name":"from","in":"query","required":false,"description":"Inclusive start date. Defaults to 30 days before the request.","schema":{"type":"string","format":"date","example":"2026-07-01"}},{"name":"to","in":"query","required":false,"description":"Inclusive end date. Defaults to the current date.","schema":{"type":"string","format":"date","example":"2026-08-24"}},{"name":"limit","in":"query","required":false,"description":"Maximum records returned in one page.","schema":{"type":"integer","minimum":1,"maximum":1000,"default":250}},{"name":"cursor","in":"query","required":false,"description":"Opaque continuation cursor from meta.nextCursor. Reuse it only with the same filters.","schema":{"type":"string","maxLength":500}}],"responses":{"200":{"description":"A cursor-paginated rate-history page.","headers":{"X-Request-Id":{"description":"Unique request identifier for diagnostics and support.","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Maximum requests allowed in the current 60-second burst window.","schema":{"type":"integer","minimum":1}},"RateLimit-Remaining":{"description":"Requests remaining in the current burst window.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the current burst window resets.","schema":{"type":"integer","minimum":1}},"RateLimit-Policy":{"description":"Applied burst policy, for example 60;w=60.","schema":{"type":"string"}},"X-Monthly-Quota-Limit":{"description":"Maximum authenticated requests in the current monthly quota period.","schema":{"type":"integer","minimum":1}},"X-Monthly-Quota-Remaining":{"description":"Requests remaining in the current monthly quota period.","schema":{"type":"integer","minimum":0}},"X-Monthly-Quota-Reset":{"description":"UTC timestamp at which the monthly quota resets.","schema":{"type":"string","format":"date-time"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateHistoryResponse"}}}},"400":{"description":"One or more query parameters are invalid.","headers":{"X-Request-Id":{"description":"Unique request identifier for diagnostics and support.","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Maximum requests allowed in the current 60-second burst window.","schema":{"type":"integer","minimum":1}},"RateLimit-Remaining":{"description":"Requests remaining in the current burst window.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the current burst window resets.","schema":{"type":"integer","minimum":1}},"RateLimit-Policy":{"description":"Applied burst policy, for example 60;w=60.","schema":{"type":"string"}},"X-Monthly-Quota-Limit":{"description":"Maximum authenticated requests in the current monthly quota period.","schema":{"type":"integer","minimum":1}},"X-Monthly-Quota-Remaining":{"description":"Requests remaining in the current monthly quota period.","schema":{"type":"integer","minimum":0}},"X-Monthly-Quota-Reset":{"description":"UTC timestamp at which the monthly quota resets.","schema":{"type":"string","format":"date-time"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"API key missing, invalid, revoked or expired.","headers":{"X-Request-Id":{"description":"Unique request identifier for diagnostics and support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Access grant inactive or key missing the required scope.","headers":{"X-Request-Id":{"description":"Unique request identifier for diagnostics and support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"The requested supported resource was not found.","headers":{"X-Request-Id":{"description":"Unique request identifier for diagnostics and support.","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Maximum requests allowed in the current 60-second burst window.","schema":{"type":"integer","minimum":1}},"RateLimit-Remaining":{"description":"Requests remaining in the current burst window.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the current burst window resets.","schema":{"type":"integer","minimum":1}},"RateLimit-Policy":{"description":"Applied burst policy, for example 60;w=60.","schema":{"type":"string"}},"X-Monthly-Quota-Limit":{"description":"Maximum authenticated requests in the current monthly quota period.","schema":{"type":"integer","minimum":1}},"X-Monthly-Quota-Remaining":{"description":"Requests remaining in the current monthly quota period.","schema":{"type":"integer","minimum":0}},"X-Monthly-Quota-Reset":{"description":"UTC timestamp at which the monthly quota resets.","schema":{"type":"string","format":"date-time"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Per-minute burst limit or monthly request quota exceeded.","headers":{"X-Request-Id":{"description":"Unique request identifier for diagnostics and support.","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Maximum requests allowed in the current 60-second burst window.","schema":{"type":"integer","minimum":1}},"RateLimit-Remaining":{"description":"Requests remaining in the current burst window.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the current burst window resets.","schema":{"type":"integer","minimum":1}},"RateLimit-Policy":{"description":"Applied burst policy, for example 60;w=60.","schema":{"type":"string"}},"X-Monthly-Quota-Limit":{"description":"Maximum authenticated requests in the current monthly quota period.","schema":{"type":"integer","minimum":1}},"X-Monthly-Quota-Remaining":{"description":"Requests remaining in the current monthly quota period.","schema":{"type":"integer","minimum":0}},"X-Monthly-Quota-Reset":{"description":"UTC timestamp at which the monthly quota resets.","schema":{"type":"string","format":"date-time"}},"Retry-After":{"description":"Seconds until the applicable quota window can accept another request.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"API access is temporarily unavailable or not configured.","headers":{"X-Request-Id":{"description":"Unique request identifier for diagnostics and support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/rates/historical":{"get":{"tags":["Rates"],"summary":"Get rate history (compatibility alias)","description":"Compatibility alias for /v1/rates/history with the same parameters and response.","operationId":"getRateHistoryAlias","deprecated":true,"parameters":[{"name":"currency","in":"query","required":true,"description":"Exactly one uppercase asset code.","schema":{"type":"string","example":"EUR,USD","maxLength":274}},{"name":"source","in":"query","required":false,"description":"Rate source family. Defaults to parallel.","schema":{"type":"string","enum":["parallel","official","transfer"],"default":"parallel"}},{"name":"from","in":"query","required":false,"description":"Inclusive start date. Defaults to 30 days before the request.","schema":{"type":"string","format":"date","example":"2026-07-01"}},{"name":"to","in":"query","required":false,"description":"Inclusive end date. Defaults to the current date.","schema":{"type":"string","format":"date","example":"2026-08-24"}},{"name":"limit","in":"query","required":false,"description":"Maximum records returned in one page.","schema":{"type":"integer","minimum":1,"maximum":1000,"default":250}},{"name":"cursor","in":"query","required":false,"description":"Opaque continuation cursor from meta.nextCursor. Reuse it only with the same filters.","schema":{"type":"string","maxLength":500}}],"responses":{"200":{"description":"A cursor-paginated rate-history page.","headers":{"X-Request-Id":{"description":"Unique request identifier for diagnostics and support.","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Maximum requests allowed in the current 60-second burst window.","schema":{"type":"integer","minimum":1}},"RateLimit-Remaining":{"description":"Requests remaining in the current burst window.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the current burst window resets.","schema":{"type":"integer","minimum":1}},"RateLimit-Policy":{"description":"Applied burst policy, for example 60;w=60.","schema":{"type":"string"}},"X-Monthly-Quota-Limit":{"description":"Maximum authenticated requests in the current monthly quota period.","schema":{"type":"integer","minimum":1}},"X-Monthly-Quota-Remaining":{"description":"Requests remaining in the current monthly quota period.","schema":{"type":"integer","minimum":0}},"X-Monthly-Quota-Reset":{"description":"UTC timestamp at which the monthly quota resets.","schema":{"type":"string","format":"date-time"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateHistoryResponse"}}}},"400":{"description":"One or more query parameters are invalid.","headers":{"X-Request-Id":{"description":"Unique request identifier for diagnostics and support.","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Maximum requests allowed in the current 60-second burst window.","schema":{"type":"integer","minimum":1}},"RateLimit-Remaining":{"description":"Requests remaining in the current burst window.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the current burst window resets.","schema":{"type":"integer","minimum":1}},"RateLimit-Policy":{"description":"Applied burst policy, for example 60;w=60.","schema":{"type":"string"}},"X-Monthly-Quota-Limit":{"description":"Maximum authenticated requests in the current monthly quota period.","schema":{"type":"integer","minimum":1}},"X-Monthly-Quota-Remaining":{"description":"Requests remaining in the current monthly quota period.","schema":{"type":"integer","minimum":0}},"X-Monthly-Quota-Reset":{"description":"UTC timestamp at which the monthly quota resets.","schema":{"type":"string","format":"date-time"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"API key missing, invalid, revoked or expired.","headers":{"X-Request-Id":{"description":"Unique request identifier for diagnostics and support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Access grant inactive or key missing the required scope.","headers":{"X-Request-Id":{"description":"Unique request identifier for diagnostics and support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"The requested supported resource was not found.","headers":{"X-Request-Id":{"description":"Unique request identifier for diagnostics and support.","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Maximum requests allowed in the current 60-second burst window.","schema":{"type":"integer","minimum":1}},"RateLimit-Remaining":{"description":"Requests remaining in the current burst window.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the current burst window resets.","schema":{"type":"integer","minimum":1}},"RateLimit-Policy":{"description":"Applied burst policy, for example 60;w=60.","schema":{"type":"string"}},"X-Monthly-Quota-Limit":{"description":"Maximum authenticated requests in the current monthly quota period.","schema":{"type":"integer","minimum":1}},"X-Monthly-Quota-Remaining":{"description":"Requests remaining in the current monthly quota period.","schema":{"type":"integer","minimum":0}},"X-Monthly-Quota-Reset":{"description":"UTC timestamp at which the monthly quota resets.","schema":{"type":"string","format":"date-time"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Per-minute burst limit or monthly request quota exceeded.","headers":{"X-Request-Id":{"description":"Unique request identifier for diagnostics and support.","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Maximum requests allowed in the current 60-second burst window.","schema":{"type":"integer","minimum":1}},"RateLimit-Remaining":{"description":"Requests remaining in the current burst window.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the current burst window resets.","schema":{"type":"integer","minimum":1}},"RateLimit-Policy":{"description":"Applied burst policy, for example 60;w=60.","schema":{"type":"string"}},"X-Monthly-Quota-Limit":{"description":"Maximum authenticated requests in the current monthly quota period.","schema":{"type":"integer","minimum":1}},"X-Monthly-Quota-Remaining":{"description":"Requests remaining in the current monthly quota period.","schema":{"type":"integer","minimum":0}},"X-Monthly-Quota-Reset":{"description":"UTC timestamp at which the monthly quota resets.","schema":{"type":"string","format":"date-time"}},"Retry-After":{"description":"Seconds until the applicable quota window can accept another request.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"API access is temporarily unavailable or not configured.","headers":{"X-Request-Id":{"description":"Unique request identifier for diagnostics and support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/market/premium":{"get":{"tags":["Market"],"summary":"Compare parallel and official rates","description":"Returns latest matched parallel and official observations with DZD and percentage premiums.","operationId":"getMarketPremium","parameters":[{"name":"currency","in":"query","required":false,"description":"Comma-separated asset codes. Defaults to EUR,USD,GBP,CAD.","schema":{"type":"string","default":"EUR,USD,GBP,CAD","example":"EUR,USD","maxLength":274}}],"responses":{"200":{"description":"Matched market-premium comparisons.","headers":{"X-Request-Id":{"description":"Unique request identifier for diagnostics and support.","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Maximum requests allowed in the current 60-second burst window.","schema":{"type":"integer","minimum":1}},"RateLimit-Remaining":{"description":"Requests remaining in the current burst window.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the current burst window resets.","schema":{"type":"integer","minimum":1}},"RateLimit-Policy":{"description":"Applied burst policy, for example 60;w=60.","schema":{"type":"string"}},"X-Monthly-Quota-Limit":{"description":"Maximum authenticated requests in the current monthly quota period.","schema":{"type":"integer","minimum":1}},"X-Monthly-Quota-Remaining":{"description":"Requests remaining in the current monthly quota period.","schema":{"type":"integer","minimum":0}},"X-Monthly-Quota-Reset":{"description":"UTC timestamp at which the monthly quota resets.","schema":{"type":"string","format":"date-time"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarketPremiumResponse"}}}},"400":{"description":"One or more query parameters are invalid.","headers":{"X-Request-Id":{"description":"Unique request identifier for diagnostics and support.","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Maximum requests allowed in the current 60-second burst window.","schema":{"type":"integer","minimum":1}},"RateLimit-Remaining":{"description":"Requests remaining in the current burst window.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the current burst window resets.","schema":{"type":"integer","minimum":1}},"RateLimit-Policy":{"description":"Applied burst policy, for example 60;w=60.","schema":{"type":"string"}},"X-Monthly-Quota-Limit":{"description":"Maximum authenticated requests in the current monthly quota period.","schema":{"type":"integer","minimum":1}},"X-Monthly-Quota-Remaining":{"description":"Requests remaining in the current monthly quota period.","schema":{"type":"integer","minimum":0}},"X-Monthly-Quota-Reset":{"description":"UTC timestamp at which the monthly quota resets.","schema":{"type":"string","format":"date-time"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"API key missing, invalid, revoked or expired.","headers":{"X-Request-Id":{"description":"Unique request identifier for diagnostics and support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Access grant inactive or key missing the required scope.","headers":{"X-Request-Id":{"description":"Unique request identifier for diagnostics and support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Per-minute burst limit or monthly request quota exceeded.","headers":{"X-Request-Id":{"description":"Unique request identifier for diagnostics and support.","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Maximum requests allowed in the current 60-second burst window.","schema":{"type":"integer","minimum":1}},"RateLimit-Remaining":{"description":"Requests remaining in the current burst window.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the current burst window resets.","schema":{"type":"integer","minimum":1}},"RateLimit-Policy":{"description":"Applied burst policy, for example 60;w=60.","schema":{"type":"string"}},"X-Monthly-Quota-Limit":{"description":"Maximum authenticated requests in the current monthly quota period.","schema":{"type":"integer","minimum":1}},"X-Monthly-Quota-Remaining":{"description":"Requests remaining in the current monthly quota period.","schema":{"type":"integer","minimum":0}},"X-Monthly-Quota-Reset":{"description":"UTC timestamp at which the monthly quota resets.","schema":{"type":"string","format":"date-time"}},"Retry-After":{"description":"Seconds until the applicable quota window can accept another request.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"API access is temporarily unavailable or not configured.","headers":{"X-Request-Id":{"description":"Unique request identifier for diagnostics and support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/gold/latest":{"get":{"tags":["Gold"],"summary":"Get latest gold references","description":"Returns the newest per-gram DZD reference for 18K, 21K and 24K gold.","operationId":"getLatestGold","responses":{"200":{"description":"Latest gold reference.","headers":{"X-Request-Id":{"description":"Unique request identifier for diagnostics and support.","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Maximum requests allowed in the current 60-second burst window.","schema":{"type":"integer","minimum":1}},"RateLimit-Remaining":{"description":"Requests remaining in the current burst window.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the current burst window resets.","schema":{"type":"integer","minimum":1}},"RateLimit-Policy":{"description":"Applied burst policy, for example 60;w=60.","schema":{"type":"string"}},"X-Monthly-Quota-Limit":{"description":"Maximum authenticated requests in the current monthly quota period.","schema":{"type":"integer","minimum":1}},"X-Monthly-Quota-Remaining":{"description":"Requests remaining in the current monthly quota period.","schema":{"type":"integer","minimum":0}},"X-Monthly-Quota-Reset":{"description":"UTC timestamp at which the monthly quota resets.","schema":{"type":"string","format":"date-time"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LatestGoldResponse"}}}},"401":{"description":"API key missing, invalid, revoked or expired.","headers":{"X-Request-Id":{"description":"Unique request identifier for diagnostics and support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Access grant inactive or key missing the required scope.","headers":{"X-Request-Id":{"description":"Unique request identifier for diagnostics and support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"The requested supported resource was not found.","headers":{"X-Request-Id":{"description":"Unique request identifier for diagnostics and support.","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Maximum requests allowed in the current 60-second burst window.","schema":{"type":"integer","minimum":1}},"RateLimit-Remaining":{"description":"Requests remaining in the current burst window.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the current burst window resets.","schema":{"type":"integer","minimum":1}},"RateLimit-Policy":{"description":"Applied burst policy, for example 60;w=60.","schema":{"type":"string"}},"X-Monthly-Quota-Limit":{"description":"Maximum authenticated requests in the current monthly quota period.","schema":{"type":"integer","minimum":1}},"X-Monthly-Quota-Remaining":{"description":"Requests remaining in the current monthly quota period.","schema":{"type":"integer","minimum":0}},"X-Monthly-Quota-Reset":{"description":"UTC timestamp at which the monthly quota resets.","schema":{"type":"string","format":"date-time"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Per-minute burst limit or monthly request quota exceeded.","headers":{"X-Request-Id":{"description":"Unique request identifier for diagnostics and support.","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Maximum requests allowed in the current 60-second burst window.","schema":{"type":"integer","minimum":1}},"RateLimit-Remaining":{"description":"Requests remaining in the current burst window.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the current burst window resets.","schema":{"type":"integer","minimum":1}},"RateLimit-Policy":{"description":"Applied burst policy, for example 60;w=60.","schema":{"type":"string"}},"X-Monthly-Quota-Limit":{"description":"Maximum authenticated requests in the current monthly quota period.","schema":{"type":"integer","minimum":1}},"X-Monthly-Quota-Remaining":{"description":"Requests remaining in the current monthly quota period.","schema":{"type":"integer","minimum":0}},"X-Monthly-Quota-Reset":{"description":"UTC timestamp at which the monthly quota resets.","schema":{"type":"string","format":"date-time"}},"Retry-After":{"description":"Seconds until the applicable quota window can accept another request.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"API access is temporarily unavailable or not configured.","headers":{"X-Request-Id":{"description":"Unique request identifier for diagnostics and support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/gold/history":{"get":{"tags":["Gold"],"summary":"Get gold history","description":"Returns newest-first, cursor-paginated per-gram DZD gold references.","operationId":"getGoldHistory","parameters":[{"name":"from","in":"query","required":false,"description":"Inclusive start date. Defaults to 30 days before the request.","schema":{"type":"string","format":"date","example":"2026-07-01"}},{"name":"to","in":"query","required":false,"description":"Inclusive end date. Defaults to the current date.","schema":{"type":"string","format":"date","example":"2026-08-24"}},{"name":"limit","in":"query","required":false,"description":"Maximum records returned in one page.","schema":{"type":"integer","minimum":1,"maximum":1000,"default":250}},{"name":"cursor","in":"query","required":false,"description":"Opaque continuation cursor from meta.nextCursor. Reuse it only with the same filters.","schema":{"type":"string","maxLength":500}}],"responses":{"200":{"description":"A cursor-paginated gold-history page.","headers":{"X-Request-Id":{"description":"Unique request identifier for diagnostics and support.","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Maximum requests allowed in the current 60-second burst window.","schema":{"type":"integer","minimum":1}},"RateLimit-Remaining":{"description":"Requests remaining in the current burst window.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the current burst window resets.","schema":{"type":"integer","minimum":1}},"RateLimit-Policy":{"description":"Applied burst policy, for example 60;w=60.","schema":{"type":"string"}},"X-Monthly-Quota-Limit":{"description":"Maximum authenticated requests in the current monthly quota period.","schema":{"type":"integer","minimum":1}},"X-Monthly-Quota-Remaining":{"description":"Requests remaining in the current monthly quota period.","schema":{"type":"integer","minimum":0}},"X-Monthly-Quota-Reset":{"description":"UTC timestamp at which the monthly quota resets.","schema":{"type":"string","format":"date-time"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoldHistoryResponse"}}}},"400":{"description":"One or more query parameters are invalid.","headers":{"X-Request-Id":{"description":"Unique request identifier for diagnostics and support.","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Maximum requests allowed in the current 60-second burst window.","schema":{"type":"integer","minimum":1}},"RateLimit-Remaining":{"description":"Requests remaining in the current burst window.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the current burst window resets.","schema":{"type":"integer","minimum":1}},"RateLimit-Policy":{"description":"Applied burst policy, for example 60;w=60.","schema":{"type":"string"}},"X-Monthly-Quota-Limit":{"description":"Maximum authenticated requests in the current monthly quota period.","schema":{"type":"integer","minimum":1}},"X-Monthly-Quota-Remaining":{"description":"Requests remaining in the current monthly quota period.","schema":{"type":"integer","minimum":0}},"X-Monthly-Quota-Reset":{"description":"UTC timestamp at which the monthly quota resets.","schema":{"type":"string","format":"date-time"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"API key missing, invalid, revoked or expired.","headers":{"X-Request-Id":{"description":"Unique request identifier for diagnostics and support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Access grant inactive or key missing the required scope.","headers":{"X-Request-Id":{"description":"Unique request identifier for diagnostics and support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Per-minute burst limit or monthly request quota exceeded.","headers":{"X-Request-Id":{"description":"Unique request identifier for diagnostics and support.","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Maximum requests allowed in the current 60-second burst window.","schema":{"type":"integer","minimum":1}},"RateLimit-Remaining":{"description":"Requests remaining in the current burst window.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the current burst window resets.","schema":{"type":"integer","minimum":1}},"RateLimit-Policy":{"description":"Applied burst policy, for example 60;w=60.","schema":{"type":"string"}},"X-Monthly-Quota-Limit":{"description":"Maximum authenticated requests in the current monthly quota period.","schema":{"type":"integer","minimum":1}},"X-Monthly-Quota-Remaining":{"description":"Requests remaining in the current monthly quota period.","schema":{"type":"integer","minimum":0}},"X-Monthly-Quota-Reset":{"description":"UTC timestamp at which the monthly quota resets.","schema":{"type":"string","format":"date-time"}},"Retry-After":{"description":"Seconds until the applicable quota window can accept another request.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"API access is temporarily unavailable or not configured.","headers":{"X-Request-Id":{"description":"Unique request identifier for diagnostics and support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/me":{"get":{"tags":["Account"],"summary":"Get API identity and usage","description":"Returns the authenticated customer, grant, safe key metadata and current usage summary.","operationId":"getCurrentApiIdentity","responses":{"200":{"description":"Current API identity and usage.","headers":{"X-Request-Id":{"description":"Unique request identifier for diagnostics and support.","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Maximum requests allowed in the current 60-second burst window.","schema":{"type":"integer","minimum":1}},"RateLimit-Remaining":{"description":"Requests remaining in the current burst window.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the current burst window resets.","schema":{"type":"integer","minimum":1}},"RateLimit-Policy":{"description":"Applied burst policy, for example 60;w=60.","schema":{"type":"string"}},"X-Monthly-Quota-Limit":{"description":"Maximum authenticated requests in the current monthly quota period.","schema":{"type":"integer","minimum":1}},"X-Monthly-Quota-Remaining":{"description":"Requests remaining in the current monthly quota period.","schema":{"type":"integer","minimum":0}},"X-Monthly-Quota-Reset":{"description":"UTC timestamp at which the monthly quota resets.","schema":{"type":"string","format":"date-time"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeResponse"}}}},"401":{"description":"API key missing, invalid, revoked or expired.","headers":{"X-Request-Id":{"description":"Unique request identifier for diagnostics and support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Access grant inactive or key missing the required scope.","headers":{"X-Request-Id":{"description":"Unique request identifier for diagnostics and support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Per-minute burst limit or monthly request quota exceeded.","headers":{"X-Request-Id":{"description":"Unique request identifier for diagnostics and support.","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Maximum requests allowed in the current 60-second burst window.","schema":{"type":"integer","minimum":1}},"RateLimit-Remaining":{"description":"Requests remaining in the current burst window.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the current burst window resets.","schema":{"type":"integer","minimum":1}},"RateLimit-Policy":{"description":"Applied burst policy, for example 60;w=60.","schema":{"type":"string"}},"X-Monthly-Quota-Limit":{"description":"Maximum authenticated requests in the current monthly quota period.","schema":{"type":"integer","minimum":1}},"X-Monthly-Quota-Remaining":{"description":"Requests remaining in the current monthly quota period.","schema":{"type":"integer","minimum":0}},"X-Monthly-Quota-Reset":{"description":"UTC timestamp at which the monthly quota resets.","schema":{"type":"string","format":"date-time"}},"Retry-After":{"description":"Seconds until the applicable quota window can accept another request.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"API access is temporarily unavailable or not configured.","headers":{"X-Request-Id":{"description":"Unique request identifier for diagnostics and support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"EXDZ API key","description":"Recommended. Send Authorization: Bearer exdz_live_…"},"apiKeyHeader":{"type":"apiKey","in":"header","name":"x-api-key","description":"Compatibility authentication header."}},"schemas":{"Names":{"type":"object","required":["en","fr","ar"],"additionalProperties":false,"properties":{"en":{"type":"string"},"fr":{"type":"string"},"ar":{"type":"string"}}},"Asset":{"type":"object","required":["code","symbol","names","type"],"additionalProperties":false,"properties":{"code":{"type":"string","pattern":"^[A-Z0-9]{2,10}$","example":"EUR"},"symbol":{"type":"string","example":"€"},"names":{"$ref":"#/components/schemas/Names"},"type":{"type":"string","enum":["currency","metal","crypto"]}}},"LatestRate":{"type":"object","required":["currency","names","type","source","quote","buy","sell","updatedAt"],"additionalProperties":false,"properties":{"currency":{"type":"string","example":"EUR"},"names":{"$ref":"#/components/schemas/Names"},"type":{"type":"string","enum":["currency","metal","crypto"]},"source":{"$ref":"#/components/schemas/RateSource"},"quote":{"type":"string","const":"DZD"},"buy":{"type":"number","example":274.67},"sell":{"type":"number","example":277.17},"updatedAt":{"type":"string","format":"date-time"}}},"HistoricalRate":{"type":"object","required":["currency","source","quote","buy","sell","updatedAt"],"additionalProperties":false,"properties":{"currency":{"type":"string","example":"EUR"},"source":{"$ref":"#/components/schemas/RateSource"},"quote":{"type":"string","const":"DZD"},"buy":{"type":"number"},"sell":{"type":"number"},"updatedAt":{"type":"string","format":"date-time"}}},"RateSource":{"type":"string","enum":["parallel","official","transfer"]},"GoldRecord":{"type":"object","required":["date","quote","unit","prices","source","updatedAt"],"additionalProperties":false,"properties":{"date":{"type":"string","format":"date"},"quote":{"type":"string","const":"DZD"},"unit":{"type":"string","const":"gram"},"prices":{"type":"object","required":["18k","21k","24k"],"additionalProperties":false,"properties":{"18k":{"type":"number"},"21k":{"type":"number"},"24k":{"type":"number"}}},"source":{"type":"string"},"updatedAt":{"type":"string","format":"date-time"}}},"PremiumSide":{"type":"object","required":["amount","percent"],"additionalProperties":false,"properties":{"amount":{"type":"number"},"percent":{"type":"number"}}},"PremiumRate":{"type":"object","required":["buy","sell","updatedAt"],"additionalProperties":false,"properties":{"buy":{"type":"number"},"sell":{"type":"number"},"updatedAt":{"type":"string","format":"date-time"}}},"MarketPremium":{"type":"object","required":["currency","quote","parallel","official","premium"],"additionalProperties":false,"properties":{"currency":{"type":"string"},"quote":{"type":"string","const":"DZD"},"parallel":{"$ref":"#/components/schemas/PremiumRate"},"official":{"$ref":"#/components/schemas/PremiumRate"},"premium":{"type":"object","required":["buy","sell"],"additionalProperties":false,"properties":{"buy":{"$ref":"#/components/schemas/PremiumSide"},"sell":{"$ref":"#/components/schemas/PremiumSide"}}}}},"AssetsResponse":{"type":"object","required":["data","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Asset"}},"meta":{"$ref":"#/components/schemas/AssetsMeta"}}},"LatestRatesResponse":{"type":"object","required":["data","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/LatestRate"}},"meta":{"$ref":"#/components/schemas/LatestRatesMeta"}}},"RateHistoryResponse":{"type":"object","required":["data","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/HistoricalRate"}},"meta":{"$ref":"#/components/schemas/HistoryMeta"}}},"LatestGoldResponse":{"type":"object","required":["data","meta"],"properties":{"data":{"$ref":"#/components/schemas/GoldRecord"},"meta":{"$ref":"#/components/schemas/LatestGoldMeta"}}},"GoldHistoryResponse":{"type":"object","required":["data","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/GoldRecord"}},"meta":{"$ref":"#/components/schemas/GoldHistoryMeta"}}},"MarketPremiumResponse":{"type":"object","required":["data","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/MarketPremium"}},"meta":{"type":"object","required":["requestId","count","quote","currencies","missingCurrencies"],"properties":{"requestId":{"type":"string"},"count":{"type":"integer","minimum":0},"quote":{"type":"string","const":"DZD"},"currencies":{"type":"array","items":{"type":"string"}},"missingCurrencies":{"type":"array","items":{"type":"string"}}}}}},"AssetsMeta":{"type":"object","required":["requestId","count","type"],"additionalProperties":false,"properties":{"requestId":{"type":"string"},"count":{"type":"integer","minimum":0},"type":{"type":["string","null"],"enum":["currency","metal","crypto",null]}}},"LatestRatesMeta":{"type":"object","required":["requestId","count","source","quote","currencies"],"additionalProperties":false,"properties":{"requestId":{"type":"string"},"count":{"type":"integer","minimum":0},"source":{"$ref":"#/components/schemas/RateSource"},"quote":{"type":"string","const":"DZD"},"currencies":{"type":"array","items":{"type":"string"}}}},"HistoryMeta":{"type":"object","required":["requestId","count","currency","source","quote","from","to","limit","nextCursor"],"additionalProperties":false,"properties":{"requestId":{"type":"string"},"count":{"type":"integer","minimum":0},"currency":{"type":"string"},"source":{"$ref":"#/components/schemas/RateSource"},"quote":{"type":"string","const":"DZD"},"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"},"limit":{"type":"integer","minimum":1,"maximum":1000},"nextCursor":{"type":["string","null"]}}},"LatestGoldMeta":{"type":"object","required":["requestId","count","quote","unit"],"additionalProperties":false,"properties":{"requestId":{"type":"string"},"count":{"type":"integer","const":1},"quote":{"type":"string","const":"DZD"},"unit":{"type":"string","const":"gram"}}},"GoldHistoryMeta":{"type":"object","required":["requestId","count","quote","unit","from","to","limit","nextCursor"],"additionalProperties":false,"properties":{"requestId":{"type":"string"},"count":{"type":"integer","minimum":0},"quote":{"type":"string","const":"DZD"},"unit":{"type":"string","const":"gram"},"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"},"limit":{"type":"integer","minimum":1,"maximum":1000},"nextCursor":{"type":["string","null"]}}},"MeResponse":{"type":"object","required":["data","meta"],"properties":{"data":{"type":"object","required":["account","grant","key","usage"],"additionalProperties":false,"properties":{"account":{"$ref":"#/components/schemas/ApiAccountSummary"},"grant":{"$ref":"#/components/schemas/ApiGrantSummary"},"key":{"$ref":"#/components/schemas/ApiKeySummary"},"usage":{"$ref":"#/components/schemas/ApiUsageSummary"}}},"meta":{"type":"object","required":["requestId"],"additionalProperties":false,"properties":{"requestId":{"type":"string"}}}}},"ApiScope":{"type":"string","enum":["assets:read","rates:read","gold:read","usage:read"]},"ApiAccountSummary":{"type":"object","required":["id"],"additionalProperties":false,"properties":{"id":{"type":"string"}}},"ApiGrantSummary":{"type":"object","required":["id","provider","plan","status","scopes","validFrom","validUntil","monthlyRequestLimit","requestsPerMinute"],"additionalProperties":false,"properties":{"id":{"type":"string"},"provider":{"type":"string","enum":["manual","polar"]},"plan":{"type":"string","enum":["starter","pro","custom"]},"status":{"type":"string","enum":["active","past_due","expired","suspended","canceled"]},"scopes":{"type":"array","items":{"$ref":"#/components/schemas/ApiScope"}},"validFrom":{"type":"string","format":"date-time"},"validUntil":{"type":["string","null"],"format":"date-time"},"monthlyRequestLimit":{"type":"integer","minimum":1},"requestsPerMinute":{"type":"integer","minimum":1}}},"ApiKeySummary":{"type":"object","required":["publicId","prefix","label","environment","scopes","status","expiresAt","lastUsedAt"],"additionalProperties":false,"properties":{"publicId":{"type":"string"},"prefix":{"type":"string","example":"exdz_live_abcd1234efgh"},"label":{"type":"string"},"environment":{"type":"string","enum":["live","test"]},"scopes":{"type":"array","items":{"$ref":"#/components/schemas/ApiScope"}},"status":{"type":"string","enum":["active","revoked","expired"]},"expiresAt":{"type":["string","null"],"format":"date-time"},"lastUsedAt":{"type":["string","null"],"format":"date-time"}}},"ApiUsageSummary":{"type":"object","required":["periodStart","resetAt","requestsUsed","requestsRemaining","requestLimit","requestsPerMinute","minuteRemaining","minuteResetAt"],"additionalProperties":false,"properties":{"periodStart":{"type":"string","format":"date-time"},"resetAt":{"type":"string","format":"date-time"},"requestsUsed":{"type":"integer","minimum":0},"requestsRemaining":{"type":"integer","minimum":0},"requestLimit":{"type":"integer","minimum":1},"requestsPerMinute":{"type":"integer","minimum":1},"minuteRemaining":{"type":"integer","minimum":0},"minuteResetAt":{"type":"string","format":"date-time"}}},"ErrorResponse":{"type":"object","required":["error"],"additionalProperties":false,"properties":{"error":{"type":"object","required":["code","message","requestId","docsUrl"],"additionalProperties":false,"properties":{"code":{"type":"string","example":"invalid_currency"},"message":{"type":"string"},"requestId":{"type":"string"},"docsUrl":{"type":"string","format":"uri"}}}}}}}}