entaxy-public/system/core/events/events-rest/README.md

7.2 KiB

#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}"
        }