@mairwunnx/minecraft-mcp 3.0.0 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -430,6 +430,117 @@
430
430
  }
431
431
  }
432
432
  },
433
+ "/accounts/{name}/reset": {
434
+ "post": {
435
+ "operationId": "postAccountsNameReset",
436
+ "summary": "Make a code that sets a new password for an account",
437
+ "description": "For someone who forgot their password and can't run /worldapi admin in game. They enter the code on the sign-in page, under “I have a code”, with a new password, within 30 minutes; their sessions end. A caller hands out only permissions it has itself.\n\nPermission: `tokens:manage`.",
438
+ "tags": [
439
+ "Access control"
440
+ ],
441
+ "x-scope": "tokens:manage",
442
+ "security": [
443
+ {
444
+ "bearer": [
445
+ "tokens:manage"
446
+ ]
447
+ }
448
+ ],
449
+ "parameters": [
450
+ {
451
+ "name": "name",
452
+ "in": "path",
453
+ "required": true,
454
+ "description": "name",
455
+ "schema": {
456
+ "type": "string"
457
+ }
458
+ }
459
+ ],
460
+ "requestBody": {
461
+ "required": false,
462
+ "content": {
463
+ "application/json": {
464
+ "schema": {
465
+ "$ref": "#/components/schemas/NoBody"
466
+ }
467
+ }
468
+ }
469
+ },
470
+ "responses": {
471
+ "201": {
472
+ "description": "Created",
473
+ "content": {
474
+ "application/json": {
475
+ "schema": {
476
+ "$ref": "#/components/schemas/InviteCode"
477
+ }
478
+ }
479
+ }
480
+ },
481
+ "400": {
482
+ "description": "Invalid request",
483
+ "content": {
484
+ "application/json": {
485
+ "schema": {
486
+ "$ref": "#/components/schemas/ErrorBody"
487
+ }
488
+ }
489
+ }
490
+ },
491
+ "401": {
492
+ "description": "Missing or unknown token",
493
+ "content": {
494
+ "application/json": {
495
+ "schema": {
496
+ "$ref": "#/components/schemas/ErrorBody"
497
+ }
498
+ }
499
+ }
500
+ },
501
+ "403": {
502
+ "description": "The token lacks the permission",
503
+ "content": {
504
+ "application/json": {
505
+ "schema": {
506
+ "$ref": "#/components/schemas/ErrorBody"
507
+ }
508
+ }
509
+ }
510
+ },
511
+ "404": {
512
+ "description": "Not found",
513
+ "content": {
514
+ "application/json": {
515
+ "schema": {
516
+ "$ref": "#/components/schemas/ErrorBody"
517
+ }
518
+ }
519
+ }
520
+ },
521
+ "429": {
522
+ "description": "Rate limit hit; see Retry-After",
523
+ "content": {
524
+ "application/json": {
525
+ "schema": {
526
+ "$ref": "#/components/schemas/ErrorBody"
527
+ }
528
+ }
529
+ }
530
+ },
531
+ "503": {
532
+ "description": "The server thread didn't answer in time",
533
+ "content": {
534
+ "application/json": {
535
+ "schema": {
536
+ "$ref": "#/components/schemas/ErrorBody"
537
+ }
538
+ }
539
+ }
540
+ }
541
+ }
542
+ }
543
+ },
433
544
  "/aggregates": {
434
545
  "get": {
435
546
  "operationId": "getAggregates",
@@ -1038,7 +1149,7 @@
1038
1149
  "post": {
1039
1150
  "operationId": "postFilesEdit",
1040
1151
  "summary": "Replace exact text in a file",
1041
- "description": "Each edit's oldText must appear exactly once (copy it from /files/read without the line numbers), unless replaceAll. Edits apply in order, all or none. Paths are relative to the server folder, with forward slashes. Files under logs/ need logs:read; everything else needs files:read. WorldAPI's own folder, hidden files, keys, databases, and jars are never shared. Needs files:write, which no group but owner has unless you add it. The previous version goes to plugins/WorldAPI/backups (limits.fileBackups per file). Logs, and files the server keeps in memory (ops.json, whitelist.json, banned-*.json, usercache.json), can't be written: their endpoints change them. Send the sha256 from /files/read as expectedSha256, so a write fails with 409 if the file changed meanwhile.\n\nPermission: `files:write`.",
1152
+ "description": "Each edit's oldText must appear exactly once (copy it from /files/read without the line numbers), unless replaceAll. Edits apply in order, all or none. Paths are relative to the server folder, with forward slashes. Files under logs/ need logs:read; everything else needs files:read. WorldAPI's own folder, hidden files, keys, databases, and jars are never shared. Needs files:write, which no group but owner has unless you add it. The previous version goes to plugins/WorldAPI/backups (limits.fileBackups per file). Logs, usercache.json, and version_history.json can't be written. ops.json, whitelist.json, and banned-*.json go through the server: it adds and removes entries to match the new content and saves the file in its own format. Send the sha256 from /files/read as expectedSha256, so a write fails with 409 if the file changed meanwhile.\n\nPermission: `files:write`.",
1042
1153
  "tags": [
1043
1154
  "Files"
1044
1155
  ],
@@ -1277,7 +1388,7 @@
1277
1388
  "post": {
1278
1389
  "operationId": "postFilesSet",
1279
1390
  "summary": "Set values in a YAML, .properties, or JSON config by dotted path",
1280
- "description": "`{\"chunks.auto-save-interval\": 6000}` sets one key, creating the sections on the way; null removes a key. YAML keeps its comments, though spacing and quotes may change; .properties changes only the lines it sets. Paths are relative to the server folder, with forward slashes. Files under logs/ need logs:read; everything else needs files:read. WorldAPI's own folder, hidden files, keys, databases, and jars are never shared. Needs files:write, which no group but owner has unless you add it. The previous version goes to plugins/WorldAPI/backups (limits.fileBackups per file). Logs, and files the server keeps in memory (ops.json, whitelist.json, banned-*.json, usercache.json), can't be written: their endpoints change them. Send the sha256 from /files/read as expectedSha256, so a write fails with 409 if the file changed meanwhile.\n\nPermission: `files:write`.",
1391
+ "description": "`{\"chunks.auto-save-interval\": 6000}` sets one key, creating the sections on the way; null removes a key. YAML keeps its comments, though spacing and quotes may change; .properties changes only the lines it sets. Paths are relative to the server folder, with forward slashes. Files under logs/ need logs:read; everything else needs files:read. WorldAPI's own folder, hidden files, keys, databases, and jars are never shared. Needs files:write, which no group but owner has unless you add it. The previous version goes to plugins/WorldAPI/backups (limits.fileBackups per file). Logs, usercache.json, and version_history.json can't be written. ops.json, whitelist.json, and banned-*.json go through the server: it adds and removes entries to match the new content and saves the file in its own format. Send the sha256 from /files/read as expectedSha256, so a write fails with 409 if the file changed meanwhile.\n\nPermission: `files:write`.",
1281
1392
  "tags": [
1282
1393
  "Files"
1283
1394
  ],
@@ -1367,7 +1478,7 @@
1367
1478
  "put": {
1368
1479
  "operationId": "putFilesWrite",
1369
1480
  "summary": "Create a file or replace it whole",
1370
- "description": "Paths are relative to the server folder, with forward slashes. Files under logs/ need logs:read; everything else needs files:read. WorldAPI's own folder, hidden files, keys, databases, and jars are never shared. Needs files:write, which no group but owner has unless you add it. The previous version goes to plugins/WorldAPI/backups (limits.fileBackups per file). Logs, and files the server keeps in memory (ops.json, whitelist.json, banned-*.json, usercache.json), can't be written: their endpoints change them. Send the sha256 from /files/read as expectedSha256, so a write fails with 409 if the file changed meanwhile.\n\nPermission: `files:write`.",
1481
+ "description": "Paths are relative to the server folder, with forward slashes. Files under logs/ need logs:read; everything else needs files:read. WorldAPI's own folder, hidden files, keys, databases, and jars are never shared. Needs files:write, which no group but owner has unless you add it. The previous version goes to plugins/WorldAPI/backups (limits.fileBackups per file). Logs, usercache.json, and version_history.json can't be written. ops.json, whitelist.json, and banned-*.json go through the server: it adds and removes entries to match the new content and saves the file in its own format. Send the sha256 from /files/read as expectedSha256, so a write fails with 409 if the file changed meanwhile.\n\nPermission: `files:write`.",
1371
1482
  "tags": [
1372
1483
  "Files"
1373
1484
  ],
@@ -1763,6 +1874,15 @@
1763
1874
  "playtime"
1764
1875
  ]
1765
1876
  }
1877
+ },
1878
+ {
1879
+ "name": "search",
1880
+ "in": "query",
1881
+ "required": false,
1882
+ "description": "Only players whose name contains this, ignoring case",
1883
+ "schema": {
1884
+ "type": "string"
1885
+ }
1766
1886
  }
1767
1887
  ],
1768
1888
  "responses": {
@@ -3410,6 +3530,126 @@
3410
3530
  }
3411
3531
  }
