Bazaar Service API (v1)

Download OpenAPI specification:

Order-based player-to-player marketplace with anti-RMT protections. Supports sell orders (listing equipment for sale) and buy orders (expressing demand for items).

Bazaar

List Buy Orders

Lists buy orders showing buyer demand for items.

query Parameters
filter
any

ANTLR-based dynamic filter string. Example: item_id = '<uuid>'

orderBy
any

Field to sort results by.

page
any

Page number for pagination (1-indexed). Defaults to 1 if omitted or less than 1.

limit
any

Maximum number of items to return per page. Range: [1, 100]. Defaults to 50 if omitted.

Responses

Create Buy Order

Creates a buy order expressing demand for an item at a specified price.

Responses

Cancel Buy Order

Cancels a buy order and returns escrowed currency to the buyer.

path Parameters
id
required
any

ID of the buy order to cancel. Must be owned by the caller.

Responses

Fulfill Buy Order

Sells equipment into an existing buy order. Supports batch fulfillment with partial results.

path Parameters
id
required
any

ID of the buy order to fulfill.

Responses

List Price History

Returns historical sale prices for bazaar items, limited to the last 2 months.

query Parameters
filter
any

ANTLR-based dynamic filter string. Example: item_id = '<uuid>'

orderBy
any

ANTLR-based dynamic ordering string. Example: sold_time DESC

page
any

1-indexed page number. Defaults to 1.

limit
any

Max items per page. Server defaults to 1000 via pagination.GetPagination. The 2-month view window naturally caps the total result set.

itemId
any

Convenience filter: if set, equivalent to adding item_id = '<value>' to the filter. Format: UUID v4.

Responses

List Sell Orders

Lists available sell orders showing only the cheapest listing per item type.

query Parameters
filter
any

Examples:

  • "item.slot = 'ITEM_SLOT_HELMET'" (replaces old category parameter)
orderBy
any

Field to sort results by.

page
any

Page number for pagination (1-indexed). Defaults to 1 if omitted or less than 1.

limit
any

Maximum number of items to return per page. Range: [1, 100]. Defaults to 50 if omitted.

Responses

Create Sell Order

Lists owned equipment for sale on the bazaar.

Responses

Cancel Sell Order

Cancels a sell order and returns the equipment to inventory.

path Parameters
id
required
any

ID of the sell order to cancel. Must be owned by the caller.

Responses

Purchase Sell Order

Purchases equipment from the cheapest available sell order(s). Supports batch purchasing with partial fulfillment.

path Parameters
id
required
any

ID of the sell order to purchase.

Responses

Equipments

List Equipments

List Equipments owned by a user. Supports filtering by equipped status.

query Parameters
filter
any

CEL filter expression for querying equipment. Supported fields: is_equipped, count, item.slot, item.rarity, item.max_stack_count. Example: is_equipped == true or item.rarity == LEGENDARY If omitted, returns all equipment for the caller.

orderBy
any

Field to sort results by. Format: field_name [asc|desc]. Example: item.rarity desc. Supported fields: item.rarity, count, item.max_stack_count. Defaults to creation time descending if omitted.

page
any

Page number for pagination (1-indexed). Defaults to 1 if omitted or less than 1.

limit
any

Maximum number of equipment items to return per page. Range: [1, 100]. Defaults to 20 if omitted.

Responses

Create an Equipment

Creates a new Equipment for a user.

query Parameters
id
required
any

ID of the item template to create equipment from. Must reference an existing [Item][item.v1.messages.item.Item].

Responses

Update an Equipment

Updates an Equipment. Use field mask to specify updatable fields (e.g., is_equipped).

path Parameters
equipment.id
required
any

Unique identifier for this equipment instance. Format: UUID v4. Assigned by the system upon creation.

Responses

Delete an Equipment

Deletes an Equipment by its ID.

path Parameters
id
required
any

Unique identifier of the equipment to delete.

Responses

Get an Equipment

Retrieve Equipment details by its ID.

path Parameters
id
required
any

Unique identifier of the equipment to retrieve.

Responses

Split Stack

Splits a stack of items into two separate stacks by removing a specified quantity.

path Parameters
id
required
any

Unique identifier of the equipment stack to split.

