Skip to main content

Batch Operations

Perform operations on multiple offers at once. This is more efficient than processing offers individually.

Batch Activate Offers​

Activate multiple draft offers at once, making them visible to buyers.

Endpoint​

PUT /v1/offers/activate

Request Body​

FieldTypeRequiredDescription
offers_idsarrayYesArray of offer UUIDs to activate

Request Example​

curl -X PUT "https://sellerapi.ggchest.com/v1/offers/activate" \
-H "X-API-KEY: your-api-key-here" \
-H "Content-Type: application/json" \
-d '{
"offers_ids": [
"cc0e8400-e29b-41d4-a716-446655440030",
"cc0e8400-e29b-41d4-a716-446655440040",
"cc0e8400-e29b-41d4-a716-446655440050"
]
}'

Response​

Returns 200 OK on success with no response body.

Batch Deactivate Offers​

Deactivate multiple active offers at once, making them draft and hiding them from buyers.

Endpoint​

PUT /v1/offers/draft

Request Body​

FieldTypeRequiredDescription
offers_idsarrayYesArray of offer UUIDs to deactivate

Request Example​

curl -X PUT "https://sellerapi.ggchest.com/v1/offers/draft" \
-H "X-API-KEY: your-api-key-here" \
-H "Content-Type: application/json" \
-d '{
"offers_ids": [
"cc0e8400-e29b-41d4-a716-446655440030",
"cc0e8400-e29b-41d4-a716-446655440040"
]
}'

Response​

Returns 200 OK on success with no response body.

Complete Example: Activate All Draft Offers for a Game​

async function activateAllDraftOffersForGame(gameId) {
// Get all draft offers for the game
const response = await fetch(
`https://sellerapi.ggchest.com/v1/offers?filters[status]=draft&filters[game_id]=${gameId}`,
{
headers: {
'X-API-KEY': 'your-api-key-here'
}
}
);
const data = await response.json();

// Extract offer IDs
const offerIds = data.items.map(offer => offer.id);

if (offerIds.length === 0) {
console.log('No draft offers to activate');
return;
}

// Activate all draft offers
const activateResponse = await fetch(
'https://sellerapi.ggchest.com/v1/offers/activate',
{
method: 'PUT',
headers: {
'X-API-KEY': 'your-api-key-here',
'Content-Type': 'application/json'
},
body: JSON.stringify({
offers_ids: offerIds
})
}
);

if (!activateResponse.ok) {
throw new Error('Failed to activate offers');
}

console.log(`Activated ${offerIds.length} offers`);
}

Error Responses​

400 Bad Request​

Returned when the request is invalid (e.g., empty offers_ids array).

{
"message": "Bad request",
"errors": [
{
"property": "offers_ids",
"message": "At least one offer ID is required"
}
]
}

403 Forbidden​

Returned when you don't have permission to perform the operation.

{
"message": "Forbidden"
}

422 Unprocessable Entity​

Returned when the request is valid but cannot be processed (e.g., some offer IDs are invalid).

{
"message": "Unprocessable Entity",
"errors": [
{
"property": "offers_ids",
"message": "Some offers could not be processed"
}
]
}

Notes​

  • Batch operations are more efficient than processing offers individually
  • All offer IDs in the request must be valid UUIDs
  • Offers that are already in the target state will be skipped
  • Deleted offers cannot be activated or deactivated
  • Use batch operations when you need to manage multiple offers at once