3412
3532
  },
3533
+ "/players/{player}/enderchest/slots/{slot}/take": {
3534
+ "post": {
3535
+ "operationId": "postPlayersPlayerEnderchestSlotsSlotTake",
3536
+ "summary": "Take some items from a ender chest slot",
3537
+ "description": "Inventory slots: 0–8 hotbar, 9–35 main, 36 boots, 37 leggings, 38 chestplate, 39 helmet, 40 offhand. Ender chest slots: 0–26. The player must be online. The rest of the stack keeps its enchantments, name, and the like.\n\nPermission: `players:write`.",
3538
+ "tags": [
3539
+ "Inventories"
3540
+ ],
3541
+ "x-scope": "players:write",
3542
+ "security": [
3543
+ {
3544
+ "bearer": [
3545
+ "players:write"
3546
+ ]
3547
+ }
3548
+ ],
3549
+ "parameters": [
3550
+ {
3551
+ "name": "player",
3552
+ "in": "path",
3553
+ "required": true,
3554
+ "description": "Player UUID or name",
3555
+ "schema": {
3556
+ "type": "string"
3557
+ }
3558
+ },
3559
+ {
3560
+ "name": "slot",
3561
+ "in": "path",
3562
+ "required": true,
3563
+ "description": "Slot number; see the inventory layout in the description",
3564
+ "schema": {
3565
+ "type": "integer"
3566
+ }
3567
+ }
3568
+ ],
3569
+ "requestBody": {
3570
+ "required": true,
3571
+ "content": {
3572
+ "application/json": {
3573
+ "schema": {
3574
+ "$ref": "#/components/schemas/TakeRequest"
3575
+ }
3576
+ }
3577
+ }
3578
+ },
3579
+ "responses": {
3580
+ "200": {
3581
+ "description": "OK",
3582
+ "content": {
3583
+ "application/json": {
3584
+ "schema": {
3585
+ "$ref": "#/components/schemas/TakeResult"
3586
+ }
3587
+ }
3588
+ }
3589
+ },
3590
+ "400": {
3591
+ "description": "Invalid request",
3592
+ "content": {
3593
+ "application/json": {
3594
+ "schema": {
3595
+ "$ref": "#/components/schemas/ErrorBody"
3596
+ }
3597
+ }
3598
+ }
3599
+ },
3600
+ "401": {
3601
+ "description": "Missing or unknown token",
3602
+ "content": {
3603
+ "application/json": {
3604
+ "schema": {
3605
+ "$ref": "#/components/schemas/ErrorBody"
3606
+ }
3607
+ }
3608
+ }
3609
+ },
3610
+ "403": {
3611
+ "description": "The token lacks the permission",
3612
+ "content": {
3613
+ "application/json": {
3614
+ "schema": {
3615
+ "$ref": "#/components/schemas/ErrorBody"
3616
+ }
3617
+ }
3618
+ }
3619
+ },
3620
+ "404": {
3621
+ "description": "Not found",
3622
+ "content": {
3623
+ "application/json": {
3624
+ "schema": {
3625
+ "$ref": "#/components/schemas/ErrorBody"
3626
+ }
3627
+ }
3628
+ }
3629
+ },
3630
+ "429": {
3631
+ "description": "Rate limit hit; see Retry-After",
3632
+ "content": {
3633
+ "application/json": {
3634
+ "schema": {
3635
+ "$ref": "#/components/schemas/ErrorBody"
3636
+ }
3637
+ }
3638
+ }
3639
+ },
3640
+ "503": {
3641
+ "description": "The server thread didn't answer in time",
3642
+ "content": {
3643
+ "application/json": {
3644
+ "schema": {
3645
+ "$ref": "#/components/schemas/ErrorBody"
3646
+ }
3647
+ }
3648
+ }
3649
+ }
3650
+ }
3651
+ }
3652
+ },
3413
3653
  "/players/{player}/inventory": {
3414
3654
  "get": {
3415
3655
  "operationId": "getPlayersPlayerInventory",
@@ -3936,19 +4176,19 @@
3936
4176
  }
3937
4177
  }
