📦 Items & Economy API¶
This section covers spawning physical items, managing inventories, player designations, and trading with factions.
Объекты (Things)¶
Контроллер Thing Controller управляет физическими объектами в игровом мире, которые не являются гуманоидами (пешками). В коде RimWorld почти всё является "Объектом" (Thing).
Включает:
- Предметы: Оружие, ресурсы, одежда.
- Постройки: Стены, мебель, верстаки.
- Растения: Сельскохозяйственные культуры, деревья.
GET
/api/v1/item/recipes
¶
/api/v1/item/recipes
¶
Возвращает рецепты крафта, связанные с конкретным предметом. Это включает подробности об ингредиентах, объеме работы, необходимых навыках и производственных станциях.
Example:
curl --request GET \
--url "http://localhost:8765/api/v1/item/recipes?def_name=MealSimple"
Response:
{
"success": true,
"data": {
"item_def_name": "MealSimple",
"item_label": "simple meal",
"recipes": [
{
"recipe_def_name": "CookMealSimple",
"label": "cook simple meal",
"job_string": "Cooking simple meal.",
"work_amount": 300.0,
"work_time_seconds": 5.0,
"ingredients": [
{
"summary": "Raw food",
"count": 0.5,
"is_fixed_item": false,
"allowed_def_names": [
"RawPotatoes",
"RawRice",
"Meat_Chicken"
]
}
],
"produced_at": [
{
"def_name": "ElectricStove",
"label": "electric stove"
},
{
"def_name": "FueledStove",
"label": "fueled stove"
},
{
"def_name": "Campfire",
"label": "campfire"
}
],
"skill_requirements": [
{
"skill": "Cooking",
"min_level": 0
}
],
"research_prerequisite": null
}
]
},
"timestamp": "2025-12-11T19:46:05.7088803Z"
}
GET
/api/v1/item/sources
¶
/api/v1/item/sources
¶
Определяет различные способы получения конкретного предмета в игре. Сюда входят флаги для широких категорий (добыча, торговля, крафт) и конкретные детали, такие как названия руд или растений, производящих этот предмет.
Example:
curl --request GET \
--url "http://localhost:8765/api/v1/item/sources?def_name=Steel"
Response:
{
"success": true,
"data": {
"def_name": "Steel",
"label": "steel",
"thing_categories": [
"ResourcesRaw",
"Resources"
],
"can_craft": true,
"can_trade": true,
"can_harvest": false,
"can_mine": true,
"can_butcher": false,
"crafting_recipes": [
"SmeltWeapon",
"SmeltApparel",
"ExtractMetalFromSlag"
],
"harvested_from": [],
"mined_from": [
"MineableSteel"
],
"trade_tags": [
"BulkGoods",
"ExoticMisc"
]
},
"timestamp": "2025-12-11T19:46:05.7088803Z"
}
GET
/api/v1/resources/summary
¶
/api/v1/resources/summary
¶
Возвращает исчерпывающую сводку по всем ресурсам, присутствующим на указанной карте, включая общее количество предметов, общую рыночную стоимость и категоризированную разбивку ресурсов. Также выделяет критические ресурсы, такие как еда, медикаменты и оружие.
Example:
curl --request GET \
--url 'http://localhost:8765/api/v1/resources/summary?map_id=0'
Response:
{
"success": true,
"data": {
"total_items": 1234,
"total_market_value": 5678.90,
"last_updated": "2025-12-12t10:00:00.0000000z",
"categories": [
{ "category": "foods", "count": 500, "market_value": 1200.00 },
{ "category": "manufactured", "count": 200, "market_value": 2500.00 }
],
"critical_resources": {
"food_summary": {
"food_total": 450,
"total_nutrition": 1500.0,
"meals_count": 300,
"raw_food_count": 150,
"rot_status_info": {
"nutrition_rotating_soon": 100.0,
"nutrition_not_rotating": 1400.0,
"percentage_rotating_soon": 6.67,
"soon_rotting_items": [
{
"thing_id": 1001,
"def_name": "MealSimple",
"label": "simple meal",
"stack_count": 5,
"nutrition": 4.5,
"days_until_rot": 0.5,
"hours_until_rot": 12.0
}
],
"total_soon_rotting_items": 1,
"total_soon_rotting_stacks": 1
}
},
"medicine_total": 20,
"weapon_count": 5,
"weapon_value": 1000.00
}
},
"errors": [],
"warnings": [],
"timestamp": "2025-12-12T10:00:00.0000000Z"
}
GET
/api/v1/resources/stored
¶
/api/v1/resources/stored
¶
Возвращает подробный список всех предметов, хранящихся в данный момент на указанной карте. Опционально результаты могут быть отфильтрованы по категории ресурсов. Этот эндпоинт предоставляет детализированную информацию о каждом хранящемся предмете, включая его ID, техническое имя (defName), этикетку и количество в стаке.
Example:
# Get all stored resources
curl --request GET \
--url 'http://localhost:8765/api/v1/resources/stored?map_id=0'
# Get stored resources by category
curl --request GET \
--url 'http://localhost:8765/api/v1/resources/stored?map_id=0&category=Foods'
Response:
{
"success": true,
"data": {
"Foods": [
{
"thing_id": 4895,
"def_name": "MealSurvivalPack",
"label": "packaged survival meal x10",
"categories": ["FoodMeals"],
"position": { "x": 13, "y": 0, "z": 62 },
"stack_count": 10,
"market_value": 24.0,
"is_forbidden": false,
"quality": -1,
"hit_points": 50,
"max_hit_points": 50
},
{
"thing_id": 4896,
"def_name": "Pemmican",
"label": "pemmican x2",
"categories": ["FoodMeals"],
"position": { "x": 14, "y": 0, "z": 62 },
"stack_count": 50,
"market_value": 1.5,
"is_forbidden": false,
"quality": -1,
"hit_points": 50,
"max_hit_points": 50
}
],
"resources_raw": [
{
"thing_id": 2328,
"def_name": "ChunkGranite",
"label": "granite chunk",
"categories": ["StoneChunks"],
"position": { "x": 41, "y": 0, "z": 1 },
"stack_count": 1,
"market_value": 0.0,
"is_forbidden": false,
"quality": -1,
"hit_points": 300,
"max_hit_points": 300
}
]
},
"errors": [],
"warnings": [],
"timestamp": "2025-12-12T10:00:00.0000000Z"
}
GET
/api/v1/resources/storages/summary
¶
/api/v1/resources/storages/summary
¶
Предоставляет сводку по всем складским зонам (склады и свалки) на указанной карте, включая общее количество складов, общее количество клеток, занятые клетки и процент использования.
Example:
curl --request GET \
--url 'http://localhost:8765/api/v1/resources/storages/summary?map_id=0'
Response:
{
"success": true,
"data": {
"total_stockpiles": 5,
"total_cells": 200,
"used_cells": 120,
"utilization_percent": 60
},
"errors": [],
"warnings": [],
"timestamp": "2025-12-12T10:00:00.0000000Z"
}
POST
/api/v1/item/spawn
¶
/api/v1/item/spawn
¶
Создает (спавнит) предмет на карте в выбранной позиции.
Example:
curl --request POST \
--url http://localhost:8765/api/v1/item/spawn \
--header 'content-type: application/json' \
--data '{
"def_name": "BilliardsTable",
"stuff_def_name": "WoodLog",
"quality": "Legendary",
"amount": 1,
"x": 120,
"z": 106
}'
Request:
{
"def_name": "BilliardsTable",
"stuff_def_name": "WoodLog",
"quality": "Legendary",
"amount": 1,
"x": 120,
"z": 106
}
Response:
{
"success": true,
"errors": [],
"warnings": [],
"timestamp": "2025-12-10T19:53:16.733319Z"
}
POST
/api/v1/things/set-forbidden
¶
/api/v1/things/set-forbidden
¶
Устанавливает статус "запрещено" для одного или нескольких объектов по их ID или позиции.
Пример:
curl --request POST \
--url http://localhost:8765/api/v1/things/set-forbidden \
--header 'content-type: application/json' \
--data '{"thing_ids": [4895, 4896], "forbidden": true}'
Запрос:
{
"thing_ids": [4895, 4896],
"forbidden": true
}
Ответ:
{
"success": true,
"errors": [],
"warnings": [],
"timestamp": "2025-12-10T19:53:16.733319Z"
}
Торговля¶
Предоставляет доступ к экономике игры и торговым системам. Этот контроллер обрабатывает определения для различных типов торговцев (орбитальные, караваны, посетители), позволяя вам анализировать их правила генерации товаров, распространенность предметов и поведение при покупке/продаже.
Возможности:
- Список всех глобальных типов торговцев (Defs).
- Проверка логики генерации товаров (конкретные предметы, категории или теги).
- Определение того, является ли тип торговца орбитальным или наземным.
GET
/api/v1/traders/defs
¶
/api/v1/traders/defs
¶
Возвращает список всех определений торговцев (TraderKindDefs). Сюда входят орбитальные торговцы, караваны и посетители, с подробным описанием их правил генерации товаров, распространенности и того, покупают ли они определенные категории предметов.
Example:
curl --request GET \
--url http://localhost:8765/api/v1/traders/defs
Response:
{
"success": true,
"data": [
{
"def_name": "Orbital_BulkGoods",
"label": "bulk goods trader",
"orbital": true,
"visitor": false,
"commonality": 1.0,
"items": [
{
"name": "Steel",
"count": "500~800",
"price": "Normal"
},
{
"name": "ComponentIndustrial",
"count": "20~40"
}
],
"categories": [
{
"name": "Textiles",
"count": "300~600"
},
{
"name": "FoodRaw",
"count": "200~400"
}
],
"tags": [
{
"name": "Artifact",
"buys": false
}
]
},
{
"def_name": "Caravan_Outlander_CombatSupplier",
"label": "combat supplier",
"orbital": false,
"visitor": true,
"commonality": 1.0,
"items": [
{
"name": "MedicineIndustrial",
"count": "5~15"
}
],
"categories": [
{
"name": "WeaponsMelee",
"count": "3~6"
}
]
}
],
"timestamp": "2025-12-11T19:46:05.7088803Z"
}
Order Controller¶
Order Controller предназначен для отдачи приказов пешкам.
POST
/api/v1/order/designate/area
¶
/api/v1/order/designate/area
¶
Отправить приказ
В настоящее время поддерживаются следующие приказы:
- remove-all: удаляет все приказы
- mine
- deconstruct
- harvest
- hunt
Example:
curl --request POST \
--url 'http://localhost:8765/api/v1/order/designate/area'
Request:
{
"map_id": 0,
"type": "Mine",
"point_a": {"x": 0, "y": 0, "z": 0},
"point_b": {"x": 250, "y": 0, "z": 250}
}
Response:
{
"success": true,
"errors": [],
"warnings": [],
"timestamp": "2025-12-31T11:04:27.9729153Z"
}