88 lines
2.2 KiB
TypeScript
88 lines
2.2 KiB
TypeScript
import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
|
|
|
|
export class ScreenerItemDto {
|
|
@ApiProperty({ example: 'SBER' })
|
|
secid!: string;
|
|
|
|
@ApiProperty({ example: 'Сбербанк' })
|
|
shortName!: string;
|
|
|
|
@ApiProperty({ example: 'RU0009029540' })
|
|
isin!: string;
|
|
|
|
@ApiProperty({ enum: ['share', 'bond'] })
|
|
type!: 'share' | 'bond';
|
|
|
|
@ApiPropertyOptional({ type: Number, nullable: true, example: 322.35 })
|
|
price!: number | null;
|
|
|
|
@ApiPropertyOptional({ type: Number, nullable: true, example: 1.15 })
|
|
change!: number | null;
|
|
|
|
@ApiPropertyOptional({ type: Number, nullable: true, example: 0.36 })
|
|
changePercent!: number | null;
|
|
|
|
@ApiProperty({ example: 1925163 })
|
|
volume!: number;
|
|
|
|
@ApiProperty({ example: 1 })
|
|
listLevel!: number;
|
|
|
|
@ApiPropertyOptional({ type: Number, nullable: true, example: 6958336818320 })
|
|
capitalization!: number | null;
|
|
|
|
@ApiPropertyOptional({ type: Number, nullable: true, example: 12.71 })
|
|
yieldToMaturity!: number | null;
|
|
|
|
@ApiPropertyOptional({ type: Number, nullable: true, example: 4.5 })
|
|
duration!: number | null;
|
|
|
|
@ApiPropertyOptional({ type: Number, nullable: true, example: 40.64 })
|
|
couponValue!: number | null;
|
|
|
|
@ApiPropertyOptional({ type: Number, nullable: true, example: 8.15 })
|
|
couponPercent!: number | null;
|
|
|
|
@ApiPropertyOptional({ type: Number, nullable: true, example: 29.48 })
|
|
accruedInt!: number | null;
|
|
|
|
@ApiPropertyOptional({ type: String, nullable: true, example: '2027-02-03' })
|
|
matDate!: string | null;
|
|
|
|
@ApiPropertyOptional({ type: String, nullable: true, example: 'ОФЗ-ПД' })
|
|
bondType!: string | null;
|
|
}
|
|
|
|
export class ScreenerResultDto {
|
|
@ApiProperty({ type: [ScreenerItemDto] })
|
|
items!: ScreenerItemDto[];
|
|
|
|
@ApiProperty()
|
|
total!: number;
|
|
|
|
@ApiProperty()
|
|
page!: number;
|
|
|
|
@ApiProperty()
|
|
pageSize!: number;
|
|
|
|
@ApiProperty()
|
|
totalPages!: number;
|
|
}
|
|
|
|
class ScreenerResponseMetaDto {
|
|
@ApiProperty({ type: String, nullable: true })
|
|
cachedAt!: string | null;
|
|
|
|
@ApiProperty()
|
|
fromCache!: boolean;
|
|
}
|
|
|
|
export class ScreenerResponseDto {
|
|
@ApiProperty({ type: ScreenerResultDto })
|
|
data!: ScreenerResultDto;
|
|
|
|
@ApiProperty({ type: ScreenerResponseMetaDto })
|
|
meta!: ScreenerResponseMetaDto;
|
|
}
|