3938
4178
  },
3939
- "/players/{player}/kick": {
4179
+ "/players/{player}/inventory/slots/{slot}/take": {
3940
4180
  "post": {
3941
- "operationId": "postPlayersPlayerKick",
3942
- "summary": "Kick a player",
3943
- "description": "Permission: `players:moderate`.",
4181
+ "operationId": "postPlayersPlayerInventorySlotsSlotTake",
4182
+ "summary": "Take some items from a inventory slot",
4183
+ "description": "Inventory slots: 0–8 hotbar, 9–35 main, 36 boots, 37 leggings, 38 chestplate, 39 helmet, 40 offhand. Ender chest slots: 0–26. The player must be online. The rest of the stack keeps its enchantments, name, and the like.\n\nPermission: `players:write`.",
3944
4184
  "tags": [
3945
- "Players"
4185
+ "Inventories"
3946
4186
  ],
3947
- "x-scope": "players:moderate",
4187
+ "x-scope": "players:write",
3948
4188
  "security": [
3949
4189
  {
3950
4190
  "bearer": [
3951
- "players:moderate"
4191
+ "players:write"
3952
4192
  ]
3953
4193
  }
3954
4194
  ],
@@ -3961,14 +4201,23 @@
3961
4201
  "schema": {
3962
4202
  "type": "string"
3963
4203
  }
4204
+ },
4205
+ {
4206
+ "name": "slot",
4207
+ "in": "path",
4208
+ "required": true,
4209
+ "description": "Slot number; see the inventory layout in the description",
4210
+ "schema": {
4211
+ "type": "integer"
4212
+ }
3964
4213
  }
3965
4214
  ],
3966
4215
  "requestBody": {
3967
- "required": false,
4216
+ "required": true,
3968
4217
  "content": {
3969
4218
  "application/json": {
3970
4219
  "schema": {
3971
- "$ref": "#/components/schemas/KickRequest"
4220
+ "$ref": "#/components/schemas/TakeRequest"
3972
4221
  }
3973
4222
  }
3974
4223
  }
@@ -3979,7 +4228,7 @@
3979
4228
  "content": {
3980
4229
  "application/json": {
3981
4230
  "schema": {
3982
- "$ref": "#/components/schemas/Done"
4231
+ "$ref": "#/components/schemas/TakeResult"
3983
4232
  }
3984
4233
  }
3985
4234
  }
@@ -4047,11 +4296,122 @@
4047
4296
  }
4048
4297
  }
4049
4298
  },