Responses

Craft Equipment

Crafts a new equipment item by consuming recipe ingredients from the player's inventory.

Responses

Disassemble Equipment

Disassembles an equipment item into its constituent ingredients, with a loss chance per component.

Responses

Merge Stacks

Merges two stacks of the same item type into one, respecting max_stack_count.

Responses

Stream Equipments

Streams equipment updates for a given user. Emits updates when equipment is equipped or unequipped in real-time.

query Parameters
id
required
any

User ID to stream equipment updates for. Must match the caller's JWT user_id claim.

Responses

Items

List Items

Lists all available Items in the system.

query Parameters
filter
any

CEL filter expression for querying items. Supported fields: id, rarity, slot, is_default, unity_id, sell_price, buy_price, craft_price, power, max_stack_count, names, descriptions. Example: rarity == LEGENDARY or slot == TWO_HANDED If omitted, returns all items.

orderBy
any

Field to sort results by. Format: field_name [asc|desc]. Example: rarity desc. Supported fields: rarity, unity_id, sell_price, buy_price, craft_price, power, max_stack_count, names, descriptions, slot, is_default, id. Defaults to unity_id asc if omitted.

page
any

Page number for pagination (1-indexed). Defaults to 1 if omitted or less than 1.

limit
any

Maximum number of items to return per page. Range: [1, 100]. Defaults to 20 if omitted.

Responses

Get an Item

Retrieves Item details by item ID.

path Parameters
id
required
any

Unique identifier of the item to retrieve.

Responses

Lobbies

List Lobbies

Lists all Lobbies.

query Parameters
filter
any

CEL filter expression for querying lobbies. Supported fields: state, game.game_type, average_item_power. Example: state == STATE_PREPARING If omitted, returns all lobbies.

orderBy
any

Field to sort results by. Format: field_name [asc|desc]. Supported fields: average_item_power. Defaults to creation time descending if omitted.

page
any

Page number for pagination (1-indexed). Defaults to 1 if omitted or less than 1.

limit
any

Maximum number of lobbies to return per page. Range: [1, 100]. Defaults to 20 if omitted.

Responses

Confirm game start

Confirms the start of a game in a Lobby.

path Parameters
id
required
any

Unique identifier of the game session. Provided to the game server during allocation.

Responses

Notify game end

Notifies the server about the end of a game in a Lobby.

path Parameters
id
required
any

Unique identifier of the game session that ended.

Responses

Enter Lobby queue

Enters the matchmaking queue for a specific Lobby.

path Parameters
id
required
any

Unique identifier of the lobby entering the queue. The caller must be the owner of this lobby.

Responses

Exit Lobby queue

Exits the matchmaking queue for a specific Lobby.

path Parameters
id
required
any

Unique identifier of the lobby exiting the queue. The caller must be the owner of this lobby.

Responses

Kick a Player

Kicks a player from the Lobby. Only the lobby owner can kick players.

path Parameters
id
required
any

Unique identifier of the lobby.

Responses

Update a Lobby

Updates an existing Lobby. Use field mask to specify updatable fields (e.g., owner_user_id).

path Parameters
lobby.id
required
any

Unique identifier for the lobby. Format: UUID v4. Assigned by the system upon creation.

Responses

Join a Lobby

Joins an existing Lobby using a lobby code.

Responses

Leave a Lobby

Leaves an existing Lobby.

Responses

Stream Lobby updates

Streams real-time updates for a specific Lobby.

query Parameters
id
required
any

Unique identifier of the lobby to stream updates for. The stream delivers updates only for this specific lobby.

Responses

LobbyInvites

List LobbyInvites

Lists all LobbyInvites.

query Parameters
filter
any

CEL filter expression for querying invitations. Supported fields: invite_sender_user_id, lobby_code. If omitted, returns all pending invitations for the caller.

orderBy
any

Field to sort results by. Format: field_name [asc|desc]. Example: create_time desc. Defaults to create_time desc if omitted.

page
any

Page number for pagination (1-indexed). Defaults to 1 if omitted or less than 1.

limit
any

Maximum number of invitations to return per page. Range: [1, 100]. Defaults to 20 if omitted.

Responses

Create a LobbyInvite

Creates a new LobbyInvite for a user.

