Микросервис market-orchestration

В статье описываются функции, логика работы, конфигурация и методы микросервиса market-orchestration.

Микросервис market-orchestration предоставляет оркестрацию для сервиса рынков.

Доступ к сервису предоставляется по запросу.

Логика работы

В работе микросервиса участвуют следующие сущности:

  • Рынок (Market) - содержит данные о рынке (id, название, медиа ассет и описание)
  • Медиа ассет (MediaAsset) - содержит данные о медиа ассете, который используется для рынка (id, тайтл, описание, альтернативный текст, тэги и др.)
  • Медиа (Media) - содержит данные о медиа (url на соответствующем внешнем ресурсе, название, тип, размер, разрешение, дата создания и др.)

Аутентификация

При обращении к микросервису через API необходимо в заголовке Authorization указать токен: Authorization: Bearer <токен>.

Авторизация

Для работы с микросервисом в BackOffice у пользователя должна быть роль Admin и/или Admin_Settings.

Подробнее о ролях можно узнать здесь.

/api/market-orchestration/

Параметры конфигурации указываются в Vault.

Vault используется на нашей платформе в качестве хранилища всех конфигураций развертывания. Инструмент может быть выбран другой.

По умолчанию

{
  "env": {
    "JAVA_XMS": "XXm",
    "JAVA_XMX": "YYYm",
    "LOGGING_LEVEL": "уровень_логирования",
    "SERVER_PORT": "порт_сервера"
  }
}

Copy-icon
Указываемые на каждом отдельном стенде

// пример взят с тестового стенда


{
  "env": {
    "CATALOG_URL": "url_доступа_к_сервису_catalog",
    "MARKET_URL": "url_доступа_к_сервису_market",
    "SPRING_OAUTH_AUTHORITY": "домен_сервера_аутентификации",
    "SPRING_OAUTH_CLIENT_ID": "client_id"
  }
}


Copy-icon

Получение страницы с рынками - POST запрос, /v1/markets/page

Request body sample

{
  "sort": [
    {
      "sortBy": "name",
      "direction": "ASC"
    }
  ],
  "page": 0,
  "size": 10
}

Copy-icon
Response sample

[
  {
    "id": "df7d8d66-39d5-466d-876b-f7e4f2bbecfc",
    "name": "Беларусь",
    "description": "Республика Беларусь, г. Минск, ул. Кальварийская д.1",
    "assets": [
      {
        "id": "0e8ffc05-a085-4c5a-9679-de91d9b1367b",
        "media": {
          "url": "master/catalog/images/1715161957085-1882559365.png",
          "absoluteUrl": "https://test-ecom-media.digitalchief.tech/master/catalog/images/1715161957085-1882559365.png",
          "name": "Flag_of_Belarus.svg.png",
          "type": "PHOTO",
          "size": 5004,
          "resolution": "640x320 px",
          "createdDate": "2024-05-08T12:52:38.062"
        },
        "title": "Flag_of_Belarus",
        "altAttr": "Flag_of_Belarus",
        "description": "",
        "sign": "",
        "tags": [
          ""
        ]
      }
    ]
  },
  {
    "id": "4e5d563b-ba98-4d73-a7f0-a3f70514da88",
    "name": "Китай",
    "description": "Китай",
    "assets": [
      {
        "id": "d8bebe28-5a6d-4f25-9c05-680a0bcf6080",
        "media": {
          "url": "master/catalog/images/1715076260063-1882559365.jpg",
          "absoluteUrl": "https://test-ecom-media.digitalchief.tech/master/catalog/images/1715076260063-1882559365.jpg",
          "name": "Китай (флаг).jpg",
          "type": "PHOTO",
          "size": 9712,
          "resolution": "612x407 px",
          "createdDate": "2024-05-07T13:04:38.167"
        },
        "title": "Китай (флаг)",
        "altAttr": "Китай (флаг)",
        "description": "",
        "sign": "",
        "tags": [
          ""
        ]
      }
    ]
  }
]

Copy-icon
Response codes

200 - операция выполнена успешно, получена страница рынков

Получение списка рынков - POST запрос, /v1/markets/list

Request body sample

{
  "name": ""
}

Copy-icon
Response sample

