Skip to content

@Schema annotation not apply in swagger #3297

@mramazanov

Description

@mramazanov

Annotation @Schema not applying in record class.

Record class:

package ru.dpd.dpdrecipientcore.dto.order;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Builder;
import ru.dpd.dpdrecipientcore.dto.v2.order.OrderDetailStatusV2;
import ru.dpd.dpdrecipientcore.model.CourierRatingStatus;
import ru.dpd.dpdrecipientcore.model.DateType;

import java.time.LocalDate;
import java.util.List;

import static ru.dpd.dpdrecipientcore.config.AppConstants.DATE_PATTERN;

@builder
public record OrderScreenOneResponse(

    /*
     * Argis id заказа
     */
    @Schema(description = "ID заказа", example = "67093253193")
    long id,

    /*
     * Внутренний номер заказа (трек номер) пр. RU009728963
     */
    @Schema(description = "Номер заказа", example = "RU119356757")
    String orderNum,

    /*
     * Внешний номер заказа (трек номер)
     */
    @Schema(description = "Трек-номер интернет-магазина", example = "В0101312179")
    String externalOrderNum,

    /*
     * Текущий статус
     */
    @Schema(description = "Текущий статус", example = "Прибыл в сортировочный центр доставки")
    String currentStatusName,

    /*
     * Дата доставки
     */
    @Schema(description = "Планируемая дата доставки", example = "05.06.2026")
    @JsonFormat(pattern = DATE_PATTERN)
    LocalDate deliveryDate,

    /*
     * Тип даты доставки
     */
    @Schema(description = "Тип даты доставки", example = "PLAN_DELIVERY_DATE")
    DateType deliveryDateType,

    /*
     * Контрольная дата доставки
     */
    @Schema(description = "Контрольная дата доставки", example = "2026-06-05")
    @JsonFormat(pattern = DATE_PATTERN)
    LocalDate controlDeliveryDate,

    /*
     * Интервал времени получения заказа
     */
    @Schema(description = "Интервал получения", example = "9-18")
    String orderReceiveTimeInterval,

    /*
     * Бесплатное хранение до
     */
    @Schema(description = "Бесплатное хранение до", example = "05.06.2026")
    @JsonFormat(pattern = DATE_PATTERN)
    LocalDate endFreeStoreDate,

    /*
     * Статусы
     */
    @Schema(description = "Статусы",
            type = "array",
            example = """
                    [
                        {
                          "date": "01.06.2026",
                          "name": "Принят у отправителя",
                          "isViewed": true
                        },
                        {
                          "date": "01.06.2026",
                          "name": "Назначен курьер для приема заказа",
                          "isViewed": true
                        },
                        {
                          "date": "01.06.2026",
                          "name": "Заказ создан, ожидаем груз от отправителя",
                          "isViewed": true
                        }
                    ]"""
    )
    List<OrderDetailStatusV2> statuses,

    /*
     * Информация об адресе получателя
     */
    @Schema(
            description = "Адрес получателя",
            type = "object",
            example = """
                    {
                        "lat": 55.794372,
                        "lon": 37.522691,
                        "address": "Москва, ул Викторенко, дом 16, стр. 1"
                    }"""
    )
    ScreenOneAddressTo addressTo,

    /*
     * Признак того, что заказ в данный момент изменяется
     */
    @Schema(description  = "Признак того, что заказ в данный момент изменяется", example = "false")
    boolean isChanging,

    /*
     * Признак того, что заказ в данный момент отменяется
     */
    @Schema(description  = "Признак того, что заказ в данный момент отменяется", example = "false")
    boolean isCancelling,

    /*
     * Признак доставки заказа до двери
     */
    @Schema(description  = "Признак доставки заказа до двери", example = "false")
    boolean isDeliveryToDoor,

    /*
     * Пин-код для бесконтактной доставки
     */
    @Schema(description  = "Пин-код для бесконтактной доставки", example = "5040")
    String pincode,

    /*
     * Тип заказа
     */
    @Schema(description  = "Тип заказа", example = "DELIVERY")
    OrderType type,

    /*
     * Заказ в архиве
     */
    @Schema(description  = "Заказ в архиве", example = "false")
    Boolean isArchived,

    /*
     * Пользовательское наименование заказа
     */
    @Schema(description  = "Пользовательское наименование заказа (имя посылки)", example = "Сапоги")
    String name,

    /*
     * Активный (не находящийся в конечном статусе) заказ
     */
    @Schema(description  = "Активный (не находящийся в конечном статусе) заказ", example = "true")
    boolean isActive,

    /*
     * Заказ принадлежит пользователю
     */
    @Schema(description  = "Заказ принадлежит пользователю", example = "true")
    boolean isOwn,

    /*
     * Статус оценки курьера
     */
    @Schema(description  = "Статус оценки курьера", example = "UNAVAILABLE")
    CourierRatingStatus courierRatingStatus,

    /*
     * Оценка курьера
     */
    @Schema(description  = "Оценка курьера", example = "5")
    Integer courierRatingValue,

    /*
     * Информация о курьере
     */
    @Schema(description  = "Информация о курьере из сервиса smart-delivery",
            type = "object",
            example =  """
            {
                "courierId": 16117353384,
                "courierPhone": "+79911459570",
                "courierName": "Василько Дмитрий Антонович",
                "trackingAvailable": false
            }"""
    )
    OrderDetailCourierInfo courierInfo,

    /*
     * Информация о плитке Get4Click
     */
    @Schema(description = "Информация о плитке Get4Click", example = """
            {
                "get4ClickTitle": "Заберите ваш подарок",
                "get4ClickText": "Вам доступен (1) подарок за отслеживание заказа",
                "get4ClickImg": "/api/v1/public/resource/image/get-4-click-gift_new_2.png",
                "get4ClickUrl": "https://share.flocktory.com/exchange/login?ssid=2801&bid=13819"
            }"""
    )
    Get4ClickDto get4Click,

    /*
     * Признак требуется ли дата согласования доставки
     */
    @Schema(description  = "Признак требуется ли дата согласования доставки", example = "false")
    boolean requiredApprovalDateDelivery,

    /*
     * Количество попыток доставки
     */
    @Schema(description  = "Признак требуется ли дата согласования доставки", example = "3304")
    Integer currentDeliveryAttempts,

    /*
     * Дата приема
     */
    @Schema(description  = "Дата приема", example = "2026-06-09")
    @JsonFormat(pattern = DATE_PATTERN)
    LocalDate planPickupDate,

    /*
     * Интервал времени приема
     */
    @Schema(description  = "Время приема", example = "9-18")
    String planPickupTimeInterval,

    /*
     * Информация о дочернем заказа
     */
    @Schema(description  = "доставка осуществляется по другому заказу (информация о доставке текущего заказа находится по ссылке другого заказа)",
            type = "object",
            example =  """
            {
                "orderId": 66768065233,
                "orderNum": "RU119425049",
                "orderStatusName": "Возврат осуществляется по номеру"
            }"""
    )
    ChildOrderInfoResponse childOrderInfo,

    /*
     * Доступен ли календарь
     */
    @Schema(description  = "Параметр определяет показывать или не показывать в интерфейсе кнопку для добавления события запланированной доставки в календарь", example = "true")
    Boolean isCalendarAvailable

) {
}

This not worked:

@Schema(
description = "Адрес получателя",
type = "object",
example = """
{
"lat": 55.794372,
"lon": 37.522691,
"address": "Москва, ул Викторенко, дом 16, стр. 1"
}"""
)
ScreenOneAddressTo addressTo

Record ScreenOneAddressTo :

@builder
public record ScreenOneAddressTo(
double lat,
double lon,
String address
) {
}

Spring boot 2.6.3
springdoc-openapi-ui 1.6.6

  • What is the actual and the expected result using OpenAPI Description (yml or json)? - i am use annotation

if i create same record as ScreenOneAddressTo with name ScreenOneAddressTo2 it is work perfect

i have another similar recor witch not appears in swagger

Image Image

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions