entaxy-public/system/core/events/events-rest
Сергей Крючков 87c6dc76d0 ENTAXY-392 release version 1.8.2.2 2022-09-14 17:01:04 +03:00
..
src/main ENTAXY-374 release 1.8.2 2022-08-25 16:12:26 +03:00
LICENSE.txt initial public commit 2021-09-06 20:08:18 +03:00
README.md initial public commit 2021-09-06 20:08:18 +03:00
pom.xml ENTAXY-392 release version 1.8.2.2 2022-09-14 17:01:04 +03:00

README.md

#SYSTEM :: ENTAXY :: CORE :: EVENTS :: REST

Рутовый контекст сервиса по умолчанию topic-management, при смене контекста требуется перераздать права на данный сервис

Методы:

- create - создать топик
	Запрос:
		POST server:9090/topic-management/create 
		Тело
			}
				"topicName": "boomNews",
				"possibleSubscribers" : ["systemUuid1", "systemUuid2"],
				"possiblePublishers" : ["systemUuid3", "systemUuid4"]
			}
		
	Ответ:
		Статус 201
		Тело 
			{
			    "title": "Topic created",
			    "topicName": "<topic_name>",
			    "subscriberErrors": {
			        "systemNotFound": [
			            "<system_uuid>"
			        ]
			    },
			    "publisherErrors": {
			        "systemNotFound": []
			    }
			}
	
- update - изменить топик (название не меняется, так как на него завязана сама очередь в брокере)
	Запрос:
		POST server:9090/topic-management/update 
		Тело
			}
				"topicName": "boomNews",
				"possibleSubscribers" : ["systemUuid1", "systemUuid2"],
				"possiblePublishers" : ["systemUuid3", "systemUuid4"]
			}
	Ответ:
			Статус 201
			Тело 
				{
				    "title": "Topic updated",
				    "topicName": "<topic_name>",
				    "subscriberErrors": {
				        "systemNotFound": [
				            "<system_uuid>"
				        ]
				    },
				    "publisherErrors": {
				        "systemNotFound": []
				    }
				}

- delete - удалить топик, так же удаляется подписки, права и консьюмеры в брокере
	Запрос:
		POST server:9090/topic-management/delete
		Тело
			{
				"topicName": "boomNews"
			}
	
	Ответ:
		Статус 200
		Тело 
			{ 
				"title": "Topic deleted", 
				"topicName": "<topic_name>"
			}
			
- clean - очистить топики и подписки, помеченные на удаление топики и подписки будут окончательно удалены
	Запрос:
		POST server:9090/topic-management/clean
	
	Ответ:
		Статус 200
		Тело 
			{ 
				"title": "Cleaned"
			}
		
- subscribe - подписаться на топик
	Запрос:
		POST server:9092/topic-subscription/subscribe
		Тело
			{
				"topicName": "boomNews",
				"subscriptionType": "PUSH"
			}
	
	Ответ:
		Статус 201
		Тело 
			{ 
				"title": "Subscription created", 
				"topicName": "<topic_name>", 
				"systemName": "<system_name>", 
				"subscriptionType": "<subscription_type>" 
			}
	
	Массовая обработка при наличии права manage для данного сервиса.
		Запрос:
			POST server:9092/topic-subscription/subscribe
			Тело
				{
					"topicName": "boomNews",
					"systemUuids": [
						{"systemUuid": "NNNNNNNN-NNNN-NNNN-NNNN-NNNNNNNNNNNN", "subscriptionType": "PUSH"},
						{"systemUuid": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "subscriptionType": "PULL"},
						{"systemUuid": "YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY", "subscriptionType": "PULL"}
					]
				}
	
		Ответ:
			Статус 200
			Тело 
				[
				    {
				        "title": "Internal Server Error",
				        "detail": "System not found NNNNNNNN-NNNN-NNNN-NNNN-NNNNNNNNNNNN",
				        "reason": "javax.persistence.NoResultException: No entity found for query"
				    },
				    {
				        "title": "Subscription created",
				        "topicName": "ooooo111-ff6e-4219-a878-bff120c495f1",
				        "systemUUID": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
				        "subscriptionType": "PULL"
				    },
				    {
				        "title": "Forbidden",
				        "detail": "No permission to subscribe for system YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY"
				    }
				]
		
	

- unsubscribe - отписаться от топика
	Запрос:
		POST server:9092/topic-subscription/unsubscribe
		Тело
			{
				"topicName": "boomNews"
			}
		
	Ответ:	
		Статус 200
		Тело 
			{
				"title": "Subscription deleted", 
				"topicName": "<topic_name>", 
				"systemName": "<system_name>" 
			}
	
	Массовая обработка при наличии права manage для данного сервиса.
		Запрос:
			POST server:9092/topic-subscription/unsubscribe
			Тело
				{
					"topicName": "boomNews",
					"systemUuids": [
						{"systemUuid": "NNNNNNNN-NNNN-NNNN-NNNN-NNNNNNNNNNNN", "subscriptionType": "PUSH"},
						{"systemUuid": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "subscriptionType": "PULL"},
						{"systemUuid": "YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY", "subscriptionType": "PULL"}
					]
				}
	
		Ответ:
			Статус 200
			Тело 
				[
				    {
				        "title": "Internal Server Error",
				        "detail": "System not found NNNNNNNN-NNNN-NNNN-NNNN-NNNNNNNNNNNN",
				        "reason": "javax.persistence.NoResultException: No entity found for query"
				    },
				    {
				        "title": "Subscription deleted",
				        "topicName": "ooooo111-ff6e-4219-a878-bff120c495f1",
				        "systemUUID": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
				    },
				    {
				        "title": "Subscription not found",
				        "topicName": "ooooo111-ff6e-4219-a878-bff120c495f1",
				        "systemUUID": "YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY"
				    }
				]

- publish - опубликовать событие
	Запрос:
		POST server:9092/topic-subscription/publish
		Тело
			{
				"topicName": "boomNews", "message": "messageText2"
			}
	
	Ответ:	
		Статус 200
		Тело 
			{ 
				"title": "Message published", 
				"topicName": "<topic_name>"
			}
 
**Ответ при ошибке**

- Передан некорректный JSON или логин не определён
	Статус 400
	Тело
		{
		    "title": "Incorrect input parameters",
		    "detail": "Cannot parse incoming JSON or login/system not defined"
		}

- Подписка не найдена
	Статус 404 
	Тело 
		{
			"title": "Subscription not found", 
			"topicName": "${exchangeProperty.topicName}", 
			"systemUUID": "${header.X-SystemUuid}"
		}
 
- Топик не зарегистрирован
	Статус 400 
	Тело  
		{ 
			"title": "Topic not registered", 
			"topicName": "${exchangeProperty.topicName}" 
		}
 
- Система не найдена
	Статус 500 
	Тело  
		{
			"title": "Internal Server Error", 
			"detail": "System not found ${header.X-SystemUuid}", 
			"reason": "${exception.stacktrace}" 
		}
 
- Неизвестный тип подписки
	Статус 500 
	Тело
		{
			"title": "Internal Server Error", 
			"detail": "Unknown subscription type ${exchangeProperty.subscriptionType}", 
			"reason": "${exception.stacktrace}" 
		}
 
- Неизвестная ошибка 
	Статус 500 
	Тело 
		{
			"title": "Internal Server Error", 
			"detail": "Unknown exception", 
			"reason": "${exception.stacktrace}"
		}