[
  {
    "id": "df7d8d66-39d5-466d-876b-f7e4f2bbecfc",
    "name": "Беларусь",
    "description": "Республика Беларусь, г. Минск, ул. Кальварийская д.1",
    "assets": [
      {
        "id": "0e8ffc05-a085-4c5a-9679-de91d9b1367b",
        "media": {
          "url": "master/catalog/images/1715161957085-1882559365.png",
          "absoluteUrl": "https://test-ecom-media.digitalchief.tech/master/catalog/images/1715161957085-1882559365.png",
          "name": "Flag_of_Belarus.svg.png",
          "type": "PHOTO",
          "size": 5004,
          "resolution": "640x320 px",
          "createdDate": "2024-05-08T12:52:38.062"
        },
        "title": "Flag_of_Belarus",
        "altAttr": "Flag_of_Belarus",
        "description": "",
        "sign": "",
        "tags": [
          ""
        ]
      }
    ]
  },
  {
    "id": "4e5d563b-ba98-4d73-a7f0-a3f70514da88",
    "name": "Китай",
    "description": "Китай",
    "assets": [
      {
        "id": "d8bebe28-5a6d-4f25-9c05-680a0bcf6080",
        "media": {
          "url": "master/catalog/images/1715076260063-1882559365.jpg",
          "absoluteUrl": "https://test-ecom-media.digitalchief.tech/master/catalog/images/1715076260063-1882559365.jpg",
          "name": "Китай (флаг).jpg",
          "type": "PHOTO",
          "size": 9712,
          "resolution": "612x407 px",
          "createdDate": "2024-05-07T13:04:38.167"
        },
        "title": "Китай (флаг)",
        "altAttr": "Китай (флаг)",
        "description": "",
        "sign": "",
        "tags": [
          ""
        ]
      }
    ]
  }
]

Copy-icon
Response codes

200 - операция выполнена успешно, получен список рынков

Получение рынка по его ID - GET запрос, /v1/markets/{id}

Request parameters

id - path-параметр, обязательный: уникальный идентификатор рынка

Copy-icon
Response sample

{
  "id": "4e5d563b-ba98-4d73-a7f0-a3f70514da88",
  "name": "Китай",
  "description": "Китай",
  "assets": [
    {
      "id": "d8bebe28-5a6d-4f25-9c05-680a0bcf6080",
      "media": {
        "url": "master/catalog/images/1715076260063-1882559365.jpg",
        "absoluteUrl": "https://test-ecom-media.digitalchief.tech/master/catalog/images/1715076260063-1882559365.jpg",
        "name": "Китай (флаг).jpg",
        "type": "PHOTO",
        "size": 9712,
        "resolution": "612x407 px",
        "createdDate": "2024-05-07T13:04:38.167"
      },
      "title": "Китай (флаг)",
      "altAttr": "Китай (флаг)",
      "description": "",
      "sign": "",
      "tags": [
        ""
      ]
    }
  ]
}

Copy-icon
Response codes
  • 200 - операция выполнена успешно, получены данные рынка
  • 404 - ошибка, рынок не найден

Создание рынка - POST запрос, /v1/markets

Request body

{
  "name": "Россия",
  "description": "Россия",
  "assets": []
}

Copy-icon
Response sample

{
  "id": "bae03127-a1a5-4ab2-a89c-5b0a80c10cfb",
  "name": "Россия",
  "description": "Россия",
  "assets": []
}

Copy-icon
Response codes
  • 200 - операция выполнена успешно, рынок создан
  • 400 - ошибка, не удалось создать рынок

Редактирование рынка - PATCH запрос, /v1/markets/{id}

Request parameters

id - path-параметр, обязательный: уникальный идентификатор рынка

Copy-icon
Request body sample

{
  "id": "bae03127-a1a5-4ab2-a89c-5b0a80c10cfb",
  "name": "Россия",
  "description": "Новое описание рынка России",
  "assets": []
}

Copy-icon
Response sample

{
  "id": "bae03127-a1a5-4ab2-a89c-5b0a80c10cfb",
  "name": "Россия",
  "description": "Новое описание рынка России",
  "assets": []
}

Copy-icon

Response codes:

  • 200 - операция выполнена успешно, рынок отредактирован
  • 400 - ошибка, не удалось отредактировать рынок

 

Удаление рынка - DELETE запрос, /v1/markets/{id}

Request parameters

id - path-параметр, обязательный: уникальный идентификатор рынка

Copy-icon
Response sample

Отсутствует. В ответе приходит только код операции, например, 204.

Response codes
  • 204 - операция выполнена успешно, рынок удален
  • 404 - ошибка, рынок не найден