4050
- "/players/{player}/message": {
4299
+ "/players/{player}/kick": {
4051
4300
  "post": {
4052
- "operationId": "postPlayersPlayerMessage",
4053
- "summary": "Send a chat message, title, action bar, or sound to one player",
4054
- "description": "Permission: `players:write`.",
4301
+ "operationId": "postPlayersPlayerKick",
4302
+ "summary": "Kick a player",
4303
+ "description": "Permission: `players:moderate`.",
4304
+ "tags": [
4305
+ "Players"
4306
+ ],
4307
+ "x-scope": "players:moderate",
4308
+ "security": [
4309
+ {
4310
+ "bearer": [
4311
+ "players:moderate"
4312
+ ]
4313
+ }
4314
+ ],
4315
+ "parameters": [
4316
+ {
4317
+ "name": "player",
4318
+ "in": "path",
4319
+ "required": true,
4320
+ "description": "Player UUID or name",
4321
+ "schema": {
4322
+ "type": "string"
4323
+ }
4324
+ }
4325
+ ],
4326
+ "requestBody": {
4327
+ "required": false,
4328
+ "content": {
4329
+ "application/json": {
4330
+ "schema": {
4331
+ "$ref": "#/components/schemas/KickRequest"
4332
+ }
4333
+ }
4334
+ }
4335
+ },
4336
+ "responses": {
4337
+ "200": {
4338
+ "description": "OK",
4339
+ "content": {
4340
+ "application/json": {
4341
+ "schema": {
4342
+ "$ref": "#/components/schemas/Done"
4343
+ }
4344
+ }
4345
+ }
4346
+ },
4347
+ "400": {
4348
+ "description": "Invalid request",
4349
+ "content": {
4350
+ "application/json": {
4351
+ "schema": {
4352
+ "$ref": "#/components/schemas/ErrorBody"
4353
+ }
4354
+ }
4355
+ }
4356
+ },
4357
+ "401": {
4358
+ "description": "Missing or unknown token",
4359
+ "content": {
4360
+ "application/json": {
4361
+ "schema": {
4362
+ "$ref": "#/components/schemas/ErrorBody"
4363
+ }
4364
+ }
4365
+ }
4366
+ },
4367
+ "403": {
4368
+ "description": "The token lacks the permission",
4369
+ "content": {
4370
+ "application/json": {
4371
+ "schema": {
4372
+ "$ref": "#/components/schemas/ErrorBody"
4373
+ }
4374
+ }
4375
+ }
4376
+ },
4377
+ "404": {
4378
+ "description": "Not found",
4379
+ "content": {
4380
+ "application/json": {
4381
+ "schema": {
4382
+ "$ref": "#/components/schemas/ErrorBody"
4383
+ }
4384
+ }
4385
+ }
4386
+ },
4387
+ "429": {
4388
+ "description": "Rate limit hit; see Retry-After",
4389
+ "content": {
4390
+ "application/json": {
4391
+ "schema": {
4392
+ "$ref": "#/components/schemas/ErrorBody"
4393
+ }
4394
+ }
4395
+ }
4396
+ },
4397
+ "503": {
4398
+ "description": "The server thread didn't answer in time",
4399
+ "content": {
4400
+ "application/json": {
4401
+ "schema": {
4402
+ "$ref": "#/components/schemas/ErrorBody"
4403
+ }
4404
+ }
4405
+ }
4406
+ }
4407
+ }
4408
+ }
4409
+ },
4410
+ "/players/{player}/message": {
4411
+ "post": {
4412
+ "operationId": "postPlayersPlayerMessage",
4413
+ "summary": "Send a chat message, title, action bar, or sound to one player",
4414
+ "description": "Permission: `players:write`.",
4055
4415
  "tags": [
4056
4416
  "Players"
4057
4417
  ],
@@ -6386,6 +6746,74 @@
6386
6746
  }
6387
6747
  }
6388
6748
  },
6749
+ "get": {
6750
+ "operationId": "getServerRestart",
6751
+ "summary": "Whether a restart or stop is pending, and when",
6752
+ "description": "Permission: `server:read`.",
6753
+ "tags": [
6754
+ "Server"
6755
+ ],
6756
+ "x-scope": "server:read",
6757
+ "security": [
6758
+ {
6759
+ "bearer": [
6760
+ "server:read"
6761
+ ]
6762
+ }
6763
+ ],
6764
+ "responses": {
6765
+ "200": {
6766
+ "description": "OK",
6767
+ "content": {
6768
+ "application/json": {
6769
+ "schema": {
6770
+ "$ref": "#/components/schemas/RestartStatus"
6771
+ }
6772
+ }
6773
+ }
6774
+ },
6775
+ "401": {
6776
+ "description": "Missing or unknown token",
6777
+ "content": {
6778
+ "application/json": {
6779
+ "schema": {
6780
+ "$ref": "#/components/schemas/ErrorBody"
6781
+ }
6782
+ }
6783
+ }
6784
+ },
6785
+ "403": {
6786
+ "description": "The token lacks the permission",
6787
+ "content": {
6788
+ "application/json": {
6789
+ "schema": {
6790
+ "$ref": "#/components/schemas/ErrorBody"
6791
+ }
6792
+ }
6793
+ }
6794
+ },
6795
+ "429": {
6796
+ "description": "Rate limit hit; see Retry-After",
6797
+ "content": {
6798
+ "application/json": {
6799
+ "schema": {
6800
+ "$ref": "#/components/schemas/ErrorBody"
6801
+ }
6802
+ }
6803
+ }
6804
+ },
6805
+ "503": {
6806
+ "description": "The server thread didn't answer in time",
6807
+ "content": {
6808
+ "application/json": {
6809
+ "schema": {
6810
+ "$ref": "#/components/schemas/ErrorBody"
6811
+ }
6812
+ }
6813
+ }
6814
+ }
6815
+ }
6816
+ },
6389
6817
  "delete": {
6390
6818
  "operationId": "deleteServerRestart",
6391
6819
  "summary": "Call off a pending restart or stop",
@@ -6634,6 +7062,74 @@
6634
7062
  }
6635
7063
  }
6636
7064
  },
