Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,195 +1,23 @@
/*
Copyright (c) 2021, RTE (http://www.rte-france.com)
This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this
file, You can obtain one at http://mozilla.org/MPL/2.0/.
* Copyright (c) 2026, RTE (http://www.rte-france.com)
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
package org.gridsuite.modification;

import com.powsybl.commons.PowsyblException;
import com.powsybl.iidm.network.IdentifiableType;
import lombok.NonNull;

import org.gridsuite.modification.dto.OperatingStatusModificationInfos;
import org.springframework.http.HttpStatus;

import java.util.Objects;

import static org.gridsuite.modification.NetworkModificationException.Type.ATTRIBUTE_NOT_EDITABLE;

/**
* @author Slimane Amar <slimane.amar at rte-france.com>
* @author Franck Lecuyer <franck.lecuyer at rte-france.com>
* @author Mohamed Benrejeb <mohamed.benrejeb at rte-france.com>
*/
public class NetworkModificationException extends PowsyblException {
public enum Type {
GROOVY_SCRIPT_EMPTY(HttpStatus.BAD_REQUEST, "Empty script"),
GROOVY_SCRIPT_ERROR(HttpStatus.BAD_REQUEST),
NETWORK_NOT_FOUND(HttpStatus.NOT_FOUND),
VARIANT_NOT_FOUND(HttpStatus.NOT_FOUND),
NOTHING_TO_DELETE(HttpStatus.BAD_REQUEST),
MODIFICATION_DELETION_ERROR(HttpStatus.INTERNAL_SERVER_ERROR),
MODIFICATION_GROUP_NOT_FOUND(HttpStatus.NOT_FOUND),
MODIFICATION_NOT_FOUND(HttpStatus.NOT_FOUND),
SWITCH_NOT_FOUND(HttpStatus.NOT_FOUND),
LINE_NOT_FOUND(HttpStatus.NOT_FOUND),
LOAD_NOT_FOUND(HttpStatus.NOT_FOUND),
BATTERY_NOT_FOUND(HttpStatus.NOT_FOUND),
GENERATOR_NOT_FOUND(HttpStatus.NOT_FOUND),
TWO_WINDINGS_TRANSFORMER_NOT_FOUND(HttpStatus.NOT_FOUND),
UNKNOWN_MODIFICATION_TYPE(HttpStatus.INTERNAL_SERVER_ERROR),
UNKNOWN_EQUIPMENT_TYPE(HttpStatus.INTERNAL_SERVER_ERROR),
WRONG_EQUIPMENT_TYPE(HttpStatus.INTERNAL_SERVER_ERROR),
MODIFICATION_ERROR(HttpStatus.INTERNAL_SERVER_ERROR),
VOLTAGE_LEVEL_NOT_FOUND(HttpStatus.NOT_FOUND),
CREATE_LOAD_ERROR(HttpStatus.INTERNAL_SERVER_ERROR),
MODIFY_LOAD_ERROR(HttpStatus.INTERNAL_SERVER_ERROR),
BUSBAR_SECTION_NOT_FOUND(HttpStatus.NOT_FOUND),
BUS_NOT_FOUND(HttpStatus.NOT_FOUND),
CREATE_BATTERY_ERROR(HttpStatus.INTERNAL_SERVER_ERROR),
CREATE_GENERATOR_ERROR(HttpStatus.INTERNAL_SERVER_ERROR),
CREATE_SHUNT_COMPENSATOR_ERROR(HttpStatus.INTERNAL_SERVER_ERROR),
MODIFY_SHUNT_COMPENSATOR_ERROR(HttpStatus.INTERNAL_SERVER_ERROR),
CREATE_STATIC_VAR_COMPENSATOR_ERROR(HttpStatus.INTERNAL_SERVER_ERROR),
DELETE_EQUIPMENT_ERROR(HttpStatus.INTERNAL_SERVER_ERROR),
BY_FILTER_DELETION_ERROR(HttpStatus.INTERNAL_SERVER_ERROR),
EQUIPMENT_NOT_FOUND(HttpStatus.NOT_FOUND),
ATTRIBUTE_NOT_EDITABLE(HttpStatus.BAD_REQUEST),
CREATE_LINE_ERROR(HttpStatus.INTERNAL_SERVER_ERROR),
MODIFY_LINE_ERROR(HttpStatus.INTERNAL_SERVER_ERROR),
CREATE_TWO_WINDINGS_TRANSFORMER_ERROR(HttpStatus.INTERNAL_SERVER_ERROR),
MODIFY_TWO_WINDINGS_TRANSFORMER_ERROR(HttpStatus.INTERNAL_SERVER_ERROR),
CREATE_SUBSTATION_ERROR(HttpStatus.INTERNAL_SERVER_ERROR),
MODIFY_SUBSTATION_ERROR(HttpStatus.INTERNAL_SERVER_ERROR),
CREATE_VOLTAGE_LEVEL_ERROR(HttpStatus.INTERNAL_SERVER_ERROR),
MODIFY_VOLTAGE_LEVEL_ERROR(HttpStatus.INTERNAL_SERVER_ERROR),
SUBSTATION_NOT_FOUND(HttpStatus.NOT_FOUND),
BATTERY_ALREADY_EXISTS(HttpStatus.BAD_REQUEST),
LOAD_ALREADY_EXISTS(HttpStatus.BAD_REQUEST),
VOLTAGE_LEVEL_ALREADY_EXISTS(HttpStatus.BAD_REQUEST),
BUSBAR_SECTION_ALREADY_EXISTS(HttpStatus.BAD_REQUEST),
BUSBAR_SECTION_NOT_DEFINED(HttpStatus.BAD_REQUEST),
GENERATOR_ALREADY_EXISTS(HttpStatus.BAD_REQUEST),
SHUNT_COMPENSATOR_ALREADY_EXISTS(HttpStatus.BAD_REQUEST),
SHUNT_COMPENSATOR_NOT_FOUND(HttpStatus.NOT_FOUND),
STATIC_VAR_COMPENSATOR_ALREADY_EXISTS(HttpStatus.BAD_REQUEST),
STATIC_VAR_COMPENSATOR_NOT_FOUND(HttpStatus.NOT_FOUND),
LINE_ALREADY_EXISTS(HttpStatus.BAD_REQUEST),
TWO_WINDINGS_TRANSFORMER_ALREADY_EXISTS(HttpStatus.BAD_REQUEST),
TWO_WINDINGS_TRANSFORMER_CREATION_ERROR(HttpStatus.BAD_REQUEST),
BRANCH_MODIFICATION_ERROR(HttpStatus.INTERNAL_SERVER_ERROR),
INJECTION_MODIFICATION_ERROR(HttpStatus.INTERNAL_SERVER_ERROR),
MODIFY_BATTERY_ERROR(HttpStatus.INTERNAL_SERVER_ERROR),
OPERATING_STATUS_MODIFICATION_ERROR(HttpStatus.INTERNAL_SERVER_ERROR),
OPERATING_ACTION_TYPE_EMPTY(HttpStatus.BAD_REQUEST, "Empty operating action type"),
OPERATING_ACTION_TYPE_UNKNOWN(HttpStatus.BAD_REQUEST),
OPERATING_ACTION_TYPE_UNSUPPORTED(HttpStatus.INTERNAL_SERVER_ERROR),
EQUIPMENT_TYPE_UNSUPPORTED(HttpStatus.INTERNAL_SERVER_ERROR),
LINE_SPLIT_ERROR(HttpStatus.INTERNAL_SERVER_ERROR),
LINE_SPLIT_NOT_FOUND(HttpStatus.NOT_FOUND),
LINE_ATTACH_ERROR(HttpStatus.INTERNAL_SERVER_ERROR),
LINE_ATTACH_DESCRIPTION_ERROR(HttpStatus.BAD_REQUEST),
LINE_ATTACH_NOT_FOUND(HttpStatus.NOT_FOUND),
MODIFY_GENERATOR_ERROR(HttpStatus.INTERNAL_SERVER_ERROR),
TYPE_MISMATCH(HttpStatus.BAD_REQUEST),
MISSING_MODIFICATION_DESCRIPTION(HttpStatus.BAD_REQUEST),
MODIFICATION_OUT_OF_RANGE(HttpStatus.BAD_REQUEST),
DELETE_VOLTAGE_LEVEL_ON_LINE_ERROR(HttpStatus.INTERNAL_SERVER_ERROR),
DELETE_VOLTAGE_LEVEL_ON_LINE_NOT_FOUND(HttpStatus.NOT_FOUND),
EQUIPMENT_ATTRIBUTE_NAME_ERROR(HttpStatus.BAD_REQUEST),
EQUIPMENT_ATTRIBUTE_VALUE_ERROR(HttpStatus.BAD_REQUEST),
MOVE_MODIFICATION_ERROR(HttpStatus.INTERNAL_SERVER_ERROR),
GENERATOR_SCALING_ERROR(HttpStatus.INTERNAL_SERVER_ERROR),
LOAD_SCALING_ERROR(HttpStatus.INTERNAL_SERVER_ERROR),
DELETE_ATTACHING_LINE_ERROR(HttpStatus.INTERNAL_SERVER_ERROR),
DELETE_ATTACHING_LINE_NOT_FOUND(HttpStatus.NOT_FOUND),
FILTERS_NOT_FOUND(HttpStatus.NOT_FOUND),
LOAD_FLOW_PARAMETERS_NOT_FOUND(HttpStatus.NOT_FOUND),
LOAD_FLOW_PARAMETERS_FETCH_ERROR(HttpStatus.INTERNAL_SERVER_ERROR),
GENERATION_DISPATCH_ERROR(HttpStatus.INTERNAL_SERVER_ERROR),
BALANCES_ADJUSTMENT_MODIFICATION_ERROR(HttpStatus.INTERNAL_SERVER_ERROR),
VOLTAGE_INIT_MODIFICATION_ERROR(HttpStatus.INTERNAL_SERVER_ERROR),
TABULAR_MODIFICATION_ERROR(HttpStatus.INTERNAL_SERVER_ERROR),
TABULAR_CREATION_ERROR(HttpStatus.INTERNAL_SERVER_ERROR),
CREATE_VSC_ERROR(HttpStatus.INTERNAL_SERVER_ERROR),
MODIFY_VSC_ERROR(HttpStatus.INTERNAL_SERVER_ERROR),
CREATE_LCC_ERROR(HttpStatus.INTERNAL_SERVER_ERROR),
MODIFY_LCC_ERROR(HttpStatus.INTERNAL_SERVER_ERROR),
HVDC_LINE_ALREADY_EXISTS(HttpStatus.BAD_REQUEST),
VSC_CONVERTER_STATION_NOT_FOUND(HttpStatus.NOT_FOUND),
LCC_CONVERTER_STATION_NOT_FOUND(HttpStatus.NOT_FOUND),
CREATE_CONVERTER_STATION_ERROR(HttpStatus.INTERNAL_SERVER_ERROR),
MODIFY_CONVERTER_STATION_ERROR(HttpStatus.INTERNAL_SERVER_ERROR),
LCC_CREATE_CONVERTER_STATION_ERROR(HttpStatus.INTERNAL_SERVER_ERROR),
LCC_MODIFY_CONVERTER_STATION_ERROR(HttpStatus.INTERNAL_SERVER_ERROR),
BY_FORMULA_MODIFICATION_ERROR(HttpStatus.INTERNAL_SERVER_ERROR),
MODIFICATION_BY_ASSIGNMENT_ERROR(HttpStatus.INTERNAL_SERVER_ERROR),
HVDC_LINE_NOT_FOUND(HttpStatus.NOT_FOUND),
COMPOSITE_MODIFICATION_ERROR(HttpStatus.INTERNAL_SERVER_ERROR),
WRONG_HVDC_ANGLE_DROOP_ACTIVE_POWER_CONTROL(HttpStatus.BAD_REQUEST),
UNSUPPORTED_HYBRID_HVDC(HttpStatus.INTERNAL_SERVER_ERROR),
MODIFY_VOLTAGE_LEVEL_TOPOLOGY_ERROR(HttpStatus.INTERNAL_SERVER_ERROR),
CREATE_COUPLING_DEVICE_ERROR(HttpStatus.INTERNAL_SERVER_ERROR),
CREATE_VOLTAGE_LEVEL_TOPOLOGY_ERROR(HttpStatus.INTERNAL_SERVER_ERROR),
CREATE_VOLTAGE_LEVEL_SECTION_ERROR(HttpStatus.INTERNAL_SERVER_ERROR),
MOVE_VOLTAGE_LEVEL_FEEDER_BAYS_ERROR(HttpStatus.INTERNAL_SERVER_ERROR),;

public final HttpStatus status;
private final String message;

HttpStatus getStatus() {
return status;
}

Type(HttpStatus status) {
this(status, null);
}

Type(HttpStatus status, String message) {
this.status = status;
this.message = message;
}
}

private final Type type;

public NetworkModificationException(Type type) {
super(Objects.requireNonNull(type.name()) + ((type.message == null) ? "" : " : " + type.message));
this.type = type;
}

public NetworkModificationException(Type type, Exception cause) {
super(Objects.requireNonNull(type.name()) + " : " + ((cause.getMessage() == null) ? cause.getClass().getName() : cause.getMessage()), cause);
this.type = type;
}

public NetworkModificationException(Type type, String message) {
super(Objects.requireNonNull(type.name()) + " : " + Objects.requireNonNull(message));
this.type = type;
}

public Type getType() {
return type;
}

public static NetworkModificationException createEquipmentTypeUnknown(@NonNull String type) {
return new NetworkModificationException(Type.UNKNOWN_EQUIPMENT_TYPE, "The equipment type : " + type + " is unknown");
}

public static NetworkModificationException createEquipmentTypeNotSupported(@NonNull String type) {
return new NetworkModificationException(Type.EQUIPMENT_TYPE_UNSUPPORTED, "The equipment type : " + type + " is not supported");
}

public static NetworkModificationException createOperatingActionTypeUnsupported(@NonNull OperatingStatusModificationInfos.ActionType type) {
return new NetworkModificationException(Type.OPERATING_ACTION_TYPE_UNSUPPORTED, "The operating action type : " + type + " is unsupported");
}

public static NetworkModificationException createEquipementAttributeNotEditable(@NonNull IdentifiableType equipmentType, @NonNull String attributeName) {
throw new NetworkModificationException(ATTRIBUTE_NOT_EDITABLE, equipmentType.name() + " attribute '" + attributeName + "' not editable");
public NetworkModificationException(String message) {
super(message);
}

public static NetworkModificationException createHybridHvdcUnsupported(String hvdcId) {
Objects.requireNonNull(hvdcId);
return new NetworkModificationException(Type.UNSUPPORTED_HYBRID_HVDC, String.format("The hybrid Hvdc line %s is unsupported", hvdcId));
public NetworkModificationException(String message, Throwable cause) {
super(message, cause);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import lombok.experimental.SuperBuilder;
import org.gridsuite.modification.dto.annotation.ModificationErrorTypeName;
import org.gridsuite.modification.modifications.AbstractModification;
import org.gridsuite.modification.modifications.BalancesAdjustmentModification;

Expand All @@ -31,7 +30,6 @@
@ToString(callSuper = true)
@Schema(description = "Balances adjustment modification infos")
@JsonTypeName("BALANCES_ADJUSTMENT_MODIFICATION")
@ModificationErrorTypeName("BALANCES_ADJUSTMENT_MODIFICATION_ERROR")
public class BalancesAdjustmentModificationInfos extends ModificationInfos {
public static final int DEFAULT_MAX_NUMBER_ITERATIONS = 5;
public static final double DEFAULT_THRESHOLD_NET_POSITION = 1;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.SuperBuilder;
import org.gridsuite.modification.dto.annotation.ModificationErrorTypeName;
import org.gridsuite.modification.modifications.AbstractModification;
import org.gridsuite.modification.modifications.BatteryCreation;

Expand All @@ -31,7 +30,6 @@
@ToString(callSuper = true)
@Schema(description = "Battery creation")
@JsonTypeName("BATTERY_CREATION")
@ModificationErrorTypeName("CREATE_BATTERY_ERROR")
public class BatteryCreationInfos extends InjectionCreationInfos implements ReactiveLimitsHolderInfos {

@Schema(description = "Minimum active power")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
import com.fasterxml.jackson.annotation.JsonTypeName;
import com.powsybl.commons.report.ReportNode;

import org.gridsuite.modification.dto.annotation.ModificationErrorTypeName;
import org.gridsuite.modification.modifications.AbstractModification;
import org.gridsuite.modification.modifications.BatteryModification;

Expand All @@ -31,7 +30,6 @@
@ToString(callSuper = true)
@Schema(description = "Battery modification")
@JsonTypeName("BATTERY_MODIFICATION")
@ModificationErrorTypeName("MODIFY_BATTERY_ERROR")
public class BatteryModificationInfos extends InjectionModificationInfos {
@Schema(description = "Minimum active power")
private AttributeModification<Double> minP;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.SuperBuilder;
import org.gridsuite.modification.dto.annotation.ModificationErrorTypeName;
import org.gridsuite.modification.modifications.AbstractModification;
import org.gridsuite.modification.modifications.ByFilterDeletion;

Expand All @@ -34,7 +33,6 @@
@ToString(callSuper = true)
@Schema(description = "By filter deletion")
@JsonTypeName("BY_FILTER_DELETION")
@ModificationErrorTypeName("BY_FILTER_DELETION_ERROR")
public class ByFilterDeletionInfos extends ModificationInfos {
@Schema(description = "Equipment type")
private IdentifiableType equipmentType;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.SuperBuilder;
import org.gridsuite.modification.dto.annotation.ModificationErrorTypeName;
import org.gridsuite.modification.dto.byfilter.formula.FormulaInfos;
import org.gridsuite.modification.modifications.byfilter.ByFormulaModification;

Expand All @@ -33,7 +32,6 @@
@Getter
@Setter
@JsonTypeName("BY_FORMULA_MODIFICATION")
@ModificationErrorTypeName("BY_FORMULA_MODIFICATION_ERROR")
@ToString(callSuper = true)
@Schema(description = "Modification by formula")
public class ByFormulaModificationInfos extends ModificationInfos {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.SuperBuilder;
import org.gridsuite.modification.dto.annotation.ModificationErrorTypeName;
import org.gridsuite.modification.modifications.AbstractModification;
import org.gridsuite.modification.modifications.CompositeModification;

Expand All @@ -30,7 +29,6 @@
@ToString(callSuper = true)
@Schema(description = "Composite modification")
@JsonTypeName("COMPOSITE_MODIFICATION")
@ModificationErrorTypeName("COMPOSITE_MODIFICATION_ERROR")
public class CompositeModificationInfos extends ModificationInfos {

@Schema(description = "composite modification list")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.SuperBuilder;
import org.gridsuite.modification.dto.annotation.ModificationErrorTypeName;

import java.util.List;

Expand All @@ -29,7 +28,6 @@
@ToString(callSuper = true)
@Schema(description = "Converter station creation")
@JsonTypeName("CONVERTER_STATION_CREATION")
@ModificationErrorTypeName("CREATE_CONVERTER_STATION_ERROR")
public class ConverterStationCreationInfos extends InjectionCreationInfos implements ReactiveLimitsHolderInfos {
@Schema(description = "Loss Factor")
private Float lossFactor;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,6 @@
import lombok.ToString;
import lombok.experimental.SuperBuilder;

import org.gridsuite.modification.dto.annotation.ModificationErrorTypeName;

import java.util.List;

/**
Expand All @@ -28,7 +26,6 @@
@ToString(callSuper = true)
@Schema(description = "Converter station modification")
@JsonTypeName("CONVERTER_STATION_MODIFICATION")
@ModificationErrorTypeName("MODIFY_CONVERTER_STATION_ERROR")
public class ConverterStationModificationInfos extends InjectionModificationInfos {
@Schema(description = "Loss Factor")
private AttributeModification<Float> lossFactor;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.SuperBuilder;
import org.gridsuite.modification.dto.annotation.ModificationErrorTypeName;
import org.gridsuite.modification.modifications.AbstractModification;
import org.gridsuite.modification.modifications.CreateCouplingDevice;

Expand All @@ -31,7 +30,6 @@
@ToString(callSuper = true)
@Schema(description = "Coupling device creation")
@JsonTypeName("CREATE_COUPLING_DEVICE")
@ModificationErrorTypeName("CREATE_COUPLING_DEVICE_ERROR")
public class CreateCouplingDeviceInfos extends ModificationInfos {

@Schema(description = "VoltageLevelId")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.SuperBuilder;
import org.gridsuite.modification.dto.annotation.ModificationErrorTypeName;
import org.gridsuite.modification.modifications.AbstractModification;
import org.gridsuite.modification.modifications.CreateVoltageLevelSection;

Expand All @@ -31,7 +30,6 @@
@ToString(callSuper = true)
@Schema(description = "Create Voltage Level Section")
@JsonTypeName("CREATE_VOLTAGE_LEVEL_SECTION")
@ModificationErrorTypeName("CREATE_VOLTAGE_LEVEL_SECTION_ERROR")
public class CreateVoltageLevelSectionInfos extends ModificationInfos {
@Schema(description = "VoltageLevelId")
private String voltageLevelId;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.SuperBuilder;
import org.gridsuite.modification.dto.annotation.ModificationErrorTypeName;
import org.gridsuite.modification.modifications.AbstractModification;
import org.gridsuite.modification.modifications.DeleteAttachingLine;

Expand All @@ -33,7 +32,6 @@
@ToString(callSuper = true)
@Schema(description = "Delete attaching line infos")
@JsonTypeName("DELETE_ATTACHING_LINE")
@ModificationErrorTypeName("DELETE_ATTACHING_LINE_ERROR")
public class DeleteAttachingLineInfos extends ModificationInfos {

@Schema(description = "line 1 id")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import lombok.experimental.SuperBuilder;
import org.gridsuite.modification.dto.annotation.ModificationErrorTypeName;
import org.gridsuite.modification.modifications.AbstractModification;
import org.gridsuite.modification.modifications.DeleteVoltageLevelOnLine;

Expand All @@ -30,7 +29,6 @@
@ToString(callSuper = true)
@Schema(description = "Delete voltage level on line infos")
@JsonTypeName("DELETE_VOLTAGE_LEVEL_ON_LINE")
@ModificationErrorTypeName("DELETE_VOLTAGE_LEVEL_ON_LINE_ERROR")
public class DeleteVoltageLevelOnLineInfos extends ModificationInfos {

@Schema(description = "line 1 id")
Expand Down
Loading