> ## Documentation Index
> Fetch the complete documentation index at: https://docs.therootnetwork.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Marketplace

## Calls

### acceptOffer

Accepts an offer on a token Caller must be token owner

**Namespace**

```
api.tx.marketplace.acceptOffer
```

**Type**

```
function acceptOffer(
  offer_id: u64
)
```

### auctionNft

Auction a bundle of tokens on the open market to the highest bidder

* Tokens must be from the same collection

* Tokens with individual royalties schedules cannot be sold in bundles

Caller must be the token owner

* `payment_asset` fungible asset Id to receive payment with

* `reserve_price` winning bid must be over this threshold

* `duration` length of the auction (in blocks), uses default duration if unspecified

**Namespace**

```
api.tx.marketplace.auctionNft
```

**Type**

```
function auctionNft(
  collection_id: u32,
  serial_numbers: Vec<u32>,
  payment_asset: u32,
  reserve_price: u128,
  duration: Option<u32>,
  marketplace_id: Option<u32>
)
```

### bid

Place a bid on an open auction

* `amount` to bid (in the seller's requested payment asset)

**Namespace**

```
api.tx.marketplace.bid
```

**Type**

```
function bid(
  listing_id: u128,
  amount: u128
)
```

### buy

Buy a token listing for its specified price

**Namespace**

```
api.tx.marketplace.buy
```

**Type**

```
function buy(
  listing_id: u128
)
```

### cancelOffer

Cancels an offer on a token Caller must be the offer buyer

**Namespace**

```
api.tx.marketplace.cancelOffer
```

**Type**

```
function cancelOffer(
  offer_id: u64
)
```

### cancelSale

Close a sale or auction returning tokens Requires no successful bids have been made for an auction. Caller must be the listed seller

**Namespace**

```
api.tx.marketplace.cancelSale
```

**Type**

```
function cancelSale(
  listing_id: u128
)
```

### makeSimpleOffer

Create an offer on a token Locks funds until offer is accepted, rejected or cancelled An offer can't be made on a token currently in an auction (This follows the behaviour of Opensea and forces the buyer to bid rather than create an offer)

**Namespace**

```
api.tx.marketplace.makeSimpleOffer
```

**Type**

```
function makeSimpleOffer(
  token_id: (u32,u32),
  amount: u128,
  asset_id: u32,
  marketplace_id: Option<u32>
)
```

### registerMarketplace

Flag an account as a marketplace

`marketplace_account` - if specified, this account will be registered `entitlement` - Permill, percentage of sales to go to the marketplace If no marketplace is specified the caller will be registered

**Namespace**

```
api.tx.marketplace.registerMarketplace
```

**Type**

```
function registerMarketplace(
  marketplace_account: Option<SeedPrimitivesSignatureAccountId20>,
  entitlement: Permill
)
```

### sellNft

Sell a bundle of tokens at a fixed price

* Tokens must be from the same collection

* Tokens with individual royalties schedules cannot be sold with this method

`buyer` optionally, the account to receive the NFT. If unspecified, then any account may purchase `asset_id` fungible asset Id to receive as payment for the NFT `fixed_price` ask price `duration` listing duration time in blocks from now Caller must be the token owner

**Namespace**

```
api.tx.marketplace.sellNft
```

**Type**

```
function sellNft(
  collection_id: u32,
  serial_numbers: Vec<u32>,
  buyer: Option<SeedPrimitivesSignatureAccountId20>,
  payment_asset: u32,
  fixed_price: u128,
  duration: Option<u32>,
  marketplace_id: Option<u32>
)
```

### setFeeTo

Set the `FeeTo` account This operation requires root access

**Namespace**

```
api.tx.marketplace.setFeeTo
```

**Type**

```
function setFeeTo(
  fee_to: Option<SeedPrimitivesSignatureAccountId20>
)
```

### updateFixedPrice

Update fixed price for a single token sale

`listing_id` id of the fixed price listing `new_price` new fixed price Caller must be the token owner

**Namespace**

```
api.tx.marketplace.updateFixedPrice
```

**Type**

```
function updateFixedPrice(
  listing_id: u128,
  new_price: u128
)
```

## Storage

### feeTo

The pallet id for the tx fee pot

**Namespace**

```
api.query.marketplace.feeTo
```

**Type**

```
function feeTo(

): Option<SeedPrimitivesSignatureAccountId20>
```

### listingEndSchedule

Block numbers where listings will close. Value is `true` if at block number `listing_id` is scheduled to close.

**Namespace**

```
api.query.marketplace.listingEndSchedule
```

**Type**

```
function listingEndSchedule(
  u32,
  u128
): Option<bool>
```

### listings

NFT sale/auction listings keyed by listing id

**Namespace**

```
api.query.marketplace.listings
```

**Type**

```
function listings(
  u128
): Option<PalletMarketplaceListing>
```

### listingWinningBid

Winning bids on open listings.

**Namespace**

```
api.query.marketplace.listingWinningBid
```

**Type**

```
function listingWinningBid(
  u128
): Option<(SeedPrimitivesSignatureAccountId20,u128)>
```

### nextListingId

The next available listing Id

**Namespace**

```
api.query.marketplace.nextListingId
```

**Type**

```
function nextListingId(

): u128
```

### nextMarketplaceId

The next available marketplace id

**Namespace**

```
api.query.marketplace.nextMarketplaceId
```

**Type**

```
function nextMarketplaceId(

): u32
```

### nextOfferId

The next available offer\_id

**Namespace**

```
api.query.marketplace.nextOfferId
```

**Type**

```
function nextOfferId(

): u64
```

### offers

Map from offer\_id to the information related to the offer

**Namespace**

```
api.query.marketplace.offers
```

**Type**

```
function offers(
  u64
): Option<PalletMarketplaceOfferType>
```

### openCollectionListings

Map from collection to any open listings

**Namespace**

```
api.query.marketplace.openCollectionListings
```

**Type**

```
function openCollectionListings(
  u32,
  u128
): Option<bool>
```

### registeredMarketplaces

Map from marketplace account\_id to royalties schedule

**Namespace**

```
api.query.marketplace.registeredMarketplaces
```

**Type**

```
function registeredMarketplaces(
  u32
): Option<PalletMarketplaceMarketplace>
```

### tokenOffers

Maps from token\_id to a vector of offer\_ids on that token

**Namespace**

```
api.query.marketplace.tokenOffers
```

**Type**

```
function tokenOffers(
  (u32,u32)
): Option<Vec<u64>>
```

## Events

### AuctionClose

An auction has closed without selling

**Namespace**

```
api.events.marketplace.AuctionClose
```

**Type**

```
type AuctionClose = {
  collection_id: u32,
  listing_id: u128,
  reason: PalletMarketplaceAuctionClosureReason
}
```

### AuctionOpen

An auction has opened

**Namespace**

```
api.events.marketplace.AuctionOpen
```

**Type**

```
type AuctionOpen = {
  collection_id: u32,
  serial_numbers: Vec<u32>,
  payment_asset: u32,
  reserve_price: u128,
  listing_id: u128,
  marketplace_id: Option<u32>,
  seller: SeedPrimitivesSignatureAccountId20
}
```

### AuctionSold

An auction has sold

**Namespace**

```
api.events.marketplace.AuctionSold
```

**Type**

```
type AuctionSold = {
  collection_id: u32,
  listing_id: u128,
  payment_asset: u32,
  hammer_price: u128,
  winner: SeedPrimitivesSignatureAccountId20
}
```

### Bid

A new highest bid was placed

**Namespace**

```
api.events.marketplace.Bid
```

**Type**

```
type Bid = {
  collection_id: u32,
  serial_numbers: Vec<u32>,
  listing_id: u128,
  amount: u128,
  bidder: SeedPrimitivesSignatureAccountId20
}
```

### FeeToSet

The network fee receiver address has been updated

**Namespace**

```
api.events.marketplace.FeeToSet
```

**Type**

```
type FeeToSet = {
  account: Option<SeedPrimitivesSignatureAccountId20>
}
```

### FixedPriceSaleClose

A fixed price sale has closed without selling

**Namespace**

```
api.events.marketplace.FixedPriceSaleClose
```

**Type**

```
type FixedPriceSaleClose = {
  collection_id: u32,
  serial_numbers: Vec<u32>,
  listing_id: u128,
  reason: PalletMarketplaceFixedPriceClosureReason
}
```

### FixedPriceSaleComplete

A fixed price sale has completed

**Namespace**

```
api.events.marketplace.FixedPriceSaleComplete
```

**Type**

```
type FixedPriceSaleComplete = {
  collection_id: u32,
  serial_numbers: Vec<u32>,
  listing_id: u128,
  price: u128,
  payment_asset: u32,
  buyer: SeedPrimitivesSignatureAccountId20,
  seller: SeedPrimitivesSignatureAccountId20
}
```

### FixedPriceSaleList

A fixed price sale has been listed

**Namespace**

```
api.events.marketplace.FixedPriceSaleList
```

**Type**

```
type FixedPriceSaleList = {
  collection_id: u32,
  serial_numbers: Vec<u32>,
  listing_id: u128,
  marketplace_id: Option<u32>,
  price: u128,
  payment_asset: u32,
  seller: SeedPrimitivesSignatureAccountId20
}
```

### FixedPriceSalePriceUpdate

A fixed price sale has had its price updated

**Namespace**

```
api.events.marketplace.FixedPriceSalePriceUpdate
```

**Type**

```
type FixedPriceSalePriceUpdate = {
  collection_id: u32,
  serial_numbers: Vec<u32>,
  listing_id: u128,
  new_price: u128
}
```

### MarketplaceRegister

An account has been registered as a marketplace

**Namespace**

```
api.events.marketplace.MarketplaceRegister
```

**Type**

```
type MarketplaceRegister = {
  account: SeedPrimitivesSignatureAccountId20,
  entitlement: Permill,
  marketplace_id: u32
}
```

### Offer

An offer has been made on an NFT

**Namespace**

```
api.events.marketplace.Offer
```

**Type**

```
type Offer = {
  offer_id: u64,
  amount: u128,
  asset_id: u32,
  marketplace_id: Option<u32>,
  buyer: SeedPrimitivesSignatureAccountId20
}
```

### OfferAccept

An offer has been accepted

**Namespace**

```
api.events.marketplace.OfferAccept
```

**Type**

```
type OfferAccept = {
  offer_id: u64,
  token_id: (u32,u32),
  amount: u128,
  asset_id: u32
}
```

### OfferCancel

An offer has been cancelled

**Namespace**

```
api.events.marketplace.OfferCancel
```

**Type**

```
type OfferCancel = {
  offer_id: u64,
  token_id: (u32,u32)
}
```

## Errors

### BidTooLow

Auction bid was lower than reserve or current highest bid

**Namespace**

```
api.errors.marketplace.BidTooLow
```

### InvalidMetadataPath

The metadata path is invalid (non-utf8 or empty)

**Namespace**

```
api.errors.marketplace.InvalidMetadataPath
```

### InvalidOffer

No offer exists for the given OfferId

**Namespace**

```
api.errors.marketplace.InvalidOffer
```

### IsTokenOwner

The caller owns the token and can't make an offer

**Namespace**

```
api.errors.marketplace.IsTokenOwner
```

### MarketplaceNotRegistered

The account\_id hasn't been registered as a marketplace

**Namespace**

```
api.errors.marketplace.MarketplaceNotRegistered
```

### MaxOffersReached

The maximum number of offers on this token has been reached

**Namespace**

```
api.errors.marketplace.MaxOffersReached
```

### MixedBundleSale

Selling tokens from different collection is not allowed

**Namespace**

```
api.errors.marketplace.MixedBundleSale
```

### NoAvailableIds

No more Ids are available, they've been exhausted

**Namespace**

```
api.errors.marketplace.NoAvailableIds
```

### NoCollectionFound

The collection does not exist

**Namespace**

```
api.errors.marketplace.NoCollectionFound
```

### NotBuyer

The caller is not the specified buyer

**Namespace**

```
api.errors.marketplace.NotBuyer
```

### NotCollectionOwner

Origin is not the collection owner and is not permitted to perform the operation

**Namespace**

```
api.errors.marketplace.NotCollectionOwner
```

### NotForAuction

The token is not listed for auction sale

**Namespace**

```
api.errors.marketplace.NotForAuction
```

### NotForFixedPriceSale

The token is not listed for fixed price sale

**Namespace**

```
api.errors.marketplace.NotForFixedPriceSale
```

### NoToken

The token does not exist

**Namespace**

```
api.errors.marketplace.NoToken
```

### NotSeller

The caller is not the seller of the NFT

**Namespace**

```
api.errors.marketplace.NotSeller
```

### NotTokenOwner

Origin does not own the NFT

**Namespace**

```
api.errors.marketplace.NotTokenOwner
```

### RoyaltiesInvalid

Total royalties would exceed 100% of sale or an empty vec is supplied

**Namespace**

```
api.errors.marketplace.RoyaltiesInvalid
```

### TokenLocked

Cannot operate on a listed NFT

**Namespace**

```
api.errors.marketplace.TokenLocked
```

### TokenNotListed

The token is not listed for sale

**Namespace**

```
api.errors.marketplace.TokenNotListed
```

### TokenOnAuction

Cannot make an offer on a token up for auction

**Namespace**

```
api.errors.marketplace.TokenOnAuction
```

### ZeroOffer

Offer amount needs to be greater than 0

**Namespace**

```
api.errors.marketplace.ZeroOffer
```

## Constants

### defaultFeeTo

The default account which collects network fees from marketplace sales

**Namespace**

```
api.consts.marketplace.defaultFeeTo
```

**Type**

```
type defaultFeeTo = Option<FrameSupportPalletId>
```

### defaultListingDuration

Default auction / sale length in blocks

**Namespace**

```
api.consts.marketplace.defaultListingDuration
```

**Type**

```
type defaultListingDuration = u32
```

### palletId

This pallet's Id, used for deriving a sovereign account ID

**Namespace**

```
api.consts.marketplace.palletId
```

**Type**

```
type palletId = FrameSupportPalletId
```
