Events are ticketed events: dates, ticket tiers with prices, a venue and, optionally, a seating plan with seats to choose from. Venues and seating plans are set up once and reused across events.
Endpoints that need a token: the site owner creates it in their admin (Developers > API reference). AI assistants: how to ask the user for one.
27 endpoints in 5 parts: Event, Seating Plan, Ticket, Venue, AI builder.
Returns the site's events, newest first unless a sort is given.
Works without a token; with a user token the answer is personal.
Returns a list of Event objects.
curl -X GET 'http://www.allsport.bg/events?ionic=true'
[
{
"name": "Example",
"venue": "6543210fedcba98765432100",
"description": "Text shown on the site.",
"medias": [
{
"media": "6543210fedcba98765432100",
"gcs_url": "example-item",
"gcs_480_30_url": "example-item",
"gcs_720_30_url": "example-item",
"gcs_1080_30_url": "example-item",
"duration": 1,
"vimeo_uri": "example",
"vimeo_picture": "example",
"vimeo_url": "example-item",
"youtube_url": "example-item",
"youtube_picture": "example",
"thumbnail": "example",
"_id": "6543210fedcba98765432100"
}
],
"dates": [
{
"date": "2026-11-04T12:00:00.000Z",
"_id": "6543210fedcba98765432100",
"seating_plan": {
"id": "example",
"sections": "example"
}
}
],
"owner_id": "6543210fedcba98765432100",
"_id": "6543210fedcba98765432100",
"updatedAt": "2026-11-04T12:00:00.000Z",
"createdAt": "2026-11-04T12:00:00.000Z",
"tier_1": {
"name": "Example",
"price": 0
},
"tier_2": {
"name": "Example",
"price": 0
},
"tier_3": {
"name": "Example",
"price": 0
},
"tier_4": {
"name": "Example",
"price": 0
},
"tier_5": {
"name": "Example",
"price": 0
},
"tier_6": {
"name": "Example",
"price": 0
}
}
]Creates an event from the fields sent.
Needs the token of a signed-in user.
Returns the Event object.
curl -X POST 'http://www.allsport.bg/events?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
{
"name": "Example",
"venue": "6543210fedcba98765432100",
"description": "Text shown on the site.",
"medias": [
{
"media": "6543210fedcba98765432100",
"gcs_url": "example-item",
"gcs_480_30_url": "example-item",
"gcs_720_30_url": "example-item",
"gcs_1080_30_url": "example-item",
"duration": 1,
"vimeo_uri": "example",
"vimeo_picture": "example",
"vimeo_url": "example-item",
"youtube_url": "example-item",
"youtube_picture": "example",
"thumbnail": "example",
"_id": "6543210fedcba98765432100"
}
],
"dates": [
{
"date": "2026-11-04T12:00:00.000Z",
"_id": "6543210fedcba98765432100",
"seating_plan": {
"id": "example",
"sections": "example"
}
}
],
"owner_id": "6543210fedcba98765432100",
"_id": "6543210fedcba98765432100",
"updatedAt": "2026-11-04T12:00:00.000Z",
"createdAt": "2026-11-04T12:00:00.000Z",
"tier_1": {
"name": "Example",
"price": 0
},
"tier_2": {
"name": "Example",
"price": 0
},
"tier_3": {
"name": "Example",
"price": 0
},
"tier_4": {
"name": "Example",
"price": 0
},
"tier_5": {
"name": "Example",
"price": 0
},
"tier_6": {
"name": "Example",
"price": 0
}
}Returns one event, found by its ID.
Works without a token; with a user token the answer is personal.
The ID of the event.
Returns the Event object.
curl -X GET 'http://www.allsport.bg/events/{id}?ionic=true'{
"name": "Example",
"venue": "6543210fedcba98765432100",
"description": "Text shown on the site.",
"medias": [
{
"media": "6543210fedcba98765432100",
"gcs_url": "example-item",
"gcs_480_30_url": "example-item",
"gcs_720_30_url": "example-item",
"gcs_1080_30_url": "example-item",
"duration": 1,
"vimeo_uri": "example",
"vimeo_picture": "example",
"vimeo_url": "example-item",
"youtube_url": "example-item",
"youtube_picture": "example",
"thumbnail": "example",
"_id": "6543210fedcba98765432100"
}
],
"dates": [
{
"date": "2026-11-04T12:00:00.000Z",
"_id": "6543210fedcba98765432100",
"seating_plan": {
"id": "example",
"sections": "example"
}
}
],
"owner_id": "6543210fedcba98765432100",
"_id": "6543210fedcba98765432100",
"updatedAt": "2026-11-04T12:00:00.000Z",
"createdAt": "2026-11-04T12:00:00.000Z",
"tier_1": {
"name": "Example",
"price": 0
},
"tier_2": {
"name": "Example",
"price": 0
},
"tier_3": {
"name": "Example",
"price": 0
},
"tier_4": {
"name": "Example",
"price": 0
},
"tier_5": {
"name": "Example",
"price": 0
},
"tier_6": {
"name": "Example",
"price": 0
}
}Changes the fields sent; the others stay as they are.
Needs the token of a signed-in user.
The ID of the event.
Returns the Event object.
curl -X PATCH 'http://www.allsport.bg/events/{id}?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'{
"name": "Example",
"venue": "6543210fedcba98765432100",
"description": "Text shown on the site.",
"medias": [
{
"media": "6543210fedcba98765432100",
"gcs_url": "example-item",
"gcs_480_30_url": "example-item",
"gcs_720_30_url": "example-item",
"gcs_1080_30_url": "example-item",
"duration": 1,
"vimeo_uri": "example",
"vimeo_picture": "example",
"vimeo_url": "example-item",
"youtube_url": "example-item",
"youtube_picture": "example",
"thumbnail": "example",
"_id": "6543210fedcba98765432100"
}
],
"dates": [
{
"date": "2026-11-04T12:00:00.000Z",
"_id": "6543210fedcba98765432100",
"seating_plan": {
"id": "example",
"sections": "example"
}
}
],
"owner_id": "6543210fedcba98765432100",
"_id": "6543210fedcba98765432100",
"updatedAt": "2026-11-04T12:00:00.000Z",
"createdAt": "2026-11-04T12:00:00.000Z",
"tier_1": {
"name": "Example",
"price": 0
},
"tier_2": {
"name": "Example",
"price": 0
},
"tier_3": {
"name": "Example",
"price": 0
},
"tier_4": {
"name": "Example",
"price": 0
},
"tier_5": {
"name": "Example",
"price": 0
},
"tier_6": {
"name": "Example",
"price": 0
}
}Deletes the event. This cannot be undone.
Needs the token of a signed-in user.
The ID of the event.
Returns an empty answer on success.
curl -X DELETE 'http://www.allsport.bg/events/{id}?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'Returns the site's seating plans, newest first unless a sort is given.
Public - no token needed.
Returns a list of SeatingPlan objects.
curl -X GET 'http://www.allsport.bg/seating-plans?ionic=true'
[
{
"name": "Example",
"sections": [
{
"subsections": [],
"section_type": "example",
"name": "Example",
"top": 1,
"left": 1,
"color": "#3557c4",
"premium_color": "#3557c4",
"rotation": 1,
"max_seats": 1
}
],
"venue": "6543210fedcba98765432100",
"_id": "6543210fedcba98765432100",
"updatedAt": "2026-11-04T12:00:00.000Z",
"createdAt": "2026-11-04T12:00:00.000Z"
}
]Creates a seating plan from the fields sent.
Needs the token of a signed-in user.
Returns the SeatingPlan object.
curl -X POST 'http://www.allsport.bg/seating-plans?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
{
"name": "Example",
"sections": [
{
"subsections": [],
"section_type": "example",
"name": "Example",
"top": 1,
"left": 1,
"color": "#3557c4",
"premium_color": "#3557c4",
"rotation": 1,
"max_seats": 1
}
],
"venue": "6543210fedcba98765432100",
"_id": "6543210fedcba98765432100",
"updatedAt": "2026-11-04T12:00:00.000Z",
"createdAt": "2026-11-04T12:00:00.000Z"
}Returns one seating plan, found by its ID.
Public - no token needed.
The ID of the seating plan.
Returns the SeatingPlan object.
curl -X GET 'http://www.allsport.bg/seating-plans/{id}?ionic=true'{
"name": "Example",
"sections": [
{
"subsections": [],
"section_type": "example",
"name": "Example",
"top": 1,
"left": 1,
"color": "#3557c4",
"premium_color": "#3557c4",
"rotation": 1,
"max_seats": 1
}
],
"venue": "6543210fedcba98765432100",
"_id": "6543210fedcba98765432100",
"updatedAt": "2026-11-04T12:00:00.000Z",
"createdAt": "2026-11-04T12:00:00.000Z"
}Changes the fields sent; the others stay as they are.
Needs the token of a signed-in user.
The ID of the seating plan.
Returns the SeatingPlan object.
curl -X PATCH 'http://www.allsport.bg/seating-plans/{id}?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'{
"name": "Example",
"sections": [
{
"subsections": [],
"section_type": "example",
"name": "Example",
"top": 1,
"left": 1,
"color": "#3557c4",
"premium_color": "#3557c4",
"rotation": 1,
"max_seats": 1
}
],
"venue": "6543210fedcba98765432100",
"_id": "6543210fedcba98765432100",
"updatedAt": "2026-11-04T12:00:00.000Z",
"createdAt": "2026-11-04T12:00:00.000Z"
}Deletes the seating plan. This cannot be undone.
Needs the token of a signed-in user.
The ID of the seating plan.
Returns an empty answer on success.
curl -X DELETE 'http://www.allsport.bg/seating-plans/{id}?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'Returns one events date, found by its ID.
Works without a token; with a user token the answer is personal.
The ID of the events date.
The events date's date index.
curl -X GET 'http://www.allsport.bg/events-date/{id}/{date_index}?ionic=true'{
"name": "Example",
"venue": "6543210fedcba98765432100",
"description": "Text shown on the site.",
"medias": [
{
"media": "6543210fedcba98765432100",
"gcs_url": "example-item",
"gcs_480_30_url": "example-item",
"gcs_720_30_url": "example-item",
"gcs_1080_30_url": "example-item",
"duration": 1,
"vimeo_uri": "example",
"vimeo_picture": "example",
"vimeo_url": "example-item",
"youtube_url": "example-item",
"youtube_picture": "example",
"thumbnail": "example",
"_id": "6543210fedcba98765432100"
}
],
"dates": [
{
"date": "2026-11-04T12:00:00.000Z",
"_id": "6543210fedcba98765432100",
"seating_plan": {
"id": "example",
"sections": "example"
}
}
],
"owner_id": "6543210fedcba98765432100",
"_id": "6543210fedcba98765432100",
"updatedAt": "2026-11-04T12:00:00.000Z",
"createdAt": "2026-11-04T12:00:00.000Z",
"tier_1": {
"name": "Example",
"price": 0
},
"tier_2": {
"name": "Example",
"price": 0
},
"tier_3": {
"name": "Example",
"price": 0
},
"tier_4": {
"name": "Example",
"price": 0
},
"tier_5": {
"name": "Example",
"price": 0
},
"tier_6": {
"name": "Example",
"price": 0
}
}Returns one ticket, found by its ID.
Works without a token; with a user token the answer is personal.
The ID of the ticket.
Returns the Ticket object.
curl -X GET 'http://www.allsport.bg/ticket/{id}?ionic=true'{
"event": "6543210fedcba98765432100",
"date": 1,
"section": 1,
"subsection": 1,
"row": 1,
"seat": 1,
"row_index_formated": 1,
"seat_index_formated": 1,
"lead_id": "6543210fedcba98765432100",
"socket_id": "example",
"status": "frozen",
"expiration_time": "2026-11-04T12:00:00.000Z",
"qr_code": "6543210fedcba98765432100",
"_id": "6543210fedcba98765432100",
"updatedAt": "2026-11-04T12:00:00.000Z",
"createdAt": "2026-11-04T12:00:00.000Z",
"tier": {
"name": "Example",
"price": 0
}
}Creates a ticket from the fields sent.
Works without a token; with a user token the answer is personal.
The ticket's find index.
The ticket's splice.
The ticket's push.
The ticket's tickets.
The ticket's freeze action.
The ticket's bought by admin.
The ticket's freeze.
Returns the Ticket object.
curl -X POST 'http://www.allsport.bg/tickets?ionic=true' \
-H 'Content-Type: application/json' \
-d '{ "findIndex": "...", "splice": "...", "push": "...", "tickets": "...", "freeze_action": "..." }'{
"event": "6543210fedcba98765432100",
"date": 1,
"section": 1,
"subsection": 1,
"row": 1,
"seat": 1,
"row_index_formated": 1,
"seat_index_formated": 1,
"lead_id": "6543210fedcba98765432100",
"socket_id": "example",
"status": "frozen",
"expiration_time": "2026-11-04T12:00:00.000Z",
"qr_code": "6543210fedcba98765432100",
"_id": "6543210fedcba98765432100",
"updatedAt": "2026-11-04T12:00:00.000Z",
"createdAt": "2026-11-04T12:00:00.000Z",
"tier": {
"name": "Example",
"price": 0
}
}Returns the site's venues, newest first unless a sort is given.
Public - no token needed.
Returns a list of Venue objects.
curl -X GET 'http://www.allsport.bg/venues?ionic=true'
[
{
"name": "Example",
"origin_address": "6543210fedcba98765432100",
"address": "example",
"medias": [
{
"media": "6543210fedcba98765432100",
"gcs_url": "example-item",
"gcs_480_30_url": "example-item",
"gcs_720_30_url": "example-item",
"gcs_1080_30_url": "example-item",
"duration": 1,
"vimeo_uri": "example",
"vimeo_picture": "example",
"vimeo_url": "example-item",
"youtube_url": "example-item",
"youtube_picture": "example",
"thumbnail": "example",
"_id": "6543210fedcba98765432100"
}
],
"_id": "6543210fedcba98765432100",
"updatedAt": "2026-11-04T12:00:00.000Z",
"createdAt": "2026-11-04T12:00:00.000Z"
}
]Creates a venue from the fields sent.
Needs the token of a signed-in user.
Returns the Venue object.
curl -X POST 'http://www.allsport.bg/venues?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
{
"name": "Example",
"origin_address": "6543210fedcba98765432100",
"address": "example",
"medias": [
{
"media": "6543210fedcba98765432100",
"gcs_url": "example-item",
"gcs_480_30_url": "example-item",
"gcs_720_30_url": "example-item",
"gcs_1080_30_url": "example-item",
"duration": 1,
"vimeo_uri": "example",
"vimeo_picture": "example",
"vimeo_url": "example-item",
"youtube_url": "example-item",
"youtube_picture": "example",
"thumbnail": "example",
"_id": "6543210fedcba98765432100"
}
],
"_id": "6543210fedcba98765432100",
"updatedAt": "2026-11-04T12:00:00.000Z",
"createdAt": "2026-11-04T12:00:00.000Z"
}Returns one venue, found by its ID.
Public - no token needed.
The ID of the venue.
Returns the Venue object.
curl -X GET 'http://www.allsport.bg/venues/{id}?ionic=true'{
"name": "Example",
"origin_address": "6543210fedcba98765432100",
"address": "example",
"medias": [
{
"media": "6543210fedcba98765432100",
"gcs_url": "example-item",
"gcs_480_30_url": "example-item",
"gcs_720_30_url": "example-item",
"gcs_1080_30_url": "example-item",
"duration": 1,
"vimeo_uri": "example",
"vimeo_picture": "example",
"vimeo_url": "example-item",
"youtube_url": "example-item",
"youtube_picture": "example",
"thumbnail": "example",
"_id": "6543210fedcba98765432100"
}
],
"_id": "6543210fedcba98765432100",
"updatedAt": "2026-11-04T12:00:00.000Z",
"createdAt": "2026-11-04T12:00:00.000Z"
}Changes the fields sent; the others stay as they are.
Needs the token of a signed-in user.
The ID of the venue.
Returns the Venue object.
curl -X PATCH 'http://www.allsport.bg/venues/{id}?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'{
"name": "Example",
"origin_address": "6543210fedcba98765432100",
"address": "example",
"medias": [
{
"media": "6543210fedcba98765432100",
"gcs_url": "example-item",
"gcs_480_30_url": "example-item",
"gcs_720_30_url": "example-item",
"gcs_1080_30_url": "example-item",
"duration": 1,
"vimeo_uri": "example",
"vimeo_picture": "example",
"vimeo_url": "example-item",
"youtube_url": "example-item",
"youtube_picture": "example",
"thumbnail": "example",
"_id": "6543210fedcba98765432100"
}
],
"_id": "6543210fedcba98765432100",
"updatedAt": "2026-11-04T12:00:00.000Z",
"createdAt": "2026-11-04T12:00:00.000Z"
}Deletes the venue. This cannot be undone.
Needs the token of a signed-in user.
The ID of the venue.
Returns an empty answer on success.
curl -X DELETE 'http://www.allsport.bg/venues/{id}?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'Create an event from a prompt, written by the AI builder.
Needs a site admin token.
What the AI should do with the event, in plain words - any language.
The AI chat this request belongs to; its history and language carry over. Leave it out to start a new chat.
Which version of the AI builder to use; leave it out for the current one.
The ID of the event to change.
curl -X POST 'http://www.allsport.bg/create-new-event?ionic=true' \
-H 'Authorization: Bearer <TOKEN>' \
-H 'Content-Type: application/json' \
-d '{ "prompt": "...", "chatId": "...", "aiVersion": "...", "item_id": "..." }'{
"chat_id": "6543210fedcba98765432100",
"role": "user",
"text": "Text shown on the site.",
"target_url": "example-item",
"action": "RESPONSE",
"options": [
"example"
],
"medias": [
{
"media": "6543210fedcba98765432100",
"gcs_url": "example-item",
"gemini_uri": "example",
"gemini_interaction_id": "example",
"_id": "6543210fedcba98765432100"
}
],
"products": [
"6543210fedcba98765432101"
],
"services": [
"6543210fedcba98765432101"
],
"blogposts": [
"6543210fedcba98765432101"
],
"programs": [
"6543210fedcba98765432101"
],
"suggestions": [
{
"text": "Text shown on the site.",
"route": "example",
"item_id": "6543210fedcba98765432100",
"medias": [],
"picture": "6543210fedcba98765432100",
"_id": "6543210fedcba98765432100"
}
],
"is_system": false,
"_id": "6543210fedcba98765432100",
"updatedAt": "2026-11-04T12:00:00.000Z",
"createdAt": "2026-11-04T12:00:00.000Z",
"data": {
"object": "example",
"object_type": "example",
"edit_summary": "example",
"edit_diff": "example",
"undo_record": "example",
"hero_animation_offer": "example",
"preview_state": "example",
"pending_credit_cost": 0,
"target_restore": "example",
"media_request": "example",
"item_request": "example",
"reference_request": "example"
}
}Create a seating plan from a prompt, written by the AI builder.
Needs a site admin token.
What the AI should do with the seating plan, in plain words - any language.
The AI chat this request belongs to; its history and language carry over. Leave it out to start a new chat.
Which version of the AI builder to use; leave it out for the current one.
The ID of the seating plan to change.
curl -X POST 'http://www.allsport.bg/create-new-seating-plan?ionic=true' \
-H 'Authorization: Bearer <TOKEN>' \
-H 'Content-Type: application/json' \
-d '{ "prompt": "...", "chatId": "...", "aiVersion": "...", "item_id": "..." }'Create a venue from a prompt, written by the AI builder.
Needs a site admin token.
What the AI should do with the venue, in plain words - any language.
The AI chat this request belongs to; its history and language carry over. Leave it out to start a new chat.
Which version of the AI builder to use; leave it out for the current one.
The ID of the venue to change.
curl -X POST 'http://www.allsport.bg/create-new-venue?ionic=true' \
-H 'Authorization: Bearer <TOKEN>' \
-H 'Content-Type: application/json' \
-d '{ "prompt": "...", "chatId": "...", "aiVersion": "...", "item_id": "..." }'{
"chat_id": "6543210fedcba98765432100",
"role": "user",
"text": "Text shown on the site.",
"target_url": "example-item",
"action": "RESPONSE",
"options": [
"example"
],
"medias": [
{
"media": "6543210fedcba98765432100",
"gcs_url": "example-item",
"gemini_uri": "example",
"gemini_interaction_id": "example",
"_id": "6543210fedcba98765432100"
}
],
"products": [
"6543210fedcba98765432101"
],
"services": [
"6543210fedcba98765432101"
],
"blogposts": [
"6543210fedcba98765432101"
],
"programs": [
"6543210fedcba98765432101"
],
"suggestions": [
{
"text": "Text shown on the site.",
"route": "example",
"item_id": "6543210fedcba98765432100",
"medias": [],
"picture": "6543210fedcba98765432100",
"_id": "6543210fedcba98765432100"
}
],
"is_system": false,
"_id": "6543210fedcba98765432100",
"updatedAt": "2026-11-04T12:00:00.000Z",
"createdAt": "2026-11-04T12:00:00.000Z",
"data": {
"object": "example",
"object_type": "example",
"edit_summary": "example",
"edit_diff": "example",
"undo_record": "example",
"hero_animation_offer": "example",
"preview_state": "example",
"pending_credit_cost": 0,
"target_restore": "example",
"media_request": "example",
"item_request": "example",
"reference_request": "example"
}
}Use it to create a new ticketed event with dates, ticket tiers, and a venue.
Needs a site admin token.
What the AI should do with the event, in plain words - any language.
The AI chat this request belongs to; its history and language carry over. Leave it out to start a new chat.
curl -X POST 'http://www.allsport.bg/generate-event?ionic=true' \
-H 'Authorization: Bearer <TOKEN>' \
-H 'Content-Type: application/json' \
-d '{ "prompt": "...", "chatId": "..." }'Use it to create a new seating plan or seat map layout for an event venue.
Needs a site admin token.
What the AI should do with the seating plan, in plain words - any language.
The AI chat this request belongs to; its history and language carry over. Leave it out to start a new chat.
curl -X POST 'http://www.allsport.bg/generate-seating-plan?ionic=true' \
-H 'Authorization: Bearer <TOKEN>' \
-H 'Content-Type: application/json' \
-d '{ "prompt": "...", "chatId": "..." }'Use it to create a new event venue (name, address, and origin/region).
Needs a site admin token.
What the AI should do with the venue, in plain words - any language.
The AI chat this request belongs to; its history and language carry over. Leave it out to start a new chat.
curl -X POST 'http://www.allsport.bg/generate-venue?ionic=true' \
-H 'Authorization: Bearer <TOKEN>' \
-H 'Content-Type: application/json' \
-d '{ "prompt": "...", "chatId": "..." }'Use it to edit or update an existing event.
Needs a site admin token.
What the AI should do with the event, in plain words - any language.
The current event, as JSON - the AI changes it and returns the result.
The AI chat this request belongs to; its history and language carry over. Leave it out to start a new chat.
The ID of the event to change.
The event's item ids.
curl -X POST 'http://www.allsport.bg/modify-event?ionic=true' \
-H 'Authorization: Bearer <TOKEN>' \
-H 'Content-Type: application/json' \
-d '{ "prompt": "...", "item_data": "...", "chatId": "...", "item_id": "...", "item_ids": "..." }'Use it to edit or update an existing seating plan.
Needs a site admin token.
What the AI should do with the seating plan, in plain words - any language.
The current seating plan, as JSON - the AI changes it and returns the result.
The AI chat this request belongs to; its history and language carry over. Leave it out to start a new chat.
curl -X POST 'http://www.allsport.bg/modify-seating-plan?ionic=true' \
-H 'Authorization: Bearer <TOKEN>' \
-H 'Content-Type: application/json' \
-d '{ "prompt": "...", "item_data": "...", "chatId": "..." }'Use it to edit or update an existing venue.
Needs a site admin token.
What the AI should do with the venue, in plain words - any language.
The current venue, as JSON - the AI changes it and returns the result.
The AI chat this request belongs to; its history and language carry over. Leave it out to start a new chat.
The ID of the venue to change.
The venue's item ids.
curl -X POST 'http://www.allsport.bg/modify-venue?ionic=true' \
-H 'Authorization: Bearer <TOKEN>' \
-H 'Content-Type: application/json' \
-d '{ "prompt": "...", "item_data": "...", "chatId": "...", "item_id": "...", "item_ids": "..." }'