<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Map Service on Microservice Dungeon</title>
		<link>https://docs.microservice-dungeon.de/docs/reference/map-service/</link>
		<description>Recent content in Map Service on Microservice Dungeon</description>
		<generator>Hugo</generator>
		<language>en</language>
		
		
		
		
			<atom:link href="https://docs.microservice-dungeon.de/docs/reference/map-service/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>Map Service OpenAPI</title>
				<link>https://docs.microservice-dungeon.de/docs/reference/map-service/openapi/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://docs.microservice-dungeon.de/docs/reference/map-service/openapi/</guid>
				<description>&lt;div id=&#34;docsy_swagger_ui&#34;&gt;&lt;/div&gt;&#xA;&lt;script&gt;&#xA;  window.onload = function () {&#xA;    const ui = SwaggerUIBundle({&#xA;      spec: JSON.parse(&#34;{\&#34;components\&#34;:{\&#34;schemas\&#34;:{\&#34;ErrorResponse\&#34;:{\&#34;properties\&#34;:{\&#34;message\&#34;:{\&#34;example\&#34;:\&#34;Template is built-in and cannot be modified\&#34;,\&#34;type\&#34;:\&#34;string\&#34;}},\&#34;type\&#34;:\&#34;object\&#34;},\&#34;GravityZone\&#34;:{\&#34;properties\&#34;:{\&#34;coordinate\&#34;:{\&#34;description\&#34;:\&#34;Required for type \\\&#34;tile\\\&#34;\&#34;,\&#34;pattern\&#34;:\&#34;^\\\\(\\\\d+,\\\\d+\\\\)$\&#34;,\&#34;type\&#34;:\&#34;string\&#34;},\&#34;fromRingIndex\&#34;:{\&#34;description\&#34;:\&#34;Required for type \\\&#34;ring\\\&#34;\&#34;,\&#34;minimum\&#34;:0,\&#34;type\&#34;:\&#34;integer\&#34;},\&#34;gravityLevel\&#34;:{\&#34;enum\&#34;:[\&#34;light\&#34;,\&#34;medium\&#34;,\&#34;intense\&#34;],\&#34;type\&#34;:\&#34;string\&#34;},\&#34;lowerLeft\&#34;:{\&#34;description\&#34;:\&#34;Required for type \\\&#34;rectangle\\\&#34;\&#34;,\&#34;pattern\&#34;:\&#34;^\\\\(\\\\d+,\\\\d+\\\\)$\&#34;,\&#34;type\&#34;:\&#34;string\&#34;},\&#34;toRingIndex\&#34;:{\&#34;description\&#34;:\&#34;Required for type \\\&#34;ring\\\&#34;\&#34;,\&#34;minimum\&#34;:0,\&#34;type\&#34;:\&#34;integer\&#34;},\&#34;type\&#34;:{\&#34;$ref\&#34;:\&#34;#/components/schemas/ZoneGeometryType\&#34;},\&#34;upperRight\&#34;:{\&#34;description\&#34;:\&#34;Required for type \\\&#34;rectangle\\\&#34;\&#34;,\&#34;pattern\&#34;:\&#34;^\\\\(\\\\d+,\\\\d+\\\\)$\&#34;,\&#34;type\&#34;:\&#34;string\&#34;}},\&#34;required\&#34;:[\&#34;type\&#34;,\&#34;gravityLevel\&#34;],\&#34;type\&#34;:\&#34;object\&#34;},\&#34;MapStructureZone\&#34;:{\&#34;properties\&#34;:{\&#34;coordinate\&#34;:{\&#34;pattern\&#34;:\&#34;^\\\\(\\\\d+,\\\\d+\\\\)$\&#34;,\&#34;type\&#34;:\&#34;string\&#34;},\&#34;fromRingIndex\&#34;:{\&#34;minimum\&#34;:0,\&#34;type\&#34;:\&#34;integer\&#34;},\&#34;lowerLeft\&#34;:{\&#34;pattern\&#34;:\&#34;^\\\\(\\\\d+,\\\\d+\\\\)$\&#34;,\&#34;type\&#34;:\&#34;string\&#34;},\&#34;spaceType\&#34;:{\&#34;enum\&#34;:[\&#34;planet\&#34;,\&#34;void\&#34;],\&#34;type\&#34;:\&#34;string\&#34;},\&#34;toRingIndex\&#34;:{\&#34;minimum\&#34;:0,\&#34;type\&#34;:\&#34;integer\&#34;},\&#34;type\&#34;:{\&#34;$ref\&#34;:\&#34;#/components/schemas/ZoneGeometryType\&#34;},\&#34;upperRight\&#34;:{\&#34;pattern\&#34;:\&#34;^\\\\(\\\\d+,\\\\d+\\\\)$\&#34;,\&#34;type\&#34;:\&#34;string\&#34;}},\&#34;required\&#34;:[\&#34;type\&#34;,\&#34;spaceType\&#34;],\&#34;type\&#34;:\&#34;object\&#34;},\&#34;MapTemplateDetail\&#34;:{\&#34;properties\&#34;:{\&#34;builtIn\&#34;:{\&#34;description\&#34;:\&#34;Built-in templates are loaded on startup from the system&#39;s seed data. They cannot be modified or deleted via the API.\\n\&#34;,\&#34;type\&#34;:\&#34;boolean\&#34;},\&#34;description\&#34;:{\&#34;nullable\&#34;:true,\&#34;type\&#34;:\&#34;string\&#34;},\&#34;gravityZones\&#34;:{\&#34;items\&#34;:{\&#34;$ref\&#34;:\&#34;#/components/schemas/GravityZone\&#34;},\&#34;type\&#34;:\&#34;array\&#34;},\&#34;id\&#34;:{\&#34;format\&#34;:\&#34;uuid\&#34;,\&#34;type\&#34;:\&#34;string\&#34;},\&#34;mapStructureZones\&#34;:{\&#34;items\&#34;:{\&#34;$ref\&#34;:\&#34;#/components/schemas/MapStructureZone\&#34;},\&#34;type\&#34;:\&#34;array\&#34;},\&#34;name\&#34;:{\&#34;type\&#34;:\&#34;string\&#34;},\&#34;planetTypeDistributionZones\&#34;:{\&#34;items\&#34;:{\&#34;$ref\&#34;:\&#34;#/components/schemas/PlanetTypeDistributionZone\&#34;},\&#34;type\&#34;:\&#34;array\&#34;},\&#34;replenishmentZones\&#34;:{\&#34;items\&#34;:{\&#34;$ref\&#34;:\&#34;#/components/schemas/ReplenishmentZone\&#34;},\&#34;type\&#34;:\&#34;array\&#34;},\&#34;topRightCorner\&#34;:{\&#34;pattern\&#34;:\&#34;^\\\\(\\\\d+,\\\\d+\\\\)$\&#34;,\&#34;type\&#34;:\&#34;string\&#34;}},\&#34;type\&#34;:\&#34;object\&#34;},\&#34;MapTemplatePatchRequest\&#34;:{\&#34;description\&#34;:\&#34;All fields are optional. Only provided fields are updated. When a zone array is provided, it replaces the entire list.\\n\&#34;,\&#34;properties\&#34;:{\&#34;description\&#34;:{\&#34;nullable\&#34;:true,\&#34;type\&#34;:\&#34;string\&#34;},\&#34;gravityZones\&#34;:{\&#34;items\&#34;:{\&#34;$ref\&#34;:\&#34;#/components/schemas/GravityZone\&#34;},\&#34;type\&#34;:\&#34;array\&#34;},\&#34;mapStructureZones\&#34;:{\&#34;items\&#34;:{\&#34;$ref\&#34;:\&#34;#/components/schemas/MapStructureZone\&#34;},\&#34;type\&#34;:\&#34;array\&#34;},\&#34;name\&#34;:{\&#34;type\&#34;:\&#34;string\&#34;},\&#34;planetTypeDistributionZones\&#34;:{\&#34;items\&#34;:{\&#34;$ref\&#34;:\&#34;#/components/schemas/PlanetTypeDistributionZone\&#34;},\&#34;type\&#34;:\&#34;array\&#34;},\&#34;replenishmentZones\&#34;:{\&#34;items\&#34;:{\&#34;$ref\&#34;:\&#34;#/components/schemas/ReplenishmentZone\&#34;},\&#34;type\&#34;:\&#34;array\&#34;},\&#34;topRightCorner\&#34;:{\&#34;pattern\&#34;:\&#34;^\\\\(\\\\d+,\\\\d+\\\\)$\&#34;,\&#34;type\&#34;:\&#34;string\&#34;}},\&#34;type\&#34;:\&#34;object\&#34;},\&#34;MapTemplateRequest\&#34;:{\&#34;properties\&#34;:{\&#34;description\&#34;:{\&#34;nullable\&#34;:true,\&#34;type\&#34;:\&#34;string\&#34;},\&#34;gravityZones\&#34;:{\&#34;items\&#34;:{\&#34;$ref\&#34;:\&#34;#/components/schemas/GravityZone\&#34;},\&#34;type\&#34;:\&#34;array\&#34;},\&#34;mapStructureZones\&#34;:{\&#34;items\&#34;:{\&#34;$ref\&#34;:\&#34;#/components/schemas/MapStructureZone\&#34;},\&#34;type\&#34;:\&#34;array\&#34;},\&#34;name\&#34;:{\&#34;type\&#34;:\&#34;string\&#34;},\&#34;planetTypeDistributionZones\&#34;:{\&#34;items\&#34;:{\&#34;$ref\&#34;:\&#34;#/components/schemas/PlanetTypeDistributionZone\&#34;},\&#34;type\&#34;:\&#34;array\&#34;},\&#34;replenishmentZones\&#34;:{\&#34;items\&#34;:{\&#34;$ref\&#34;:\&#34;#/components/schemas/ReplenishmentZone\&#34;},\&#34;type\&#34;:\&#34;array\&#34;},\&#34;topRightCorner\&#34;:{\&#34;pattern\&#34;:\&#34;^\\\\(\\\\d+,\\\\d+\\\\)$\&#34;,\&#34;type\&#34;:\&#34;string\&#34;}},\&#34;required\&#34;:[\&#34;name\&#34;,\&#34;topRightCorner\&#34;],\&#34;type\&#34;:\&#34;object\&#34;},\&#34;MapTemplateSummary\&#34;:{\&#34;properties\&#34;:{\&#34;description\&#34;:{\&#34;nullable\&#34;:true,\&#34;type\&#34;:\&#34;string\&#34;},\&#34;id\&#34;:{\&#34;format\&#34;:\&#34;uuid\&#34;,\&#34;type\&#34;:\&#34;string\&#34;},\&#34;name\&#34;:{\&#34;type\&#34;:\&#34;string\&#34;}},\&#34;type\&#34;:\&#34;object\&#34;},\&#34;PlanetTypeDistributionZone\&#34;:{\&#34;properties\&#34;:{\&#34;coordinate\&#34;:{\&#34;pattern\&#34;:\&#34;^\\\\(\\\\d+,\\\\d+\\\\)$\&#34;,\&#34;type\&#34;:\&#34;string\&#34;},\&#34;count\&#34;:{\&#34;description\&#34;:\&#34;How many planets of this type to place. Defaults to \\\&#34;1\\\&#34; for tile geometry. Supports fixed numbers (\\\&#34;5\\\&#34;) or expressions (\\\&#34;empty_planets * 0.25\\\&#34;).\\n\&#34;,\&#34;type\&#34;:\&#34;string\&#34;},\&#34;fromRingIndex\&#34;:{\&#34;minimum\&#34;:0,\&#34;type\&#34;:\&#34;integer\&#34;},\&#34;lowerLeft\&#34;:{\&#34;pattern\&#34;:\&#34;^\\\\(\\\\d+,\\\\d+\\\\)$\&#34;,\&#34;type\&#34;:\&#34;string\&#34;},\&#34;planetUsageType\&#34;:{\&#34;enum\&#34;:[\&#34;space_station\&#34;,\&#34;space_station_no_spawning\&#34;,\&#34;resource_mine\&#34;,\&#34;black_hole\&#34;],\&#34;type\&#34;:\&#34;string\&#34;},\&#34;resource\&#34;:{\&#34;description\&#34;:\&#34;Required for planetUsageType \\\&#34;resource_mine\\\&#34;. Format: \\\&#34;\\u003camount\\u003e \\u003ctype_key\\u003e\\\&#34; (e.g. \\\&#34;2000 id\\\&#34;).\\n\&#34;,\&#34;type\&#34;:\&#34;string\&#34;},\&#34;toRingIndex\&#34;:{\&#34;minimum\&#34;:0,\&#34;type\&#34;:\&#34;integer\&#34;},\&#34;type\&#34;:{\&#34;$ref\&#34;:\&#34;#/components/schemas/ZoneGeometryType\&#34;},\&#34;upperRight\&#34;:{\&#34;pattern\&#34;:\&#34;^\\\\(\\\\d+,\\\\d+\\\\)$\&#34;,\&#34;type\&#34;:\&#34;string\&#34;}},\&#34;required\&#34;:[\&#34;type\&#34;,\&#34;planetUsageType\&#34;],\&#34;type\&#34;:\&#34;object\&#34;},\&#34;ReplenishmentZone\&#34;:{\&#34;properties\&#34;:{\&#34;coordinate\&#34;:{\&#34;pattern\&#34;:\&#34;^\\\\(\\\\d+,\\\\d+\\\\)$\&#34;,\&#34;type\&#34;:\&#34;string\&#34;},\&#34;fromRingIndex\&#34;:{\&#34;minimum\&#34;:0,\&#34;type\&#34;:\&#34;integer\&#34;},\&#34;location\&#34;:{\&#34;description\&#34;:\&#34;Whether to replenish at existing or new locations\&#34;,\&#34;enum\&#34;:[\&#34;EXISTING\&#34;,\&#34;NEW\&#34;],\&#34;type\&#34;:\&#34;string\&#34;},\&#34;lowerLeft\&#34;:{\&#34;pattern\&#34;:\&#34;^\\\\(\\\\d+,\\\\d+\\\\)$\&#34;,\&#34;type\&#34;:\&#34;string\&#34;},\&#34;onlyForResource\&#34;:{\&#34;description\&#34;:\&#34;Restrict replenishment to a specific resource type\&#34;,\&#34;enum\&#34;:[\&#34;BIO_MATTER\&#34;,\&#34;CRYO_GAS\&#34;,\&#34;DARK_MATTER\&#34;,\&#34;ION_DUST\&#34;,\&#34;PLASMA_CORES\&#34;],\&#34;nullable\&#34;:true,\&#34;type\&#34;:\&#34;string\&#34;},\&#34;replenishBy\&#34;:{\&#34;description\&#34;:\&#34;Amount of resources to add during replenishment\&#34;,\&#34;minimum\&#34;:1,\&#34;type\&#34;:\&#34;integer\&#34;},\&#34;threshold\&#34;:{\&#34;description\&#34;:\&#34;Resource amount below which replenishment is triggered\&#34;,\&#34;minimum\&#34;:0,\&#34;type\&#34;:\&#34;integer\&#34;},\&#34;toRingIndex\&#34;:{\&#34;minimum\&#34;:0,\&#34;type\&#34;:\&#34;integer\&#34;},\&#34;type\&#34;:{\&#34;$ref\&#34;:\&#34;#/components/schemas/ZoneGeometryType\&#34;},\&#34;upperRight\&#34;:{\&#34;pattern\&#34;:\&#34;^\\\\(\\\\d+,\\\\d+\\\\)$\&#34;,\&#34;type\&#34;:\&#34;string\&#34;}},\&#34;required\&#34;:[\&#34;type\&#34;,\&#34;threshold\&#34;,\&#34;replenishBy\&#34;],\&#34;type\&#34;:\&#34;object\&#34;},\&#34;ZoneGeometryType\&#34;:{\&#34;enum\&#34;:[\&#34;tile\&#34;,\&#34;rectangle\&#34;,\&#34;ring\&#34;],\&#34;type\&#34;:\&#34;string\&#34;}}},\&#34;info\&#34;:{\&#34;description\&#34;:\&#34;Admin API for managing map templates and the default template selection.\&#34;,\&#34;title\&#34;:\&#34;Map-Service REST API\&#34;,\&#34;version\&#34;:\&#34;1.0.0\&#34;},\&#34;openapi\&#34;:\&#34;3.0.3\&#34;,\&#34;paths\&#34;:{\&#34;/map-templates\&#34;:{\&#34;get\&#34;:{\&#34;description\&#34;:\&#34;Returns a summary list of all map templates. Use GET /map-templates/{templateId} to retrieve the full template with all zone definitions.\\n\&#34;,\&#34;operationId\&#34;:\&#34;getAllMapTemplates\&#34;,\&#34;responses\&#34;:{\&#34;200\&#34;:{\&#34;content\&#34;:{\&#34;application/json\&#34;:{\&#34;example\&#34;:[{\&#34;description\&#34;:\&#34;Template for a tiny map (3x3, from (0,0) to (2,2), very close to the minimal size)\&#34;,\&#34;id\&#34;:\&#34;a1b2c3d4-0001-4000-8000-000000000001\&#34;,\&#34;name\&#34;:\&#34;Tiny Map\&#34;},{\&#34;description\&#34;:\&#34;Template for a small map (10x8, from (0,0) to (9,7), suitable for up to 5 players)\&#34;,\&#34;id\&#34;:\&#34;a1b2c3d4-0002-4000-8000-000000000002\&#34;,\&#34;name\&#34;:\&#34;Small Map\&#34;},{\&#34;description\&#34;:\&#34;Template for an arena map (21x11, from (0,0) to (20,10), two bases with a central arena)\&#34;,\&#34;id\&#34;:\&#34;a1b2c3d4-0003-4000-8000-000000000003\&#34;,\&#34;name\&#34;:\&#34;Arena\&#34;},{\&#34;description\&#34;:\&#34;Template for a maze map (18x18, from (0,0) to (17,17), suitable for larger groups)\&#34;,\&#34;id\&#34;:\&#34;a1b2c3d4-0004-4000-8000-000000000004\&#34;,\&#34;name\&#34;:\&#34;Maze\&#34;},{\&#34;description\&#34;:\&#34;A small custom 5x5 map for quick testing\&#34;,\&#34;id\&#34;:\&#34;f5e6d7c8-9999-4000-8000-aaaaaaaaaaaa\&#34;,\&#34;name\&#34;:\&#34;My Custom Map\&#34;}],\&#34;schema\&#34;:{\&#34;items\&#34;:{\&#34;$ref\&#34;:\&#34;#/components/schemas/MapTemplateSummary\&#34;},\&#34;type\&#34;:\&#34;array\&#34;}}},\&#34;description\&#34;:\&#34;All map templates\&#34;}},\&#34;summary\&#34;:\&#34;List all map templates\&#34;},\&#34;post\&#34;:{\&#34;operationId\&#34;:\&#34;createMapTemplate\&#34;,\&#34;requestBody\&#34;:{\&#34;content\&#34;:{\&#34;application/json\&#34;:{\&#34;example\&#34;:{\&#34;description\&#34;:\&#34;A small custom 5x5 map for quick testing\&#34;,\&#34;gravityZones\&#34;:[{\&#34;fromRingIndex\&#34;:0,\&#34;gravityLevel\&#34;:\&#34;light\&#34;,\&#34;toRingIndex\&#34;:1,\&#34;type\&#34;:\&#34;ring\&#34;},{\&#34;fromRingIndex\&#34;:2,\&#34;gravityLevel\&#34;:\&#34;medium\&#34;,\&#34;toRingIndex\&#34;:2,\&#34;type\&#34;:\&#34;ring\&#34;}],\&#34;mapStructureZones\&#34;:[{\&#34;coordinate\&#34;:\&#34;(1,1)\&#34;,\&#34;spaceType\&#34;:\&#34;void\&#34;,\&#34;type\&#34;:\&#34;tile\&#34;}],\&#34;name\&#34;:\&#34;My Custom Map\&#34;,\&#34;planetTypeDistributionZones\&#34;:[{\&#34;coordinate\&#34;:\&#34;(0,0)\&#34;,\&#34;planetUsageType\&#34;:\&#34;space_station\&#34;,\&#34;type\&#34;:\&#34;tile\&#34;},{\&#34;count\&#34;:\&#34;2\&#34;,\&#34;fromRingIndex\&#34;:2,\&#34;planetUsageType\&#34;:\&#34;resource_mine\&#34;,\&#34;resource\&#34;:\&#34;2000 id\&#34;,\&#34;toRingIndex\&#34;:2,\&#34;type\&#34;:\&#34;ring\&#34;}],\&#34;replenishmentZones\&#34;:[],\&#34;topRightCorner\&#34;:\&#34;(4,4)\&#34;},\&#34;schema\&#34;:{\&#34;$ref\&#34;:\&#34;#/components/schemas/MapTemplateRequest\&#34;}}},\&#34;required\&#34;:true},\&#34;responses\&#34;:{\&#34;201\&#34;:{\&#34;content\&#34;:{\&#34;application/json\&#34;:{\&#34;example\&#34;:{\&#34;description\&#34;:\&#34;A small custom 5x5 map for quick testing\&#34;,\&#34;id\&#34;:\&#34;f5e6d7c8-9999-4000-8000-aaaaaaaaaaaa\&#34;,\&#34;name\&#34;:\&#34;My Custom Map\&#34;},\&#34;schema\&#34;:{\&#34;$ref\&#34;:\&#34;#/components/schemas/MapTemplateSummary\&#34;}}},\&#34;description\&#34;:\&#34;Template created\&#34;},\&#34;400\&#34;:{\&#34;content\&#34;:{\&#34;application/json\&#34;:{\&#34;schema\&#34;:{\&#34;$ref\&#34;:\&#34;#/components/schemas/ErrorResponse\&#34;}}},\&#34;description\&#34;:\&#34;Invalid template data or duplicate name\&#34;}},\&#34;summary\&#34;:\&#34;Create a new map template\&#34;}},\&#34;/map-templates/default\&#34;:{\&#34;get\&#34;:{\&#34;description\&#34;:\&#34;Returns a summary of the template that will be instantiated when a new game is created.\\n\&#34;,\&#34;operationId\&#34;:\&#34;getDefaultMapTemplate\&#34;,\&#34;responses\&#34;:{\&#34;200\&#34;:{\&#34;content\&#34;:{\&#34;application/json\&#34;:{\&#34;example\&#34;:{\&#34;description\&#34;:\&#34;Template for a small map (10x8, from (0,0) to (9,7), suitable for up to 5 players)\&#34;,\&#34;id\&#34;:\&#34;a1b2c3d4-0002-4000-8000-000000000002\&#34;,\&#34;name\&#34;:\&#34;Small Map\&#34;},\&#34;schema\&#34;:{\&#34;$ref\&#34;:\&#34;#/components/schemas/MapTemplateSummary\&#34;}}},\&#34;description\&#34;:\&#34;The current default template\&#34;}},\&#34;summary\&#34;:\&#34;Get the current default map template\&#34;}},\&#34;/map-templates/default/{templateId}\&#34;:{\&#34;parameters\&#34;:[{\&#34;in\&#34;:\&#34;path\&#34;,\&#34;name\&#34;:\&#34;templateId\&#34;,\&#34;required\&#34;:true,\&#34;schema\&#34;:{\&#34;format\&#34;:\&#34;uuid\&#34;,\&#34;type\&#34;:\&#34;string\&#34;}}],\&#34;put\&#34;:{\&#34;description\&#34;:\&#34;Sets which template will be instantiated when a new game is created.\\n\&#34;,\&#34;operationId\&#34;:\&#34;setDefaultMapTemplate\&#34;,\&#34;responses\&#34;:{\&#34;200\&#34;:{\&#34;content\&#34;:{\&#34;application/json\&#34;:{\&#34;example\&#34;:{\&#34;description\&#34;:\&#34;A small custom 5x5 map for quick testing\&#34;,\&#34;id\&#34;:\&#34;f5e6d7c8-9999-4000-8000-aaaaaaaaaaaa\&#34;,\&#34;name\&#34;:\&#34;My Custom Map\&#34;},\&#34;schema\&#34;:{\&#34;$ref\&#34;:\&#34;#/components/schemas/MapTemplateSummary\&#34;}}},\&#34;description\&#34;:\&#34;Default template updated\&#34;},\&#34;404\&#34;:{\&#34;content\&#34;:{\&#34;application/json\&#34;:{\&#34;schema\&#34;:{\&#34;$ref\&#34;:\&#34;#/components/schemas/ErrorResponse\&#34;}}},\&#34;description\&#34;:\&#34;Template not found\&#34;}},\&#34;summary\&#34;:\&#34;Change the default map template\&#34;}},\&#34;/map-templates/{templateId}\&#34;:{\&#34;delete\&#34;:{\&#34;description\&#34;:\&#34;Deletes the template. Built-in templates cannot be deleted. The current default template cannot be deleted.\\n\&#34;,\&#34;operationId\&#34;:\&#34;deleteMapTemplate\&#34;,\&#34;responses\&#34;:{\&#34;204\&#34;:{\&#34;description\&#34;:\&#34;Template deleted\&#34;},\&#34;404\&#34;:{\&#34;content\&#34;:{\&#34;application/json\&#34;:{\&#34;schema\&#34;:{\&#34;$ref\&#34;:\&#34;#/components/schemas/ErrorResponse\&#34;}}},\&#34;description\&#34;:\&#34;Template not found\&#34;},\&#34;409\&#34;:{\&#34;content\&#34;:{\&#34;application/json\&#34;:{\&#34;schema\&#34;:{\&#34;$ref\&#34;:\&#34;#/components/schemas/ErrorResponse\&#34;}}},\&#34;description\&#34;:\&#34;Template is built-in or is the current default\&#34;}},\&#34;summary\&#34;:\&#34;Delete a map template\&#34;},\&#34;get\&#34;:{\&#34;description\&#34;:\&#34;Returns the full template including all zone definitions and the builtIn flag.\\n\&#34;,\&#34;operationId\&#34;:\&#34;getMapTemplate\&#34;,\&#34;responses\&#34;:{\&#34;200\&#34;:{\&#34;content\&#34;:{\&#34;application/json\&#34;:{\&#34;example\&#34;:{\&#34;builtIn\&#34;:false,\&#34;description\&#34;:\&#34;A small custom 5x5 map for quick testing\&#34;,\&#34;gravityZones\&#34;:[{\&#34;fromRingIndex\&#34;:0,\&#34;gravityLevel\&#34;:\&#34;light\&#34;,\&#34;toRingIndex\&#34;:1,\&#34;type\&#34;:\&#34;ring\&#34;},{\&#34;fromRingIndex\&#34;:2,\&#34;gravityLevel\&#34;:\&#34;medium\&#34;,\&#34;toRingIndex\&#34;:2,\&#34;type\&#34;:\&#34;ring\&#34;}],\&#34;id\&#34;:\&#34;f5e6d7c8-9999-4000-8000-aaaaaaaaaaaa\&#34;,\&#34;mapStructureZones\&#34;:[{\&#34;coordinate\&#34;:\&#34;(1,1)\&#34;,\&#34;spaceType\&#34;:\&#34;void\&#34;,\&#34;type\&#34;:\&#34;tile\&#34;}],\&#34;name\&#34;:\&#34;My Custom Map\&#34;,\&#34;planetTypeDistributionZones\&#34;:[{\&#34;coordinate\&#34;:\&#34;(0,0)\&#34;,\&#34;planetUsageType\&#34;:\&#34;space_station\&#34;,\&#34;type\&#34;:\&#34;tile\&#34;},{\&#34;count\&#34;:\&#34;2\&#34;,\&#34;fromRingIndex\&#34;:2,\&#34;planetUsageType\&#34;:\&#34;resource_mine\&#34;,\&#34;resource\&#34;:\&#34;2000 id\&#34;,\&#34;toRingIndex\&#34;:2,\&#34;type\&#34;:\&#34;ring\&#34;}],\&#34;replenishmentZones\&#34;:[],\&#34;topRightCorner\&#34;:\&#34;(4,4)\&#34;},\&#34;schema\&#34;:{\&#34;$ref\&#34;:\&#34;#/components/schemas/MapTemplateDetail\&#34;}}},\&#34;description\&#34;:\&#34;The requested template\&#34;},\&#34;404\&#34;:{\&#34;content\&#34;:{\&#34;application/json\&#34;:{\&#34;schema\&#34;:{\&#34;$ref\&#34;:\&#34;#/components/schemas/ErrorResponse\&#34;}}},\&#34;description\&#34;:\&#34;Template not found\&#34;}},\&#34;summary\&#34;:\&#34;Get a map template by ID\&#34;},\&#34;parameters\&#34;:[{\&#34;in\&#34;:\&#34;path\&#34;,\&#34;name\&#34;:\&#34;templateId\&#34;,\&#34;required\&#34;:true,\&#34;schema\&#34;:{\&#34;format\&#34;:\&#34;uuid\&#34;,\&#34;type\&#34;:\&#34;string\&#34;}}],\&#34;patch\&#34;:{\&#34;description\&#34;:\&#34;Updates only the provided fields of the template. Omitted fields remain unchanged. Built-in templates cannot be modified.\\n\&#34;,\&#34;operationId\&#34;:\&#34;patchMapTemplate\&#34;,\&#34;requestBody\&#34;:{\&#34;content\&#34;:{\&#34;application/json\&#34;:{\&#34;example\&#34;:{\&#34;description\&#34;:\&#34;Updated description for my custom map\&#34;},\&#34;schema\&#34;:{\&#34;$ref\&#34;:\&#34;#/components/schemas/MapTemplatePatchRequest\&#34;}}},\&#34;required\&#34;:true},\&#34;responses\&#34;:{\&#34;200\&#34;:{\&#34;content\&#34;:{\&#34;application/json\&#34;:{\&#34;example\&#34;:{\&#34;description\&#34;:\&#34;Updated description for my custom map\&#34;,\&#34;id\&#34;:\&#34;f5e6d7c8-9999-4000-8000-aaaaaaaaaaaa\&#34;,\&#34;name\&#34;:\&#34;My Custom Map\&#34;},\&#34;schema\&#34;:{\&#34;$ref\&#34;:\&#34;#/components/schemas/MapTemplateSummary\&#34;}}},\&#34;description\&#34;:\&#34;Template updated\&#34;},\&#34;400\&#34;:{\&#34;content\&#34;:{\&#34;application/json\&#34;:{\&#34;schema\&#34;:{\&#34;$ref\&#34;:\&#34;#/components/schemas/ErrorResponse\&#34;}}},\&#34;description\&#34;:\&#34;Invalid template data\&#34;},\&#34;404\&#34;:{\&#34;content\&#34;:{\&#34;application/json\&#34;:{\&#34;schema\&#34;:{\&#34;$ref\&#34;:\&#34;#/components/schemas/ErrorResponse\&#34;}}},\&#34;description\&#34;:\&#34;Template not found\&#34;},\&#34;409\&#34;:{\&#34;content\&#34;:{\&#34;application/json\&#34;:{\&#34;schema\&#34;:{\&#34;$ref\&#34;:\&#34;#/components/schemas/ErrorResponse\&#34;}}},\&#34;description\&#34;:\&#34;Template is built-in and cannot be modified\&#34;}},\&#34;summary\&#34;:\&#34;Partially update a map template\&#34;},\&#34;put\&#34;:{\&#34;description\&#34;:\&#34;Replaces the template with the given data. Built-in templates cannot be modified.\\n\&#34;,\&#34;operationId\&#34;:\&#34;updateMapTemplate\&#34;,\&#34;requestBody\&#34;:{\&#34;content\&#34;:{\&#34;application/json\&#34;:{\&#34;schema\&#34;:{\&#34;$ref\&#34;:\&#34;#/components/schemas/MapTemplateRequest\&#34;}}},\&#34;required\&#34;:true},\&#34;responses\&#34;:{\&#34;200\&#34;:{\&#34;content\&#34;:{\&#34;application/json\&#34;:{\&#34;schema\&#34;:{\&#34;$ref\&#34;:\&#34;#/components/schemas/MapTemplateSummary\&#34;}}},\&#34;description\&#34;:\&#34;Template updated\&#34;},\&#34;400\&#34;:{\&#34;content\&#34;:{\&#34;application/json\&#34;:{\&#34;schema\&#34;:{\&#34;$ref\&#34;:\&#34;#/components/schemas/ErrorResponse\&#34;}}},\&#34;description\&#34;:\&#34;Invalid template data\&#34;},\&#34;404\&#34;:{\&#34;content\&#34;:{\&#34;application/json\&#34;:{\&#34;schema\&#34;:{\&#34;$ref\&#34;:\&#34;#/components/schemas/ErrorResponse\&#34;}}},\&#34;description\&#34;:\&#34;Template not found\&#34;},\&#34;409\&#34;:{\&#34;content\&#34;:{\&#34;application/json\&#34;:{\&#34;schema\&#34;:{\&#34;$ref\&#34;:\&#34;#/components/schemas/ErrorResponse\&#34;}}},\&#34;description\&#34;:\&#34;Template is built-in and cannot be modified\&#34;}},\&#34;summary\&#34;:\&#34;Replace a map template\&#34;}}}}&#34;),&#xA;      dom_id: &#39;#docsy_swagger_ui&#39;,&#xA;      presets: [&#xA;        SwaggerUIBundle.presets.apis,&#xA;        SwaggerUIStandalonePreset&#xA;      ]&#xA;    });&#xA;    window.ui = ui;&#xA;  };&#xA;&lt;/script&gt;</description>
			</item>
			<item>
				<title>Map Service AsyncAPI</title>
				<link>https://docs.microservice-dungeon.de/docs/reference/map-service/asyncapi/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://docs.microservice-dungeon.de/docs/reference/map-service/asyncapi/</guid>
				<description>&lt;style&gt;&#xA;     &#xA;    #open_asyncapi .sidebar--wrapper {&#xA;        position: sticky !important;&#xA;        top: 0 !important;&#xA;        max-height: 100vh;&#xA;        overflow-y: auto;&#xA;    }&#xA;     &#xA;    #open_asyncapi .asyncapi {&#xA;        display: flex;&#xA;        flex-direction: row;&#xA;        overflow: hidden;&#xA;        width: 100%;&#xA;    }&#xA;     &#xA;    #open_asyncapi .asyncapi__main {&#xA;        flex: 1 1 0%;&#xA;        overflow-y: auto;&#xA;        max-height: 100vh;&#xA;    }&#xA;    #open_asyncapi  .aui-root .container\:base .sidebar {&#xA;        height: min-content; !important;&#xA;    }&#xA;&lt;/style&gt;&#xA;&lt;div id=&#34;open_asyncapi&#34;&gt;&lt;/div&gt;&#xA;&lt;script&gt;&#xA;    window.onload = function () {&#xA;        const sourceUrl = &#34;\&#34;https://gitlab.com/api/v4/projects/75033698/repository/files/docs%2Fasyncapi.yaml?ref=main\&#34;&#34;;&#xA;        const schemaYaml = &#34;asyncapi: 3.0.0\n\ninfo:\n  title: Map-Service Kafka Producer API\n  version: 1.0.0\n\nchannels:\n  db.map.ecst.v1:\n    address: &#39;db.map.ecst.v1&#39;\n    title: &#39;Map ECST&#39;\n    description: Log compacted topic transferring the map&#39;s current state.\n    messages:\n      map.state-transfer:\n        $ref: &#39;#/components/messages/map.state-transfer&#39;\n\n  bl.map.events.v1:\n    address: &#39;bl.map.events.v1&#39;\n    title: &#39;Map Events&#39;\n    description: Notifies about map updates.\n    messages:\n      map.created:\n        $ref: &#39;#/components/messages/map.created&#39;\n\noperations:\n  sendMapECST:\n    channel:\n      $ref: &#39;#/channels/db.map.ecst.v1&#39;\n    action: send\n    description: Publishes the map&#39;s entire state on creation.\n    messages:\n      - $ref: &#39;#/channels/db.map.ecst.v1/messages/map.state-transfer&#39;\n\n  sendMapCreated:\n    channel:\n      $ref: &#39;#/channels/bl.map.events.v1&#39;\n    action: send\n    description: A new map has been created.\n    messages:\n      - $ref: &#39;#/channels/bl.map.events.v1/messages/map.created&#39;\n\ncomponents:\n  schemas:\n    mapId:\n      type: string\n      format: uuid\n      description: A map&#39;s unique id.\n\n    gameId:\n      type: string\n      format: uuid\n      description: The game this map belongs to.\n\n    mapName:\n      type: string\n      description: The name of the map.\n      example: Tiny Map\n\n    mapDescription:\n      type: string\n      description: A human-readable description of the map.\n      nullable: true\n\n    coordinate:\n      type: string\n      description: A coordinate on the map grid in \&#34;(x,y)\&#34; format.\n      pattern: &#39;^\\(\\d+,\\d+\\)$&#39;\n      examples:\n        - &#39;(0,0)&#39;\n        - &#39;(2,2)&#39;\n\n    gravity:\n      type: string\n      description: The gravity level of a planet affecting movement energy cost.\n      enum:\n        - light\n        - medium\n        - intense\n\n    planetType:\n      type: string\n      description: The type of a planet or void cell.\n      enum:\n        - empty\n        - spaceStation\n        - resourceMine\n        - blackHole\n        - void\n\n    planet:\n      type: object\n      description: A planet or void cell on the map grid.\n      required:\n        - coordinate\n        - type\n      properties:\n        coordinate:\n          $ref: &#39;#/components/schemas/coordinate&#39;\n        type:\n          $ref: &#39;#/components/schemas/planetType&#39;\n        allowsRobotSpawns:\n          type: boolean\n          description: Whether robots can be spawned at this station. Only present on spaceStation planets.\n          nullable: true\n        resource:\n          type: string\n          description: &#39;Mineable resource in \&#34;amount key\&#34; format (e.g. \&#34;2000 id\&#34;). Only present on resourceMine planets.&#39;\n          nullable: true\n          examples:\n            - &#39;2000 id&#39;\n            - &#39;5000 cg&#39;\n        blackHoleEnergyDrainPercentage:\n          type: integer\n          description: Percentage of energy drained when passing through (0-100). Only present on blackHole planets.\n          nullable: true\n          minimum: 0\n          maximum: 100\n          examples:\n            - 50\n        gravity:\n          $ref: &#39;#/components/schemas/gravity&#39;\n\n  messageTraits:\n    commonHeaders:\n      headers:\n        type: object\n        properties:\n          event_id:\n            type: string\n            format: uuid\n            description: |\n              Identifies the event uniquely across topics and partitions by id, regardless of its schema.\n              Can therefore be used reliably to detect duplicates - in case, the same event has been published more than once.\n              See the Outbox Pattern for a detailed explaination why that may be the case.\n              Serialized as `UTF-8`.\n            examples:\n              - a7a26ff2-e851-45b6-9634-d595f45458b7\n          entity:\n            type: string\n            description: |\n              Identifies the entity the event belongs to by name and id - if that is even possible.\n              Should only be used for debugging purposes.\n              Serialized as `UTF-8` in `\u003centity\u003e.\u003cid\u003e` format.\n            examples:\n              - map.a7a26ff2-e851-45b6-9634-d595f45458b7\n          sequence_id:\n            type: integer\n            format: int64\n            description: |\n              Identifies the sequence in which events where are written to the Outbox per partition.\n              Consumers may use this number to filter for duplicates, as new events will always have a higher number than previous events.\n              Serialized as `BIG_ENDIAN`.\n            minimum: 1\n            examples:\n              - 1277129\n          created_at:\n            type: integer\n            format: int64\n            description: |\n              Identifies the exact point in time the event was written to the Outbox, independent of the system&#39;s time zone.\n              Serialized as `BIG_ENDIAN` as epoch millis.\n            examples:\n              - 1700000000000\n          event_type:\n            type: string\n            description: |\n              Identifies the schema used for generating the payload.\n              Contains a String that matches the schema&#39;s name (or Message-ID in AsyncAPI terms).\n              Does not include a version.\n              Serialized as `UTF-8`.\n            examples:\n              - map.state-transfer\n              - map.created\n          event_type_version:\n            type: integer\n            description: |\n              Identifies the schema&#39;s version the payload was generated with.\n              Each AsyncAPI message contains its version as part of its name, for example: Map ECST V1;\n              1 is the message&#39;s version.\n              Serialized as `BIG_ENDIAN`.\n            minimum: 1\n            examples:\n              - 1\n\n  messages:\n    map.state-transfer:\n      name: &#39;map.state-transfer&#39;\n      title: Map ECST V1\n      summary: Describes the map\n      description: Keyed ECST event publishing the map&#39;s current state.\n      contentType: application/json\n      traits:\n        - $ref: &#39;#/components/messageTraits/commonHeaders&#39;\n      payload:\n        type: object\n        properties:\n          id:\n            $ref: &#39;#/components/schemas/mapId&#39;\n          gameId:\n            $ref: &#39;#/components/schemas/gameId&#39;\n          name:\n            $ref: &#39;#/components/schemas/mapName&#39;\n          description:\n            $ref: &#39;#/components/schemas/mapDescription&#39;\n          topRight:\n            $ref: &#39;#/components/schemas/coordinate&#39;\n          planets:\n            type: array\n            items:\n              $ref: &#39;#/components/schemas/planet&#39;\n      examples:\n        - name: Very Small Map (3x3)\n          payload:\n            id: &#39;497f6eca-6276-4993-bfeb-53cbbbba6f08&#39;\n            gameId: &#39;b3d7c8a1-4e2f-4f9a-8c6d-1a2b3c4d5e6f&#39;\n            name: Tiny Map\n            description: &#39;A tiny map (3x3, from (0,0) to (2,2)) intended to serve as just an example for an event payload.&#39;\n            topRight: &#39;(2,2)&#39;\n            planets:\n              - coordinate: &#39;(0,0)&#39;\n                type: spaceStation\n                allowsRobotSpawns: true\n                gravity: light\n              - coordinate: &#39;(0,1)&#39;\n                type: empty\n                gravity: medium\n              - coordinate: &#39;(0,2)&#39;\n                type: resourceMine\n                resource: &#39;2000 id&#39;\n                gravity: intense\n              - coordinate: &#39;(1,0)&#39;\n                type: void\n              - coordinate: &#39;(1,1)&#39;\n                type: resourceMine\n                resource: &#39;5000 cg&#39;\n                gravity: medium\n              - coordinate: &#39;(1,2)&#39;\n                type: blackHole\n                blackHoleEnergyDrainPercentage: 50\n                gravity: intense\n              - coordinate: &#39;(2,0)&#39;\n                type: void\n              - coordinate: &#39;(2,1)&#39;\n                type: spaceStation\n                allowsRobotSpawns: false\n                gravity: medium\n              - coordinate: &#39;(2,2)&#39;\n                type: empty\n                gravity: intense\n\n    map.created:\n      name: &#39;map.created&#39;\n      title: Map Created V1\n      summary: New map created\n      description: Notifies about the creation of a new map from a template.\n      contentType: application/json\n      traits:\n        - $ref: &#39;#/components/messageTraits/commonHeaders&#39;\n      payload:\n        type: object\n        properties:\n          id:\n            $ref: &#39;#/components/schemas/mapId&#39;\n          gameId:\n            $ref: &#39;#/components/schemas/gameId&#39;\n          name:\n            $ref: &#39;#/components/schemas/mapName&#39;\n          description:\n            $ref: &#39;#/components/schemas/mapDescription&#39;\n          topRight:\n            $ref: &#39;#/components/schemas/coordinate&#39;\n          planets:\n            type: array\n            items:\n              $ref: &#39;#/components/schemas/planet&#39;\n      examples:\n        - name: Very Small Map (3x3)\n          payload:\n            id: &#39;497f6eca-6276-4993-bfeb-53cbbbba6f08&#39;\n            gameId: &#39;b3d7c8a1-4e2f-4f9a-8c6d-1a2b3c4d5e6f&#39;\n            name: Very Small Map\n            description: &#39;A very small map (3x3, from (0,0) to (2,2)) intended to serve as just an example for an event payload.&#39;\n            topRight: &#39;(2,2)&#39;\n            planets:\n              - coordinate: &#39;(0,0)&#39;\n                type: spaceStation\n                allowsRobotSpawns: true\n                gravity: light\n              - coordinate: &#39;(0,1)&#39;\n                type: empty\n                gravity: medium\n              - coordinate: &#39;(0,2)&#39;\n                type: resourceMine\n                resource: &#39;2000 id&#39;\n                gravity: intense\n              - coordinate: &#39;(1,0)&#39;\n                type: void\n              - coordinate: &#39;(1,1)&#39;\n                type: resourceMine\n                resource: &#39;5000 cg&#39;\n                gravity: medium\n              - coordinate: &#39;(1,2)&#39;\n                type: blackHole\n                blackHoleEnergyDrainPercentage: 50\n                gravity: intense\n              - coordinate: &#39;(2,0)&#39;\n                type: void\n              - coordinate: &#39;(2,1)&#39;\n                type: spaceStation\n                allowsRobotSpawns: false\n                gravity: medium\n              - coordinate: &#39;(2,2)&#39;\n                type: empty\n                gravity: intense\n&#34;;&#xA;&#xA;        console.debug(&#34;[asyncapi-render] sourceUrl:&#34;, sourceUrl);&#xA;        console.debug(&#34;[asyncapi-render] schemaYaml length:&#34;, schemaYaml.length);&#xA;        console.debug(&#34;[asyncapi-render] schemaYaml preview:&#34;, schemaYaml.slice(0, 200));&#xA;&#xA;        const ui = AsyncApiStandalone.render({&#xA;            &#xA;            &#xA;            schema: schemaYaml,&#xA;&#xA;            &#xA;            config: {&#xA;                show: {&#xA;                    sidebar: true&#xA;                }&#xA;            }&#xA;        }, document.getElementById(&#34;open_asyncapi&#34;));&#xA;&#xA;        window.ui = ui;&#xA;        console.debug(&#34;[asyncapi-render] UI instance:&#34;, ui);&#xA;    };&#xA;&lt;/script&gt;</description>
			</item>
	</channel>
</rss>