7065
+ "get": {
7066
+ "operationId": "getServerStop",
7067
+ "summary": "Whether a restart or stop is pending, and when",
7068
+ "description": "Permission: `server:read`.",
7069
+ "tags": [
7070
+ "Server"
7071
+ ],
7072
+ "x-scope": "server:read",
7073
+ "security": [
7074
+ {
7075
+ "bearer": [
7076
+ "server:read"
7077
+ ]
7078
+ }
7079
+ ],
7080
+ "responses": {
7081
+ "200": {
7082
+ "description": "OK",
7083
+ "content": {
7084
+ "application/json": {
7085
+ "schema": {
7086
+ "$ref": "#/components/schemas/RestartStatus"
7087
+ }
7088
+ }
7089
+ }
7090
+ },
7091
+ "401": {
7092
+ "description": "Missing or unknown token",
7093
+ "content": {
7094
+ "application/json": {
7095
+ "schema": {
7096
+ "$ref": "#/components/schemas/ErrorBody"
7097
+ }
7098
+ }
7099
+ }
7100
+ },
7101
+ "403": {
7102
+ "description": "The token lacks the permission",
7103
+ "content": {
7104
+ "application/json": {
7105
+ "schema": {
7106
+ "$ref": "#/components/schemas/ErrorBody"
7107
+ }
7108
+ }
7109
+ }
7110
+ },
7111
+ "429": {
7112
+ "description": "Rate limit hit; see Retry-After",
7113
+ "content": {
7114
+ "application/json": {
7115
+ "schema": {
7116
+ "$ref": "#/components/schemas/ErrorBody"
7117
+ }
7118
+ }
7119
+ }
7120
+ },
7121
+ "503": {
7122
+ "description": "The server thread didn't answer in time",
7123
+ "content": {
7124
+ "application/json": {
7125
+ "schema": {
7126
+ "$ref": "#/components/schemas/ErrorBody"
7127
+ }
7128
+ }
7129
+ }
7130
+ }
7131
+ }
7132
+ },
6637
7133
  "delete": {
6638
7134
  "operationId": "deleteServerStop",
6639
7135
  "summary": "Call off a pending restart or stop",
@@ -6931,6 +7427,164 @@
6931
7427
  }
6932
7428
  }
6933
7429
  },
7430
+ "/spawn": {
7431
+ "get": {
7432
+ "operationId": "getSpawn",
7433
+ "summary": "Where players join for the first time and respawn without a bed",
7434
+ "description": "Permission: `server:read`.",
7435
+ "tags": [
7436
+ "Worlds"
7437
+ ],
7438
+ "x-scope": "server:read",
7439
+ "security": [
7440
+ {
7441
+ "bearer": [
7442
+ "server:read"
7443
+ ]
7444
+ }
7445
+ ],
7446
+ "responses": {
7447
+ "200": {
7448
+ "description": "OK",
7449
+ "content": {
7450
+ "application/json": {
7451
+ "schema": {
7452
+ "$ref": "#/components/schemas/ServerSpawn"
7453
+ }
7454
+ }
7455
+ }
7456
+ },
7457
+ "401": {
7458
+ "description": "Missing or unknown token",
7459
+ "content": {
7460
+ "application/json": {
7461
+ "schema": {
7462
+ "$ref": "#/components/schemas/ErrorBody"
7463
+ }
7464
+ }
7465
+ }
7466
+ },
7467
+ "403": {
7468
+ "description": "The token lacks the permission",
7469
+ "content": {
7470
+ "application/json": {
7471
+ "schema": {
7472
+ "$ref": "#/components/schemas/ErrorBody"
7473
+ }
7474
+ }
7475
+ }
7476
+ },
7477
+ "429": {
7478
+ "description": "Rate limit hit; see Retry-After",
7479
+ "content": {
7480
+ "application/json": {
7481
+ "schema": {
7482
+ "$ref": "#/components/schemas/ErrorBody"
7483
+ }
7484
+ }
7485
+ }
7486
+ },
7487
+ "503": {
7488
+ "description": "The server thread didn't answer in time",
7489
+ "content": {
7490
+ "application/json": {
7491
+ "schema": {
7492
+ "$ref": "#/components/schemas/ErrorBody"
7493
+ }
7494
+ }
7495
+ }
7496
+ }
7497
+ }
7498
+ },
7499
+ "patch": {
7500
+ "operationId": "patchSpawn",
7501
+ "summary": "Move the spawn point, change its world, or its respawn radius",
7502
+ "description": "`x`, `y`, and `z` come together. `world` alone moves the respawn to that world's own spawn; with coordinates, to that spot in it.\n\nPermission: `world:write`.",
7503
+ "tags": [
7504
+ "Worlds"
7505
+ ],
7506
+ "x-scope": "world:write",
7507
+ "security": [
7508
+ {
7509
+ "bearer": [
7510
+ "world:write"
7511
+ ]
7512
+ }
7513
+ ],
7514
+ "requestBody": {
7515
+ "required": false,
7516
+ "content": {
7517
+ "application/json": {
7518
+ "schema": {
7519
+ "$ref": "#/components/schemas/ServerSpawnPatch"
7520
+ }
7521
+ }
7522
+ }
7523
+ },
7524
+ "responses": {
7525
+ "200": {
7526
+ "description": "OK",
7527
+ "content": {
7528
+ "application/json": {
7529
+ "schema": {
7530
+ "$ref": "#/components/schemas/ServerSpawn"
7531
+ }
7532
+ }
7533
+ }
7534
+ },
7535
+ "400": {
7536
+ "description": "Invalid request",
7537
+ "content": {
7538
+ "application/json": {
7539
+ "schema": {
7540
+ "$ref": "#/components/schemas/ErrorBody"
7541
+ }
7542
+ }
7543
+ }
7544
+ },
7545
+ "401": {
7546
+ "description": "Missing or unknown token",
7547
+ "content": {
7548
+ "application/json": {
7549
+ "schema": {
7550
+ "$ref": "#/components/schemas/ErrorBody"
7551
+ }
7552
+ }
7553
+ }
7554
+ },
7555
+ "403": {
7556
+ "description": "The token lacks the permission",
7557
+ "content": {
7558
+ "application/json": {
7559
+ "schema": {
7560
+ "$ref": "#/components/schemas/ErrorBody"
7561
+ }
7562
+ }
7563
+ }
7564
+ },
7565
+ "429": {
7566
+ "description": "Rate limit hit; see Retry-After",
7567
+ "content": {
7568
+ "application/json": {
7569
+ "schema": {
7570
+ "$ref": "#/components/schemas/ErrorBody"
7571
+ }
7572
+ }
7573
+ }
7574
+ },
7575
+ "503": {
7576
+ "description": "The server thread didn't answer in time",
7577
+ "content": {
7578
+ "application/json": {
7579
+ "schema": {
7580
+ "$ref": "#/components/schemas/ErrorBody"
7581
+ }
7582
+ }
7583
+ }
7584
+ }
7585
+ }
7586
+ }
7587
+ },
6934
7588
  "/tokens": {
6935
7589
  "get": {
6936
7590
  "operationId": "getTokens",
@@ -7973,11 +8627,132 @@
7973
8627
  }
7974
8628
  }