Responses

Accept a LobbyInvite

Accepts an existing LobbyInvite using the invite code.

Responses

Decline a LobbyInvite

Declines a LobbyInvite.

Responses

Stream LobbyInvites

Streams lobby invite updates for a given user. Emits when a lobby invite is created or updated in real-time.

query Parameters
id
required
any

User ID to stream invitation updates for. Must match the caller's JWT user_id claim. Receives updates when invitations are sent to or from this user.

Responses

Shop

List Shop Items

Lists items available for purchase in the NPC shop with filtering and pagination.

query Parameters
filter
any

CEL filter expression for querying shop items. Supported fields: id, user_id, item.id, item.is_default, item.names, item.descriptions, item.slot, item.rarity, item.unity_id, item.icon_image_path, item.skill_ids, item.recipe_items_unity_ids, item.sell_price, item.buy_price.

Note: For user requests, results are automatically scoped to the authenticated user's shop. For game server requests, all users' shop items are returned and user_id can be used as a filter.

Examples:

  • "item.slot = 'ITEM_SLOT_RIGHT_HAND'"
  • "item.buy_price <= 1000 AND item.rarity = 'ITEM_RARITY_EPIC'"
orderBy
any

Field to sort results by. Supported fields: id, category, item.slot, item.rarity, item.names, item.unity_id, item.icon_image_path, item.skill_ids, item.recipe_items_unity_ids, item.sell_price, item.buy_price. Format: field_name [asc|desc]. Default: id asc. Example: "item.buy_price desc, item.rarity asc"

page
any

Page number for pagination (1-indexed). Defaults to 1 if omitted or less than 1.

limit
any

Maximum number of items to return per page. Range: [1, 100]. Defaults to 50 if omitted.

Responses

Purchase Item

Purchases an item from the shop, deducting Arc and creating equipment.

Responses

Sell Equipment

Sells equipment to the shop.

Responses

Users

List Users

List Users with optional filters and pagination.

query Parameters
filter
any

CEL filter expression for querying users. Supported fields: name, is_online, average_item_power. Example: is_online == true && average_item_power > 50.0 If omitted, returns all users.

orderBy
any

Field to sort results by. Format: field_name [asc|desc]. Example: name desc. Supported fields: name, create_time, average_item_power. Defaults to create_time desc if omitted.

page
any

Page number for pagination (1-indexed). Defaults to 1 if omitted or less than 1.

limit
any

Maximum number of users to return per page. Range: [1, 100]. Defaults to 20 if omitted.

Responses

Create a User

Creates a new User in the system.

query Parameters
password
required
any

Password for the new account. Minimum 8 characters, must include at least one letter and one number. Stored as a bcrypt hash - never returned in responses.

validateOnly
any

If true, validates the request without creating the user. Useful for checking email availability before form submission. Returns the user that would be created but does not persist.

Responses

Delete a User

Delete a specific User by their unique ID.

path Parameters
id
required
any

Unique identifier of the user to delete. Must match the caller's JWT user_id claim.

Responses

Get a User

Retrieve the details of a specific User by their unique ID.

path Parameters
id
required
any

Unique identifier of the user to retrieve. Format: UUID v4.

Responses

Ping

Simple ping to indicate that a User is online.

path Parameters
id
required
any

Unique identifier of the user sending the ping. Must match the caller's JWT user_id claim.

Responses

Reset a User's password

Request a password reset for a specific User.

path Parameters
id
required
any

Unique identifier of the user requesting password reset. Must match the caller's JWT user_id claim.

Responses

Update a User

Update the details of an existing User with update mask and validate-only option.

path Parameters
user.id
required
any

Unique identifier for the user. Format: UUID v4 (e.g., 550e8400-e29b-41d4-a716-446655440000). Assigned by the system upon creation.

query Parameters
validateOnly
any

If true, validates the update without applying changes. Returns the user as it would appear after the update.

Responses

Authenticate a User

Authenticate a User by their credentials (e.g., email/password).

Responses

Stream User updates

Server-side streaming RPC for real-time User updates.

query Parameters
id
any

Optional user ID to filter updates. If provided, only updates for this specific user are streamed. If omitted, updates for all users are streamed.

Responses