openapi: 3.0.4 info: title: DMarket trading Account API description: 'Welcome to the DMarket Trading API section. Our JSON-based API enables you to manage your DMarket inventory through the methods featured below. In order to use the API, please generate your personal API keys in the account settings. Request signature instructions A valid HTTP request to the trading API must include 3 request headers: 1) X-Api-Key: public key (must be a hex string in lowercase) To get you your own public key, use (details : ) 2) X-Sign-Date: timestamp or current time Example: 1605619994. Must not be older than 2 minutes from the request time. 3) X-Request-Sign: signature The Ed25519 signature scheme is used for signing requests and proving items’ origin and ownership through public-private key pairs. Private and public keys diversification is aimed to provide secure back-to-back communication and the ability to rotate keys in case of security breaches on any side of the integration. To make a signature, take the following steps: 1) Build non-signed string formula (HTTP Method) + (Route path + HTTP query params) + (body string) + (timestamp) ). Example: POST/get-item?Amount=%220.25%22&Limit=%22100%22&Offset=%22150%22&Order=%22desc%22&1605619994) 2) After you’ve created a non-signed string with a default concatenation method, sign it with Ed25519 (NaCl "sign" is Ed25519) using your secret key. 3) Hex-encode the 64-byte Ed25519 signature 4) Add your signature string to HTTP request headers X-Request-Sign (dmar ed25519 signature) You can check out examples on . DMarket uses rate limiting to control the rate of API requests. Please read FAQ for details .' version: v2.0.0 x-logo: url: logo.svg backgroundColor: '#FFFFFF' altText: DMarket logo servers: - url: https://api.dmarket.com security: - ApiKey: [] SignDate: [] RequestSign: [] tags: - name: Account description: User profile and balance. paths: /account/v1/user: get: tags: - Account summary: Get user profile description: Getting general user profile information. operationId: getUserByTokenHandler responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/representation.UserAccountResponse' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/representation.UserAccountResponse' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/api.ErrorRepresentation' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/api.ErrorRepresentation' default: description: OK content: application/json: schema: $ref: '#/components/schemas/representation.UserAccountResponse' x-codeSamples: - lang: Shell label: cURL source: "# Sign the request and set the three auth headers — reference clients: https://github.com/dmarket/dm-trading-tools\ncurl 'https://api.dmarket.com/account/v1/user' \\\n -H \"X-Api-Key: $DMARKET_PUBLIC_KEY\" \\\n -H \"X-Sign-Date: $TIMESTAMP\" \\\n -H \"X-Request-Sign: dmar ed25519 $SIGNATURE\"" - lang: Python label: Python (dm-trading-tools) source: '# Full signing client: https://github.com/dmarket/dm-trading-tools from dmarket_client import DMarketClient client = DMarketClient(public_key="", secret_key="") result, err = client.call("GET", "/account/v1/user") print(result)' /account/v1/balance: get: tags: - Account summary: Get account balance description: Getting the current USD & DMC balance that is available for trading items / buying subscriptions. The response format is in coins (cents for USD, dimoshi for DMC). operationId: getUserBalance responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/representation.UserBalance' '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/api.ErrorRepresentation' '409': description: Conflict content: application/json: schema: $ref: '#/components/schemas/api.ErrorRepresentation' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/api.ErrorRepresentation' default: description: OK content: application/json: schema: $ref: '#/components/schemas/representation.UserBalance' x-codeSamples: - lang: Shell label: cURL source: "# Sign the request and set the three auth headers — reference clients: https://github.com/dmarket/dm-trading-tools\ncurl 'https://api.dmarket.com/account/v1/balance' \\\n -H \"X-Api-Key: $DMARKET_PUBLIC_KEY\" \\\n -H \"X-Sign-Date: $TIMESTAMP\" \\\n -H \"X-Request-Sign: dmar ed25519 $SIGNATURE\"" - lang: Python label: Python (dm-trading-tools) source: '# Full signing client: https://github.com/dmarket/dm-trading-tools from dmarket_client import DMarketClient client = DMarketClient(public_key="", secret_key="") result, err = client.call("GET", "/account/v1/balance") print(result)' components: schemas: representation.Feat: required: - enabled - name properties: enabled: type: boolean name: type: string enum: - P2P - P2PToggleVisible - P2POnboardingSeen api.ErrorRepresentation.validationDetails: {} representation.AgreementsInfo: required: - isConfirmed - updated properties: isConfirmed: type: boolean updated: type: integer format: int64 representation.Restriction: required: - expirationTime - name properties: expirationTime: type: integer format: int64 name: type: string enum: - P2POfferCreation representation.UserAccountSettingsResponse: required: - enabledDeviceConfirmation - isSubscribedToNewsletters - targetsLimit - tradingApiToken properties: enabledDeviceConfirmation: type: boolean isSubscribedToNewsletters: type: boolean targetsLimit: type: integer format: int32 tradingApiToken: type: string representation.SteamAccount: required: - apiKey - apiKeyStatus - icon - isProfilePrivate - level - steamId - tradeUrl - username properties: apiKey: type: string apiKeyStatus: type: string enum: - New - Verified - Invalid icon: type: string isProfilePrivate: type: boolean level: type: integer format: int64 steamId: type: string tradeUrl: type: string username: type: string representation.UserBalance: required: - dmc - dmcAvailableToWithdraw - usd - usdAvailableToWithdraw properties: dmc: type: string dmcAvailableToWithdraw: type: string usd: type: string usdAvailableToWithdraw: type: string representation.UserAccountResponse: required: - agreementsInfo - countryCode - countryCodeFromIP - email - features - ga_client_id - hasActiveSubscriptions - hasHistoryEvents - id - imageUrl - isEmailVerified - isPasswordSet - level - linkedGames - migrated - publicKey - regType - restrictions - settings - steamAccount - twitchAccount - username properties: agreementsInfo: $ref: '#/components/schemas/representation.AgreementsInfo' countryCode: type: string countryCodeFromIP: type: string email: type: string features: type: array items: $ref: '#/components/schemas/representation.Feat' ga_client_id: type: string hasActiveSubscriptions: type: boolean hasHistoryEvents: type: boolean id: type: string imageUrl: type: string isEmailVerified: type: boolean isPasswordSet: type: boolean level: type: integer format: int64 linkedGames: type: array items: $ref: '#/components/schemas/representation.LinkedGame' migrated: type: boolean publicKey: type: string regType: type: string enum: - steam - user restrictions: type: array items: $ref: '#/components/schemas/representation.Restriction' settings: $ref: '#/components/schemas/representation.UserAccountSettingsResponse' steamAccount: $ref: '#/components/schemas/representation.SteamAccount' twitchAccount: $ref: '#/components/schemas/representation.TwitchAccount' username: type: string api.ErrorRepresentation: required: - code - message properties: code: type: string message: type: string validationDetails: $ref: '#/components/schemas/api.ErrorRepresentation.validationDetails' representation.TwitchAccount: required: - icon - userId - username properties: icon: type: string userId: type: string username: type: string representation.LinkedGame: required: - gameId - gameUserId - username properties: gameId: type: string gameUserId: type: string username: type: string securitySchemes: ApiKey: type: apiKey in: header name: X-Api-Key description: Public API key (lowercase hex). Generate it in your DMarket account settings. See https://dmarket.com/faq#tradingAPI. SignDate: type: apiKey in: header name: X-Sign-Date description: Unix timestamp in seconds at signing time (e.g. 1605619994). Must be within 2 minutes of server time. RequestSign: type: apiKey in: header name: X-Request-Sign description: 'Ed25519 request signature prefixed with `dmar ed25519 `. Sign the concatenation of HTTP method + path (including query string) + body + X-Sign-Date with your secret key, then hex-encode the 64-byte Ed25519 signature. Reference clients (Go, Python, JS, PHP): https://github.com/dmarket/dm-trading-tools.' x-tagGroups: - name: Account tags: - Account - name: Trading tags: - Buy items - Sell Items - Sold user items - name: Inventory tags: - Inventory/items - name: Market data tags: - Aggregator