7975
8629
  },
7976
- "/worlds/{world}/blocks/{x}/{y}/{z}/container": {
7977
- "delete": {
7978
- "operationId": "deleteWorldsWorldBlocksXYZContainer",
7979
- "summary": "Empty a whole container",
7980
- "description": "Permission: `world:write`.",
8630
+ "/worlds/{world}/blocks/{x}/{y}/{z}/container": {
8631
+ "delete": {
8632
+ "operationId": "deleteWorldsWorldBlocksXYZContainer",
8633
+ "summary": "Empty a whole container",
8634
+ "description": "Permission: `world:write`.",
8635
+ "tags": [
8636
+ "Containers"
8637
+ ],
8638
+ "x-scope": "world:write",
8639
+ "security": [
8640
+ {
8641
+ "bearer": [
8642
+ "world:write"
8643
+ ]
8644
+ }
8645
+ ],
8646
+ "parameters": [
8647
+ {
8648
+ "name": "world",
8649
+ "in": "path",
8650
+ "required": true,
8651
+ "description": "World name (`world_nether`) or key (`minecraft:the_nether`)",
8652
+ "schema": {
8653
+ "type": "string"
8654
+ }
8655
+ },
8656
+ {
8657
+ "name": "x",
8658
+ "in": "path",
8659
+ "required": true,
8660
+ "description": "Block X",
8661
+ "schema": {
8662
+ "type": "integer"
8663
+ }
8664
+ },
8665
+ {
8666
+ "name": "y",
8667
+ "in": "path",
8668
+ "required": true,
8669
+ "description": "Block Y",
8670
+ "schema": {
8671
+ "type": "integer"
8672
+ }
8673
+ },
8674
+ {
8675
+ "name": "z",
8676
+ "in": "path",
8677
+ "required": true,
8678
+ "description": "Block Z",
8679
+ "schema": {
8680
+ "type": "integer"
8681
+ }
8682
+ }
8683
+ ],
8684
+ "responses": {
8685
+ "204": {
8686
+ "description": "Done"
8687
+ },
8688
+ "400": {
8689
+ "description": "Invalid request",
8690
+ "content": {
8691
+ "application/json": {
8692
+ "schema": {
8693
+ "$ref": "#/components/schemas/ErrorBody"
8694
+ }
8695
+ }
8696
+ }
8697
+ },
8698
+ "401": {
8699
+ "description": "Missing or unknown token",
8700
+ "content": {
8701
+ "application/json": {
8702
+ "schema": {
8703
+ "$ref": "#/components/schemas/ErrorBody"
8704
+ }
8705
+ }
8706
+ }
8707
+ },
8708
+ "403": {
8709
+ "description": "The token lacks the permission",
8710
+ "content": {
8711
+ "application/json": {
8712
+ "schema": {
8713
+ "$ref": "#/components/schemas/ErrorBody"
8714
+ }
8715
+ }
8716
+ }
8717
+ },
8718
+ "404": {
8719
+ "description": "Not found",
8720
+ "content": {
8721
+ "application/json": {
8722
+ "schema": {
8723
+ "$ref": "#/components/schemas/ErrorBody"
8724
+ }
8725
+ }
8726
+ }
8727
+ },
8728
+ "429": {
8729
+ "description": "Rate limit hit; see Retry-After",
8730
+ "content": {
8731
+ "application/json": {
8732
+ "schema": {
8733
+ "$ref": "#/components/schemas/ErrorBody"
8734
+ }
8735
+ }
8736
+ }
8737
+ },
8738
+ "503": {
8739
+ "description": "The server thread didn't answer in time",
8740
+ "content": {
8741
+ "application/json": {
8742
+ "schema": {
8743
+ "$ref": "#/components/schemas/ErrorBody"
8744
+ }
8745
+ }
8746
+ }
8747
+ }
8748
+ }
8749
+ }
8750
+ },
8751
+ "/worlds/{world}/blocks/{x}/{y}/{z}/container/give": {
8752
+ "post": {
8753
+ "operationId": "postWorldsWorldBlocksXYZContainerGive",
8754
+ "summary": "Add an item to a container",
8755
+ "description": "Whatever doesn't fit is lost and counted in `dropped`.\n\nPermission: `world:write`.",
7981
8756
  "tags": [
7982
8757
  "Containers"
7983
8758
  ],
@@ -8027,9 +8802,26 @@
8027
8802
  }
8028
8803
  }
8029
8804
  ],
8805
+ "requestBody": {
8806
+ "required": true,
8807
+ "content": {
8808
+ "application/json": {
8809
+ "schema": {
8810
+ "$ref": "#/components/schemas/GiveRequest"
8811
+ }
8812
+ }
8813
+ }
8814
+ },
8030
8815
  "responses": {
8031
- "204": {
8032
- "description": "Done"
8816
+ "200": {
8817
+ "description": "OK",
8818
+ "content": {
8819
+ "application/json": {
8820
+ "schema": {
8821
+ "$ref": "#/components/schemas/GiveResult"
8822
+ }
8823
+ }
8824
+ }
8033
8825
  },
8034
8826
  "400": {
8035
8827
  "description": "Invalid request",
@@ -8094,11 +8886,11 @@
8094
8886
  }
8095
8887
  }
8096
8888
  },
8097
- "/worlds/{world}/blocks/{x}/{y}/{z}/container/give": {
8098
- "post": {
8099
- "operationId": "postWorldsWorldBlocksXYZContainerGive",
8100
- "summary": "Add an item to a container",
8101
- "description": "Whatever doesn't fit is lost and counted in `dropped`.\n\nPermission: `world:write`.",
8889
+ "/worlds/{world}/blocks/{x}/{y}/{z}/container/slots/{slot}": {
8890
+ "patch": {
8891
+ "operationId": "patchWorldsWorldBlocksXYZContainerSlotsSlot",
8892
+ "summary": "Put an item in a container slot",
8893
+ "description": "Slots count from 0; a double chest has 54, the left half first.\n\nPermission: `world:write`.",
8102
8894
  "tags": [
8103
8895
  "Containers"
8104
8896
  ],
@@ -8146,14 +8938,23 @@
8146
8938
  "schema": {
8147
8939
  "type": "integer"
8148
8940
  }
8941
+ },
8942
+ {
8943
+ "name": "slot",
8944
+ "in": "path",
8945
+ "required": true,
8946
+ "description": "Slot number; see the inventory layout in the description",
8947
+ "schema": {
8948
+ "type": "integer"
8949
+ }
8149
8950
  }
8150
8951
  ],
8151
8952
  "requestBody": {
8152
- "required": true,
8953
+ "required": false,
8153
8954
  "content": {
8154
8955
  "application/json": {
8155
8956
  "schema": {
8156
- "$ref": "#/components/schemas/GiveRequest"
8957
+ "$ref": "#/components/schemas/ItemInput"
8157
8958
  }
8158
8959
  }
8159
8960
  }
@@ -8164,7 +8965,7 @@
8164
8965
  "content": {
8165
8966
  "application/json": {
8166
8967
  "schema": {
8167
- "$ref": "#/components/schemas/GiveResult"
8968
+ "$ref": "#/components/schemas/ItemView"
8168
8969
  }
8169
8970
  }
8170
8971
  }
@@ -8230,12 +9031,10 @@
8230
9031
  }
8231
9032
  }
8232
9033
  }
8233
- }
8234
- },
8235
- "/worlds/{world}/blocks/{x}/{y}/{z}/container/slots/{slot}": {
8236
- "patch": {
8237
- "operationId": "patchWorldsWorldBlocksXYZContainerSlotsSlot",
8238
- "summary": "Put an item in a container slot",
9034
+ },
9035
+ "delete": {
9036
+ "operationId": "deleteWorldsWorldBlocksXYZContainerSlotsSlot",
9037
+ "summary": "Empty a container slot",
8239
9038
  "description": "Slots count from 0; a double chest has 54, the left half first.\n\nPermission: `world:write`.",
8240
9039
  "tags": [
8241
9040
  "Containers"
@@ -8295,26 +9094,9 @@
8295
9094
  }
8296
9095
  }
8297
9096
  ],
