{"openapi":"3.1.0","info":{"title":"DBD Merchant API","version":"1.0.0","description":"Server-to-server API for buying digital game keys from a prepaid balance. Guides: /llms-full.txt."},"servers":[{"url":"https://merchant.dbdlobby.com"}],"tags":[{"name":"Catalog"},{"name":"Purchases and orders"},{"name":"Sandbox"},{"name":"Service"}],"components":{"securitySchemes":{"EntityKey":{"type":"apiKey","in":"header","name":"X-Entity-Key"}}},"security":[{"EntityKey":[]}],"paths":{"/products":{"get":{"operationId":"listProducts","summary":"List products","description":"The whole catalog with prices and an “on sale” flag.\n\nReturns every catalog product, including ones taken off sale. Filter them yourself by `isAvailable`.\n\nThe response comes from a cache refreshed every 10 minutes, so a price change can show up here with a delay. Fresh data for one product: `GET /products/{id}/info`; a live stock check right before buying: `GET /products/{id}/availability`.","tags":["Catalog"],"security":[{"EntityKey":[]}],"parameters":[],"responses":{"200":{"description":"Catalog","content":{"application/json":{"examples":{"example1":{"summary":"Catalog","value":{"status":"success","products":[{"id":12,"title":"Dead by Daylight — Steam Key","price":1490,"currency":"RUB","region":"ru","platform":"steam","isAvailable":true,"images":{"42x42":"https://cdn.example.com/p/12-42.png","156x156":"https://cdn.example.com/p/12-156.png","512x512":null}},{"id":13,"title":"Dead by Daylight — Chapter DLC","price":590,"currency":"RUB","region":"ru","platform":"steam","isAvailable":false,"images":{"42x42":"https://cdn.example.com/p/12-42.png","156x156":"https://cdn.example.com/p/12-156.png","512x512":null}}]}}}}}},"401":{"description":"No key","content":{"application/json":{"examples":{"example2":{"summary":"No key","value":{"status":"error","message":"Missing X-Entity-Key header"}}}}}},"403":{"description":"Invalid key","content":{"application/json":{"examples":{"example3":{"summary":"Invalid key","value":{"status":"error","message":"Invalid entity key"}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"examples":{"example4":{"summary":"Rate limited","value":{"status":"error","message":"Too many requests, try again later"}}}}}}},"externalDocs":{"url":"https://docs.merchant.dbdlobby.com/en/reference/list-products"}}},"/products/{id}/info":{"get":{"operationId":"productInfo","summary":"Product info","description":"One product: title, price, currency, region, platform, status, images.\n\nRead from the database on every request, without a cache — changes are visible immediately.\n\n`isAvailable` is our own “on sale” flag. It does not guarantee the supplier has the product right now — use `GET /products/{id}/availability` for that.","tags":["Catalog"],"security":[{"EntityKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"description":"Product ID, a positive integer.","schema":{"description":"Product ID, a positive integer.","examples":["12"],"type":"integer","minimum":1}}],"responses":{"200":{"description":"Product","content":{"application/json":{"examples":{"example1":{"summary":"Product","value":{"status":"success","product":{"id":12,"title":"Dead by Daylight — Steam Key","price":1490,"currency":"RUB","region":"ru","platform":"steam","isAvailable":true,"images":{"42x42":"https://cdn.example.com/p/12-42.png","156x156":"https://cdn.example.com/p/12-156.png","512x512":null}}}}}}}},"400":{"description":"Invalid ID","content":{"application/json":{"examples":{"example2":{"summary":"Invalid ID","value":{"status":"error","message":"Invalid product id"}}}}}},"401":{"description":"No key","content":{"application/json":{"examples":{"example4":{"summary":"No key","value":{"status":"error","message":"Missing X-Entity-Key header"}}}}}},"403":{"description":"Invalid key","content":{"application/json":{"examples":{"example5":{"summary":"Invalid key","value":{"status":"error","message":"Invalid entity key"}}}}}},"404":{"description":"Product not found","content":{"application/json":{"examples":{"example3":{"summary":"Product not found","value":{"status":"error","message":"Product not found"}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"examples":{"example6":{"summary":"Rate limited","value":{"status":"error","message":"Too many requests, try again later"}}}}}}},"externalDocs":{"url":"https://docs.merchant.dbdlobby.com/en/reference/product-info"}}},"/products/{id}/availability":{"get":{"operationId":"productAvailability","summary":"Check availability","description":"A live check: can the product be bought right now.\n\nFor automatically fulfilled products it checks the supplier's stock and whether the price is acceptable. For manually fulfilled products it returns our own “on sale” flag.\n\nCall it right before a purchase. `POST /purchase/{productId}` runs the same check, so this endpoint and the purchase never disagree.","tags":["Catalog"],"security":[{"EntityKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"description":"Product ID, a positive integer.","schema":{"description":"Product ID, a positive integer.","examples":["12"],"type":"integer","minimum":1}}],"responses":{"200":{"description":"Available; Unavailable","content":{"application/json":{"examples":{"example1":{"summary":"Available","value":{"status":"success","productId":12,"price":1490,"currency":"RUB","available":true}},"example2":{"summary":"Unavailable","description":"`reason`: `out_of_stock` — the supplier has none; `not_configured` — the product isn't set up for automatic fulfillment; `temporarily_unavailable` — can't be sold at the current price for now.","value":{"status":"success","productId":12,"price":1490,"currency":"RUB","available":false,"reason":"out_of_stock"}}}}}},"400":{"description":"Invalid ID","content":{"application/json":{"examples":{"example3":{"summary":"Invalid ID","value":{"status":"error","message":"Invalid product id"}}}}}},"401":{"description":"No key","content":{"application/json":{"examples":{"example6":{"summary":"No key","value":{"status":"error","message":"Missing X-Entity-Key header"}}}}}},"403":{"description":"Invalid key","content":{"application/json":{"examples":{"example7":{"summary":"Invalid key","value":{"status":"error","message":"Invalid entity key"}}}}}},"404":{"description":"Product not found","content":{"application/json":{"examples":{"example4":{"summary":"Product not found","value":{"status":"error","message":"Product not found"}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"examples":{"example8":{"summary":"Rate limited","value":{"status":"error","message":"Too many requests, try again later"}}}}}},"503":{"description":"Check unavailable","content":{"application/json":{"examples":{"example5":{"summary":"Check unavailable","value":{"status":"error","message":"Availability check temporarily unavailable"}}}}}}},"externalDocs":{"url":"https://docs.merchant.dbdlobby.com/en/reference/product-availability"}}},"/purchase/{productId}":{"post":{"operationId":"purchase","summary":"Purchase a product","description":"Creates an order, charges its price to the balance and returns the key.\n\nThe price is reserved from the balance when the order is created. If the order ends up not fulfilled (`failed`/`cancelled`), the money returns to the balance automatically.\n\nA manually fulfilled product completes immediately (`201`). An automatically fulfilled product is bought from the supplier: usually a few seconds, but if it takes longer than ~50 seconds you get `202` with status `pending` — the order keeps going. Learn the outcome from the webhook or `GET /orders/{id}`.\n\nAlways send an `idempotencyKey`. If the connection dropped or timed out, repeat the request with the same key: you get the outcome of the original order, not a second purchase.","tags":["Purchases and orders"],"security":[{"EntityKey":[]}],"parameters":[{"name":"productId","in":"path","required":true,"description":"Product ID from the catalog.","schema":{"description":"Product ID from the catalog.","examples":["12"],"type":"integer","minimum":1}}],"responses":{"201":{"description":"Purchased; Replayed request","content":{"application/json":{"examples":{"example1":{"summary":"Purchased","description":"`key` is the supplier's array of keys; the key itself is in `serial`, `type` is `text` or an image. Manually fulfilled products have no `key` field.","value":{"status":"success","order":{"id":1842,"productId":12,"quantity":1,"price":1490,"currency":"RUB","status":"completed","failureReason":null,"idempotencyKey":"order-7731","webhookStatus":"pending","createdAt":"2026-11-13T12:36:53.000Z","updatedAt":"2026-11-13T12:37:10.000Z","key":[{"serial":"ABCDE-FGHIJ-KLMNO","type":"text","name":"Dead by Daylight"}]}}},"example3":{"summary":"Replayed request","description":"Same `idempotencyKey` — the outcome of the first request is returned, nothing is charged again. The status code matches the order's outcome.","value":{"status":"success","order":{"id":1842,"productId":12,"quantity":1,"price":1490,"currency":"RUB","status":"completed","failureReason":null,"idempotencyKey":"order-7731","webhookStatus":"delivered","createdAt":"2026-11-13T12:36:53.000Z","updatedAt":"2026-11-13T12:37:10.000Z"},"replayed":true}}}}}},"202":{"description":"In progress","content":{"application/json":{"examples":{"example2":{"summary":"In progress","description":"The order is created and the money reserved; fulfillment is still running. Wait for the webhook or poll `GET /orders/{id}`.","value":{"status":"pending","message":"Purchase is still being processed","order":{"id":1842,"productId":12,"quantity":1,"price":1490,"currency":"RUB","status":"pending","failureReason":null,"idempotencyKey":"order-7731","webhookStatus":null,"createdAt":"2026-11-13T12:36:53.000Z","updatedAt":"2026-11-13T12:37:10.000Z"}}}}}}},"400":{"description":"Bad request","content":{"application/json":{"examples":{"example4":{"summary":"Bad request","description":"Also: `Invalid idempotencyKey (1-128 printable ASCII characters, no spaces)`, `Invalid webhookUrl (must_be_https)`, `Malformed JSON body`.","value":{"status":"error","message":"Invalid product id"}}}}}},"401":{"description":"No key","content":{"application/json":{"examples":{"example14":{"summary":"No key","value":{"status":"error","message":"Missing X-Entity-Key header"}}}}}},"402":{"description":"Insufficient balance","content":{"application/json":{"examples":{"example5":{"summary":"Insufficient balance","description":"No order is created and nothing is charged. After a top-up you can repeat with the same `idempotencyKey`.","value":{"status":"error","message":"insufficient_balance"}}}}}},"403":{"description":"Purchases disabled; Invalid key","content":{"application/json":{"examples":{"example6":{"summary":"Purchases disabled","value":{"status":"error","message":"purchase_disabled"}},"example15":{"summary":"Invalid key","value":{"status":"error","message":"Invalid entity key"}}}}}},"404":{"description":"Product not found","content":{"application/json":{"examples":{"example7":{"summary":"Product not found","value":{"status":"error","message":"Product not found"}}}}}},"409":{"description":"Product unavailable","content":{"application/json":{"examples":{"example8":{"summary":"Product unavailable","value":{"status":"error","message":"Product is not available for purchase"}}}}}},"415":{"description":"Not JSON","content":{"application/json":{"examples":{"example9":{"summary":"Not JSON","value":{"status":"error","message":"Content-Type must be application/json"}}}}}},"422":{"description":"Key already used","content":{"application/json":{"examples":{"example10":{"summary":"Key already used","description":"This `idempotencyKey` was already used for a different product.","value":{"status":"error","code":"idempotency_key_reused","message":"This idempotencyKey was already used for a different product"}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"examples":{"example16":{"summary":"Rate limited","value":{"status":"error","message":"Too many requests, try again later"}}}}}},"500":{"description":"Key temporarily unavailable","content":{"application/json":{"examples":{"example12":{"summary":"Key temporarily unavailable","description":"The order is paid and fulfilled, but its key can't be read right now. Retry `GET /orders/{id}` later or contact support — do not buy again.","value":{"status":"error","code":"key_unavailable","message":"The order is paid but its key can't be retrieved right now; contact support","order":{"id":1842,"productId":12,"quantity":1,"price":1490,"currency":"RUB","status":"completed","failureReason":null,"idempotencyKey":"order-7731","webhookStatus":"delivered","createdAt":"2026-11-13T12:36:53.000Z","updatedAt":"2026-11-13T12:37:10.000Z"}}}}}}},"502":{"description":"Fulfillment failed","content":{"application/json":{"examples":{"example11":{"summary":"Fulfillment failed","description":"The supplier did not fulfill the order. The money is returned to the balance.","value":{"status":"error","message":"fulfillment_failed","order":{"id":1842,"productId":12,"quantity":1,"price":1490,"currency":"RUB","status":"failed","failureReason":"fulfillment_failed","idempotencyKey":"order-7731","webhookStatus":"delivered","createdAt":"2026-11-13T12:36:53.000Z","updatedAt":"2026-11-13T12:37:10.000Z"}}}}}}},"503":{"description":"Availability check down","content":{"application/json":{"examples":{"example13":{"summary":"Availability check down","value":{"status":"error","message":"Availability check temporarily unavailable"}}}}}}},"externalDocs":{"url":"https://docs.merchant.dbdlobby.com/en/reference/purchase"},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"idempotencyKey":{"description":"Your unique purchase key: 1–128 printable ASCII characters, no spaces, case-sensitive. A repeat with the same key creates no second order and charges nothing twice — it returns the outcome of the first request with `replayed: true`. Strongly recommended (may become mandatory).","examples":["order-7731"],"type":"string","minLength":1,"maxLength":128,"pattern":"^[!-~]+$"},"webhookUrl":{"description":"Where to send the notification about the order outcome. https only, up to 2048 characters, no username/password in the URL, not localhost or internal addresses.","examples":["https://shop.example.com/hooks/merchant"],"type":"string","format":"uri","maxLength":2048}}}}}},"x-money-moving":true}},"/orders/{id}":{"get":{"operationId":"getOrder","summary":"Get an order","description":"Order status, and the key once the order is completed.\n\nReturns only your own orders: someone else's order and a missing one both give `404`.\n\nThe key (`key`) comes only here and in the `POST /purchase` response — never in a webhook.","tags":["Purchases and orders"],"security":[{"EntityKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"description":"Order ID, a positive integer.","schema":{"description":"Order ID, a positive integer.","examples":["12"],"type":"integer","minimum":1}}],"responses":{"200":{"description":"Completed; Pending; Failed","content":{"application/json":{"examples":{"example1":{"summary":"Completed","value":{"status":"success","order":{"id":1842,"productId":12,"quantity":1,"price":1490,"currency":"RUB","status":"completed","failureReason":null,"idempotencyKey":"order-7731","webhookStatus":"delivered","createdAt":"2026-11-13T12:36:53.000Z","updatedAt":"2026-11-13T12:37:10.000Z","key":[{"serial":"ABCDE-FGHIJ-KLMNO","type":"text","name":"Dead by Daylight"}]}}},"example2":{"summary":"Pending","value":{"status":"success","order":{"id":1842,"productId":12,"quantity":1,"price":1490,"currency":"RUB","status":"pending","failureReason":null,"idempotencyKey":"order-7731","webhookStatus":null,"createdAt":"2026-11-13T12:36:53.000Z","updatedAt":"2026-11-13T12:37:10.000Z"}}},"example3":{"summary":"Failed","value":{"status":"success","order":{"id":1842,"productId":12,"quantity":1,"price":1490,"currency":"RUB","status":"failed","failureReason":"product_unavailable","idempotencyKey":"order-7731","webhookStatus":"delivered","createdAt":"2026-11-13T12:36:53.000Z","updatedAt":"2026-11-13T12:37:10.000Z"}}}}}}},"400":{"description":"Invalid ID","content":{"application/json":{"examples":{"example4":{"summary":"Invalid ID","value":{"status":"error","message":"Invalid order id"}}}}}},"401":{"description":"No key","content":{"application/json":{"examples":{"example7":{"summary":"No key","value":{"status":"error","message":"Missing X-Entity-Key header"}}}}}},"403":{"description":"Invalid key","content":{"application/json":{"examples":{"example8":{"summary":"Invalid key","value":{"status":"error","message":"Invalid entity key"}}}}}},"404":{"description":"Not found","content":{"application/json":{"examples":{"example5":{"summary":"Not found","value":{"status":"error","message":"Order not found"}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"examples":{"example9":{"summary":"Rate limited","value":{"status":"error","message":"Too many requests, try again later"}}}}}},"500":{"description":"Key temporarily unavailable","content":{"application/json":{"examples":{"example6":{"summary":"Key temporarily unavailable","value":{"status":"error","code":"key_unavailable","message":"The order is paid but its key can't be retrieved right now; contact support","order":{"id":1842,"productId":12,"quantity":1,"price":1490,"currency":"RUB","status":"completed","failureReason":null,"idempotencyKey":"order-7731","webhookStatus":"delivered","createdAt":"2026-11-13T12:36:53.000Z","updatedAt":"2026-11-13T12:37:10.000Z"}}}}}}}},"externalDocs":{"url":"https://docs.merchant.dbdlobby.com/en/reference/get-order"}}},"/sandbox/products":{"get":{"operationId":"sandboxProducts","summary":"Sandbox products","description":"A fixed test catalog.\n\nThe sandbox mirrors the shape of live responses but never touches the balance, orders or statistics. Any valid `X-Entity-Key` works.\n\nEach product deterministically produces one outcome — like test card numbers in payment systems.","tags":["Sandbox"],"security":[{"EntityKey":[]}],"parameters":[],"responses":{"200":{"description":"Sandbox catalog","content":{"application/json":{"examples":{"example1":{"summary":"Sandbox catalog","value":{"status":"success","sandbox":true,"products":[{"id":"sandbox-success","title":"[Sandbox] Always succeeds","price":100,"currency":"RUB","region":"all","platform":"all","isAvailable":true,"images":{"42x42":null,"156x156":null,"512x512":null}},{"id":"sandbox-insufficient-balance","title":"[Sandbox] Always fails: insufficient balance","price":100,"currency":"RUB","region":"all","platform":"all","isAvailable":true,"images":{"42x42":null,"156x156":null,"512x512":null}},{"id":"sandbox-unavailable","title":"[Sandbox] Always unavailable","price":100,"currency":"RUB","region":"all","platform":"all","isAvailable":false,"images":{"42x42":null,"156x156":null,"512x512":null}}]}}}}}},"401":{"description":"No key","content":{"application/json":{"examples":{"example2":{"summary":"No key","value":{"status":"error","message":"Missing X-Entity-Key header"}}}}}},"403":{"description":"Invalid key","content":{"application/json":{"examples":{"example3":{"summary":"Invalid key","value":{"status":"error","message":"Invalid entity key"}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"examples":{"example4":{"summary":"Rate limited","value":{"status":"error","message":"Too many requests, try again later"}}}}}}},"externalDocs":{"url":"https://docs.merchant.dbdlobby.com/en/reference/sandbox-products"}}},"/sandbox/purchase/{productId}":{"post":{"operationId":"sandboxPurchase","summary":"Test purchase","description":"A simulated purchase with no money.\n\n`sandbox-success` → `201`, `sandbox-insufficient-balance` → `402`, `sandbox-unavailable` → `409`, any other ID → `404` with a hint.\n\n`idempotencyKey` and `webhookUrl` work as in the live API. A webhook is sent only for a successful order, signed with the same secret and containing `\"sandbox\": true`; up to 3 attempts.\n\nTest orders are kept for 24 hours. The sandbox has its own, stricter rate limit.","tags":["Sandbox"],"security":[{"EntityKey":[]}],"parameters":[{"name":"productId","in":"path","required":true,"description":"Sandbox product ID.","schema":{"description":"Sandbox product ID.","examples":["sandbox-success"],"type":"string"}}],"responses":{"201":{"description":"Success; Replayed request","content":{"application/json":{"examples":{"example1":{"summary":"Success","value":{"status":"success","order":{"id":"sandbox_px8cqEgyiFCA","clientId":7,"productId":"sandbox-success","quantity":1,"idempotencyKey":"sb-1","price":100,"currency":"RUB","status":"completed","failureReason":null,"webhookUrl":null,"webhookStatus":null,"webhookAttempts":0,"sandbox":true,"createdAt":"2026-11-13T12:36:52.979Z","updatedAt":"2026-11-13T12:36:52.980Z"}}},"example2":{"summary":"Replayed request","value":{"status":"success","order":{"id":"sandbox_px8cqEgyiFCA","clientId":7,"productId":"sandbox-success","quantity":1,"idempotencyKey":"sb-1","price":100,"currency":"RUB","status":"completed","failureReason":null,"webhookUrl":null,"webhookStatus":null,"webhookAttempts":0,"sandbox":true,"createdAt":"2026-11-13T12:36:52.979Z","updatedAt":"2026-11-13T12:36:52.980Z"},"replayed":true}}}}}},"402":{"description":"Insufficient balance","content":{"application/json":{"examples":{"example3":{"summary":"Insufficient balance","value":{"status":"error","message":"insufficient_balance","order":{"id":"sandbox_LO3g828mKFl_","clientId":7,"productId":"sandbox-insufficient-balance","quantity":1,"idempotencyKey":null,"price":100,"currency":"RUB","status":"failed","failureReason":"insufficient_balance","webhookUrl":null,"webhookStatus":null,"webhookAttempts":0,"sandbox":true,"createdAt":"2026-11-13T12:36:52.979Z","updatedAt":"2026-11-13T12:36:52.980Z"}}}}}}},"404":{"description":"Unknown product","content":{"application/json":{"examples":{"example5":{"summary":"Unknown product","value":{"status":"error","message":"Product not found","hint":"Sandbox product ids: sandbox-success, sandbox-insufficient-balance, sandbox-unavailable"}}}}}},"409":{"description":"Unavailable","content":{"application/json":{"examples":{"example4":{"summary":"Unavailable","value":{"status":"error","message":"Product is not available for purchase"}}}}}},"429":{"description":"Sandbox rate limit","content":{"application/json":{"examples":{"example6":{"summary":"Sandbox rate limit","value":{"status":"error","message":"Too many sandbox requests, try again later"}}}}}},"503":{"description":"Sandbox unavailable","content":{"application/json":{"examples":{"example7":{"summary":"Sandbox unavailable","value":{"status":"error","message":"Sandbox is temporarily unavailable"}}}}}}},"externalDocs":{"url":"https://docs.merchant.dbdlobby.com/en/reference/sandbox-purchase"},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"idempotencyKey":{"description":"As in the live API, up to 128 characters.","examples":["order-7731"],"type":"string","minLength":1,"maxLength":128,"pattern":"^[!-~]+$"},"webhookUrl":{"description":"Where to send the notification about the order outcome. https only, up to 2048 characters, no username/password in the URL, not localhost or internal addresses.","examples":["https://shop.example.com/hooks/merchant"],"type":"string","format":"uri","maxLength":2048}}}}}}}},"/sandbox/orders/{id}":{"get":{"operationId":"sandboxOrder","summary":"Test order","description":"A test order by ID (sandbox_…).\n\nOnly your own test orders, no older than 24 hours.","tags":["Sandbox"],"security":[{"EntityKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"description":"Test order ID from the purchase response.","schema":{"description":"Test order ID from the purchase response.","examples":["sandbox_px8cqEgyiFCA"],"type":"string"}}],"responses":{"200":{"description":"Order","content":{"application/json":{"examples":{"example1":{"summary":"Order","value":{"status":"success","order":{"id":"sandbox_px8cqEgyiFCA","clientId":7,"productId":"sandbox-success","quantity":1,"idempotencyKey":"sb-1","price":100,"currency":"RUB","status":"completed","failureReason":null,"webhookUrl":null,"webhookStatus":null,"webhookAttempts":0,"sandbox":true,"createdAt":"2026-11-13T12:36:52.979Z","updatedAt":"2026-11-13T12:36:52.980Z"}}}}}}},"404":{"description":"Not found","content":{"application/json":{"examples":{"example2":{"summary":"Not found","value":{"status":"error","message":"Order not found"}}}}}}},"externalDocs":{"url":"https://docs.merchant.dbdlobby.com/en/reference/sandbox-order"}}},"/health/api":{"get":{"operationId":"health","summary":"Service health","description":"Availability check for monitoring. No authorization.\n\n`db` is the database, `redis` the cache. The service works without the cache (`degraded`) but not without the database (`503`).","tags":["Service"],"security":[],"parameters":[],"responses":{"200":{"description":"Up; No cache","content":{"application/json":{"examples":{"example1":{"summary":"Up","value":{"status":"ok","timestamp":1794573411400,"db":"ok","redis":"ok"}},"example2":{"summary":"No cache","value":{"status":"degraded","timestamp":1794573411400,"db":"ok","redis":"unavailable"}}}}}},"503":{"description":"Down","content":{"application/json":{"examples":{"example3":{"summary":"Down","value":{"status":"error","timestamp":1794573411400,"db":"unavailable","redis":"ok"}}}}}}},"externalDocs":{"url":"https://docs.merchant.dbdlobby.com/en/reference/health"}}}}}