{"openapi":"3.0.3","info":{"title":"SkyZiro API","description":"Public API for SkyZiro digital marketplace. \u041f\u043e\u043a\u0443\u043f\u043a\u0430 \u0446\u0438\u0444\u0440\u043e\u0432\u044b\u0445 \u0442\u043e\u0432\u0430\u0440\u043e\u0432 (\u043a\u043b\u044e\u0447\u0438, \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u044b, top-up'\u044b), \u043f\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0431\u0430\u043b\u0430\u043d\u0441\u0430, webhooks.","version":"1.0.0","contact":{"name":"SkyZiro Support","url":"https:\/\/skyziro.com"}},"servers":[{"url":"https:\/\/skyziro.com\/api\/v1","description":"Production"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Personal access token (skz_...). \u0421\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u0432 \/dashboard\/api-tokens."}},"schemas":{"Envelope":{"type":"object","required":["status","statusCode","statusMessage","traceId"],"properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"]},"statusCode":{"type":"integer","description":"0=ok, 1=auth, 2=forbidden, 3=not_found, 4=validation, 5=rate_limit, 6=provider_error, 99=internal"},"statusMessage":{"type":"string"},"traceId":{"type":"string","format":"uuid"},"data":{"nullable":true},"errors":{"type":"array","nullable":true,"items":{"$ref":"#\/components\/schemas\/FieldError"}}}},"Error":{"allOf":[{"$ref":"#\/components\/schemas\/Envelope"}]},"FieldError":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code (validation_error, insufficient_balance, \u2026) \u2014 branch on it"},"field":{"type":"string","description":"Only for validation_error"},"message":{"type":"string"},"retryable":{"type":"boolean","description":"Steam Gifts: true \u2014 repeat the same request after Retry-After seconds"}}},"Account":{"type":"object","properties":{"id":{"type":"integer"},"username":{"type":"string"},"email":{"type":"string"},"balance":{"type":"number","format":"float"},"currency":{"type":"string","example":"USD"}}},"Transaction":{"type":"object","properties":{"id":{"type":"integer"},"type":{"type":"string","enum":["credit","debit"]},"amount":{"type":"number"},"balance_before":{"type":"number"},"balance_after":{"type":"number"},"description":{"type":"string"},"created_at":{"type":"string","format":"date-time"}}},"CatalogItem":{"type":"object","properties":{"id":{"type":"string"},"source":{"type":"string","enum":["shop","seller"]},"name":{"type":"string"},"category":{"type":"string"},"platform":{"type":"string","nullable":true,"description":"\u041f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438: Steam, Origin\/EA App, EGS, Ubisoft Connect \u0438 \u0442.\u043f. (null \u0435\u0441\u043b\u0438 \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430)"},"country":{"type":"string","nullable":true,"description":"\u0420\u0435\u0433\u0438\u043e\u043d \u0442\u043e\u0432\u0430\u0440\u0430 \/ \u0433\u0440\u0443\u043f\u043f\u0430 \u0440\u0435\u0433\u0438\u043e\u043d\u043e\u0432 (\u043d\u0430\u043f\u0440. ru+cis, CIS, GLOB, ru). null \u0435\u0441\u043b\u0438 \u043d\u0435 \u0437\u0430\u0434\u0430\u043d"},"activation_countries":{"type":"array","items":{"type":"string"},"description":"\u0421\u043f\u0438\u0441\u043e\u043a ISO-\u043a\u043e\u0434\u043e\u0432 \u0441\u0442\u0440\u0430\u043d, \u0433\u0434\u0435 \u043a\u043b\u044e\u0447 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u0435\u0442\u0441\u044f (\u043d\u0430\u043f\u0440. [\"RU\",\"BY\",\"KZ\"]). \u041f\u0443\u0441\u0442\u043e\u0439 \u043c\u0430\u0441\u0441\u0438\u0432, \u0435\u0441\u043b\u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043b \u0442\u043e\u0447\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u2014 \u0442\u043e\u0433\u0434\u0430 \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u0443\u0439\u0442\u0435\u0441\u044c \u043d\u0430 country"},"image_url":{"type":"string","nullable":true},"price_from":{"type":"number","nullable":true},"in_stock":{"type":"integer"},"items_count":{"type":"integer"}}},"ProductDetail":{"type":"object","properties":{"id":{"type":"string"},"source":{"type":"string","enum":["shop","seller"]},"name":{"type":"string"},"category":{"type":"string"},"platform":{"type":"string","nullable":true,"description":"\u041f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438: Steam, Origin\/EA App, EGS \u0438 \u0442.\u043f."},"country":{"type":"string","nullable":true,"description":"\u0420\u0435\u0433\u0438\u043e\u043d \u0442\u043e\u0432\u0430\u0440\u0430 \/ \u0433\u0440\u0443\u043f\u043f\u0430 \u0440\u0435\u0433\u0438\u043e\u043d\u043e\u0432"},"activation_countries":{"type":"array","items":{"type":"string"},"description":"ISO-\u043a\u043e\u0434\u044b \u0441\u0442\u0440\u0430\u043d \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438; \u043f\u0443\u0441\u0442\u043e\u0439 \u043c\u0430\u0441\u0441\u0438\u0432 \u2014 \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u0443\u0439\u0442\u0435\u0441\u044c \u043d\u0430 country"},"image_url":{"type":"string","nullable":true},"fields":{"type":"array","description":"Required fields for DTU top-up items","items":{"type":"object"}},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"price":{"type":"number"},"in_stock":{"type":"integer","nullable":true}}}}}},"Order":{"type":"object","properties":{"uid":{"type":"string"},"product_name":{"type":"string"},"category":{"type":"string"},"quantity":{"type":"integer"},"price":{"type":"number"},"total":{"type":"number"},"status":{"type":"string","enum":["pending","processing","completed","failed","refunded"],"description":"\u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u0441\u0442\u0430\u0442\u0443\u0441 \u0437\u0430\u043a\u0430\u0437\u0430. \u0414\u043b\u044f \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0439 \u043f\u0440\u043e\u0449\u0435 \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 state\/final."},"state":{"type":"string","enum":["in_progress","success","failed","refunded"],"description":"\u041d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435: success \u2014 \u0437\u0430\u043a\u0430\u0437 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d, failed \u2014 \u043e\u0442\u043a\u043b\u043e\u043d\u0451\u043d."},"final":{"type":"boolean","description":"true \u2014 \u0441\u0442\u0430\u0442\u0443\u0441 \u043e\u043a\u043e\u043d\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439, \u043e\u043f\u0440\u043e\u0441 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u043a\u0440\u0430\u0449\u0430\u0442\u044c."},"delivery":{"type":"array","items":{"type":"object"}},"reference_id":{"type":"string","nullable":true,"description":"\u0412\u0430\u0448 referenceId \/ external_id \u0438\u0437 POST \/orders."},"transaction_id":{"type":"string","nullable":true,"description":"ID \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438 \u2014 \u0442\u043e\u0442 \u0436\u0435, \u0447\u0442\u043e \u0432 \u043b\u0438\u0447\u043d\u043e\u043c \u043a\u0430\u0431\u0438\u043d\u0435\u0442\u0435."},"created_at":{"type":"string","format":"date-time"},"completed_at":{"type":"string","format":"date-time","nullable":true,"description":"\u041c\u043e\u043c\u0435\u043d\u0442 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f (\u0443 \u043d\u0435\u0437\u0430\u0432\u0435\u0440\u0448\u0451\u043d\u043d\u044b\u0445 \u2014 null)."}}},"Invoice":{"type":"object","properties":{"uid":{"type":"string"},"method":{"type":"string","example":"crypto"},"amount":{"type":"number"},"currency":{"type":"string"},"network":{"type":"string"},"status":{"type":"string","enum":["pending","completed","failed","expired"]},"tx_hash":{"type":"string","nullable":true}}},"Webhook":{"type":"object","properties":{"id":{"type":"integer"},"url":{"type":"string"},"events":{"type":"array","items":{"type":"string"}},"is_active":{"type":"boolean"},"last_called_at":{"type":"string","format":"date-time","nullable":true},"last_success_at":{"type":"string","format":"date-time","nullable":true},"failures_in_row":{"type":"integer"}}},"Category":{"type":"object","properties":{"slug":{"type":"string","example":"games"},"label":{"type":"string","example":"\u0418\u0433\u0440\u044b"}}},"PaymentMethod":{"type":"object","properties":{"code":{"type":"string","example":"crypto"},"name":{"type":"string"},"description":{"type":"string"},"currencies":{"type":"array","items":{"type":"string"}},"networks":{"type":"array","items":{"type":"string"}},"min_amount":{"type":"number"},"max_amount":{"type":"number"},"currency":{"type":"string"}}},"SteamGiftOrder":{"type":"object","properties":{"uid":{"type":"string","example":"ORD-K2M3WF"},"reference_id":{"type":"string","description":"Your order ID from the create request"},"status":{"type":"string","enum":["processing","delivered","failed","awaiting_recipient","needs_quick_invite","on_hold"],"description":"processing \u2014 in progress (charged); delivered \u2014 final; failed \u2014 final, funds returned (also cancelled orders); awaiting_recipient \u2014 recipient not found at creation, nothing bought, funds returned, send a new one via \/recipient; needs_quick_invite \u2014 send an s.team\/p link via \/quick-link; on_hold \u2014 resale_usd below our price, not charged, decide via \/deliver-anyway or \/cancel"},"app_id":{"type":"integer"},"sub_id":{"type":"integer","nullable":true},"game":{"type":"string"},"edition":{"type":"string","nullable":true},"region":{"type":"string"},"recipient":{"type":"string"},"price":{"type":"number","description":"Charged for this order, USD"},"currency":{"type":"string","example":"USD"},"sender_profile_url":{"type":"string","nullable":true,"description":"Steam account that sends the friend request and the gift"},"recipient_steam_id":{"type":"string","nullable":true},"steam_transid":{"type":"string","nullable":true},"delivered_at":{"type":"string","format":"date-time","nullable":true},"fail_reason":{"type":"string","nullable":true},"loss":{"type":"object","nullable":true,"description":"Only for on_hold: sold_usd \/ cost_usd \/ shortfall_usd"},"reason":{"type":"object","nullable":true,"description":"Supplier explanation of the current state (null when there is none). Branch on code.","properties":{"code":{"type":"string","example":"awaiting_friend_accept"},"cause":{"type":"string","nullable":true,"description":"Why it was closed (refunded \/ cancelled \/ pending_confirm)"},"final":{"type":"boolean","nullable":true,"description":"false = the supplier operator is handling it, do not re-create; true = will not proceed on its own"},"buyer_action":{"type":"string","nullable":true,"example":"accept_friend","description":"accept_friend | send_invite_link | send_link | confirm_base_game | contact_seller"},"message":{"type":"string","nullable":true,"description":"English explanation for you"},"text_ru":{"type":"string","nullable":true,"description":"Ready-to-show Russian text for the buyer"},"not_before":{"type":"string","format":"date-time","nullable":true,"description":"The action cannot be repeated before this time"}}},"partner_phase":{"type":"string","nullable":true,"enum":["in_progress","needs_partner_action","waiting_operator","done",null],"description":"Whose move: in_progress \/ waiting_operator \u2014 wait; needs_partner_action \u2014 your move, see actions; done \u2014 final"},"actions":{"type":"array","nullable":true,"items":{"type":"string","enum":["change_recipient","send_quick_link","friend_accepted","confirm_base_game","confirm_ownership","confirm_region_change","cancel"]},"description":"What the supplier accepts right now: change_recipient \u2192 \/recipient, send_quick_link \u2192 \/quick-link, friend_accepted \u2192 \/friend-accepted, confirm_base_game \u2192 \/base-game, confirm_ownership \u2192 \/ownership-confirmed, confirm_region_change \u2192 \/region-changed, cancel \u2192 \/cancel. Show buyer buttons only from this list"},"operator_handling":{"type":"boolean","description":"The supplier operator is finishing the order (or the gift is being sent): do not cancel or re-create"},"needs_recipient":{"type":"boolean","description":"A new recipient is needed in THIS order (POST \/steam-gifts\/orders\/{uid}\/recipient, no charge)"},"awaiting_friend_accept":{"type":"boolean","description":"The buyer must accept the friend request from sender_profile_url"},"delivered_after_cancel":{"type":"boolean","description":"The supplier delivered the gift after a cancellation it had confirmed (funds were returned). Handled manually by support \u2014 do not refund your buyer until we contact you"},"cancel_state":{"type":"string","nullable":true,"enum":["pending","awaiting_supplier",null],"description":"Your cancel that the supplier has not confirmed yet: pending = we retry it every minute for up to an hour; awaiting_supplier = money at the supplier has already moved, wait for delivered or failed"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time","nullable":true}}},"SteamGiftCatalogItem":{"type":"object","properties":{"app_id":{"type":"integer","example":3405690},"name":{"type":"string"},"type":{"type":"string","enum":["game","dlc"]},"image":{"type":"string","nullable":true},"editions_count":{"type":"integer"},"available":{"type":"boolean"},"price_from":{"type":"number","nullable":true,"description":"Your lowest price across regions, USD (exact price: \/catalog\/{app_id} or \/price)"},"updated_at":{"type":"string","format":"date-time","description":"Only with updated_since: when we recorded the last change"},"currency":{"type":"string","example":"USD"},"base_game":{"type":"object","nullable":true,"description":"DLC only: the game it requires","properties":{"app_id":{"type":"integer"},"name":{"type":"string"}}},"editions":{"type":"array","nullable":true,"description":"Only with editions=1; null \u2014 the supplier did not answer for this game right now (use \/catalog\/{app_id})","items":{"type":"object","properties":{"sub_id":{"type":"integer"},"name":{"type":"string"},"is_primary":{"type":"boolean"},"regions":{"type":"array","items":{"type":"object","properties":{"region":{"type":"string"},"available":{"type":"boolean"},"price":{"type":"number","nullable":true},"requires_quick_invite":{"type":"boolean"}}}}}}}}},"SteamGiftGame":{"type":"object","properties":{"app_id":{"type":"integer"},"name":{"type":"string"},"type":{"type":"string","enum":["game","dlc"]},"image":{"type":"string","nullable":true},"base_game":{"type":"object","nullable":true,"properties":{"app_id":{"type":"integer"},"name":{"type":"string"}}},"primary_sub_id":{"type":"integer","nullable":true},"details":{"type":"object","nullable":true,"description":"Only with details=1. null \u2014 Steam did not answer right now, retry later; available=false \u2014 Steam has no store page for this app","properties":{"available":{"type":"boolean"},"short_description":{"type":"string","nullable":true},"genres":{"type":"array","items":{"type":"string"}},"release_date":{"type":"string","nullable":true},"coming_soon":{"type":"boolean"},"developers":{"type":"array","items":{"type":"string"}},"publishers":{"type":"array","items":{"type":"string"}},"header_image":{"type":"string","nullable":true},"screenshots":{"type":"array","items":{"type":"object","properties":{"thumbnail":{"type":"string"},"full":{"type":"string"}}}},"store_url":{"type":"string"}}},"editions":{"type":"array","items":{"type":"object","properties":{"sub_id":{"type":"integer"},"name":{"type":"string"},"is_primary":{"type":"boolean"},"regions":{"type":"array","items":{"type":"object","properties":{"region":{"type":"string","example":"RU"},"name":{"type":"string"},"available":{"type":"boolean"},"price":{"type":"number","nullable":true,"description":"What one gift costs you, USD"},"currency":{"type":"string"},"requires_quick_invite":{"type":"boolean","description":"This region is gifted only via an s.team\/p invite link \u2014 pass it as recipient"}}}}}}}}},"SteamGiftDryRun":{"type":"object","properties":{"dry_run":{"type":"boolean","example":true},"ok":{"type":"boolean"},"would_charge":{"type":"number"},"currency":{"type":"string"},"app_id":{"type":"integer"},"sub_id":{"type":"integer","nullable":true},"region":{"type":"string"},"game":{"type":"string"},"edition":{"type":"string","nullable":true},"balance":{"type":"number"},"balance_after":{"type":"number"},"spending_limit_left":{"type":"number","nullable":true},"recipient_check":{"type":"object","nullable":true,"properties":{"valid":{"type":"boolean"},"type":{"type":"string","nullable":true},"steam_id":{"type":"string","nullable":true}}},"existing_order":{"allOf":[{"$ref":"#\/components\/schemas\/SteamGiftOrder"}],"nullable":true,"description":"The reference_id is already used by this order \u2014 the real call would return it and charge nothing"}}}},"responses":{"Unauthenticated":{"description":"Token missing or invalid","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/Error"},"example":{"status":"ERROR","statusCode":1,"statusMessage":"Unauthenticated","traceId":"4a3c2b1d-...","data":null,"errors":null}}}},"Forbidden":{"description":"IP not whitelisted for this token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/Error"},"example":{"status":"ERROR","statusCode":2,"statusMessage":"Your IP 1.2.3.4 is not in this token's whitelist.","traceId":"4a3c2b1d-...","data":null,"errors":[{"field":"ip","message":"Allowed: 10.0.0.1, 192.168.0.0\/24"}]}}}},"NotFound":{"description":"Resource not found","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/Error"},"example":{"status":"ERROR","statusCode":3,"statusMessage":"Not Found","traceId":"4a3c2b1d-...","data":null,"errors":null}}}},"Validation":{"description":"Validation error (specific fields in errors[])","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/Error"},"example":{"status":"ERROR","statusCode":4,"statusMessage":"Validation Error","traceId":"4a3c2b1d-...","data":null,"errors":[{"field":"amount","message":"The amount must be at least 5."},{"field":"items.0.item_id","message":"Item not found: fake-id"}]}}}},"RateLimit":{"description":"Too many requests \u2014 see Retry-After header","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/Error"},"example":{"status":"ERROR","statusCode":5,"statusMessage":"Too Many Requests","traceId":"4a3c2b1d-...","data":null,"errors":null}}},"headers":{"Retry-After":{"description":"Seconds until window resets","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Quota for current window","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Remaining in current window","schema":{"type":"integer"}}}}}},"paths":{"\/ping":{"get":{"summary":"Healthcheck","tags":["Meta"],"responses":{"200":{"description":"Success","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/Envelope"}}}},"401":{"$ref":"#\/components\/responses\/Unauthenticated"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"429":{"$ref":"#\/components\/responses\/RateLimit"}}}},"\/openapi.json":{"get":{"summary":"OpenAPI 3 spec (this document)","tags":["Meta"],"responses":{"200":{"description":"Success","content":{"application\/json":{"schema":{"type":"object"}}}},"401":{"$ref":"#\/components\/responses\/Unauthenticated"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"429":{"$ref":"#\/components\/responses\/RateLimit"}}}},"\/account":{"get":{"summary":"Account info + balance","tags":["Account"],"responses":{"200":{"description":"Success","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/Account"}}}},"401":{"$ref":"#\/components\/responses\/Unauthenticated"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"429":{"$ref":"#\/components\/responses\/RateLimit"}}}},"\/account\/transactions":{"get":{"summary":"List transactions","tags":["Account"],"parameters":[{"name":"type","in":"query","schema":{"type":"string","enum":["credit","debit"]}},{"name":"page","in":"query","schema":{"type":"integer","default":1}},{"name":"limit","in":"query","schema":{"type":"integer","default":25,"maximum":100}}],"responses":{"200":{"description":"Success","content":{"application\/json":{"schema":{"type":"array","items":{"$ref":"#\/components\/schemas\/Transaction"}}}}},"401":{"$ref":"#\/components\/responses\/Unauthenticated"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"429":{"$ref":"#\/components\/responses\/RateLimit"}}}},"\/catalog":{"get":{"summary":"List products","tags":["Catalog"],"parameters":[{"name":"search","in":"query","schema":{"type":"string"}},{"name":"category","in":"query","schema":{"type":"string"}},{"name":"country","in":"query","schema":{"type":"string"}},{"name":"min_price","in":"query","schema":{"type":"number"}},{"name":"max_price","in":"query","schema":{"type":"number"}},{"name":"in_stock","in":"query","schema":{"type":"boolean"}},{"name":"sort","in":"query","schema":{"type":"string","enum":["name","price_asc","price_desc","popular"]}},{"name":"page","in":"query","schema":{"type":"integer"}},{"name":"limit","in":"query","schema":{"type":"integer","maximum":100}}],"responses":{"200":{"description":"Success","content":{"application\/json":{"schema":{"type":"array","items":{"$ref":"#\/components\/schemas\/CatalogItem"}}}}},"401":{"$ref":"#\/components\/responses\/Unauthenticated"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"429":{"$ref":"#\/components\/responses\/RateLimit"}}}},"\/catalog\/categories":{"get":{"summary":"List categories","tags":["Catalog"],"responses":{"200":{"description":"Success","content":{"application\/json":{"schema":{"type":"array","items":{"$ref":"#\/components\/schemas\/Category"}}}}},"401":{"$ref":"#\/components\/responses\/Unauthenticated"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"429":{"$ref":"#\/components\/responses\/RateLimit"}}}},"\/catalog\/{slug}":{"get":{"summary":"List products in a category (shortcut for \/catalog?category={slug})","tags":["Catalog"],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"},"description":"\u041a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f \u0438\u0437 GET \/catalog\/categories"},{"name":"page","in":"query","schema":{"type":"integer"}},{"name":"limit","in":"query","schema":{"type":"integer","maximum":100}}],"responses":{"200":{"description":"Success","content":{"application\/json":{"schema":{"type":"array","items":{"$ref":"#\/components\/schemas\/CatalogItem"}}}}},"401":{"$ref":"#\/components\/responses\/Unauthenticated"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"429":{"$ref":"#\/components\/responses\/RateLimit"},"404":{"$ref":"#\/components\/responses\/NotFound"}}}},"\/products\/{id}":{"get":{"summary":"Product details","tags":["Catalog"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ProductDetail"}}}},"401":{"$ref":"#\/components\/responses\/Unauthenticated"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"429":{"$ref":"#\/components\/responses\/RateLimit"},"404":{"$ref":"#\/components\/responses\/NotFound"}}}},"\/orders":{"get":{"summary":"List orders","tags":["Orders"],"parameters":[{"name":"status","in":"query","schema":{"type":"string"}},{"name":"page","in":"query","schema":{"type":"integer"}},{"name":"limit","in":"query","schema":{"type":"integer"}},{"name":"reference_id","in":"query","schema":{"type":"string"},"description":"Your referenceId\/external_id from POST \/orders, or the transaction ID shown in the dashboard"},{"name":"transaction_id","in":"query","schema":{"type":"string"},"description":"Transaction ID shown in the dashboard"}],"responses":{"200":{"description":"Success","content":{"application\/json":{"schema":{"type":"array","items":{"$ref":"#\/components\/schemas\/Order"}}}}},"401":{"$ref":"#\/components\/responses\/Unauthenticated"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"429":{"$ref":"#\/components\/responses\/RateLimit"}}},"post":{"summary":"Create order (one or multiple items)","description":"Pass referenceId (or external_id; if omitted, the Idempotency-Key header is used) to make the request idempotent. After a timeout repeat the SAME request with the same referenceId: a repeat returns the orders created by the first request (duplicate: true) instead of creating new ones; while the first request is still running it gets 409 in_progress with Retry-After. GET \/orders?reference_id=\u2026 finds the order once the first request has finished \u2014 an empty result while it is still running does not mean the order was not created. A failed order keeps its referenceId: use a new one for a new attempt.","tags":["Orders"],"requestBody":{"required":true,"content":{"application\/json":{"schema":{"type":"object","required":["items"],"properties":{"referenceId":{"type":"string","maxLength":128,"description":"Your request ID (idempotency). Alias: external_id"},"items":{"type":"array","minItems":1,"maxItems":50,"items":{"type":"object","required":["item_id","quantity"],"properties":{"item_id":{"type":"string"},"quantity":{"type":"integer","minimum":1,"maximum":100},"fields":{"type":"object","description":"For DTU items only"}}}}}}}}},"responses":{"200":{"description":"Success","content":{"application\/json":{"schema":{"type":"array","items":{"$ref":"#\/components\/schemas\/Order"}}}}},"401":{"$ref":"#\/components\/responses\/Unauthenticated"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"429":{"$ref":"#\/components\/responses\/RateLimit"},"422":{"$ref":"#\/components\/responses\/Validation"}}}},"\/orders\/{uid}":{"get":{"summary":"Order details","tags":["Orders"],"parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/Order"}}}},"401":{"$ref":"#\/components\/responses\/Unauthenticated"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"429":{"$ref":"#\/components\/responses\/RateLimit"},"404":{"$ref":"#\/components\/responses\/NotFound"}}}},"\/orders\/validate":{"post":{"summary":"Validate DTU account (e.g. Free Fire UID)","tags":["Orders"],"requestBody":{"required":true,"content":{"application\/json":{"schema":{"type":"object","required":["item_id","fields"],"properties":{"item_id":{"type":"string"},"fields":{"type":"object"}}}}}},"responses":{"200":{"description":"Success","content":{"application\/json":{"schema":{"type":"object","properties":{"valid":{"type":"boolean"},"attributes":{"type":"object"}}}}}},"401":{"$ref":"#\/components\/responses\/Unauthenticated"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"429":{"$ref":"#\/components\/responses\/RateLimit"}}}},"\/funds\/methods":{"get":{"summary":"Payment methods","tags":["Funds"],"responses":{"200":{"description":"Success","content":{"application\/json":{"schema":{"type":"array","items":{"$ref":"#\/components\/schemas\/PaymentMethod"}}}}},"401":{"$ref":"#\/components\/responses\/Unauthenticated"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"429":{"$ref":"#\/components\/responses\/RateLimit"}}}},"\/funds\/invoices":{"get":{"summary":"List invoices","tags":["Funds"],"responses":{"200":{"description":"Success","content":{"application\/json":{"schema":{"type":"array","items":{"$ref":"#\/components\/schemas\/Invoice"}}}}},"401":{"$ref":"#\/components\/responses\/Unauthenticated"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"429":{"$ref":"#\/components\/responses\/RateLimit"}}},"post":{"summary":"Create invoice","tags":["Funds"],"requestBody":{"required":true,"content":{"application\/json":{"schema":{"type":"object","required":["amount"],"properties":{"amount":{"type":"number","minimum":5,"maximum":10000},"method":{"type":"string","enum":["crypto"],"default":"crypto"},"currency":{"type":"string","default":"USDT"},"network":{"type":"string","default":"TRON"}}}}}},"responses":{"200":{"description":"Success","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/Invoice"}}}},"401":{"$ref":"#\/components\/responses\/Unauthenticated"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"429":{"$ref":"#\/components\/responses\/RateLimit"}}}},"\/funds\/invoices\/{uid}":{"get":{"summary":"Invoice details","tags":["Funds"],"parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/Invoice"}}}},"401":{"$ref":"#\/components\/responses\/Unauthenticated"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"429":{"$ref":"#\/components\/responses\/RateLimit"},"404":{"$ref":"#\/components\/responses\/NotFound"}}}},"\/webhooks":{"get":{"summary":"List webhooks","tags":["Webhooks"],"responses":{"200":{"description":"Success","content":{"application\/json":{"schema":{"type":"array","items":{"$ref":"#\/components\/schemas\/Webhook"}}}}},"401":{"$ref":"#\/components\/responses\/Unauthenticated"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"429":{"$ref":"#\/components\/responses\/RateLimit"}}},"post":{"summary":"Register webhook","tags":["Webhooks"],"description":"Secret \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u041e\u0414\u0418\u041d \u0440\u0430\u0437. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0435\u0433\u043e \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 HMAC-\u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0434\u043e\u0441\u0442\u0430\u0432\u043e\u043a.","requestBody":{"required":true,"content":{"application\/json":{"schema":{"type":"object","required":["url","events"],"properties":{"url":{"type":"string","format":"uri"},"events":{"type":"array","items":{"type":"string","enum":["order.created","order.completed","order.failed","topup.completed","steamgifts.order.delivered","steamgifts.order.failed","steamgifts.order.needs_recipient","steamgifts.order.needs_quick_invite","steamgifts.order.needs_base_game_confirm","steamgifts.order.needs_region_change","steamgifts.order.on_hold","steamgifts.order.needs_attention","steamgifts.order.awaiting_friend_accept","steamgifts.order.operator_handling","steamgifts.order.*"]}}}}}}},"responses":{"200":{"description":"Success","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/Webhook"}}}},"401":{"$ref":"#\/components\/responses\/Unauthenticated"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"429":{"$ref":"#\/components\/responses\/RateLimit"}}}},"\/webhooks\/events":{"get":{"summary":"List subscribable webhook event types","tags":["Webhooks"],"responses":{"200":{"description":"Success","content":{"application\/json":{"schema":{"type":"array","items":{"type":"string"}}}}},"401":{"$ref":"#\/components\/responses\/Unauthenticated"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"429":{"$ref":"#\/components\/responses\/RateLimit"}}}},"\/webhooks\/{id}":{"put":{"summary":"Update webhook","tags":["Webhooks"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"Success","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/Webhook"}}}},"401":{"$ref":"#\/components\/responses\/Unauthenticated"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"429":{"$ref":"#\/components\/responses\/RateLimit"}}},"delete":{"summary":"Delete webhook","tags":["Webhooks"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}}],"responses":{"204":{"description":"Deleted"}}}},"\/webhooks\/{id}\/test":{"post":{"summary":"Send test event","tags":["Webhooks"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"Success","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/Webhook"}}}},"401":{"$ref":"#\/components\/responses\/Unauthenticated"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"429":{"$ref":"#\/components\/responses\/RateLimit"}}}},"\/steam-gifts\/catalog":{"get":{"summary":"Games and DLC you can gift, with your lowest price","tags":["Steam Gifts"],"description":"Served from our catalog index (fast, ETag\/304). price_from is your lowest price across regions; the exact price per edition\/region is in \/steam-gifts\/catalog\/{app_id} or \/steam-gifts\/price. Search ignores case, \u2122 and punctuation; also accepts an App ID or a store.steampowered.com\/app\/\u2026 link.","parameters":[{"name":"q","in":"query","schema":{"type":"string","maxLength":120}},{"name":"type","in":"query","schema":{"type":"string","enum":["game","dlc","all"],"default":"game"}},{"name":"app_ids","in":"query","schema":{"type":"string"},"description":"Comma-separated App IDs, up to 100"},{"name":"editions","in":"query","schema":{"type":"boolean"},"description":"1 \u2014 include every game's editions with your price per region (one page = up to 100 games, no per-game requests)"},{"name":"regions","in":"query","schema":{"type":"string"},"description":"With editions=1: keep only these regions, e.g. RU,KZ"},{"name":"page","in":"query","schema":{"type":"integer","minimum":1}},{"name":"limit","in":"query","schema":{"type":"integer","maximum":200,"default":25}},{"name":"updated_since","in":"query","schema":{"type":"string","format":"date-time"},"description":"Only games whose prices or availability changed since then (log updated every 10 minutes) plus removed_app_ids. Pass server_time of your previous response"}],"responses":{"200":{"description":"Success","content":{"application\/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#\/components\/schemas\/SteamGiftCatalogItem"}},"page":{"type":"integer"},"limit":{"type":"integer"},"total":{"type":"integer"},"totalPages":{"type":"integer"},"removed_app_ids":{"type":"array","items":{"type":"integer"},"description":"Only with updated_since: removed from sale since then"},"server_time":{"type":"string","format":"date-time","description":"Use as updated_since next time"}}}}}},"401":{"$ref":"#\/components\/responses\/Unauthenticated"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"429":{"$ref":"#\/components\/responses\/RateLimit"},"304":{"description":"Not modified (If-None-Match matched the ETag)"}}}},"\/steam-gifts\/catalog\/{app_id}":{"get":{"summary":"Game: editions, regions and your price per region","tags":["Steam Gifts"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"details","in":"query","schema":{"type":"boolean"},"description":"1 \u2014 add the Steam store description: screenshots, short description, genres, release date, developers, publishers"},{"name":"lang","in":"query","schema":{"type":"string","enum":["ru","en"],"default":"ru"}}],"responses":{"200":{"description":"Success","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/SteamGiftGame"}}}},"401":{"$ref":"#\/components\/responses\/Unauthenticated"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"429":{"$ref":"#\/components\/responses\/RateLimit"},"304":{"description":"Not modified"},"404":{"$ref":"#\/components\/responses\/NotFound"}}}},"\/steam-gifts\/regions":{"get":{"summary":"Delivery regions (country of the recipient Steam account)","tags":["Steam Gifts"],"responses":{"200":{"description":"Success","content":{"application\/json":{"schema":{"type":"object","properties":{"regions":{"type":"array","items":{"type":"object","properties":{"region":{"type":"string"},"name":{"type":"string"},"group":{"type":"string","nullable":true}}}}}}}}},"401":{"$ref":"#\/components\/responses\/Unauthenticated"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"429":{"$ref":"#\/components\/responses\/RateLimit"}}}},"\/steam-gifts\/price":{"post":{"summary":"Exact price right now + whether your balance covers it (no charge)","tags":["Steam Gifts"],"requestBody":{"required":true,"content":{"application\/json":{"schema":{"type":"object","required":["app_id","region"],"properties":{"app_id":{"type":"integer"},"sub_id":{"type":"integer"},"region":{"type":"string","example":"RU"}}}}}},"responses":{"200":{"description":"Success","content":{"application\/json":{"schema":{"type":"object","properties":{"app_id":{"type":"integer"},"sub_id":{"type":"integer"},"region":{"type":"string"},"game":{"type":"string"},"edition":{"type":"string","nullable":true},"price":{"type":"number"},"currency":{"type":"string"},"available":{"type":"boolean"},"balance":{"type":"number"},"enough_balance":{"type":"boolean"}}}}}},"401":{"$ref":"#\/components\/responses\/Unauthenticated"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"429":{"$ref":"#\/components\/responses\/RateLimit"},"404":{"$ref":"#\/components\/responses\/NotFound"},"422":{"$ref":"#\/components\/responses\/Validation"}}}},"\/steam-gifts\/recipients\/validate":{"post":{"summary":"Check a recipient link at the supplier (no charge)","tags":["Steam Gifts"],"requestBody":{"required":true,"content":{"application\/json":{"schema":{"type":"object","required":["recipient"],"properties":{"recipient":{"type":"string","description":"https:\/\/steamcommunity.com\/id\/\u2026 or \/profiles\/\u2026, or https:\/\/s.team\/p\/\u2026"}}}}}},"responses":{"200":{"description":"Success","content":{"application\/json":{"schema":{"type":"object","properties":{"valid":{"type":"boolean"},"type":{"type":"string","nullable":true},"steam_id":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true}}}}}},"401":{"$ref":"#\/components\/responses\/Unauthenticated"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"429":{"$ref":"#\/components\/responses\/RateLimit"}}}},"\/steam-gifts\/orders":{"get":{"summary":"Your API gift orders, newest first","tags":["Steam Gifts"],"parameters":[{"name":"status","in":"query","schema":{"type":"string","enum":["processing","delivered","failed","awaiting_recipient","needs_quick_invite","on_hold"]}},{"name":"reference_id","in":"query","schema":{"type":"string"},"description":"Find the order by your ID (e.g. after a timeout on create)"},{"name":"updated_since","in":"query","schema":{"type":"string","format":"date-time"},"description":"Only orders changed since then, oldest change first \u2014 for incremental sync"},{"name":"page","in":"query","schema":{"type":"integer"}},{"name":"limit","in":"query","schema":{"type":"integer","maximum":100}}],"responses":{"200":{"description":"Success","content":{"application\/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#\/components\/schemas\/SteamGiftOrder"}},"page":{"type":"integer"},"limit":{"type":"integer"},"total":{"type":"integer"},"totalPages":{"type":"integer"}}}}}},"401":{"$ref":"#\/components\/responses\/Unauthenticated"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"429":{"$ref":"#\/components\/responses\/RateLimit"}}},"post":{"summary":"Buy and send a gift (charges your balance)","tags":["Steam Gifts"],"description":"reference_id is required: repeating the request with the same reference_id returns the same order without a second charge (200, header Idempotent-Replayed: true); the same reference_id with a different app\/region\/recipient is 409 reference_id_conflict. dry_run=true runs every check (price, balance, key limit, recipient at the supplier) without buying. On failure the funds return to the balance automatically.","requestBody":{"required":true,"content":{"application\/json":{"schema":{"type":"object","required":["app_id","region","recipient","reference_id"],"properties":{"app_id":{"type":"integer"},"sub_id":{"type":"integer","description":"Edition; the primary one if omitted"},"region":{"type":"string","example":"RU"},"recipient":{"type":"string","description":"Steam profile URL or s.team\/p invite link"},"reference_id":{"type":"string","maxLength":128,"pattern":"^[\\x21-\\x7E]{1,128}$","description":"Your unique order ID (idempotency)"},"max_price_usd":{"type":"number","description":"Do not buy if our price is higher (409 price_above_max)"},"resale_usd":{"type":"number","description":"Your sale price to the buyer; below our price \u2192 on_hold without a charge"},"note":{"type":"string","maxLength":500},"dry_run":{"type":"boolean","description":"Only check, do not buy"}}}}}},"responses":{"201":{"description":"Created","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/SteamGiftOrder"}}}},"200":{"description":"Replay of the same reference_id (header Idempotent-Replayed: true), or the dry_run result","content":{"application\/json":{"schema":{"oneOf":[{"$ref":"#\/components\/schemas\/SteamGiftOrder"},{"$ref":"#\/components\/schemas\/SteamGiftDryRun"}]}}}},"401":{"$ref":"#\/components\/responses\/Unauthenticated"},"402":{"description":"insufficient_balance"},"403":{"description":"spending_limit_exceeded | steamgifts_access_denied | missing scope"},"409":{"description":"price_above_max | reference_id_conflict | in_progress (retry in 5 s)"},"422":{"$ref":"#\/components\/responses\/Validation"},"429":{"$ref":"#\/components\/responses\/RateLimit"},"502":{"description":"catalog_unavailable | supplier_unavailable \u2014 retry (Retry-After)"}}}},"\/steam-gifts\/orders\/{uid}":{"get":{"summary":"Order state: status, partner_phase, actions","tags":["Steam Gifts"],"parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/SteamGiftOrder"}}}},"401":{"$ref":"#\/components\/responses\/Unauthenticated"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"429":{"$ref":"#\/components\/responses\/RateLimit"},"404":{"$ref":"#\/components\/responses\/NotFound"}}}},"\/steam-gifts\/orders\/{uid}\/recipient":{"post":{"summary":"Change the recipient (action change_recipient, or status awaiting_recipient \u2014 the latter re-creates the order and charges again)","tags":["Steam Gifts"],"parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application\/json":{"schema":{"type":"object","required":["recipient"],"properties":{"recipient":{"type":"string"},"accept_price":{"type":"number","description":"Agree to the new price after 409 price_changed"}}}}}},"responses":{"200":{"description":"Success","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/SteamGiftOrder"}}}},"401":{"$ref":"#\/components\/responses\/Unauthenticated"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"429":{"$ref":"#\/components\/responses\/RateLimit"},"404":{"$ref":"#\/components\/responses\/NotFound"},"409":{"description":"402 insufficient_balance | 409 price_changed, action_not_allowed, order_closed, in_progress"}}}},"\/steam-gifts\/orders\/{uid}\/quick-link":{"post":{"summary":"Send a fresh s.team\/p invite link (action send_quick_link \/ status needs_quick_invite; same order, no charge)","tags":["Steam Gifts"],"parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application\/json":{"schema":{"type":"object","required":["link"],"properties":{"link":{"type":"string"}}}}}},"responses":{"200":{"description":"Success","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/SteamGiftOrder"}}}},"401":{"$ref":"#\/components\/responses\/Unauthenticated"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"429":{"$ref":"#\/components\/responses\/RateLimit"},"404":{"$ref":"#\/components\/responses\/NotFound"},"409":{"description":"409 action_not_allowed, order_closed, in_progress"}}}},"\/steam-gifts\/orders\/{uid}\/friend-accepted":{"post":{"summary":"The buyer accepted the friend request after the supplier stopped waiting (action friend_accepted; same order, no charge)","tags":["Steam Gifts"],"parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application\/json":{"schema":{"type":"object","properties":{"confirmed_by":{"type":"string","maxLength":60}}}}}},"responses":{"200":{"description":"Success","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/SteamGiftOrder"}}}},"401":{"$ref":"#\/components\/responses\/Unauthenticated"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"429":{"$ref":"#\/components\/responses\/RateLimit"},"404":{"$ref":"#\/components\/responses\/NotFound"},"409":{"description":"409 action_not_allowed, order_closed, in_progress"}}}},"\/steam-gifts\/orders\/{uid}\/base-game":{"post":{"summary":"The buyer owns the base game (action confirm_base_game; same order, no charge)","tags":["Steam Gifts"],"parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application\/json":{"schema":{"type":"object","properties":{"confirmed_by":{"type":"string","maxLength":60}}}}}},"responses":{"200":{"description":"Success","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/SteamGiftOrder"}}}},"401":{"$ref":"#\/components\/responses\/Unauthenticated"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"429":{"$ref":"#\/components\/responses\/RateLimit"},"404":{"$ref":"#\/components\/responses\/NotFound"},"409":{"description":"409 action_not_allowed, base_game_recheck_too_soon, confirmation_too_late, order_closed"}}}},"\/steam-gifts\/orders\/{uid}\/ownership-confirmed":{"post":{"summary":"The buyer does NOT own the game (action confirm_ownership; same order, no charge)","tags":["Steam Gifts"],"parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application\/json":{"schema":{"type":"object","properties":{"confirmed_by":{"type":"string","maxLength":60}}}}}},"responses":{"200":{"description":"Success","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/SteamGiftOrder"}}}},"401":{"$ref":"#\/components\/responses\/Unauthenticated"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"429":{"$ref":"#\/components\/responses\/RateLimit"},"404":{"$ref":"#\/components\/responses\/NotFound"},"409":{"description":"409 ownership_refused_by_steam (final), action_not_allowed, confirmation_too_late, order_closed"}}}},"\/steam-gifts\/orders\/{uid}\/region-changed":{"post":{"summary":"The buyer switched the Steam account country to the order region (action confirm_region_change; same order, no charge)","tags":["Steam Gifts"],"parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application\/json":{"schema":{"type":"object","properties":{"region":{"type":"string","minLength":2,"maxLength":2,"description":"Optional; must equal the order region (otherwise 422 region_mismatch)"}}}}}},"responses":{"200":{"description":"Success","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/SteamGiftOrder"}}}},"401":{"$ref":"#\/components\/responses\/Unauthenticated"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"429":{"$ref":"#\/components\/responses\/RateLimit"},"404":{"$ref":"#\/components\/responses\/NotFound"},"409":{"description":"409 action_not_allowed, confirmation_too_late, order_closed | 422 region_mismatch"}}}},"\/steam-gifts\/orders\/{uid}\/cancel":{"post":{"summary":"Cancel the order and refund it","tags":["Steam Gifts"],"description":"200 \u2014 cancelled, refunded = amount returned. 202 \u2014 the supplier is delivering right now: we retry the cancel every minute for up to an hour (cancel_state=pending), the refund comes with the steamgifts.order.failed webhook. 409 order_cancel_too_late \u2014 money at the supplier has already moved, wait for delivered or failed (cancel_state=awaiting_supplier).","parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application\/json":{"schema":{"type":"object","properties":{"reason":{"type":"string","maxLength":200}}}}}},"responses":{"200":{"description":"Success","content":{"application\/json":{"schema":{"allOf":[{"$ref":"#\/components\/schemas\/SteamGiftOrder"},{"type":"object","properties":{"refunded":{"type":"number"}}}]}}}},"401":{"$ref":"#\/components\/responses\/Unauthenticated"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"429":{"$ref":"#\/components\/responses\/RateLimit"},"202":{"description":"Cancel accepted, not done yet (cancel_state=pending, Retry-After: 60)"},"404":{"$ref":"#\/components\/responses\/NotFound"},"409":{"description":"order_cancel_too_late | already_delivered | gift_already_sent | order_closed | supplier_order_not_found | in_progress"},"503":{"description":"supplier_unavailable \u2014 nothing was changed, retry later"}}}},"\/steam-gifts\/orders\/{uid}\/deliver-anyway":{"post":{"summary":"Deliver an on_hold order at a loss (charges now)","tags":["Steam Gifts"],"parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application\/json":{"schema":{"type":"object","properties":{"accept_price":{"type":"number","description":"Agree to the new price after 409 price_changed"}}}}}},"responses":{"200":{"description":"Success","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/SteamGiftOrder"}}}},"401":{"$ref":"#\/components\/responses\/Unauthenticated"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"429":{"$ref":"#\/components\/responses\/RateLimit"},"404":{"$ref":"#\/components\/responses\/NotFound"},"409":{"description":"402 insufficient_balance | 409 not_on_hold, price_changed"}}}}}}