8298
- "requestBody": {
8299
- "required": false,
8300
- "content": {
8301
- "application/json": {
8302
- "schema": {
8303
- "$ref": "#/components/schemas/ItemInput"
8304
- }
8305
- }
8306
- }
8307
- },
8308
9097
  "responses": {
8309
- "200": {
8310
- "description": "OK",
8311
- "content": {
8312
- "application/json": {
8313
- "schema": {
8314
- "$ref": "#/components/schemas/ItemView"
8315
- }
8316
- }
8317
- }
9098
+ "204": {
9099
+ "description": "Done"
8318
9100
  },
8319
9101
  "400": {
8320
9102
  "description": "Invalid request",
@@ -8377,11 +9159,13 @@
8377
9159
  }
8378
9160
  }
8379
9161
  }
8380
- },
8381
- "delete": {
8382
- "operationId": "deleteWorldsWorldBlocksXYZContainerSlotsSlot",
8383
- "summary": "Empty a container slot",
8384
- "description": "Slots count from 0; a double chest has 54, the left half first.\n\nPermission: `world:write`.",
9162
+ }
9163
+ },
9164
+ "/worlds/{world}/blocks/{x}/{y}/{z}/container/slots/{slot}/take": {
9165
+ "post": {
9166
+ "operationId": "postWorldsWorldBlocksXYZContainerSlotsSlotTake",
9167
+ "summary": "Take some items from a container slot",
9168
+ "description": "Slots count from 0; a double chest has 54, the left half first. The rest of the stack keeps its enchantments, name, and the like.\n\nPermission: `world:write`.",
8385
9169
  "tags": [
8386
9170
  "Containers"
8387
9171
  ],
@@ -8440,9 +9224,26 @@
8440
9224
  }
8441
9225
  }
