No breaking changes. The existing is_listed field is unchanged.
{
"is_listed": false,
"listing_needs_approval": true,
...
}is_listed |
listing_needs_approval |
What to show |
|---|---|---|
true |
false |
Normal — listed and buyable |
false |
true |
Listed on-chain but approval was revoked — show a prompt like "Your NFT is still listed but the marketplace can't transfer it. Please re-approve to activate your listing." |
false |
false |
Not listed at all |
Once the user calls approve(marketplace, tokenId) or setApprovalForAll(marketplace, true), the backend automatically detects the on-chain event and reactivates the listing:
is_listed→truelisting_needs_approval→false
No need to call addListing() again on the contract — the on-chain listing still exists, only the approval was missing.
You can also query APPROVAL_REVOKED listings directly:
GET /marketplace/listings?status=APPROVAL_REVOKED&seller=0x...