Справочник API¶
Version: 1.8.2
Endpoints total count: 155
Warning
Please read our API Conventions page to understand our snake_case JSON requirements and header rules.
Основной API¶
Строительство¶
Контроллер Builder Controller предоставляет инструменты для программного построения и деконструкции. Он позволяет копировать, вставлять и создавать чертежи областей карты.
POST
/api/v1/builder/copy
¶
/api/v1/builder/copy
¶
Скопировать указанную область карты, включая здания, объекты и
местность. Скопированные данные можно использовать для вставки через /api/v1/builder/paste.
Example:
curl --request POST \
--url http://localhost:8765/api/v1/builder/copy \
--header 'content-type: application/json' \
--data '{
"from": { "x": 100, "z": 100 },
"to": { "x": 110, "z": 110 }
}'
Response:
{
"map_id": 0,
"point_a": {"x": 10, "y": 0, "z": 10},
"point_b": {"x": 16, "y": 0, "z": 16}
}
Response:
{
"success":true,
"data": {
"width":7,
"height":7,
"floors": [
{"def_name":"Concrete","rel_x":1,"rel_z":1},
{"def_name":"Concrete","rel_x":3,"rel_z":2}],
"buildings": [
{"def_name":"Wall","stuff_def_name":"WoodLog","rel_x":0,"rel_z":0,"rotation":0},
{"def_name":"Wall","stuff_def_name":"WoodLog","rel_x":3,"rel_z":0,"rotation":0},
{"def_name":"Wall","stuff_def_name":"WoodLog","rel_x":0,"rel_z":1,"rotation":0},
]
},
"errors": [],
"warnings": [],
"timestamp": "2025-12-11T19:15:20.9851409Z"
}
POST
/api/v1/builder/paste
¶
/api/v1/builder/paste
¶
Вставить ранее скопированную область в новое место на карте.
Example:
curl --request POST \
--url http://localhost:8765/api/v1/builder/paste \
--header 'content-type: application/json' \
--data '{
"at": { "x": 150, "z": 150 }
}'
Request:
{
"map_id": 0,
"position": {"x": 80, "y": 0, "z": 80},
"blueprint": {
"width":7,
"height":7,
"floors": [
{"def_name":"Concrete","rel_x":1,"rel_z":1},
{"def_name":"Concrete","rel_x":3,"rel_z":2}],
"buildings": [
{"def_name":"Wall","stuff_def_name":"WoodLog","rel_x":0,"rel_z":0,"rotation":0},
{"def_name":"Wall","stuff_def_name":"WoodLog","rel_x":3,"rel_z":0,"rotation":0},
{"def_name":"Wall","stuff_def_name":"WoodLog","rel_x":0,"rel_z":1,"rotation":0},
]
},
"clear_obstacles": true,
}
Response:
{
"success":true,
"errors":[],
"warnings":[],
"timestamp":"2025-12-31T12:18:40.2019606Z"
}
POST
/api/v1/builder/blueprint
¶
/api/v1/builder/blueprint
¶
Вставляет постройку в виде чертежа, создавая задание для поселенцев.
Example:
curl --request POST \
--url http://localhost:8765/api/v1/builder/blueprint \
--header 'content-type: application/json' \
--data '{
"at": { "x": 150, "z": 150 }
}'
Request:
{
"map_id": 0,
"position": {"x": 80, "y": 0, "z": 80},
"blueprint": {
"width":7,
"height":7,
"floors": [
{"def_name":"Concrete","rel_x":1,"rel_z":1},
{"def_name":"Concrete","rel_x":3,"rel_z":2}],
"buildings": [
{"def_name":"Wall","stuff_def_name":"WoodLog","rel_x":0,"rel_z":0,"rotation":0},
{"def_name":"Wall","stuff_def_name":"WoodLog","rel_x":3,"rel_z":0,"rotation":0},
{"def_name":"Wall","stuff_def_name":"WoodLog","rel_x":0,"rel_z":1,"rotation":0},
]
},
}
Response:
{
"success":true,
"errors":[],
"warnings":[],
"timestamp":"2025-12-31T12:18:40.2019606Z"
}
Камера¶
Предоставляет конечные точки для управления видом пользователя в игре. Позволяет внешним инструментам панорамировать камеру по конкретным координатам или программно настраивать уровень масштабирования.
POST
/api/v1/camera/change/zoom
¶
/api/v1/camera/change/zoom
¶
Настраивает уровень масштабирования игровой камеры на указанное значение, мгновенно изменяя поле зрения. Это позволяет точно контролировать, насколько близко или далеко находится камера на игровой карте.
Example:
curl --request POST \
--url 'http://localhost:8765/api/v1/camera/change/zoom?zoom=15'
Response:
{
"success": true,
"errors": [],
"warnings": [],
"timestamp": "2025-12-09T19:16:06.4839322Z"
}
POST
/api/v1/camera/change/position
¶
/api/v1/camera/change/position
¶
Мгновенно перемещает игровую камеру на указанные мировые координаты на текущей карте.
Example:
curl --request POST \
--url 'http://localhost:8765/api/v1/camera/change/position?x=50&y=50'
Response:
{
"success": true,
"errors": [],
"warnings": [],
"timestamp": "2025-12-08T19:13:29.997162Z"
}
POST
/api/v1/stream/start
¶
/api/v1/stream/start
¶
Запускает прямую видеотрансляцию текущего вида камеры игры. Эта конечная точка инициирует трансляцию игрового процесса в реальном времени, захватывая именно то, что видно в основном окне игрока.
Example:
curl --request POST \
--url 'http://localhost:8765/api/v1/stream/start'
Response:
{
"success": true,
"errors": [],
"warnings": [],
"timestamp": "2025-12-08T19:13:29.997162Z"
}
POST
/api/v1/stream/stop
¶
/api/v1/stream/stop
¶
Корректно останавливает активную прямую видеотрансляцию вида камеры игры.
Example:
curl --request POST \
--url 'http://localhost:8765/api/v1/stream/stop'
Response:
{
"success": true,
"errors": [],
"warnings": [],
"timestamp": "2025-12-08T19:13:29.997162Z"
}
POST
/api/v1/stream/setup
¶
/api/v1/stream/setup
¶
Настраивает параметры и установки для прямой видеотрансляции вида камеры игры перед ее запуском.
Example:
curl --request POST \
--url 'http://localhost:8765/api/v1/stream/setup?ip=127.0.0.1&port=5007&frame_width=1920&frame_height=1080&fps=15&quality=30'
Request:
{
"port": 8080,
"address": "127.0.0.1",
"frame_width": 1280,
"frame_height": 720,
"target_fps": 30,
"jpeg_quality": 85
}
Response:
{
"success": true,
"errors": [],
"warnings": [],
"timestamp": "2025-12-08T19:13:29.997162Z"
}
GET
/api/v1/stream/status
¶
/api/v1/stream/status
¶
Получить статус текущей прямой видеотрансляции вида камеры игры.
Example:
curl --request POST \
--url 'http://localhost:8765/api/v1/stream/status'
Response:
{
"success": true,
"data": {
"is_streaming": false,
"config": {
"port": 5007,
"address": "127.0.0.1",
"frame_width": 1280,
"frame_height": 720,
"target_fps": 15,
"jpeg_quality": 50
}
},
"errors": [],
"warnings": [],
"timestamp": "2025-12-09T19:31:56.8297247Z"
}
Инструменты разработчика¶
Этот контроллер предоставляет доступ к внутренним отладочным действиям и инструментам разработки RimWorld. Он обеспечивает функциональность «режима бога», обычно зарезервированную для консоли разработчика игры.
Использовать с осторожностью
Действия, выполняемые здесь, обходят стандартные правила игрового процесса. Неправильное использование может привести к:
- Повреждению файлов сохранений.
- Вылетам игры.
- Нарушению поведения ИИ.
GET
/api/v1/dev/materials-atlas
¶
/api/v1/dev/materials-atlas
¶
Получает данные атласа материалов уровня разработки, который содержит внутреннее сопоставление определений материалов с их графическими текстурами, шейдерами и свойствами рендеринга.
Example:
curl --request GET \
--url http://localhost:8765/api/v1/dev/materials-atlas
Response:
{
"success": true,
"data": {
"materials": [
"Custom/CutoutComplex_RockFlecked_Atlas",
"Custom/CutoutComplex_RockFlecked_Atlas",
"Custom/CutoutComplex_RockFlecked_Atlas",
"Custom/CutoutComplex_RockFlecked_Atlas",
"Custom/CutoutComplex_RockFlecked_Atlas",
"Custom/CutoutComplex_RockFlecked_Atlas",
"Custom/CutoutComplex_CompactedMachinery_Atlas",
"Custom/Cutout_Rock_Atlas",
"Custom/Cutout_Rock_Atlas",
"Custom/Cutout_Rock_Atlas",
"Custom/Cutout_Rock_Atlas",
"Custom/Cutout_Rock_Atlas",
"Custom/Cutout_Rock_Atlas",
"Custom/Cutout_AncientFence_Atlas",
"Custom/CutoutComplex_Fleshmass_Atlas",
"Custom/Transparent_PowerConduit_Blueprint_Atlas",
"Custom/Transparent_Sandbags_Blueprint_Atlas",
"Custom/Transparent_Barricade_Blueprint_Atlas",
"Custom/Transparent_Wall_Blueprint_Atlas",
"Custom/Transparent_Fence_Atlas_Smooth",
"Custom/Cutout_Wall_Atlas_Smooth",
"Custom/Cutout_Wall_Atlas_Bricks",
"Custom/Cutout_Wall_Atlas_Smooth",
"Custom/Cutout_Wall_Atlas_Bricks",
"Custom/Cutout_Wall_Atlas_Bricks"
]
},
"errors": [],
"warnings": [],
"timestamp": "2025-12-11T19:15:20.9851409Z"
}
POST
/api/v1/dev/console
¶
/api/v1/dev/console
¶
Конечная точка для разработки и отладки, позволяющая взаимодействовать с внутренней системой логирования игры. Это обеспечивает программное управление консолью разработчика, позволяя отправлять сообщения в лог и очищать консоль.
Example:
curl --request POST \
--url 'http://localhost:8765/api/v1/dev/console'
Request:
{
"action": "message",
"message": "hello_world"
}
Response:
{
"success": true,
"errors": [],
"warnings": [],
"timestamp": "2025-12-08T19:13:29.997162Z"
}
POST
/api/v1/dev/stuff/color
¶
/api/v1/dev/stuff/color
¶
Конечная точка инструмента разработки, которая изменяет визуальные свойства цвета конкретного материала типа «stuff» в игре. «Stuff» в RimWorld относится к базовым материалам, из которых изготавливаются предметы и строения (например, дерево, сталь, ткань, пласталь). Эта конечная точка позволяет в реальном времени настраивать отображаемый цвет материала, что в основном используется для визуальной настройки, отладки или тестирования при разработке модов.
Example:
curl --request POST \
--url http://localhost:8765/api/v1/dev/stuff/color \
--header 'content-type: application/json' \
--data '{
"name": "WoodLog",
"hex": "aa00ff"
}'
Request:
{
"name": "WoodLog",
"hex": "aa00ff"
}
Response:
{
"success": true,
"errors": [],
"warnings": [],
"timestamp": "2025-12-08T19:13:29.997162Z"
}
POST
/api/v1/dev/materials-atlas/clear
¶
/api/v1/dev/materials-atlas/clear
¶
Очищает кэш атласа материалов в оперативной памяти, заставляя игру перезагружать текстуры материалов, шейдеры и свойства рендеринга с диска по запросу.
Example:
curl --request POST \
--url http://localhost:8765/api/v1/dev/materials-atlas/clear
Response:
{
"success": true,
"errors": [],
"warnings": [],
"timestamp": "2025-12-08T19:13:29.997162Z"
}
GET
/api/v1/dev/endpoints
¶
/api/v1/dev/endpoints
¶
Получить полный список всех зарегистрированных конечных точек API, включая их HTTP-методы, пути, описания, категории и теги. Это очень полезно для программного обнаружения маршрутов и создания автоматизированных клиентов API.
Example:
curl --request GET \
--url 'http://localhost:8765/api/v1/dev/endpoints'
Response:
{
"success": true,
"data": {
"endpoints": [
{
"method": "POST",
"path": "/api/v1/camera/change/zoom",
"description": "Change game camera zoom",
"category": "CameraController",
"tags": [],
"is_deprecated": false
},
{
"method": "POST",
"path": "/api/v1/camera/change/position",
"description": "Change game camera position",
"category": "CameraController",
"tags": [],
"is_deprecated": false
},
{
"method": "POST",
"path": "/api/v1/stream/start",
"description": "Start game camera stream",
"category": "CameraController",
"tags": [],
"is_deprecated": false
}
]
},
"errors": [],
"warnings": [],
"timestamp": "2026-03-28T16:45:00.0000000Z"
}
Документация¶
Documentation Controller предоставляет возможности самоанализа для самого API. Он позволяет клиентам динамически обнаруживать доступные конечные точки, схемы и версии API без необходимости во внешних ссылках.
| Функция | Описание |
|---|---|
| Discovery | Список всех зарегистрированных маршрутов и их параметров. |
| Health | Проверка статуса сервера API. |
| Schema | Получение схем JSON для тел запросов/ответов. |
GET
/api/v1/core/docs/export
¶
/api/v1/core/docs/export
¶
Генерирует и экспортирует подробную документацию для всех доступных конечных точек API. Возвращает документацию в запрошенном формате как в ответе, так и в виде файла в директории mod_path/docs/.
Example:
curl --request GET \
--url http://localhost:8765/api/v1/core/docs/export
GET
/api/v1/docs
¶
/api/v1/docs
¶
Получить документацию для всех доступных конечных точек API в запрошенном формате.
Example:
curl --request GET \
--url http://localhost:8765/api/v1/docs
GET
/api/v1/docs/extensions/{extensionId}
¶
/api/v1/docs/extensions/{extensionId}
¶
Получить документацию для всех доступных конечных точек API расширения в запрошенном формате.
Example:
curl --request GET \
--url http://localhost:8765/api/v1/docs/extensions/34
GET
/api/v1/docs/health
¶
/api/v1/docs/health
¶
Получить документацию по состоянию (health) для всех доступных конечных точек API в запрошенном формате.
Example:
curl --request GET \
--url http://localhost:8765/api/v1/docs/health
GET
/api/v1/docs/export
¶
/api/v1/docs/export
¶
Получить экспорт документации для всех доступных конечных точек API в запрошенном формате.
Example:
curl --request GET \
--url http://localhost:8765/api/v1/docs/export
Фракции¶
Faction Controller управляет геополитическим ландшафтом мира. Он позволяет проверять и манипулировать отношениями между колонией игрока и другими группами.
Ключевые функции:
Дипломатия: Настройка доброй воли и статуса отношений (Враждебный/Нейтральный/Союзник).
Реестр: Список всех созданных фракций и их лидеров.
Взаимодействие: Инициирование специфических для фракции запросов или подарков.
GET
/api/v1/factions
¶
/api/v1/factions
¶
Возвращает список всех фракций, известных в настоящее время в игровом мире.
Example:
curl --request GET \
--url http://localhost:8765/api/v1/factions
Response:
{
"success": true,
"data": [
{
"load_id": 0,
"def_name": "OutlanderCivil",
"name": "Western Haderia",
"is_player": false,
"relation": "Neutral",
"goodwill": 0
},
{
"load_id": 1,
"def_name": "TribeCivil",
"name": "Coalition of Tol",
"is_player": false,
"relation": "Neutral",
"goodwill": 0
},
{
"load_id": 2,
"def_name": "Empire",
"name": "Empire of Mophoos",
"is_player": false,
"relation": "Neutral",
"goodwill": 0
},
{
"load_id": 3,
"def_name": "PlayerColony",
"name": "New Arrivals",
"is_player": true,
"relation": "",
"goodwill": 0
}
],
"errors": [],
"warnings": [],
"timestamp": "2025-12-11T19:21:17.8272328Z"
}
GET
/api/v1/faction/relations
¶
/api/v1/faction/relations
¶
Возвращает статус дипломатических отношений между выбранной по ID фракцией и всеми остальными фракциями.
curl --request GET \
--url http://localhost:8765/api/v1/faction/relations?id=2
{
"label": "lowercase label",
"message": "uppercase message",
"letter_def": "NeutralEvent"
}
{
"success": true,
"errors": [],
"warnings": [],
"timestamp": "2025-12-08T19:13:29.997162Z"
}
GET
/api/v1/faction/player
¶
/api/v1/faction/player
¶
Возвращает подробную информацию о собственной фракции игрока.
Example:
curl --request GET \
--url http://localhost:8765/api/v1/faction/player
Response:
{
"success": true,
"data": {
"load_id": 3,
"def_name": "PlayerColony",
"name": "New Arrivals",
"is_player": true,
"leader_title": "Spirit Speaker",
"leader_id": 0
},
"errors": [],
"warnings": [],
"timestamp": "2025-12-11T19:22:33.5209596Z"
}
GET
/api/v1/faction
¶
/api/v1/faction
¶
Возвращает подробную информацию о конкретной фракции, идентифицированной по ID.
Example:
curl --request GET \
--url 'http://localhost:8765/api/v1/faction?id=2'
Response:
{
"success": true,
"data": {
"load_id": 2,
"def_name": "Empire",
"name": "Empire of Mophoos",
"is_player": false,
"leader_title": "High Stellarch",
"leader_id": 969
},
"errors": [],
"warnings": [],
"timestamp": "2025-12-11T19:23:10.8428989Z"
}
GET
/api/v1/faction/relation-with
¶
/api/v1/faction/relation-with
¶
Получает статус дипломатических отношений между двумя указанными фракциями.
Example:
curl --request GET \
--url 'http://localhost:8765/api/v1/faction/relation-with?id=2&other_id=1'
Response:
{
"success": true,
"data": {
"goodwill": 0,
"relation_kind": "Neutral"
},
"errors": [],
"warnings": [],
"timestamp": "2025-12-11T19:25:02.2515491Z"
}
GET
/api/v1/faction/def
¶
/api/v1/faction/def
¶
Извлекает необработанные данные определения (Def) для фракции.
Example:
curl --request GET \
--url 'http://localhost:8765/api/v1/faction/def?name=OutlanderCivil'
Response:
{
"success": true,
"data": {
"def_name": "OutlanderCivil",
"pawn_singular": "outlander",
"pawns_plural": "outlanders",
"leader_title": "prime councilor",
"category_tag": "Outlander",
"hostile_to_factionless_humanlikes": false,
"starting_count_at_world_creation": "1",
"permanent_enemy": false,
"natural_enemy": false,
"classic_ideo": true,
"hidden_ideo": false,
"can_siege": true,
"can_stage_attacks": true,
"can_use_avoid_grid": true,
"can_psychic_ritual_siege": false,
"earliest_raid_days": 0.0
},
"errors": [],
"warnings": [],
"timestamp": "2025-12-11T19:34:20.6487856Z"
}
POST
/api/v1/faction/change/goodwill
¶
/api/v1/faction/change/goodwill
¶
Вручную изменяет значение доброй воли между двумя фракциями на указанную величину.
Example:
curl --request POST \
--url http://localhost:8765/api/v1/faction/change/goodwill \
--header 'content-type: application/json' \
--data '{
"id": 0,
"other_id": 2,
"value": -30,
"send_message": false,
"can_send_hostility_letter": false
}'
Request:
{
"id": 0,
"other_id": 2,
"value": -30,
"send_message": false,
"can_send_hostility_letter": false
}
Response:
{
"success": true,
"data": {
"goodwill": 0,
"relation_kind": "Neutral"
},
"errors": [],
"warnings": [],
"timestamp": "2025-12-11T19:25:02.2515491Z"
}
GET
/api/v1/faction/icon
¶
/api/v1/faction/icon
¶
Возвращает визуальную иконку и основной цвет, связанные с конкретной фракцией. Изображение возвращается в виде строки в кодировке Base64 (формат PNG), подходящей для прямого встраивания в веб-интерфейсы.
Example:
curl --request GET \
--url "http://localhost:8765/api/v1/faction/icon?id=12"
Response:
{
"success": true,
"data": {
"image": {
"result": "Success",
"image_base_64": "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AA..."
},
"color": "#9A2A2A"
},
"timestamp": "2025-12-11T19:46:05.7088803Z"
}
POST
/api/v1/faction/goodwill
¶
/api/v1/faction/goodwill
¶
Устанавливает значение доброй воли между двумя фракциями.
Example:
curl --request POST \
--url http://localhost:8765/api/v1/faction/goodwill \
--header 'content-type: application/json' \
--data '{
"id": 0,
"other_id": 2,
"value": 50
}'
Request:
{
"id": 0,
"other_id": 2,
"value": 50
}
Response:
{
"success": true,
"errors": [],
"warnings": [],
"timestamp": "2025-12-08T19:13:29.997162Z"
}
Игра¶
Этот контроллер обрабатывает общие игровые функции.
GET
/api/v1/game/state
¶
/api/v1/game/state
¶
Возвращает текущее состояние игры.
Example:
curl --request GET \
--url http://localhost:8765/api/v1/game/state
Response:
{
"success": true,
"data": {
"game_tick": 120,
"colony_wealth": 4.0,
"colonist_count": 3,
"storyteller": "Cassandra",
"is_paused": true
},
"errors": [],
"warnings": [],
"timestamp": "2025-12-11T19:39:28.6476222Z"
}
POST
/api/v1/game/speed
¶
/api/v1/game/speed
¶
Устанавливает текущую скорость игрового времени.
Info
Значения скорости:
`0`: Пауза
`1`: Обычная скорость
`2`: Быстрая скорость
`3`: Очень быстрая скорость
`4`: Ультра-быстрая (только в режиме разработчика)
Example:
curl --request POST \
--url "http://localhost:8765/api/v1/game/speed?speed=3"
Response:
{
"success": true,
"data": "Game speed set to 3",
"errors": [],
"warnings": [],
"timestamp": "2025-12-14T14:10:05.123Z"
}
GET
/api/v1/game/settings/run-in-background
¶
/api/v1/game/settings/run-in-background
¶
Получает текущее состояние настройки «Работа в фоновом режиме».
Example:
curl --request GET \
--url http://localhost:8765/api/v1/game/settings/run-in-background
Response:
{
"success": true,
"data": true,
"timestamp": "2025-12-11T19:46:05.7088803Z"
}
POST
/api/v1/game/settings/toggle/run-in-background
¶
/api/v1/game/settings/toggle/run-in-background
¶
Переключает или устанавливает настройку «Работа в фоновом режиме». Тело запроса определяет желаемое состояние.
Example:
curl --request POST \
--url http://localhost:8765/api/v1/game/settings/toggle/run-in-background \
--header 'Content-Type: application/json' \
--data 'true'
Response:
{
"success": true,
"data": true,
"timestamp": "2025-12-11T19:46:05.7088803Z"
}
GET
/api/v1/version
¶
/api/v1/version
¶
Возвращает информацию о версии игры, мода REST API и самого API. Эта конечная точка предоставляет важные идентификационные метаданные, которые могут быть использованы для проверки совместимости, отладки и системной документации.
Example:
curl --request GET \
--url http://localhost:8765/api/v1/version
Response:
{
"success": true,
"data": {
"rim_world_version": "1.5.4243",
"mod_version": "1.2.0",
"api_version": "v1"
},
"errors": [],
"warnings": [],
"timestamp": "2025-12-10T18:52:09.0916968Z"
}
GET
/api/v1/mods/info
¶
/api/v1/mods/info
¶
Возвращает информацию об установленных модах.
Example:
curl --request POST \
--url http://localhost:8765/api/v1/mods/info
Response:
{
"success": true,
"data": [
{
"name": "Core",
"package_id": "ludeon.rimworld",
"load_order": 0
},
{
"name": "Royalty",
"package_id": "ludeon.rimworld.royalty",
"load_order": 1
},
{
"name": "Ideology",
"package_id": "ludeon.rimworld.ideology",
"load_order": 2
},
{
"name": "Biotech",
"package_id": "ludeon.rimworld.biotech",
"load_order": 3
},
{
"name": "Anomaly",
"package_id": "ludeon.rimworld.anomaly",
"load_order": 4
},
{
"name": "RIMAPI",
"package_id": "redeyedev.rimapi",
"load_order": 5
}
],
"errors": [],
"warnings": [],
"timestamp": "2025-12-10T18:53:40.5041431Z"
}
POST
/api/v1/mods/configure
¶
/api/v1/mods/configure
¶
Настраивает список активных модов и порядок их загрузки. Передайте массив ID пакетов в том порядке, в котором вы хотите их загрузить. Core (ludeon.rimworld) будет автоматически добавлен в начало, если он отсутствует. Установите restart_game в значение true, чтобы немедленно перезагрузить RimWorld и применить изменения.
Example:
curl --request POST \
--url http://localhost:8765/api/v1/mods/configure \
--header 'content-type: application/json' \
--data '{"package_ids":["brrainz.harmony","ludeon.rimworld","ludeon.rimworld.royalty","ludeon.rimworld.ideology","ludeon.rimworld.biotech","ludeon.rimworld.anomaly","ludeon.rimworld.odyssey","unlimitedhugs.hugslib","redeyedev.rimapi"],"restart_game":true}'
Request Body:
{
"package_ids": [
"brrainz.harmony",
"ludeon.rimworld",
"ludeon.rimworld.royalty",
"ludeon.rimworld.ideology",
"ludeon.rimworld.biotech",
"ludeon.rimworld.anomaly",
"ludeon.rimworld.odyssey",
"unlimitedhugs.hugslib",
"redeyedev.rimapi"
],
"restart_game": true
}
Response:
{
"success": true,
"data": null,
"errors": [],
"warnings": [],
"timestamp": "2026-02-18T18:23:32.0000000Z"
}
POST
/api/v1/select
¶
/api/v1/select
¶
Выбирает конкретный игровой объект (поселенца, здание, предмет и т. д.) на основе его типа и уникального идентификатора.
Example:
curl --request POST \
--url 'http://localhost:8765/api/v1/select?type=pawn&id=443'
Response:
{
"success": true,
"errors": [],
"warnings": [],
"timestamp": "2025-12-08T19:13:29.997162Z"
}
POST
/api/v1/deselect
¶
/api/v1/deselect
¶
Очищает текущее выделение в игре, снимая выделение с любых объектов и возвращая интерфейс в нейтральное состояние.
Example:
curl --request POST \
--url http://localhost:8765/api/v1/deselect
Response:
{
"success": true,
"errors": [],
"warnings": [],
"timestamp": "2025-12-08T19:13:29.997162Z"
}
POST
/api/v1/open-tab
¶
/api/v1/open-tab
¶
Открывает определенную панель информации (вкладку) для выбранного в данный момент поселенца в окне осмотра игры. Эта конечная точка позволяет внешне просматривать подробную информацию о здоровье, снаряжении, потребностях, отношениях и других атрибутах поселенца — дублируя интерфейс вкладок, доступный при ручном осмотре персонажа в игре.
Example:
curl --request POST \
--url 'http://localhost:8765/api/v1/open-tab?name=health'
Response:
{
"success": true,
"errors": [],
"warnings": [],
"timestamp": "2025-12-08T19:13:29.997162Z"
}
GET
/api/v1/def/all
¶
/api/v1/def/all
¶
Возвращает исчерпывающую информацию обо всех записях определений игры (defs) из системы данных RimWorld. Определения — это основные структуры данных, которые определяют почти каждый элемент в игре, включая предметы, здания, существ, ландшафт, исследовательские проекты и многое другое.
Info
- Things Defs
Example
{
"def_name": "Beer",
"label": "beer",
"description": "The first beverage besides water ever consumed by mankind. Beer can taste good, but its main effect is intoxication. Excessive consumption can lead to alcohol blackouts and, over time, addiction.",
"category": "Item",
"thing_class": "ThingWithComps",
"stat_base": {
"max_hit_points": 50.0,
"flammability": 0.5,
"deterioration_rate": 0.5,
"beauty": -4.0,
"market_value": 12.0,
"mass": 0.3,
"nutrition": 0.08
},
"is_weapon": true,
"is_apparel": false,
"is_item": true,
"is_pawn": false,
"is_plant": false,
"is_building": false,
"is_medicine": false,
"is_drug": true,
"market_value": 12.0,
"mass": 0.3,
"max_hit_points": 50.0,
"flammability": 0.5,
"stack_limit": 25,
"nutrition": 0.08,
"work_to_make": 1.0,
"work_to_build": 1.0,
"beauty": -4.0,
"max_health": 0.0,
"armor_rating__sharp": 0.0,
"armor_rating__blunt": 0.0,
"armor_rating__heat": 0.0,
"insulation__cold": 0.0,
"insulation__heat": 0.0
}
- Incidents Defs
Example
{
"def_name": "BloodRain",
"label": "Blood rain",
"base_chance": 0.5,
"base_chance_with_royalty": -1.0,
"letter_def_name": "ThreatBig",
"population_effect": "0",
"min_population": 0,
"min_threat_points": -3.40282347E+38,
"max_threat_points": 3.40282347E+38,
"category": "ThreatBig",
"should_ignore_recent_weighting": false,
"tags": [],
"disallowed_biomes": [],
"allowed_biomes": [],
"require_colonists_present": false
},
- Conditions Defs
- PawnKind Defs
- Trait Defs
- Research Defs
- Hediff Defs
Example
{
"def_name": "GoJuiceHigh",
"label": "High on go-juice",
"description": "Go-juice in the bloodstream. It supercharges combat-related abilities, and instantly increases psyfocus when first injected.",
"hediff_class": "Hediff_High",
"is_addiction": false,
"makes_sick_thought": false,
"severity_per_day": 0.0,
"max_severity": 1.0,
"tendable": false,
"is_bad": false,
"stages": [
{
"min_severity": 0.0,
"death_mtb_days": -1.0,
"pain_factor": 0.1,
"forget_memory_thought_mtb_days": -1.0,
"vomit_mtb_days": -1.0,
"mental_break_mtb_days": -1.0
}
]
}
- Skill Defs
- WorkType Defs
- Need Defs
- Thought Defs
- Stat Defs
- WorldObject Defs
- Biome Defs
- Terrain Defs
- Recipe Defs
- Body Defs
- BodyPart Defs
- Faction Defs
- Sound Defs
- DesignationCategory Defs
- JoyKind Defs
- Meme Defs
- Precept Defs
- Ability Defs
- Gene Defs
- Weather Defs
- RoomRole Defs
- RoomStat Defs
- MentalState Defs
- DrugPolicy Defs
- Plant Defs
- Animal Defs
- Storyteller Defs
Example
{
"def_name": "Cassandra"
},
{
"def_name": "Phoebe"
},
{
"def_name": "Randy"
},
{
"def_name": "Tutor"
}
- Difficulty Defs
Example
{
"def_name": "Peaceful"
},
{
"def_name": "Easy"
},
{
"def_name": "Medium"
},
{
"def_name": "Rough"
},
{
"def_name": "Hard"
},
{
"def_name": "Extreme"
},
{
"def_name": "Custom"
}
Example:
curl --request GET \
--url http://localhost:8765/api/v1/def/all
Response:
{
"success": true,
"data": {
"things_defs": [
{
"def_name": "TextBook",
"label": "textbook",
"description": "A book which focuses on teaching skills.",
"category": "Item",
"thing_class": "Book",
"stat_base": {
"max_hit_points": 60.0,
"deterioration_rate": 5.0,
"mass": 0.5,
"flammability": 1.0,
"beauty": 1.0,
"market_value": 160.0
},
"is_weapon": false,
"is_apparel": false,
"is_item": true,
"is_pawn": false,
"is_plant": false,
"is_building": false,
"is_medicine": false,
"is_drug": false,
"market_value": 160.0,
"mass": 0.5,
"max_hit_points": 60.0,
"flammability": 1.0,
"stack_limit": 1,
"nutrition": 0.0,
"work_to_make": 1.0,
"work_to_build": 1.0,
"beauty": 1.0,
"max_health": 0.0,
"armor_rating__sharp": 0.0,
"armor_rating__blunt": 0.0,
"armor_rating__heat": 0.0,
"insulation__cold": 0.0,
"insulation__heat": 0.0
},
{
<...>
}
],
"incidents_defs": [],
"conditions_defs": [],
"pawn_kind_defs": [],
"trait_defs": [],
"research_defs": [],
"hediff_defs": [],
"skill_defs": [],
"work_type_defs": [],
"need_defs": [],
"stat_defs": [],
"world_object_defs": [],
"biome_defs": [],
"terrain_defs": [],
"recipe_defs": [],
"body_defs": [],
"body_part_defs": [],
"faction_defs": [],
"sound_defs": [],
"designation_category_defs": [],
"joy_kind_defs": [],
"meme_defs": [],
"precept_defs": [],
"ability_defs": [],
"gene_defs": [],
"weather_defs": [],
"room_role_defs": [],
"room_stat_defs": [],
"mental_state_defs": [],
"drug_policy_defs": [],
"plant_defs": [],
"animal_defs": [],
"job_defs": []
},
"errors": [],
"warnings": [],
"timestamp": "2025-12-10T19:09:46.047553Z"
}
GET
/api/v1/datetime
¶
/api/v1/datetime
¶
Возвращает текущую игровую дату и время в соответствии с мировым календарем RimWorld.
Example:
curl --request POST \
--url http://localhost:8765/api/v1/datetime
Response:
{
"success": true,
"data": {
"datetime": "12th of Aprimay, 5500, 17h"
},
"errors": [],
"warnings": [],
"timestamp": "2025-12-10T19:05:35.3244951Z"
}
GET
/api/v1/datetime/tile
¶
/api/v1/datetime/tile
¶
Возвращает текущую игровую дату и время в соответствии с мировым календарем RimWorld.
Example:
curl --request POST \
--url http://localhost:8765/api/v1/datetime
Response:
{
"success": true,
"data": {
"datetime": "12th of Aprimay, 5500, 17h"
},
"errors": [],
"warnings": [],
"timestamp": "2025-12-10T19:05:35.3244951Z"
}
POST
/api/v1/game/select-area
¶
/api/v1/game/select-area
¶
Имитирует действие выделения рамкой в игровом мире (UI). Выбирает все выделяемые объекты (поселенцев, предметы и т. д.) внутри прямоугольника, заданного PositionA и PositionB.
Example:
curl --request POST \
--url http://localhost:8765/api/v1/game/select-area \
--header 'Content-Type: application/json' \
--data '{
"position_a": { "x": 10, "y": 0, "z": 10 },
"position_b": { "x": 20, "y": 0, "z": 20 }
}'
Request Body:
{
"position_a": { "x": 10, "y": 0, "z": 10 },
"position_b": { "x": 20, "y": 0, "z": 20 }
}
Response:
{
"success": true,
"data": "Area selected from (10, 0, 10) to (20, 0, 20). 5 objects selected.",
"errors": [],
"warnings": [],
"timestamp": "2025-12-14T14:18:10.000Z"
}
POST
/api/v1/game/send/letter
¶
/api/v1/game/send/letter
¶
Вручную инициирует игровое уведомление (письмо) с настраиваемым заголовком, текстом и типом (например, нейтральное, негативное, позитивное, угроза).
Example:
curl --request POST \
--url http://localhost:8765/api/v1/game/send/letter
Request:
{
"label": "New Message Label",
"message": "Hello RimWorld!",
"letter_def": "NeutralEvent"
}
Response:
{
"success": true,
"errors": [],
"warnings": [],
"timestamp": "2025-12-08T19:13:29.997162Z"
}
POST
/api/v1/game/save
¶
/api/v1/game/save
¶
Сохраняет текущее состояние игры в файл с указанным именем.
Example:
curl --request POST \
--url "http://localhost:8765/api/v1/game/save?name=MyApiSave"
Response:
{
"success": true,
"errors": [],
"warnings": [],
"timestamp": "2025-12-20T10:00:00.000Z"
}
POST
/api/v1/game/load
¶
/api/v1/game/load
¶
Пытается загрузить состояние игры из файла сохранения с указанным именем.
Example:
curl --request GET \
--url "http://localhost:8765/api/v1/game/load?name=MyApiSave"
Response:
{
"success": true,
"errors": [],
"warnings": [],
"timestamp": "2025-12-20T10:01:00.000Z"
}
POST
/api/v1/game/start/devquick
¶
/api/v1/game/start/devquick
¶
Немедленно запускает новую игру, используя конфигурацию разработчика «быстрый старт», минуя выбор персонажей и места высадки. Это полезно для быстрого тестирования.
Example:
curl --request POST \
--url http://localhost:8765/api/v1/game/start/devquick
Response:
{
"success": true,
"errors": [],
"warnings": [],
"timestamp": "2025-12-20T10:02:00.000Z"
}
POST
/api/v1/game/start
¶
/api/v1/game/start
¶
Эта конечная точка запускает новую игру RimWorld с указанными параметрами конфигурации. Она инициализирует новый игровой мир с заданным рассказчиком, сложностью, настройками карты и параметрами генерации планеты.
Получение доступных опций
Имена рассказчиков, уровни сложности и другие значения определений можно
получить из конечной точки /api/v1/def/all. Эта конечная точка предоставляет
исчерпывающую информацию обо всех игровых определениях, включая:
- Определения рассказчиков
- Настройки сложности
Пример использования:
curl --request GET \
--url http://localhost:8765/api/v1/def/all
Ответ представляет собой большую структуру JSON из игры, она содержит категоризированные определения, которые можно использовать для заполнения параметров этого запроса на запуск игры.
Example:
curl --request POST \
--url http://localhost:8765/api/v1/game/start \
--header 'Content-Type: application/json' \
--data '{
"storyteller_name": "Randy",
"difficulty_name": "Peaceful",
"map_size": 120,
"permadeath": false,
"planet_coverage": 0.1,
"world_seed": "rickroll",
"starting_tile": "7298",
"starting_season": "2",
"overall_rainfall": 2,
"overall_temperature": 2,
"overall_population": 2,
"landmark_density": 2
}'
Request:
{
"storyteller_name": "Randy",
"difficulty_name": "Peaceful",
"map_size": 120,
"permadeath": false,
"planet_coverage": 0.1,
"world_seed": "rickroll",
"starting_tile": "7298",
"starting_season": "2",
"overall_rainfall": 2,
"overall_temperature": 2,
"overall_population": 2,
"landmark_density": 2
}
Response:
{
"success": true,
"errors": [],
"warnings": [],
"timestamp": "2025-12-20T10:03:00.000Z"
}
GET
/api/v1/game/settings
¶
/api/v1/game/settings
¶
Возвращает текущие настройки конфигурации игры. Эта конечная точка предоставляет доступ к различным игровым, аудио, видео и интерфейсным предпочтениям.
Example:
curl --request GET \
--url http://localhost:8765/api/v1/game/settings
Response:
{
"success": true,
"data": {
"language": "English",
"run_in_background": true,
"development_mode": true,
"log_verbose": false,
"temperature_mode": "Celsius",
"autosave_interval": true,
"resolution": "1024x768",
"fullscreen": false,
"user_interface_scale": 1.0,
"custom_cursor_enabled": true,
"hats_only_on_map": false,
"plant_wind_sway": true,
"max_number_of_player_settlements": 1,
"volume_master": 0.6375921,
"volume_game": 0.7051597,
"volume_music": 0.0,
"volume_ambient": 0.6007371,
"pause_on_load": false,
"pause_on_urgent_letter": "MajorThreat",
"automatic_pause_on_letter": false,
"edge_screen_scroll": true,
"map_drag_sensitivity": 1.3,
"zoom_to_mouse": false,
"show_realtime_clock": true,
"resource_readout_categorized": false,
"show_animal_names": false,
"reset_mods_config_on_crash": false,
"texture_compression": 0
},
"errors": [],
"warnings": [],
"timestamp": "2025-12-20T12:30:35.4174593Z"
}
Игровые события¶
Game Events Controller позволяет внешним системам выступать в роли «Рассказчика», принудительно вызывая определенные инциденты немедленно.
Управление повествованием
Это полезно для интеграций с Twitch или менеджеров сценариев, которые хотят запускать рейды, изменения погоды или сброс капсул по запросу.
Поддерживаемые типы событий:
- Угрозы: Рейды, животные-людоеды, заражения.
- Погода: Дождь, туман, затмения, солнечные вспышки.
- Разное: Прибытие торговцев, запуск квестов.
GET
/api/v1/quests
¶
/api/v1/quests
¶
Возвращает список всех активных и завершенных квестов.
Example:
curl --request GET \
--url http://localhost:8765/api/v1/quests?map_id=0
Response:
{
"success": true,
"data": {
"active_quests": [
{
"id": 1,
"quest_def": "OpportunitySite_ItemStash",
"name": "Choma's Shack of Valuables",
"description": "<color=#D09B61FF>Choma</color>, Great Chief of <color=#00BFFFFF>Coalition of Tol</color>, has informed us of a collection of valuable items worth $535 not far from us. The collection consists of:\n\n - The Archaic Psychoid Chronicle (excellent)\r\n - Voro-Harbinger (good)\n\n<color=#D09B61FF>Choma</color> says that there may be an <color=#D46F68FF>unknown threat</color>.",
"state": "Ongoing",
"expiry_hours": -0.000400000019,
"reward": [
"Reward_Items(value $535)\n -Voro-Harbinger (good) $310\n -The Archaic Psychoid Chronicle (excellent) $225"
]
}
],
"historical_quests": [
{
"id": 0,
"quest_def": "Beggars",
"name": "Drifter Hopes for Resources",
"description": "A poor traveler named <color=#D09B61FF>Ace</color> is approaching looking for help. <color=#D09B61FF>Ace</color> is begging for x700 silver. <color=#D09B61FF>Ace</color> wants the silver to pay off a debt to a gang of pirates who are hunting her.\n\nYou can give items to <color=#D09B61FF>Ace</color> by selecting a colonist and right-clicking on her.\n\n<color=#D09B61FF>Ace</color> will move on after <color=#87F6F6FF>1 day</color>.\n\nThis traveler is not part of any faction. If you wish, you can choose to kill, arrest, sell, or harvest her, without diplomatic consequences.",
"state": "EndedSuccess",
"expiry_hours": -0.000400000019,
"reward": []
}
]
},
"errors": [],
"warnings": [],
"timestamp": "2025-12-11T19:43:32.2659508Z"
}
GET
/api/v1/incidents
¶
/api/v1/incidents
¶
Возвращает список произошедших инцидентов.
Example:
curl --request GET \
--url 'http://localhost:8765/api/v1/incidents?map_id=0'
Response:
{
"success": true,
"data": {
"incidents": [
{
"incident_def": "VisitorGroup",
"label": "visitor group",
"category": "None",
"incident_hour": 60.0,
"days_since_occurred": 0.1068
},
{
"incident_def": "GiveQuest_Beggars",
"label": "beggars arrive",
"category": "GiveQuest",
"incident_hour": 8.8,
"days_since_occurred": 2.24013329
}
]
},
"errors": [],
"warnings": [],
"timestamp": "2025-12-10T19:24:31.91622Z"
}
GET
/api/v1/lords
¶
/api/v1/lords
¶
Возвращает подробную информацию обо всех активных процессах «Lord» на указанной карте. В RimWorld «Lord» представляет собой высокоуровневый менеджер ИИ, который координирует группы существ для достижения общей цели — такой, как рейд, посещение или торговля.
Example:
curl --request GET \
--url 'http://localhost:8765/api/v1/lords?map_id=0'
Response:
{
"success": true,
"data": [
{
"load_id": 2,
"faction_name": "Nation of Iralaguaro",
"faction_def_name": "TribeCivil",
"lord_job_type": "LordJob_VisitColony",
"current_toil_name": "LordToil_DefendPoint",
"ticks_in_toil": 2231,
"num_pawns_lost_violently": 0,
"num_pawns_ever_gained": 1,
"owned_pawn_ids": [
"Human8834"
],
"owned_building_ids": [],
"any_active_pawn": true
},
{
"load_id": 3,
"faction_name": "Cancer Unit",
"faction_def_name": "PirateWaster",
"lord_job_type": "LordJob_StageThenAttack",
"current_toil_name": "LordToil_Stage",
"ticks_in_toil": 0,
"num_pawns_lost_violently": 0,
"num_pawns_ever_gained": 1,
"owned_pawn_ids": [
"Human8861"
],
"owned_building_ids": [],
"any_active_pawn": true
}
],
"errors": [],
"warnings": [],
"timestamp": "2025-12-10T19:26:22.0370532Z"
}
GET
/api/v1/incidents/top
¶
/api/v1/incidents/top
¶
Возвращает список инцидентов с наибольшим текущим весом (вероятностью) возникновения на основе текущих настроек Рассказчика и состояния игры. Принимает необязательный параметр limit.
Example:
curl --request GET \
--url "http://localhost:8765/api/v1/incidents/top?limit=3"
Response:
{
"success": true,
"data": [
{
"def_name": "RaidEnemy",
"label": "enemy raid",
"category": "ThreatBig",
"current_weight": 1.2
},
{
"def_name": "TraderCaravan",
"label": "trader caravan",
"category": "Misc",
"current_weight": 0.85
},
{
"def_name": "TravelerGroup",
"label": "travelers",
"category": "Misc",
"current_weight": 0.5
}
],
"timestamp": "2025-12-11T19:46:05.7088803Z"
}
GET
/api/v1/incident/chance
¶
/api/v1/incident/chance
¶
Вычисляет конкретный вес вероятности для одного определения инцидента.
Example:
curl --request GET \
--url "http://localhost:8765/api/v1/incident/chance?incident_def_name=RaidEnemy"
Request Body (or Query Params):
{
"incident_def_name": "RaidEnemy"
}
Response:
{
"success": true,
"data": {
"value": 1.2
},
"timestamp": "2025-12-11T19:46:05.7088803Z"
}
POST
/api/v1/incident/trigger
¶
/api/v1/incident/trigger
¶
Вручную немедленно запускает определенный игровой инцидент (событие).
Example:
curl --request POST \
--url http://localhost:8765/api/v1/incident/trigger \
--header 'content-type: application/json' \
--data '{
"name": "RaidEnemy",
"map_id": "0",
"incident_parms": {
"points": 300.0,
"forced": true,
"faction": "Pirate",
"send_letter": true,
"custom_letter_label": "API Raid Test",
"custom_letter_text": "Test raid triggered via API"
}
}'
Request:
{
"name": "RaidEnemy",
"map_id": "0",
"incident_parms": {
"points": 300.0,
"forced": true,
"faction": "Pirate",
"send_letter": true,
"custom_letter_label": "API Raid Test",
"custom_letter_text": "Test raid triggered via API"
}
}
Response:
{
"success": true,
"errors": [],
"warnings": [],
"timestamp": "2025-12-08T19:13:29.997162Z"
}
Общие настройки¶
General Controller служит точкой входа для различных вспомогательных функций, которые не вписываются в конкретные категории сущностей. Он обрабатывает «мета-слой» игрового клиента.
Основные возможности
- Управление камерой: Панорамирование, масштабирование и фокусировка вида игрока.
- Управление интерфейсом: Переключение видимости интерфейса или открытие определенных меню.
- Управление временем: Настройка множителя скорости игры.
Глобальная карта¶
Работает на планетарном масштабе. Этот контроллер взаимодействует с объектами, которые существуют на карте мира, а не на локальной карте колонии.
- Караваны: Отслеживание перемещения, ожидаемого времени прибытия (ETA) и инвентаря путешествующих групп.
- Поселения: Поиск баз других фракций и мест выполнения квестов.
- Гексы (Tiles): Запрос данных о биоме, температуре и ландшафте для конкретных секторов мира.
GET
/api/v1/world/caravans
¶
/api/v1/world/caravans
¶
Возвращает список всех активных караванов, находящихся в данный момент на карте мира. Сюда входят караваны игрока и видимые караваны других фракций. Возвращает подробности о местоположении, пункте назначения и содержимом (существа/предметы).
Example:
curl --request GET \
--url http://localhost:8765/api/v1/world/caravans
Response:
{
"success": true,
"data": [
{
"id": 11,
"name": "Rosa's caravan",
"is_player_controlled": true,
"position": {
"x": 1,
"y": 65,
"z": -75
},
"tile": 232,
"pawns": [
{
"id": 74,
"name": "Rosa"
}
],
"items": [
{
"thing_id": 74,
"def_name": "Human",
"label": "Rosa<color=#999999FF>, Explorer</color>",
"categories": [],
"position": {
"x": 143,
"y": 0,
"z": 62
},
"stack_count": 1,
"market_value": 840.0,
"is_forbidden": false,
"quality": -1,
"hit_points": 0,
"max_hit_points": 0
}
],
"mass_usage": 0.75,
"mass_capacity": 28.0,
"forageability": "Forageable",
"visibility": "0.16"
}
],
"errors": [],
"warnings": [],
"timestamp": "2025-12-13T11:01:59.5952054Z"
}
GET
/api/v1/world/settlements
¶
/api/v1/world/settlements
¶
Возвращает список всех постоянных поселений (баз) на карте мира. Сюда входят колонии игрока и базы других фракций. Полезно для поиска торговых партнеров или целей для рейдов.
Example:
curl --request GET \
--url http://localhost:8765/api/v1/world/settlements
Response:
{
"success": true,
"data": [
{
"id": 0,
"name": "Planeton",
"tile": 2241,
"faction": {
"load_id": 0,
"def_name": "OutlanderCivil",
"name": "Dinium",
"is_player": false,
"leader_title": "Spiritual Bodhisattva",
"leader_id": 10
}
},
{
"id": 1,
"name": "Borne",
"tile": 1031,
"faction": {
"load_id": 1,
"def_name": "TribeCivil",
"name": "Union of Cheñoalo",
"is_player": false,
"leader_title": "Anima Chief",
"leader_id": 19
}
},
{
"id": 2,
"name": "Carsium",
"tile": 387,
"faction": {
"load_id": 2,
"def_name": "Empire",
"name": "Imperium of God",
"is_player": false,
"leader_title": "High Stellarch",
"leader_id": 25
}
},
{
"id": 3,
"name": "Colony",
"tile": 232,
"faction": {
"load_id": 14,
"def_name": "PlayerColony",
"name": "New Arrivals",
"is_player": true,
"leader_title": "Spirit Curate",
"leader_id": 0
}
}
],
"errors": [],
"warnings": [],
"timestamp": "2025-12-13T11:02:36.2212158Z"
}
GET
/api/v1/world/sites
¶
/api/v1/world/sites
¶
Возвращает список временных объектов мира. Сюда входят места выполнения квестов, лагеря бандитов, тайники с предметами, засады и другие локации, созданные событиями.
Example:
curl --request GET \
--url http://localhost:8765/api/v1/world/sites
Response:
{
"success": true,
"data": [
{
"id": 12,
"name": "outpost",
"tile": 712,
"faction": {
"load_id": 7,
"def_name": "PirateWaster",
"name": "Gas Crew",
"is_player": false,
"leader_title": "Moral Thug",
"leader_id": 59
}
},
{
"id": 13,
"name": "bandit camp",
"tile": 2720,
"faction": {
"load_id": 7,
"def_name": "PirateWaster",
"name": "Gas Crew",
"is_player": false,
"leader_title": "Moral Thug",
"leader_id": 59
}
}
],
"errors": [],
"warnings": [],
"timestamp": "2025-12-13T11:04:31.8428299Z"
}
GET
/api/v1/world/tile
¶
/api/v1/world/tile
¶
Возвращает подробную экологическую и географическую информацию о конкретном секторе мира (tile) на основе его ID. Возвращает данные о биоме, температуре, высоте над уровнем моря, а также о дорогах и реках.
Example:
curl --request GET \
--url "http://localhost:8765/api/v1/world/tile?id=12345"
Response:
{
"success": true,
"data": {
"id": 232,
"biome": "Tundra",
"elevation": 1592.0,
"temperature": -4.1,
"rainfall": 269.0,
"hilliness": "SmallHills",
"roads": [
"DirtRoad",
"DirtRoad"
]
},
"errors": [],
"warnings": [],
"timestamp": "2025-12-13T11:05:29.488063Z"
}
GET
/api/v1/world/caravan/path
¶
/api/v1/world/caravan/path
¶
Возвращает текущий статус перемещения и запланированный путь для конкретного каравана в мире.
Example:
curl --request GET \
--url "http://localhost:8765/api/v1/world/caravan/path?caravan_id=12"
Response:
{
"success": true,
"data": {
"id": 12,
"moving": true,
"current_tile": 150,
"next_tile": 151,
"progress": 0.45,
"destination_tile": 180,
"path": [
151,
152,
160,
180
]
},
"timestamp": "2025-12-11T19:46:05.7088803Z"
}
GET
/api/v1/world/player/settlements
¶
/api/v1/world/player/settlements
¶
Возвращает список всех поселений, принадлежащих фракции игрока.
Example:
curl --request GET \
--url http://localhost:8765/api/v1/world/player/settlements
Response:
{
"success": true,
"data": [
{
"id": 123,
"name": "Player's Hope",
"tile": 5678,
"faction": {
"load_id": 3,
"def_name": "PlayerColony",
"name": "New Arrivals",
"is_player": true
}
}
],
"errors": [],
"warnings": [],
"timestamp": "2026-01-04T12:00:00.000Z"
}
GET
/api/v1/world/grid/area
¶
/api/v1/world/grid/area
¶
Возвращает список секторов мира в пределах заданного радиуса от центрального сектора.
Example:
curl --request GET \
--url 'http://localhost:8765/api/v1/world/grid/area?tile_id=12345&radius=5'
Response:
{
"success": true,
"data": [
{
"id": 12345,
"biome": "Tundra",
"elevation": 100.0,
"temperature": -10.0,
"rainfall": 200.0,
"hilliness": "SmallHills",
"roads": [],
"rivers": [],
"lat": 60.0,
"lon": -30.0,
"is_polluted": false,
"pollution": 0.0
}
],
"errors": [],
"warnings": [],
"timestamp": "2026-01-04T12:00:00.000Z"
}
GET
/api/v1/world/tile/coordinates
¶
/api/v1/world/tile/coordinates
¶
Возвращает широту и долготу для конкретного ID сектора.
Example:
curl --request GET \
--url 'http://localhost:8765/api/v1/world/tile/coordinates?id=12345'
Response:
{
"success": true,
"data": {
"lat": 60.0,
"lon": -30.0
},
"errors": [],
"warnings": [],
"timestamp": "2026-01-04T12:00:00.000Z"
}
GET
/api/v1/world/tile/details
¶
/api/v1/world/tile/details
¶
Возвращает подробную информацию о конкретном секторе.
Example:
curl --request GET \
--url 'http://localhost:8765/api/v1/world/tile/details?id=12345'
Response:
{
"success": true,
"data": {
"id": 12345,
"biome": "Tundra",
"elevation": 100.0,
"temperature": -10.0,
"rainfall": 200.0,
"hilliness": "SmallHills",
"roads": [
"279644:StoneRoad",
"279641:StoneRoad"
],
"rivers": [
"279640:Creek",
"279686:Creek"
],
"lat": 60.0,
"lon": -30.0,
"is_polluted": false,
"pollution": 0.0,
"time_zone": "2",
"forageability": 0.5,
"growing_period": "Year-round",
"movement_difficulty": 1.0,
"stone_types": [
"Sandstone",
"Granite"
]
},
"errors": [],
"warnings": [],
"timestamp": "2026-01-04T12:00:00.000Z"
}
GET
/api/v1/world/grid
¶
/api/v1/world/grid
¶
Возвращает всю сетку мира, предоставляя список всех секторов с их основной информацией.
Example:
curl --request GET \
--url http://localhost:8765/api/v1/world/grid
Response:
{
"success": true,
"data": [
{
"id": 0,
"biome": "Ocean",
"elevation": -100.0,
"temperature": 10.0,
"rainfall": 500.0,
"hilliness": "Flat",
"roads": [
"279644:StoneRoad",
"279641:StoneRoad"
],
"rivers": [
"279640:Creek",
"279686:Creek"
],
"lat": -90.0,
"lon": 0.0,
"is_polluted": false,
"pollution": 0.0
}
],
"errors": [],
"warnings": [],
"timestamp": "2026-01-04T12:00:00.000Z"
}
Изображения¶
Предоставляет конечные точки для извлечения визуальных ресурсов и текстур из игры. Это необходимо для внешних инструментов, которым нужно визуально отрисовывать игровые карты или предметы, получая реальные текстуры, используемые в RimWorld.
GET
/api/v1/terrain/image
¶
/api/v1/terrain/image
¶
Возвращает изображение текстуры для конкретного определения ландшафта в формате Base64.
Параметр name соответствует defName ландшафта (например, Soil, WaterDeep, Sand).
Example:
curl --request GET \
--url "http://localhost:8765/api/v1/terrain/image?name=Soil"
Response:
{
"success": true,
"data": {
"name": "Soil",
"image_base64": "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0..."
},
"errors": [],
"warnings": [],
"timestamp": "2025-12-14T14:15:30.000Z"
}
GET
/api/v1/item/image
¶
/api/v1/item/image
¶
Возвращает изображение конкретного игрового предмета в кодировке base64.
Example:
curl --request GET \
--url 'http://localhost:8765/api/v1/item/image?name=ComponentIndustrial'
Response:
{
"success": true,
"data": {
"result": "success",
"image_base64": "..."
},
"errors": [],
"warnings": [],
"timestamp": "2025-12-10T19:31:48.7480326Z"
}
POST
/api/v1/item/change/image
¶
/api/v1/item/change/image
¶
Загружает и применяет новую пользовательскую текстуру к конкретному игровому предмету или объекту. Принимает данные изображения в кодировке base64 вместе с различными свойствами рендеринга, такими как масштаб, направление взгляда и маскирование.
Example:
curl --request POST \
--url http://localhost:8765/api/v1/item/change/image \
--header 'content-type: application/json' \
--data '{
"Name": "WoodLog",
"Image": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII=",
"Direction": "South",
"Offset": "0,0,0",
"Scale": "1.0",
"ThingType": "Item",
"IsStackable": "true",
"MaskImage": "",
"UpdateItemIndex": 0
}'
Request:
{
"Name": "WoodLog",
"Image": "<base64_encoded_string>",
"Direction": "South",
"Offset": "0,0,0",
"Scale": "1.0",
"ThingType": "Item",
"IsStackable": "true",
"MaskImage": "<optional_base64_mask>",
"UpdateItemIndex": 0
}
Response:
{
"success": true,
"errors": [],
"warnings": [],
"timestamp": "2026-02-21T20:15:30.000Z"
}
Lord Controller¶
Lord Controller отвечает за управление лордами ИИ (AI Lords), которые являются высокоуровневыми структурами ИИ, управляющими группами пешек.
POST
/api/v1/lords/create
¶
/api/v1/lords/create
¶
Создать новый Lord ИИ с указанной задачей.
Request:
{
"faction": "AncientsHostile",
"pawn_ids": [39395],
"job_type": "AssaultThings",
"target_ids": [39387]
}
Response:
{
"success":true,
"data":
{
"lord_id":0,
"member_count":1
},
"errors":[],
"warnings":[],
"timestamp":"2025-12-31T11:39:54.3651293Z"
}
Map Controller¶
Сосредоточен на Локальной карте, выбранной по map_id. Он управляет физическим ландшафтом и условиями в непосредственной близости от поселения.
Scope
Этот контроллер имеет дело с окружающей средой, а не с сущностями внутри неё. Для пешек или предметов см. их соответствующие контроллеры.
Возможности:
- Изменение локальной погоды.
- Запрос размера и границ карты.
- Изменение ландшафта (установка полов, очистка от мусора).
GET
/api/v1/map/things
¶
/api/v1/map/things
¶
Возвращает полный список всех объектов (things), присутствующих на текущей карте.
Example:
curl --request GET \
--url http://localhost:8765/api/v1/map/things?map_id=0
Response:
{
"success": true,
"data": [
{
"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
},
{
"thing_id": 4895,
"def_name": "MealSurvivalPack",
"label": "packaged survival meal",
"categories": [
"FoodMeals"
],
"position": {
"x": 13,
"y": 0,
"z": 62
},
"stack_count": 1,
"market_value": 24.0,
"is_forbidden": true,
"quality": -1,
"hit_points": 50,
"max_hit_points": 50
},
<...>
],
"errors": [],
"warnings": [],
"timestamp": "2025-12-11T19:46:05.7088803Z"
}
GET
/api/v1/maps
¶
/api/v1/maps
¶
Получает список всех загруженных в данный момент карт в игровой сессии.
Example:
curl --request GET \
--url http://localhost:8765/api/v1/maps
Response:
{
"success": true,
"data": [
{
"id": 0,
"index": 0,
"seed": 16622162,
"faction_id": "14",
"is_player_home": true,
"is_pocket_map": false,
"is_temp_incident_map": false,
"size": "(150, 1, 150)"
}
],
"errors": [],
"warnings": [],
"timestamp": "2025-12-10T19:38:45.9289233Z"
}
GET
/api/v1/map/pawns
¶
/api/v1/map/pawns
¶
Получает список всех поселенцев/пешек, присутствующих на указанной карте. Возвращает ключевую информацию о состоянии, такую как здоровье, настроение и положение для каждого.
curl --request GET \
--url 'http://localhost:8765/api/v1/map/pawns?mapId=0'
Response:
{
"success": true,
"data": [
{
"id": 148,
"name": "Val",
"gender": "Female",
"age": 25,
"health": 1.0,
"mood": 0.85,
"hunger": 0.2,
"position": {
"x": 102,
"y": 0,
"z": 115
}
},
{
"id": 149,
"name": "Stumpy",
"gender": "Male",
"age": 42,
"health": 0.65,
"mood": 0.4,
"hunger": 0.8,
"position": {
"x": 105,
"y": 0,
"z": 112
}
}
],
"errors": [],
"warnings": [],
"timestamp": "2025-12-31T14:30:00.0000000Z"
}
GET
/api/v1/map/terrain
¶
/api/v1/map/terrain
¶
Возвращает полные данные о сетке ландшафта и пола для указанной карты.
Примечание к формату данных: Для оптимизации пропускной способности эта конечная точка использует кодирование длин серий (Run-Length Encoding, RLE) и палитру (Palette Mapping).
palette: Список уникальных определений ландшафта (например, "Soil", "WaterDeep").grid: Сжатый список целых чисел, представляющих ячейки карты. Формат — пары[count, palette_index].
Пример декодирования: Сетка [10, 0, 5, 2] означает "10 ячеек palette[0], за которыми следуют 5 ячеек palette[2]".
Example:
curl --request GET \
--url http://localhost:8765/api/v1/map/terrain?map_id=0
Response:
{
"success": true,
"data": {
"width": 250,
"height": 250,
"palette": [
"Soil",
"Gravel",
"SoilRich",
"WaterDeep"
],
"grid": [
22,
0,
5,
1,
500,
0,
10,
3
],
"floor_palette": [
"WoodPlankFloor",
"TileSandstone"
],
"floor_grid": [
62400,
0,
50,
1,
50,
2
]
},
"errors": [],
"warnings": [],
"timestamp": "2025-12-14T13:12:28.8217513Z"
}
GET
/api/v1/map/things-at
¶
/api/v1/map/things-at
¶
Возвращает список объектов, расположенных в определенной ячейке по её координатам.
Примечание: В отличие от стандартных GET-запросов, эта конечная точка требует тело JSON, содержащее координаты.
Example:
curl --request GET \
--url http://localhost:8765/api/v1/map/things-at \
--header 'Content-Type: application/json' \
--data '{
"map_id": 0,
"position": { "x": 15, "y": 0, "z": 25 }
}'
Request Body:
{
"map_id": 0,
"position": {
"x": 15,
"y": 0,
"z": 25
}
}
Response:
{
"success": true,
"data": [
{
"thing_id": 4895,
"def_name": "MealSurvivalPack",
"label": "packaged survival meal",
"position": { "x": 15, "y": 0, "z": 25 },
"stack_count": 10
}
],
"errors": [],
"warnings": [],
"timestamp": "2025-12-14T13:40:00.000Z"
}
GET
/api/v1/map/things/radius
¶
/api/v1/map/things/radius
¶
Возвращает список всех объектов, найденных в указанном радиусе вокруг центральной точки. Полезно для поиска ближайших ресурсов или врагов.
Example:
curl --request GET \
--url "http://localhost:8765/api/v1/map/things/radius?map_id=0&x=120&z=120&radius=10"
Response:
{
"success": true,
"data": [
{
"thing_id": 2328,
"def_name": "ChunkGranite",
"label": "granite chunk",
"position": { "x": 121, "y": 0, "z": 119 },
"stack_count": 1
},
{
"thing_id": 5012,
"def_name": "Steel",
"label": "steel",
"position": { "x": 118, "y": 0, "z": 122 },
"stack_count": 35
}
],
"errors": [],
"warnings": [],
"timestamp": "2025-12-14T13:42:00.000Z"
}
GET
/api/v1/map/ore
¶
/api/v1/map/ore
¶
Возвращает сжатый словарь всех залежей руды на карте.
Структура:
* Ключи — это имена определений руды (например, "MineableSteel").
* cells содержит индексы ячеек карты, где находится руда.
* hp содержит текущее здоровье блока руды в соответствующем индексе (параллельные массивы).
Example:
curl --request GET \
--url "http://localhost:8765/api/v1/map/ore?map_id=0"
Response:
{
"success": true,
"data": {
"map_width": 250,
"ores": {
"MineableSteel": {
"max_hp": 1500,
"cells": [
12500,
12501,
12502
],
"hp": [
1500,
1500,
850
]
},
"MineableGold": {
"max_hp": 500,
"cells": [
3005
],
"hp": [
500
]
}
}
},
"timestamp": "2025-12-11T19:46:05.7088803Z"
}
GET
/api/v1/map/fog-grid
¶
/api/v1/map/fog-grid
¶
Извлекает сетку видимости (туман войны) для текущей карты.
fog_data — это плоское строковое представление сетки, где Index = (z * Width) + x.
Example:
curl --request GET \
--url "http://localhost:8765/api/v1/map/fog-grid?map_id=0"
Response:
{
"success": true,
"data": {
"map_id": 0,
"width": 250,
"height": 250,
"fog_data": "AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+fw=="
},
"timestamp": "2025-12-11T19:46:05.7088803Z"
}
GET
/api/v1/map/plants
¶
/api/v1/map/plants
¶
Возвращает список всех растений, расположенных на указанной карте. Сюда входят дикие растения (деревья, кусты, трава) и посеянные культуры.
Example:
curl --request GET \
--url "http://localhost:8765/api/v1/map/plants?map_id=0"
Response:
{
"success": true,
"data": [
{
"thing_id": 1024,
"def_name": "Plant_TreeOak",
"label": "oak tree",
"position": { "x": 45, "y": 0, "z": 88 },
"growth": 0.85
},
{
"thing_id": 1025,
"def_name": "Plant_Potato",
"label": "potato plant",
"position": { "x": 50, "y": 0, "z": 50 },
"growth": 0.45
}
],
"errors": [],
"warnings": [],
"timestamp": "2025-12-14T14:12:00.000Z"
}
GET
/api/v1/map/weather
¶
/api/v1/map/weather
¶
Получает текущие погодные условия и температуру для текущей активной карты (карты, которую просматривает игрок).
Example:
curl --request GET \
--url 'http://localhost:8765/api/v1/map/weather?map_id=0'
Response:
{
"success": true,
"data": {
"weather": "Rain",
"temperature": 19.7876511
},
"errors": [],
"warnings": [],
"timestamp": "2025-12-10T19:39:54.5380426Z"
}
GET
/api/v1/map/animals
¶
/api/v1/map/animals
¶
Получает список всех животных, присутствующих в данный момент на активной карте. Сюда входят как дикие животные, так и прирученные/собственные (питомцы, скот, животные караванов).
Example:
curl --request GET \
--url 'http://localhost:8765/api/v1/map/animals?map_id=0'
Response:
{
"success": true,
"data": [
{
"id": 3633,
"name": "Colin",
"def": "Yak",
"faction": "PlayerColony",
"position": {
"x": 67,
"y": 119,
"z": 0
},
"pregnant": false
},
{
"id": 8547,
"name": "Hare",
"def": "Hare",
"position": {
"x": 50,
"y": 40,
"z": 0
},
"pregnant": false
}
],
"errors": [],
"warnings": [],
"timestamp": "2025-12-10T19:41:34.3358819Z"
}
GET
/api/v1/map/zones
¶
/api/v1/map/zones
¶
Получает список всех определенных зон и областей на активной карте. Зоны назначаются игроком, а области имеют конкретное назначение, такие как постройка крыши, очистка от загрязнения и т. д.
Example:
curl --request GET \
--url 'http://localhost:8765/api/v1/map/zones?map_id=0'
Response:
{
"success": true,
"data": {
"zones": [],
"areas": [
{
"id": 0,
"cells_count": 0,
"label": "Home",
"base_label": "Home",
"type": "Area_Home"
},
{
"id": 1,
"cells_count": 0,
"label": "Build roof",
"base_label": "Build roof",
"type": "Area_BuildRoof"
},
{
"id": 2,
"cells_count": 0,
"label": "No roof",
"base_label": "No roof",
"type": "Area_NoRoof"
},
{
"id": 3,
"cells_count": 0,
"label": "Snow clear",
"base_label": "Snow clear",
"type": "Area_SnowClear"
},
{
"id": 4,
"cells_count": 0,
"label": "Pollution clear",
"base_label": "Pollution clear",
"type": "Area_PollutionClear"
},
{
"id": 5,
"cells_count": 0,
"label": "Area 1",
"base_label": "Area 1",
"type": "Area_Allowed"
}
]
},
"errors": [],
"warnings": [],
"timestamp": "2025-12-10T19:42:50.3515476Z"
}
GET
/api/v1/map/building/info
¶
/api/v1/map/building/info
¶
Получает подробную информацию о конкретном здании на активной карте по его уникальному идентификатору.
Example:
curl --request GET \
--url 'http://localhost:8765/api/v1/building/info?id=51058'
Response:
{
"success": true,
"errors": [],
"warnings": [],
"timestamp": "2025-12-10T19:53:16.733319Z"
}
POST
/api/v1/map/weather/change
¶
/api/v1/map/weather/change
¶
Вручную изменяет текущие погодные условия на активной карте.
Example:
curl --request POST \
--url 'http://localhost:8765/api/v1/map/weather/change?map_id=0&name=Clear'
Response:
{
"success": true,
"errors": [],
"warnings": [],
"timestamp": "2025-12-10T19:53:16.733319Z"
}
GET
/api/v1/map/power/info
¶
/api/v1/map/power/info
¶
Предоставляет подробную информацию об энергосети на текущей карте, включая генераторы, аккумуляторы, потребителей, баланс сети и статус потока энергии.
Example:
curl --request GET \
--url http://localhost:8765/api/v1/map/power/info?map_id=0
Response:
{
"success": true,
"data": {
"produce_power_buildings": [],
"consume_power_buildings": [],
"store_power_buildings": [],
"current_power": 0,
"total_possible_power": 0,
"currently_stored_power": 0,
"total_power_storage": 0,
"total_consumption": 0,
"consumption_power_on": 0
},
"errors": [],
"warnings": [],
"timestamp": "2025-12-11T19:48:05.7377482Z"
}
GET
/api/v1/map/creatures/summary
¶
/api/v1/map/creatures/summary
¶
Возвращает сводный подсчет и классификацию всех существ (пешек) на текущей карте.
Example:
curl --request POST \
--url http://localhost:8765/api/v1/map/creatures/summary?map_id=0
Response:
{
"success": true,
"data": {
"colonists_count": 3,
"prisoners_count": 0,
"enemies_count": 0,
"animals_count": 5,
"insectoids_count": 0,
"mechanoids_count": 0
},
"errors": [],
"warnings": [],
"timestamp": "2025-12-11T19:49:21.2287056Z"
}
GET
/api/v1/map/farm/summary
¶
/api/v1/map/farm/summary
¶
Получает сводку по всей фермерской деятельности на текущей карте, включая посаженные культуры, стадии роста, плодородие почвы и ожидаемую урожайность.
Example:
curl --request POST \
--url http://localhost:8765/api/v1/map/farm/summary?map_id=0
Response:
{
"success": true,
"data": {
"total_growing_zones": 0,
"total_plants": 0,
"total_expected_yield": 0,
"total_infected_plants": 0,
"growth_progress_average": 0.0,
"crop_types": []
},
"errors": [],
"warnings": [],
"timestamp": "2025-12-11T19:52:41.9403791Z"
}
POST
/api/v1/map/zone/growing
¶
/api/v1/map/zone/growing
¶
Создать новую зону выращивания для определенного типа растений в списке целевых ячеек. Ячейки, находящиеся вне границ или уже занятые другими зонами, будут пропущены.
Example:
curl --request POST \
--url 'http://localhost:8765/api/v1/map/zone/growing' \
--header 'content-type: application/json' \
--data '{
"map_id": 0,
"plant_def": "Plant_Rice",
"point_a": {"x":120,"y":0,"z":130},
"point_b": {"x":125,"y":0,"z":135}
}'
Request:
{
"map_id": 0,
"plant_def": "Plant_Rice",
"point_a": {"x":120,"y":0,"z":130},
"point_b": {"x":125,"y":0,"z":135}
}
Response:
{
"success": true,
"data": {
"zone": {
"id": 5,
"cells_count": 36,
"label": "Growing zone 1",
"base_label": "Growing zone"
},
"plant_def_name": "Plant_Rice",
"plant_count": 6,
"def_expected_yield": 174,
"expected_yield": 0,
"infected_count": 0,
"growth_progress": 0.202831179,
"is_sowing": true,
"soil_type": "Mud",
"fertility": 0.6,
"has_dying": false,
"has_dying_from_pollution": false,
"has_dying_from_no_pollution": false
},
"errors": [],
"warnings": [],
"timestamp": "2026-03-28T13:51:53.9267279Z"
}
GET
/api/v1/map/rooms
¶
/api/v1/map/rooms
¶
Возвращает список всех комнат на карте с их характеристиками, такими как роль, температура и количество ячеек.
Example:
curl --request POST \
--url http://localhost:8765/api/v1/map/rooms?map_id=0
Response:
{
"success": true,
"data": {
"rooms": [
{
"id": 5,
"role_label": "none",
"temperature": 4.217273,
"cells_count": 0,
"touches_map_edge": false,
"is_prison_cell": false,
"is_doorway": false,
"open_roof_count": 0,
"contained_beds_ids": []
},
{
"id": 61,
"role_label": "bedroom",
"temperature": 4.217273,
"cells_count": 6,
"touches_map_edge": false,
"is_prison_cell": false,
"is_doorway": false,
"open_roof_count": 6,
"contained_beds_ids": [
8408
]
}
]
},
"errors": [],
"warnings": [],
"timestamp": "2025-12-11T19:57:48.1578638Z"
}
GET
/api/v1/map/buildings
¶
/api/v1/map/buildings
¶
Получает исчерпывающий список всех зданий и сооружений, присутствующих на активной карте.
Example:
curl --request GET \
--url 'http://localhost:8765/api/v1/map/buildings?map_id=0'
Response:
{
"success": true,
"data": [
{
"id": 8880,
"def": "Turret_MiniTurret",
"label": "steel mini-turret",
"position": {
"x": 60,
"y": 0,
"z": 86
},
"type": "Building_TurretGun"
}
],
"errors": [],
"warnings": [],
"timestamp": "2025-12-10T19:46:33.2115192Z"
}
POST
/api/v1/map/destroy/corpses
¶
/api/v1/map/destroy/corpses
¶
Уничтожает все трупы на карте.
Example:
curl --request POST \
--url http://localhost:8765/api/v1/map/destroy/corpses
POST
/api/v1/map/destroy/forbidden
¶
/api/v1/map/destroy/forbidden
¶
Уничтожает все запрещенные предметы на карте.
Example:
curl --request POST \
--url http://localhost:8765/api/v1/map/destroy/forbidden
POST
/api/v1/map/destroy/rect
¶
/api/v1/map/destroy/rect
¶
Уничтожает все объекты в указанном прямоугольнике на карте.
Example:
curl --request POST \
--url http://localhost:8765/api/v1/map/destroy/rect \
--header 'content-type: application/json' \
--data '{
"map_id": 0,
"point_a": {"x": 7, "y": 0, "z": 7},
"point_b": {"x": 32, "y": 0, "z": 32}
}'
Request:
{
"map_id": 0,
"point_a": {"x": 7, "y": 0, "z": 7},
"point_b": {"x": 32, "y": 0, "z": 32}
}
Response:
{
"success": true,
"errors": [],
"warnings": [],
"timestamp": "2025-12-31T11:04:27.9729153Z"
}
POST
/api/v1/map/repair/positions
¶
/api/v1/map/repair/positions
¶
Ремонтирует предметы, размещенные по предоставленному списку позиций.
POST
/api/v1/map/repair/rect
¶
/api/v1/map/repair/rect
¶
Ремонтирует все подлежащие ремонту предметы в указанном прямоугольнике на карте.
Example:
curl --request POST \
--url http://localhost:8765/api/v1/map/repair/rect \
--header 'content-type: application/json' \
--data '{
"map_id": 0,
"point_a": {"x": 7, "y": 0, "z": 7},
"point_b": {"x": 32, "y": 0, "z": 32}
}'
Request:
{
"map_id": 0,
"point_a": {"x": 7, "y": 0, "z": 7},
"point_b": {"x": 32, "y": 0, "z": 32}
}
Response:
{
"success": true,
"errors": [],
"warnings": [],
"timestamp": "2025-12-31T11:04:27.9729153Z"
}
POST
/api/v1/map/droppod
¶
/api/v1/map/droppod
¶
Создает десантную капсулу (drop pod) в указанной позиции с заданным содержимым.
Example:
curl --request POST \
--url 'http://localhost:8765/api/v1/map/droppod' \
--header 'content-type: application/json' \
--data '{
"map_id": 0,
"position": {"x": 15, "y": 0, "z": 15},
"items": [{"def_name": "ComponentIndustrial", "quality": 3, "count": 1}],
"open_delay": true
}'
Request:
{
"map_id": 0,
"position": {"x": 15, "y": 0, "z": 15},
"items": [{"def_name": "ComponentIndustrial", "quality": 3, "count": 1}],
"open_delay": true
}
Response:
{
"success": true,
"errors": [],
"warnings": [],
"timestamp": "2025-12-31T11:04:27.9729153Z"
}
POST
/api/v1/map/zone/stockpile
¶
/api/v1/map/zone/stockpile
¶
Создать новую зону склада на карте с определенными границами координат и фильтрами предметов.
Example:
curl --request POST \
--url 'http://localhost:8765/api/v1/map/zone/stockpile' \
--header 'content-type: application/json' \
--data '{
"map_id": 0,
"point_a": {"x": 10, "y": 0, "z": 10},
"point_b": {"x": 15, "y": 0, "z": 15},
"name": "High Quality Steel",
"priority": 4,
"allowed_item_defs": ["Steel"],
"allowed_item_categories": [],
"min_hit_points_percent": 0.5,
"max_hit_points_percent": 1.0,
"min_quality": "Normal",
"max_quality": "Legendary"
}'
Request:
{
"map_id": 0,
"point_a": {"x": 10, "y": 0, "z": 10},
"point_b": {"x": 15, "y": 0, "z": 15},
"name": "High Quality Steel",
"priority": 4,
"allowed_item_defs": ["Steel"],
"allowed_item_categories": [],
"min_hit_points_percent": 0.5,
"max_hit_points_percent": 1.0,
"min_quality": "Normal",
"max_quality": "Legendary"
}
Response:
{
"success": true,
"data": {
"zone_id": 6,
"name": "Stockpile 3",
"cells_count": 36,
"priority": 0,
"success": true,
"message": "Stockpile 'Stockpile 3' created successfully with 36 cells."
},
"errors": [],
"warnings": [],
"timestamp": "2026-03-28T13:52:52.7387655Z"
}
POST
/api/v1/map/zone/stockpile/update
¶
/api/v1/map/zone/stockpile/update
¶
Обновить параметры существующей зоны склада, включая разрешенные предметы, категории и фильтры качества/ОЗ.
Example:
curl --request POST \
--url 'http://localhost:8765/api/v1/map/zone/stockpile/update' \
--header 'content-type: application/json' \
--data '{
"zone_id": 142,
"name": "Updated Steel & Wood",
"priority": 5,
"add_item_defs": ["WoodLog"],
"remove_item_defs": [],
"add_item_categories": [],
"remove_item_categories": [],
"min_hit_points_percent": 0.1,
"max_hit_points_percent": 1.0,
"min_quality": "Awful",
"max_quality": "Legendary"
}'
Request:
{
"zone_id": 142,
"name": "Updated Steel & Wood",
"priority": 5,
"add_item_defs": ["WoodLog"],
"remove_item_defs": [],
"add_item_categories": [],
"remove_item_categories": [],
"min_hit_points_percent": 0.1,
"max_hit_points_percent": 1.0,
"min_quality": "Awful",
"max_quality": "Legendary"
}
Response:
{
"success": true,
"data": {
"zone_id": 142,
"name": "Updated Steel & Wood",
"cells_count": 36,
"priority": 5,
"success": true,
"message": null
},
"errors": [],
"warnings": [],
"timestamp": "2026-03-28T14:35:00.0000000Z"
}
DELETE
/api/v1/map/zone/stockpile/delete
¶
/api/v1/map/zone/stockpile/delete
¶
Удалить зону склада по её ID.
Example:
curl --request DELETE \
--url 'http://localhost:8765/api/v1/map/zone/stockpile/delete?zone_id=142'
Response:
{
"success": true,
"errors": [],
"warnings": [],
"timestamp": "2026-03-28T14:40:00.0000000Z"
}
POST
/api/v1/map/building/power
¶
/api/v1/map/building/power
¶
Переключить состояние питания (вкл/выкл) для переключаемого здания (например, солнечные лампы, турели, производственные станки) через его компонент CompFlickable.
Example:
curl --request POST \
--url 'http://localhost:8765/api/v1/map/building/power?buildingId=123&powerOn=true'
Response:
{
"success": true,
"errors": [],
"warnings": [],
"timestamp": "2026-03-28T16:00:00.0000000Z"
}
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"
}
Overlay Controller¶
Overlay Controller предназначен для рисования оверлеев на экране.
POST
/api/v1/ui/announce
¶
/api/v1/ui/announce
¶
Pawn Controller¶
Pawn Controller — это интерфейс только для чтения для получения подробной статистики о поселенцах, заключенных, животных и врагах.
Он предоставляет глубокое погружение в:
- Потребности (Needs): Голод, Отдых, Развлечения.
- Биография (Bio): Возраст, Черты характера, Предыстория.
- Работа (Work): Текущая работа, приоритеты и расписания.
GET
/api/v2/colonists/detailed
¶
/api/v2/colonists/detailed
¶
Получает исчерпывающий список всех поселенцев с подробной статистикой, включая потребности (сон, радость, красота), приоритеты в работе и медицинский статус.
Политика кэширования
Эта конечная точка кэшируется на стороне сервера на 1800 игровых тиков (~30 секунд), чтобы уменьшить влияние на производительность игрового цикла.
Example:
curl --request GET \
--url http://localhost:8765/api/v2/colonists/detailed
Response:
{
"success": true,
"data": [
{
"pawn": {
"id": 101,
"name": "Lumi",
"gender": "Female",
"age": 25,
"health": 1.0,
"mood": 0.85,
"hunger": 0.2,
"position": {
"x": 10,
"y": 0,
"z": 15
}
},
"detailes": {
"body_size": 1.0,
"sleep": 0.9,
"comfort": 0.8,
"beauty": 0.5,
"joy": 0.75,
"energy": 0.8,
"drugs_desire": 0.0,
"surrounding_beauty": 1.2,
"fresh_air": 1.0,
"work_info": {
"job": "Harvesting",
"work_speed": 1.1
},
"policies_info": {
"food": "Lavish",
"clothing": "Anything"
},
"medical_info": {
"in_pain": false,
"bleeding_rate": 0.0
},
"social_info": {
"marital_status": "Single"
}
}
}
],
"timestamp": "2025-12-11T19:46:05.7088803Z"
}
GET
/api/v2/colonist/detailed
¶
/api/v2/colonist/detailed
¶
Получает подробную статистику для одного поселенца, идентифицированного по его ID. В отличие от массовой конечной точки, этот запрос извлекает данные в реальном времени без кэширования.
Example:
curl --request GET \
--url "http://localhost:8765/api/v2/colonist/detailed?id=101"
Response:
{
"success": true,
"data": {
"pawn": {
"id": 101,
"name": "Lumi",
"gender": "Female",
"age": 25,
"health": 1.0,
"mood": 0.85,
"hunger": 0.2,
"position": {
"x": 10,
"y": 0,
"z": 15
}
},
"detailes": {
"body_size": 1.0,
"sleep": 0.9,
"comfort": 0.8,
"beauty": 0.5,
"joy": 0.75,
"energy": 0.8,
"drugs_desire": 0.0,
"surrounding_beauty": 1.2,
"fresh_air": 1.0,
"work_info": {
"job": "Harvesting",
"work_speed": 1.1
},
"policies_info": {
"food": "Lavish",
"clothing": "Anything"
},
"medical_info": {
"in_pain": false,
"bleeding_rate": 0.0
},
"social_info": {
"marital_status": "Single"
}
}
},
"timestamp": "2025-12-11T19:46:05.7088803Z"
}
GET
/api/v1/colonists
¶
/api/v1/colonists
¶
Получает список всех поселенцев во фракции игрока, включая их навыки, черты характера, здоровье, настроение и текущие занятия.
Example:
curl --request GET \
--url 'http://localhost:8765/api/v1/colonists'
Response:
{
"success": true,
"data": [
{
"id": 1011,
"name": "Walters",
"gender": "Male",
"age": 13,
"health": 1.0,
"mood": 0.7448001,
"hunger": 0.663999736,
"position": {
"x": 71,
"y": 0,
"z": 94
}
},
{
"id": 1014,
"name": "Nordi",
"gender": "Male",
"age": 61,
"health": 1.0,
"mood": 0.559999764,
"hunger": 0.663999736,
"position": {
"x": 74,
"y": 0,
"z": 91
}
},
{
"id": 1017,
"name": "Casey",
"gender": "Male",
"age": 41,
"health": 1.0,
"mood": 0.55,
"hunger": 0.667999744,
"position": {
"x": 68,
"y": 0,
"z": 95
}
}
],
"errors": [],
"warnings": [],
"timestamp": "2025-12-11T20:00:34.2760128Z"
}
GET
/api/v1/colonist
¶
/api/v1/colonist
¶
Получает информацию об одном поселенце во фракции игрока.
Example:
curl --request GET \
--url 'http://localhost:8765/api/v1/colonist?id=1020'
Response:
{
"success": true,
"data": {
"id": 1040,
"name": "Blake",
"gender": "Male",
"age": 31,
"health": 1.0,
"mood": 0.5072,
"hunger": 0.796,
"position": {
"x": 63,
"y": 0,
"z": 88
}
},
"errors": [],
"warnings": [],
"timestamp": "2025-12-11T20:09:41.7078214Z"
}
GET
/api/v1/colonists/detailed
¶
/api/v1/colonists/detailed
¶
Получает подробный список всех поселенцев во фракции игрока, включая их навыки, черты характера, здоровье, настроение и текущие занятия.
Example:
curl --request GET \
--url http://localhost:8765/api/v1/colonists/detailed
Response:
{
"success": true,
"data": [
{
"colonist": {
"id": 1020,
"name": "Lumi",
"gender": "Female",
"age": 25,
"health": 1.0,
"mood": 0.85,
"hunger": 0.2,
"position": { "x": 10, "y": 0, "z": 15 }
},
"body_size": 1.0,
"sleep": 0.9,
"comfort": 0.8,
"beauty": 0.5,
"joy": 0.75,
"energy": 0.8,
"drugs_desire": 0.0,
"surrounding_beauty": 1.2,
"fresh_air": 1.0,
"colonist_work_info": {
"job": "Harvesting",
"work_speed": 1.1
},
"policies_info": {
"food": "Lavish",
"clothing": "Anything"
},
"colonist_medical_info": {
"in_pain": false,
"bleeding_rate": 0.0
},
"social_info": {
"marital_status": "Single"
}
}
],
"timestamp": "2025-12-11T19:46:05.7088803Z"
}
GET
/api/v1/colonist/detailed
¶
/api/v1/colonist/detailed
¶
Получает подробную информацию об одном поселенце во фракции игрока по ID.
Example:
curl --request GET \
--url "http://localhost:8765/api/v1/colonist/detailed?id=1020"
Response:
{
"success": true,
"data": {
"colonist": {
"id": 1020,
"name": "Lumi",
"gender": "Female",
"age": 25,
"health": 1.0,
"mood": 0.85,
"hunger": 0.2,
"position": { "x": 10, "y": 0, "z": 15 }
},
"body_size": 1.0,
"sleep": 0.9,
"comfort": 0.8,
"beauty": 0.5,
"joy": 0.75,
"energy": 0.8,
"drugs_desire": 0.0,
"surrounding_beauty": 1.2,
"fresh_air": 1.0,
"colonist_work_info": {
"job": "Harvesting",
"work_speed": 1.1
},
"policies_info": {
"food": "Lavish",
"clothing": "Anything"
},
"colonist_medical_info": {
"in_pain": false,
"bleeding_rate": 0.0
},
"social_info": {
"marital_status": "Single"
}
},
"timestamp": "2025-12-11T19:46:05.7088803Z"
}
GET
/api/v1/colonist/opinion-about
¶
/api/v1/colonist/opinion-about
¶
Получает мнение одного поселенца о другом указанном поселенце. Эта конечная точка дает представление о межличностных отношениях внутри поселения, возвращая два целочисленных значения: Opinion (мнение поселенца с id о поселенце с other_id) и OpinionAboutMe (мнение поселенца с other_id о поселенце с id).
Example:
curl --request GET \
--url 'http://localhost:8765/api/v1/colonist/opinion-about?id=1020&other_id=964'
Response:
{
"success": true,
"data": {
"opinion": 75,
"opinion_about_me": 50
},
"errors": [],
"warnings": [],
"timestamp": "2025-12-12T10:00:00.0000000Z"
}
POST
/api/v1/colonist/time-assignment
¶
/api/v1/colonist/time-assignment
¶
Устанавливает или изменяет назначение времени (расписание) для одного или нескольких поселенцев. Расписание в RimWorld определяет распорядок дня для каждого поселенца, определяя, когда они спят, работают, развлекаются или занимаются чем-либо еще.
Example:
curl --request POST \
--url http://localhost:8765/api/v1/colonist/time-assignment \
--header 'content-type: application/json' \
--data '{
"pawn_id": 99,
"hour": 14,
"assignment": "Joy"
}'
Request:
{
"pawn_id": 99,
"hour": 14,
"assignment": "Joy"
}
Response:
{
"success": true,
"errors": [],
"warnings": [],
"timestamp": "2025-12-10T19:53:16.733319Z"
}
GET
/api/v1/colonists/positions
¶
/api/v1/colonists/positions
¶
Получает координаты всех поселенцев на всех картах в реальном времени.
Примечание по производительности: Эта конечная точка активно кэшируется (TTL 100 мс) и оптимизирована для высокочастотного опроса. Она возвращает облегченный DTO, содержащий только необходимые данные о местоположении, что делает её идеальной для обновления миникарт или трекеров в реальном времени.
Example:
curl --request GET \
--url http://localhost:8765/api/v1/colonists/positions
Response:
{
"success": true,
"data": [
{
"id": 5612,
"map_id": 0,
"x": 125,
"z": 110
},
{
"id": 5613,
"map_id": 0,
"x": 128,
"z": 112
},
{
"id": 8901,
"map_id": 1,
"x": 45,
"z": 200
}
],
"errors": [],
"warnings": [],
"timestamp": "2025-12-14T14:22:15.500Z"
}
GET
/api/v1/colonist/inventory
¶
/api/v1/colonist/inventory
¶
Получает подробный список всех предметов, одежды и снаряжения, находящихся в данный момент в инвентаре поселенца. Сюда входят переносимые предметы, надетая одежда и экипированное оружие/инструменты.
Example:
curl --request GET \
--url 'http://localhost:8765/api/v1/colonist/inventory?id=1020'
Response:
{
"success": true,
"data": {
"Items": [
{
"thing_id": 4895,
"def_name": "MealSurvivalPack",
"label": "packaged survival meal",
"categories": ["FoodMeals"],
"position": { "x": 13, "y": 0, "z": 62 },
"stack_count": 5,
"market_value": 24.0,
"is_forbidden": false,
"quality": -1,
"hit_points": 50,
"max_hit_points": 50
}
],
"Apparels": [
{
"thing_id": 1234,
"def_name": "Apparel_Pants",
"label": "pants",
"categories": ["Apparel"],
"position": { "x": 0, "y": 0, "z": 0 },
"stack_count": 1,
"market_value": 50.0,
"is_forbidden": false,
"quality": 3,
"hit_points": 75,
"max_hit_points": 100
}
],
"Equipment": [
{
"thing_id": 5678,
"def_name": "Weapon_AssaultRifle",
"label": "assault rifle",
"categories": ["Weapons"],
"position": { "x": 0, "y": 0, "z": 0 },
"stack_count": 1,
"market_value": 700.0,
"is_forbidden": false,
"quality": 4,
"hit_points": 120,
"max_hit_points": 150
}
]
},
"errors": [],
"warnings": [],
"timestamp": "2025-12-12T10:00:00.0000000Z"
}
GET
/api/v1/colonist/body/image
¶
/api/v1/colonist/body/image
¶
Получает изображения в кодировке base64 и информацию о цвете тела и головы поселенца. Эта конечная точка полезна для рендеринга или анализа внешности поселенца.
Example:
curl --request GET \
--url 'http://localhost:8765/api/v1/colonist/body/image?id=1020'
Response:
{
"success": true,
"data": {
"body_image": "base64_encoded_body_image_string",
"body_color": "RGBA(1.000, 1.000, 1.000, 1.000)",
"head_image": "base64_encoded_head_image_string",
"head_color": "RGBA(1.000, 1.000, 1.000, 1.000)"
},
"errors": [],
"warnings": [],
"timestamp": "2025-12-12T10:00:00.0000000Z"
}
POST
/api/v1/colonist/work-priority
¶
/api/v1/colonist/work-priority
¶
Устанавливает или корректирует приоритеты типов работ для одного или нескольких поселенцев. Приоритеты работы определяют, какие задачи поселенец будет выполнять в рабочее время; каждому типу работы (например, пожаротушение, строительство, выращивание, ремесло) назначается уровень приоритета от 1 (самый высокий) до 4 (самый низкий) или работа отключается (0).
Example:
curl --request POST \
--url http://localhost:8765/api/v1/colonist/work-priority \
--header 'content-type: application/json' \
--data '{
"id": 99,
"work": "Cooking",
"priority": 1
}'
Request:
{
"id": 99,
"work": "Cooking",
"priority": 1
}
Response:
{
"success": true,
"errors": [],
"warnings": [],
"timestamp": "2025-12-10T19:53:16.733319Z"
}
POST
/api/v1/colonists/work-priority
¶
/api/v1/colonists/work-priority
¶
Устанавливает или корректирует приоритеты типов работ для нескольких поселенцев в одном запросе.
Example:
curl --request POST \
--url http://localhost:8765/api/v1/colonists/work-priority \
--header 'content-type: application/json' \
--data '[
{ "id": 37586, "work": "Patient", "priority": 5 },
{ "id": 67969, "work": "Hauling", "priority": 1 }
]'
Request:
[
{ "id": 37586, "work": "Patient", "priority": 5 },
{ "id": 67969, "work": "Hauling", "priority": 1 }
]
Response:
{
"success": true,
"errors": [],
"warnings": [],
"timestamp": "2025-12-10T19:53:16.733319Z"
}
POST
/api/v1/jobs/make/equip
¶
/api/v1/jobs/make/equip
¶
Создает задание для поселенца экипировать определенный предмет из доступного инвентаря или окружающей местности. Эта конечная точка ставит в очередь немедленную задачу "экипировать", приказывая поселенцу взять и надеть/вооружить указанную одежду или оружие.
Example:
curl --request POST \
--url 'http://localhost:8765/api/v1/jobs/make/equip?map_id=0&pawn_id=1011&item_id=4849' \
--header 'content-type: application/json'
Response:
{
"success": true,
"errors": [],
"warnings": [],
"timestamp": "2025-12-10T19:53:16.733319Z"
}
GET
/api/v1/pawn/portrait/image
¶
/api/v1/pawn/portrait/image
¶
Получает портретное изображение конкретной пешки в кодировке base64. Эта конечная точка позволяет указать желаемую ширину, высоту и направление взгляда для портрета.
Example:
curl --request GET \
--url 'http://localhost:8765/api/v1/pawn/portrait/image?pawn_id=1020&width=128&height=128&direction=South'
Response:
{
"success": true,
"data": {
"result": "success",
"image_base64": "base64_encoded_portrait_image_string"
},
"errors": [],
"warnings": [],
"timestamp": "2025-12-12T10:00:00.0000000Z"
}
GET
/api/v1/trait-def
¶
/api/v1/trait-def
¶
Получает подробную информацию об определении конкретной черты характера. Черты определяют врожденные характеристики пешки и могут влиять на их навыки, настроение и взаимодействия.
Example:
curl --request GET \
--url 'http://localhost:8765/api/v1/trait-def?name=Ascetic'
Response:
{
"success": true,
"data": {
"def_name": "Ascetic",
"label": "ascetic",
"description": "",
"degree_datas": [
{
"label": "ascetic",
"description": "{PAWN_nameDef} has forsaken physical comforts and enjoyments in favor of a simple, pure lifestyle. {PAWN_pronoun} will become unhappy if {PAWN_pronoun} has a bedroom that's too impressive. {PAWN_pronoun} also dislikes fancy food and prefers to eat raw. {PAWN_pronoun} never judges others by their appearance.",
"degree": 0,
"skill_gains": {},
"stat_offsets": [],
"stat_factors": [
{
"stat_def_name": "CertaintyLossFactor",
"value": 0.5
}
]
}
],
"conflicting_traits": [
"Greedy",
"Jealous",
"Gourmand"
],
"disabled_work_types": [],
"disabled_work_tags": "None"
},
"errors": [],
"warnings": [],
"timestamp": "2025-12-12T10:00:00.0000000Z"
}
GET
/api/v1/time-assignments
¶
/api/v1/time-assignments
¶
Получает список всех доступных назначений времени, которые могут быть установлены для поселенцев. Эти назначения определяют распорядок дня, такой как "Сон", "Работа", "Радость" и т. д.
Example:
curl --request GET \
--url 'http://localhost:8765/api/v1/time-assignments'
Response:
{
"success": true,
"data": [
{ "name": "Anything" },
{ "name": "Work" },
{ "name": "Joy" },
{ "name": "Sleep" },
{ "name": "Meditate" }
],
"errors": [],
"warnings": [],
"timestamp": "2025-12-12T10:00:00.0000000Z"
}
GET
/api/v1/outfits
¶
/api/v1/outfits
¶
Получает список всех определенных наборов одежды (outfits) в игре, включая их названия и связанные фильтры предметов. Наборы одежды определяют, какую одежду будут носить поселенцы на основе таких критериев, как тип, качество и очки здоровья.
Example:
curl --request GET \
--url 'http://localhost:8765/api/v1/outfits'
Response:
{
"success": true,
"data": [
{
"Id": 1,
"Label": "Worker",
"Filter": {
"allowed_thing_def_names": [
"Apparel_CowboyHat",
"Apparel_BowlerHat",
"Apparel_TribalHeaddress",
"Apparel_Tuque",
],
"disallowed_special_filter_def_names": ["AllowBurned"],
"allowed_hit_points_min": 0.5,
"allowed_hit_points_max": 1.0,
"allowed_hit_points_configurable": true,
"allowed_qualities_configurable": true
}
},
{
"id": 2,
"label": "soldier",
"filter": {
"allowed_thing_def_names": [],
"disallowed_special_filter_def_names": ["AllowSmeltable"],
"allowed_hit_points_min": 0.8,
"allowed_hit_points_max": 1.0,
"allowed_quality_min": "good",
"allowed_quality_max": "legendary",
"allowed_hit_points_configurable": true,
"allowed_qualities_configurable": true
}
}
],
"errors": [],
"warnings": [],
"timestamp": "2025-12-12T10:00:00.0000000Z"
}
GET
/api/v1/work-list
¶
/api/v1/work-list
¶
Получает исчерпывающий список всех определенных типов работ в игре. Типы работ классифицируют задачи, которые могут выполнять поселенцы, такие как "Переноска", "Приготовление пищи", "Добыча ресурсов", "Стрижка растений" и т. д.
Example:
curl --request GET \
--url 'http://localhost:8765/api/v1/work-list'
Response:
{
"success": true,
"data": {
"work": [
"Firefighter",
"Patient",
"Doctor",
"PatientBedRest",
"BasicWorker",
"Warden",
"Handling",
"Cooking",
"Hunting",
"Construction",
"Growing",
"Mining",
"PlantCutting",
"Smithing",
"Tailoring",
"Art",
"Crafting",
"Hauling",
"Cleaning",
"Research",
"Childcare",
"DarkStudy"
]
},
"errors": [],
"warnings": [],
"timestamp": "2025-12-12T10:00:00.0000000Z"
}
Pawn Edit Controller¶
Pawn Edit Controller позволяет напрямую изменять (Mutation) данные сущностей. В отличие от стандартного контроллера Pawn, этот позволяет перезаписывать фундаментальные свойства персонажа.
Экспериментальная функция
Этот контроллер API является экспериментальным.
Общие случаи использования:
Resurrection(Воскрешение) /Heal(Лечение)Set Skill Level(Установка уровня навыка)Add/Remove Traits(Добавление/удаление черт)Teleport(Телепортация)
POST
/api/v1/pawn/edit/basic
¶
/api/v1/pawn/edit/basic
¶
Редактирует основную информацию о пешке, такую как имя, пол и возраст.
curl --request POST \
--url http://localhost:8765/api/v1/pawn/edit/basic \
--header 'content-type: application/json' \
--data '{
"pawn_id": 148,
"nick_name": "Ace",
"gender": "Male",
"biological_age": 25
}'
Request:
{
"pawn_id": 148,
"name": "Ace",
"first_name": "John",
"last_name": "Doe",
"nick_name": "Ace",
"gender": "Male",
"biological_age": 25,
"chronological_age": 150
}
Response:
{
"success": true,
"errors": [],
"warnings": [],
"timestamp": "2025-12-31T14:05:16.1755723Z"
}
POST
/api/v1/pawn/edit/health
¶
/api/v1/pawn/edit/health
¶
Редактирует здоровье пешки, позволяя залечивать раны или излечивать болезни.
curl --request POST \
--url http://localhost:8765/api/v1/pawn/edit/health \
--header 'content-type: application/json' \
--data '{
"pawn_id": 148,
"heal_all_injuries": true,
"restore_body_parts": true,
"remove_all_diseases": true
}'
Request:
{
"pawn_id": 148,
"heal_all_injuries": true,
"restore_body_parts": true,
"remove_all_diseases": true
}
Response:
{
"success": true,
"errors": [],
"warnings": [],
"timestamp": "2025-12-31T14:05:16.1755723Z"
}
POST
/api/v1/pawn/edit/needs
¶
/api/v1/pawn/edit/needs
¶
Редактирует потребности пешки, такие как голод, отдых и настроение. Значения варьируются от 0.0 до 1.0.
curl --request POST \
--url http://localhost:8765/api/v1/pawn/edit/needs \
--header 'content-type: application/json' \
--data '{
"pawn_id": 148,
"food": 1.0,
"rest": 1.0,
"mood": 1.0
}'
Request:
{
"pawn_id": 148,
"food": 1.0,
"rest": 1.0,
"mood": 1.0
}
Response:
{
"success": true,
"errors": [],
"warnings": [],
"timestamp": "2025-12-31T14:05:16.1755723Z"
}
POST
/api/v1/pawn/edit/skills
¶
/api/v1/pawn/edit/skills
¶
Редактирует навыки пешки, устанавливая уровень для указанных навыков.
curl --request POST \
--url http://localhost:8765/api/v1/pawn/edit/skills \
--header 'content-type: application/json' \
--data '{
"pawn_id": 2356,
"skills": [
{ "skill_name": "Shooting", "level": 20, "passion": 3 }
]
}'
Request:
{
"pawn_id": 2356,
"skills": [
{
"skill_name": "Shooting",
"level": 20,
"passion": 3
},
{
"skill_name": "Medicine",
"level": 15,
"passion": 2
},
{
"skill_name": "Melee",
"level": 0,
"passion": 1
}
]
}
Response:
{
"success": true,
"errors": [],
"warnings": [],
"timestamp": "2025-12-31T12:36:12.432366Z"
}
POST
/api/v1/pawn/edit/traits
¶
/api/v1/pawn/edit/traits
¶
Редактирует черты характера пешки, позволяя добавлять или удалять их.
curl --request POST \
--url http://localhost:8765/api/v1/pawn/edit/traits \
--header 'content-type: application/json' \
--data '{
"pawn_id": 148,
"add_traits": [{ "trait_name": "Cannibal", "degree": 0 }],
"remove_traits": ["Wimp"]
}'
Request:
{
"pawn_id": 148,
"add_traits": [
{
"trait_name": "Cannibal",
"degree": 0
},
{
"trait_name": "Industrious",
"degree": 0
}
],
"remove_traits": [
"Wimp",
"Pyromaniac"
]
}
Response:
{
"success": true,
"errors": [],
"warnings": [],
"timestamp": "2025-12-31T14:05:16.1755723Z"
}
POST
/api/v1/pawn/edit/inventory
¶
/api/v1/pawn/edit/inventory
¶
Редактирует инвентарь пешки, позволяя добавлять или удалять предметы.
curl --request POST \
--url http://localhost:8765/api/v1/pawn/edit/inventory \
--header 'content-type: application/json' \
--data '{
"pawn_id": 148,
"clear_inventory": true,
"add_items": [{ "def_name": "MealSimple", "count": 10 }]
}'
Request:
{
"pawn_id": 148,
"drop_inventory": false,
"clear_inventory": true,
"add_items": [
{
"def_name": "MealSimple",
"count": 10
},
{
"def_name": "MedicineHerbal",
"count": 5
}
]
}
Response:
{
"success": true,
"errors": [],
"warnings": [],
"timestamp": "2025-12-31T14:05:16.1755723Z"
}
POST
/api/v1/pawn/edit/apparel
¶
/api/v1/pawn/edit/apparel
¶
Редактирует одежду пешки. Полезно для раздевания заключенных или разоружения врагов.
curl --request POST \
--url http://localhost:8765/api/v1/pawn/edit/apparel \
--header 'content-type: application/json' \
--data '{
"pawn_id": 148,
"drop_apparel": true,
"drop_weapons": true
}'
Request:
{
"pawn_id": 148,
"drop_apparel": true,
"drop_weapons": true
}
Response:
{
"success": true,
"errors": [],
"warnings": [],
"timestamp": "2025-12-31T14:05:16.1755723Z"
}
POST
/api/v1/pawn/edit/status
¶
/api/v1/pawn/edit/status
¶
Редактирует статус пешки, например, призыв (drafting), убийство или воскрешение.
curl --request POST \
--url http://localhost:8765/api/v1/pawn/edit/status \
--header 'content-type: application/json' \
--data '{
"pawn_id": 148,
"is_drafted": true
}'
Request:
{
"pawn_id": 148,
"is_drafted": true,
"kill": false,
"resurrect": false
}
Response:
{
"success": true,
"errors": [],
"warnings": [],
"timestamp": "2025-12-31T14:05:16.1755723Z"
}
POST
/api/v1/pawn/edit/position
¶
/api/v1/pawn/edit/position
¶
Редактирует позицию пешки, телепортируя её в новое место.
curl --request POST \
--url http://localhost:8765/api/v1/pawn/edit/position \
--header 'content-type: application/json' \
--data '{
"pawn_id": 148,
"position": { "x": 100, "z": 100 }
}'
Request:
{
"pawn_id": 148,
"map_id": "0",
"position": {
"x": 100,
"y": 0,
"z": 100
}
}
Response:
{
"success": true,
"errors": [],
"warnings": [],
"timestamp": "2025-12-31T14:05:16.1755723Z"
}
POST
/api/v1/pawn/edit/faction
¶
/api/v1/pawn/edit/faction
¶
Редактирует фракцию пешки, например, делая заключенного поселенцем.
curl --request POST \
--url http://localhost:8765/api/v1/pawn/edit/faction \
--header 'content-type: application/json' \
--data '{
"pawn_id": 148,
"make_colonist": true
}'
Request:
{
"pawn_id": 148,
"set_faction": "PlayerColony",
"make_colonist": true,
"make_prisoner": false,
"release_prisoner": false
}
Response:
{
"success": true,
"errors": [],
"warnings": [],
"timestamp": "2025-12-31T14:05:16.1755723Z"
}
Pawn Info Controller¶
Pawn Info Controller предоставляет подробную информацию о пешках.
GET
/api/v1/pawns/details
¶
/api/v1/pawns/details
¶
Получает подробную информацию о пешке.
GET
/api/v1/pawns/inventory
¶
/api/v1/pawns/inventory
¶
Получает инвентарь пешки.
Pawn Job Controller¶
Сосредоточен на переопределении стандартного поведения ИИ путем принуждения пешек к выполнению конкретных задач.
Scope
Этот контроллер имеет дело с немедленными действиями и прямым назначением работ. Для настройки долгосрочных приоритетов работы, расписаний или призыва см. PawnEditController или PawnController.
Возможности:
- Принуждение пешки к выполнению определенного действия (переноска, добыча ресурсов, охота).
- Прямое назначение медицинской помощи путем назначения врачей пациентам.
- Принуждение раненых или больных пешек занять определенные медицинские кровати.
POST
/api/v1/pawn/job
¶
/api/v1/pawn/job
¶
Назначить пешке определенную работу по имени её JobDef. Вы можете опционально указать целевой объект (например, скалу для добычи или предмет для переноски) или целевую позицию на карте.
Поиск JobDefs
Вы можете получить полный, актуальный список всех доступных определений работ в вашей текущей игре (включая добавленные модами), сделав GET-запрос к конечной точке /api/v1/def/all и изучив массив job_defs.
Текущие ограничения работы
«Под капотом» задачи RimWorld могут требовать до трех целей (targetA, targetB, targetC).
В настоящее время эта конечная точка поддерживает только задачи с одной целью (сопоставляется с targetA).
Задачи, требующие нескольких целей (например, переноска предмета на конкретный склад), пока не поддерживаются.
(Совет: посмотрите класс Verse.JobMaker в исходном коде RimWorld, чтобы увидеть различные перегрузки MakeJob и то, как задачи создаются и объединяются внутри).
Примеры поддерживаемых в данный момент JobDef:
Goto(Передвижение/путешествие)AttackMelee(Ближний бой)ManTurret(Управление турелью)LayDown(Сон/отдых)PickupToHold(Подбор предметов для переноски)Clean(Уборка грязи)PlaceNoCostFrame(Размещение строительных чертежей)TendEntity(Уход за сущностями)CastJump(Прыжок/использование способностей)StandAndStare(Бездействие)Meditate(Медитация)
Example:
curl --request POST \
--url 'http://localhost:8765/api/v1/pawn/job' \
--header 'content-type: application/json' \
--data '{
"pawn_id": 123,
"job_def": "Mine",
"target_thing_id": 456
}'
Request:
{
"pawn_id": 123,
"job_def": "Mine",
"target_thing_id": 456,
"target_position": {"x": 10, "y": 0, "z": 15}
}
Response:
{
"success": true,
"errors": [],
"warnings": [],
"timestamp": "2026-03-28T15:00:00.0000000Z"
}
POST
/api/v1/pawn/medical/tend
¶
/api/v1/pawn/medical/tend
¶
Назначить врача для ухода за конкретным пациентом. Если doctor_pawn_id опущен, игра автоматически найдет и назначит лучшего доступного врача на основе навыка Медицины.
Example:
curl --request POST \
--url 'http://localhost:8765/api/v1/pawn/medical/tend' \
--header 'content-type: application/json' \
--data '{
"patient_pawn_id": 123,
"doctor_pawn_id": 456
}'
Request:
{
"patient_pawn_id": 123,
"doctor_pawn_id": 456
}
Response:
{
"success": true,
"errors": [],
"warnings": [],
"timestamp": "2026-03-28T15:05:00.0000000Z"
}
POST
/api/v1/pawn/medical/bed-rest
¶
/api/v1/pawn/medical/bed-rest
¶
Принудительно отправить пешку на постельный режим. Вы можете опционально указать конкретную кровать, передав её bed_building_id. Если он опущен, пешка сама найдет лучшую доступную медицинскую кровать.
Example:
curl --request POST \
--url 'http://localhost:8765/api/v1/pawn/medical/bed-rest' \
--header 'content-type: application/json' \
--data '{
"patient_pawn_id": 123,
"bed_building_id": 789
}'
Request:
{
"patient_pawn_id": 123,
"bed_building_id": 789
}
Response:
{
"success": true,
"errors": [],
"warnings": [],
"timestamp": "2026-03-28T15:10:00.0000000Z"
}
Pawn Spawn Controller¶
Pawn Spawn Controller используется для создания и появления новых пешек в игровом мире.
POST
/api/v1/pawn/spawn
¶
/api/v1/pawn/spawn
¶
Создать новую пешку.
Request:
{
"pawn_kind": "Mercenary_Gunner",
"faction": "OutlanderCivil",
"position": {"x": 11, "y": 0, "z": 11},
"biological_age": 25
}
Response:
{
"success":true,
"data": {
"pawn_id":39473,
"name":"Nitro"
},
"errors":[],"warnings":[],
"timestamp":"2025-12-31T12:32:16.5760065Z"
}
Исследования¶
Управляет научным прогрессом колонии. Этот контроллер позволяет просматривать текущее состояние дерева технологий и мгновенно разблокировать технологии.
GET
/api/v1/research/progress
¶
/api/v1/research/progress
¶
Возвращает информацию о текущем активном исследовательском проекте, включая его прогресс, необходимые очки исследования и статус.
Example:
curl --request GET \
--url 'http://localhost:8765/api/v1/research/progress'
Response:
{
"success": true,
"data": {
"name": "Microelectronics",
"label": "Microelectronics",
"progress": 500,
"research_points": 3000,
"description": "Build advanced components and electronics.",
"is_finished": false,
"can_start_now": true,
"player_has_any_appropriate_research_bench": true,
"required_analyzed_thing_count": 0,
"analyzed_things_completed": 0,
"tech_level": "Industrial",
"prerequisites": ["Electricity"],
"hidden_prerequisites": [],
"required_by_this": ["Fabrication", "AdvancedMachining"],
"progress_percent": 0.16666667
},
"errors": [],
"warnings": [],
"timestamp": "2025-12-12T10:00:00.0000000Z"
}
GET
/api/v1/research/finished
¶
/api/v1/research/finished
¶
Возвращает список всех исследовательских проектов, которые были успешно завершены игроком.
Example:
curl --request GET \
--url 'http://localhost:8765/api/v1/research/finished'
Response:
{
"success": true,
"data": {
"finished_projects": [
"electricity",
"basic_research",
"stonecutting"
]
},
"errors": [],
"warnings": [],
"timestamp": "2025-12-12T10:00:00.0000000Z"
}
GET
/api/v1/research/tree
¶
/api/v1/research/tree
¶
Возвращает всё дерево исследований, предоставляя список всех исследовательских проектов и их детали, включая пререквизиты и уровни технологий. Это можно использовать для визуализации или анализа прогресса исследований.
Example:
curl --request GET \
--url 'http://localhost:8765/api/v1/research/tree'
Response:
{
"success": true,
"data": {
"projects": [
{
"name": "basic_research",
"label": "basic research",
"progress": 0,
"research_points": 500,
"description": "unlocks basic research capabilities.",
"is_finished": true,
"can_start_now": false,
"player_has_any_appropriate_research_bench": true,
"required_analyzed_thing_count": 0,
"analyzed_things_completed": 0,
"tech_level": "neolithic",
"prerequisites": [],
"hidden_prerequisites": [],
"required_by_this": ["electricity", "stonecutting"],
"progress_percent": 1.0
},
{
"name": "electricity",
"label": "electricity",
"progress": 0,
"research_points": 1000,
"description": "unlocks electrical power generation and basic electrical devices.",
"is_finished": false,
"can_start_now": true,
"player_has_any_appropriate_research_bench": true,
"required_analyzed_thing_count": 0,
"analyzed_things_completed": 0,
"tech_level": "industrial",
"prerequisites": ["basic_research"],
"hidden_prerequisites": [],
"required_by_this": ["microelectronics"],
"progress_percent": 0.0
}
]
},
"errors": [],
"warnings": [],
"timestamp": "2025-12-12T10:00:00.0000000Z"
}
GET
/api/v1/research/project
¶
/api/v1/research/project
¶
Возвращает подробную информацию о конкретном исследовательском проекте по его имени. Это включает в себя его прогресс, пререквизиты, уровень технологий и описание.
Example:
curl --request GET \
--url 'http://localhost:8765/api/v1/research/project?name=Microelectronics'
Response:
{
"success": true,
"data": {
"name": "Microelectronics",
"label": "Microelectronics",
"progress": 500,
"research_points": 3000,
"description": "build advanced components and electronics.",
"is_finished": false,
"can_start_now": true,
"player_has_any_appropriate_research_bench": true,
"required_analyzed_thing_count": 0,
"analyzed_things_completed": 0,
"tech_level": "Industrial",
"prerequisites": ["Electricity"],
"hidden_prerequisites": [],
"required_by_this": ["Fabrication", "AdvancedMachining"],
"progress_percent": 0.16666667
},
"errors": [],
"warnings": [],
"timestamp": "2025-12-12t10:00:00.0000000z"
}
GET
/api/v1/research/summary
¶
/api/v1/research/summary
¶
Предоставляет высокоуровневую сводку о состоянии исследований игрока, включая количество завершенных, общее количество и доступные проекты, а также категоризацию по уровню технологий и вкладкам исследований.
Example:
curl --request GET \
--url 'http://localhost:8765/api/v1/research/summary'
Response:
{
"success": true,
"data": {
"finished_projects_count": 3,
"total_projects_count": 50,
"available_projects_count": 15,
"by_tech_level": {
"neolithic": {
"finished": 1,
"total": 5,
"percent_complete": 20.0,
"projects": ["BasicResearch"]
},
"industrial": {
"finished": 2,
"total": 10,
"percent_complete": 20.0,
"projects": ["Electricity", "Stonecutting"]
}
},
"by_tab": {
"basic": {
"finished": 2,
"total": 10,
"percent_complete": 20.0,
"projects": ["BasicResearch", "Stonecutting"]
},
"power": {
"finished": 1,
"total": 5,
"percent_complete": 20.0,
"projects": ["electricity"]
}
}
},
"errors": [],
"warnings": [],
"timestamp": "2025-12-12T10:00:00.0000000Z"
}
POST
/api/v1/research/target
¶
/api/v1/research/target
¶
Устанавливает активный исследовательский проект колонии по его defName. Это немедленно перенаправляет фокус исследований колонии.
Example:
curl --request POST \
--url 'http://localhost:8765/api/v1/research/target?name=Electricity&force=false'
Response:
{
"success": true,
"data": {
"finished_projects_count": 3,
"total_projects_count": 50,
"available_projects_count": 15,
"by_tech_level": {
"neolithic": {
"finished": 1,
"total": 5,
"percent_complete": 20.0,
"projects": ["BasicResearch"]
},
"industrial": {
"finished": 2,
"total": 10,
"percent_complete": 20.0,
"projects": ["Electricity", "Stonecutting"]
}
},
"by_tab": {
"basic": {
"finished": 2,
"total": 10,
"percent_complete": 20.0,
"projects": ["BasicResearch", "Stonecutting"]
},
"power": {
"finished": 1,
"total": 5,
"percent_complete": 20.0,
"projects": ["electricity"]
}
}
},
"errors": [],
"warnings": [],
"timestamp": "2026-03-28T16:10:00.0000000Z"
}
POST
/api/v1/research/stop
¶
/api/v1/research/stop
¶
Останавливает текущий активный исследовательский проект колонии. Это снимает фокус исследования и возвращает состояние проекта, который был остановлен. Возвращает ошибку, если в данный момент нет активных исследований.
Example:
curl --request POST \
--url 'http://localhost:8765/api/v1/research/stop'
Response:
{
"success": true,
"errors": [],
"warnings": [],
"timestamp": "2026-02-18T13:22:46.312391Z"
}
Кэш сервера¶
Эндпоинты для управления механизмом внутреннего кэширования API. Используйте эти маршруты для переключения кэширования, мониторинга статистики производительности (соотношение попаданий/промахов) и ручной очистки кэша для освобождения памяти или принудительного обновления данных.
POST
/api/v1/cache/enable
¶
/api/v1/cache/enable
¶
Включить кэширование сервера для результатов эндпоинтов. Когда оно включено, валидные GET-запросы будут сохраняться в памяти для снижения нагрузки на сервер и улучшения времени ответа.
Example:
curl --request POST \
--url http://localhost:8765/api/v1/cache/enable
Response:
{
"success": true,
"errors": [],
"warnings": [],
"timestamp": "2025-12-08T19:13:29.997162Z"
}
POST
/api/v1/cache/disable
¶
/api/v1/cache/disable
¶
Отключить кэширование сервера. Это заставляет сервер заново обрабатывать каждый запрос. Полезно для отладки или обеспечения точности данных в реальном времени во время разработки.
Example:
curl --request POST \
--url http://localhost:8765/api/v1/cache/disable
Response:
{
"success": true,
"errors": [],
"warnings": [],
"timestamp": "2025-12-08T19:13:29.997162Z"
}
GET
/api/v1/cache/status
¶
/api/v1/cache/status
¶
Возвращает текущий статус и статистику производительности системы внутреннего кэширования API. Этот эндпоинт обеспечивает видимость использования кэша, его эффективности и занимаемой памяти, что полезно для мониторинга и отладки производительности и оптимизации API.
Example:
curl --request GET \
--url http://localhost:8765/api/v1/cache/status
Response:
{
"enabled": true,
"statistics": {
"total_entries": 0,
"hits": 0,
"misses": 0,
"memory_usage_bytes": 0,
"last_cleanup": "2025-12-10T18:43:21.4353167Z",
"hit_ratio": 0.0,
"compiled_delegate_count": 0,
"compiled_delegate_hits": 0,
"compiled_delegate_misses": 0
}
}
POST
/api/v1/cache/clear
¶
/api/v1/cache/clear
¶
Вручную запускает полную очистку системы кэширования. Это удаляет все сохраненные записи и сбрасывает статистику выполнения.
Example:
curl --request POST \
--url http://localhost:8765/api/v1/cache/clear
Response:
{
"enabled": true,
"statistics": {
"total_entries": 0,
"hits": 0,
"misses": 0,
"memory_usage_bytes": 0,
"last_cleanup": "2025-12-10T18:43:21.4353167Z",
"hit_ratio": 0.0,
"compiled_delegate_count": 0,
"compiled_delegate_hits": 0,
"compiled_delegate_misses": 0
}
}
Объекты (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"
}
Торговля¶
Предоставляет доступ к экономике игры и торговым системам. Этот контроллер обрабатывает определения для различных типов торговцев (орбитальные, караваны, посетители), позволяя вам анализировать их правила генерации товаров, распространенность предметов и поведение при покупке/продаже.
Возможности:
- Список всех глобальных типов торговцев (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"
}
Окна и интерфейс¶
Контроллер Window Controller управляет внутриигровыми окнами и диалогами.
POST
/api/v1/ui/message
¶
/api/v1/ui/message
¶
Выводит короткое сообщение на экран, аналогично внутриигровым уведомлениям.
Example:
curl --request POST \
--url http://localhost:8765/api/v1/ui/message \
--header 'content-type: application/json' \
--data '{
"text": "You find a wounded refugee asking for help. They are being chased by pirates."
}'
Request:
{
"text": "You find a wounded refugee asking for help. They are being chased by pirates.",
}
Response:
{
"success": true,
"errors": [],
"warnings": [],
"timestamp": "2025-12-10T19:53:16.733319Z"
}
POST
/api/v1/ui/dialog
¶
/api/v1/ui/dialog
¶
Выводит диалоговое окно с указанным сообщением и заголовком.
Example:
curl --request POST \
--url http://localhost:8765/api/v1/ui/dialog \
--header 'content-type: application/json' \
--data '{
"text": "You find a wounded refugee asking for help. They are being chased by pirates.",
"options": [
{
"label": "Offer Safety (Triggers Raid)",
"action_id": "accept_refugee",
"resolve_tree": true
},
{
"label": "Turn them away",
"action_id": "reject_refugee",
"resolve_tree": true
},
{
"label": "Capture them (Prisoner)",
"action_id": "capture_refugee",
"resolve_tree": true
}
]
}'
Request:
{
"text": "You find a wounded refugee asking for help. They are being chased by pirates.",
"options": [
{
"label": "Offer Safety (Triggers Raid)",
"action_id": "accept_refugee",
"resolve_tree": true
},
{
"label": "Turn them away",
"action_id": "reject_refugee",
"resolve_tree": true
},
{
"label": "Capture them (Prisoner)",
"action_id": "capture_refugee",
"resolve_tree": true
}
]
}
Response:
{
"success": true,
"errors": [],
"warnings": [],
"timestamp": "2025-12-10T19:53:16.733319Z"
}