8442
9226
  ],
9227
+ "requestBody": {
9228
+ "required": true,
9229
+ "content": {
9230
+ "application/json": {
9231
+ "schema": {
9232
+ "$ref": "#/components/schemas/TakeRequest"
9233
+ }
9234
+ }
9235
+ }
9236
+ },
8443
9237
  "responses": {
8444
- "204": {
8445
- "description": "Done"
9238
+ "200": {
9239
+ "description": "OK",
9240
+ "content": {
9241
+ "application/json": {
9242
+ "schema": {
9243
+ "$ref": "#/components/schemas/TakeResult"
9244
+ }
9245
+ }
9246
+ }
8446
9247
  },
8447
9248
  "400": {
8448
9249
  "description": "Invalid request",
@@ -13498,6 +14299,15 @@
13498
14299
  "string",
13499
14300
  "null"
13500
14301
  ]
14302
+ },
14303
+ "writable": {
14304
+ "type": "boolean"
14305
+ },
14306
+ "readOnlyReason": {
14307
+ "type": [
14308
+ "string",
14309
+ "null"
14310
+ ]
13501
14311
  }
13502
14312
  },
13503
14313
  "required": [
@@ -13562,6 +14372,12 @@
13562
14372
  },
13563
14373
  "writable": {
13564
14374
  "type": "boolean"
14375
+ },
14376
+ "readOnlyReason": {
14377
+ "type": [
14378
+ "string",
14379
+ "null"
14380
+ ]
13565
14381
  }
13566
14382
  },
13567
14383
  "required": [
@@ -16196,6 +17012,107 @@
16196
17012
  ],
16197
17013
  "additionalProperties": false
16198
17014
  },
17015
+ "ServerSpawn": {
17016
+ "type": "object",
17017
+ "properties": {
17018
+ "world": {
17019
+ "type": "string"
17020
+ },
17021
+ "key": {
17022
+ "type": "string"
17023
+ },
17024
+ "x": {
17025
+ "type": "integer",
17026
+ "format": "int32"
17027
+ },
17028
+ "y": {
17029
+ "type": "integer",
17030
+ "format": "int32"
17031
+ },
17032
+ "z": {
17033
+ "type": "integer",
17034
+ "format": "int32"
17035
+ },
17036
+ "yaw": {
17037
+ "type": "number"
17038
+ },
17039
+ "pitch": {
17040
+ "type": "number"
17041
+ },
17042
+ "respawnRadius": {
17043
+ "type": "integer",
17044
+ "format": "int32"
17045
+ },
17046
+ "spawnProtection": {
17047
+ "type": "integer",
17048
+ "format": "int32"
17049
+ }
17050
+ },
17051
+ "required": [
17052
+ "world",
17053
+ "key",
17054
+ "x",
17055
+ "y",
17056
+ "z",
17057
+ "yaw",
17058
+ "pitch",
17059
+ "respawnRadius",
17060
+ "spawnProtection"
17061
+ ],
17062
+ "additionalProperties": false
17063
+ },
17064
+ "ServerSpawnPatch": {
17065
+ "type": "object",
17066
+ "properties": {
17067
+ "world": {
17068
+ "type": [
17069
+ "string",
17070
+ "null"
17071
+ ]
17072
+ },
17073
+ "x": {
17074
+ "type": [
17075
+ "integer",
17076
+ "null"
17077
+ ],
17078
+ "format": "int32"
17079
+ },
17080
+ "y": {
17081
+ "type": [
17082
+ "integer",
17083
+ "null"
17084
+ ],
17085
+ "format": "int32"
17086
+ },
17087
+ "z": {
17088
+ "type": [
17089
+ "integer",
17090
+ "null"
17091
+ ],
17092
+ "format": "int32"
17093
+ },
17094
+ "yaw": {
17095
+ "type": [
17096
+ "number",
17097
+ "null"
17098
+ ]
17099
+ },
17100
+ "pitch": {
17101
+ "type": [
17102
+ "number",
17103
+ "null"
17104
+ ]
17105
+ },
17106
+ "respawnRadius": {
17107
+ "type": [
17108
+ "integer",
17109
+ "null"
17110
+ ],
17111
+ "format": "int32"
17112
+ }
17113
+ },
17114
+ "additionalProperties": false
17115
+ },
16199
17116
  "SessionView": {
16200
17117
  "type": "object",
16201
17118
  "properties": {
@@ -16460,6 +17377,42 @@
16460
17377
  ],
16461
17378
  "additionalProperties": false
16462
17379
  },
17380
+ "TakeRequest": {
17381
+ "type": "object",
17382
+ "properties": {
17383
+ "amount": {
17384
+ "type": "integer",
17385
+ "format": "int32"
17386
+ }
17387
+ },
17388
+ "required": [
17389
+ "amount"
17390
+ ],
17391
+ "additionalProperties": false
17392
+ },
17393
+ "TakeResult": {
17394
+ "type": "object",
17395
+ "properties": {
17396
+ "taken": {
17397
+ "type": "integer",
17398
+ "format": "int32"
17399
+ },
17400
+ "item": {
17401
+ "oneOf": [
17402
+ {
17403
+ "$ref": "#/components/schemas/ItemView"
17404
+ },
17405
+ {
17406
+ "type": "null"
17407
+ }
17408
+ ]
17409
+ }
17410
+ },
17411
+ "required": [
17412
+ "taken"
17413
+ ],
17414
+ "additionalProperties": false
17415
+ },
16463
17416
  "TeleportRequest": {
16464
17417
  "type": "object",
16465
17418
  "properties": {