Сервис регистрации новых клиентов банка.
| Метод | Путь | Описание |
|---|---|---|
| GET | /api/health |
Проверка статуса сервиса |
| POST | /api/clients |
Регистрация нового клиента |
| GET | /api/clients/{id} |
Получение клиента по ID |
| PUT | /api/clients/{id}/passport |
Актуализация паспортных данных |
Проверка работоспособности сервиса.
Ответ:
{
"status": "UP",
"service": "bank-registration-service"
}
Регистрация нового клиента в банке с открытием счёта.
{
"lastName": "Иванов",
"firstName": "Иван",
"middleName": "Иванович",
"gender": "MALE",
"clientType": "UP",
"bankruptIndividual": false,
"bankruptEntrepreneur": false,
"contactInfo": {
"phone": "79381234567",
"email": "ivanov@mail.ru"
},
"embossingName": "IVAN IVANOV",
"passportData": {
"birthDate": "15-05-1990",
"birthPlace": "г. Москва",
"issueDate": "20-05-2010",
"series": "4510",
"number": "123456"
},
"actualAddress": {
"country": "Россия",
"region": "Московская область",
"city": "Москва",
"street": "Ленина",
"building": "1",
"apartment": "25"
},
"registrationAddress": {
"country": "Россия",
"region": "Московская область",
"city": "Москва",
"street": "Ленина",
"building": "1",
"apartment": "25"
},
"account": "RUR",
"managerPin": "U_N10J"
}
| Поле | Тип | Обязательное | Валидация |
|---|---|---|---|
| lastName | string | Да | Максимум 35 символов |
| firstName | string | Да | Максимум 35 символов |
| middleName | string | Да | Максимум 35 символов |
| Поле | Тип | Обязательное | Валидация |
|---|---|---|---|
| gender | enum | Да | MALE или FEMALE |
| clientType | enum | Да | UP |
| bankruptIndividual | boolean | Да | Признак банкротства физического лица |
| bankruptEntrepreneur | boolean | Да | Признак банкротства индивидуального предпринимателя |
| embossingName | string | Да | Только заглавные латинские буквы и пробелы, максимум 30 символов |
| Поле | Тип | Обязательное | Валидация |
|---|---|---|---|
| phone | string | Да | Формат 7XXXXXXXXXX (11 цифр, начинается с 7) |
| string | Да | Валидный email, максимум 50 символов |
| Поле | Тип | Обязательное | Валидация |
|---|---|---|---|
| birthDate | string | Да | Формат dd-MM-yyyy |
| birthPlace | string | Да | Максимум 120 символов |
| issueDate | string | Да | Формат dd-MM-yyyy |
| series | string | Да | Ровно 4 цифры |
| number | string | Да | Ровно 6 цифр |
| Поле | Тип | Обязательное | Валидация |
|---|---|---|---|
| country | string | Да | Максимум 50 символов |
| region | string | Да | Максимум 50 символов |
| city | string | Да | Максимум 120 символов |
| street | string | Да | Максимум 120 символов |
| building | string | Да | Максимум 20 символов |
| apartment | string | Да | Максимум 20 символов |
| Поле | Тип | Обязательное | Валидация |
|---|---|---|---|
| account | enum | Да | RUR, USD или EUR |
| managerPin | string | Да | 6 символов: заглавные буквы, цифры, подчёркивание [A-Z0-9_]{6} |
| Условие | Результат |
|---|---|
| Возраст клиента < 18 лет | Отказ в регистрации |
| Возраст 20-44 года, паспорт выдан до 20 лет, прошло более 1 месяца после 20-летия | Ошибка: требуется обновлённый паспорт |
| Возраст ≥ 45 лет, паспорт выдан до 45 лет, прошло более 1 месяца после 45-летия | Ошибка: требуется обновлённый паспорт |
Примечание: После достижения 20 или 45 лет клиенту предоставляется период в 1 месяц для замены паспорта.
| Поле | Описание |
|---|---|
| id | Уникальный идентификатор клиента (UUID) |
| registrationDate | Дата и время регистрации |
| actualizationDate | Дата и время последней актуализации |
| account.accountNumber | Номер счёта: 40702 + код валюты + 12 случайных цифр (всего 20 символов) |
| account.accountingMode | Бухгалтерский режим счёта, по умолчанию 100 |
Коды валют:
| Валюта | Код |
|---|---|
| RUR | 810 |
| USD | 840 |
| EUR | 978 |
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"registrationDate": "19-12-2025 14:30:45",
"actualizationDate": "19-12-2025 14:30:45",
"lastName": "Иванов",
"firstName": "Иван",
"middleName": "Иванович",
"gender": "MALE",
"clientType": "UP",
"bankruptIndividual": false,
"bankruptEntrepreneur": false,
"contactInfo": {
"phone": "79381234567",
"email": "ivanov@mail.ru"
},
"embossingName": "IVAN IVANOV",
"passportData": {
"birthDate": "15-05-1990",
"birthPlace": "г. Москва",
"issueDate": "20-05-2010",
"series": "4510",
"number": "123456"
},
"actualAddress": {
"country": "Россия",
"region": "Московская область",
"city": "Москва",
"street": "Ленина",
"building": "1",
"apartment": "25"
},
"registrationAddress": {
"country": "Россия",
"region": "Московская область",
"city": "Москва",
"street": "Ленина",
"building": "1",
"apartment": "25"
},
"account": {
"accountNumber": "40702810123456789012",
"currency": "RUR",
"accountingMode": 100
},
"managerPin": "U_N10J"
}
{
"timestamp": "2025-12-19T14:30:45",
"status": 400,
"error": "Ошибка валидации",
"message": "Переданные данные не прошли валидацию",
"details": [
"lastName: Фамилия не должна превышать 35 символов",
"passportData.series: Серия паспорта должна состоять из 4 цифр"
]
}
{
"timestamp": "2025-12-19T14:30:45",
"status": 400,
"error": "Ошибка валидации паспорта",
"message": "Ошибка регистрации: требуется паспорт, выданный после достижения 20 лет. Пожалуйста, предоставьте обновленный паспорт"
}
{
"timestamp": "2025-12-19T14:30:45",
"status": 400,
"error": "Менеджер не найден",
"message": "Менеджер с PIN XXXXXX не найден"
}
{
"timestamp": "2025-12-19T14:30:45",
"status": 403,
"error": "Отказ в регистрации",
"message": "Отказ в регистрации: клиенту должно быть не менее 18 лет"
}
Получение данных клиента по уникальному идентификатору.
Параметры пути:
| Параметр | Тип | Описание |
|---|---|---|
| id | UUID | Уникальный идентификатор клиента |
Возвращает объект клиента (см. ответ регистрации).
{
"timestamp": "2025-12-19T14:30:45",
"status": 404,
"error": "Клиент не найден",
"message": "Клиент с ID 550e8400-e29b-41d4-a716-446655440000 не найден"
}
Обновление паспортных данных клиента. При обновлении автоматически устанавливается новое значение actualizationDate.
Параметры пути:
| Параметр | Тип | Описание |
|---|---|---|
| id | UUID | Уникальный идентификатор клиента |
{
"passportData": {
"birthDate": "15-05-1990",
"birthPlace": "г. Москва",
"issueDate": "20-05-2020",
"series": "4520",
"number": "654321"
}
}
Возвращает обновлённый объект клиента. Поле actualizationDate будет содержать новое значение.
Предзаполненные PIN-коды менеджеров:
| PIN | Имя менеджера |
|---|---|
| U_N10J | Иванов Иван Иванович |
| A_K25M | Петрова Мария Сергеевна |
| B_L38P | Сидоров Алексей Петрович |
| C_M47R | Козлова Анна Владимировна |
| D_N56S | Новиков Дмитрий Александрович |
curl https://alfa-campus-qa.ru/bank-registration/api/health
curl -X POST https://alfa-campus-qa.ru/bank-registration/api/clients \
-H "Content-Type: application/json" \
-d '{
"lastName": "Иванов",
"firstName": "Иван",
"middleName": "Иванович",
"gender": "MALE",
"clientType": "UP",
"bankruptIndividual": false,
"bankruptEntrepreneur": false,
"contactInfo": {
"phone": "79381234567",
"email": "ivanov@mail.ru"
},
"embossingName": "IVAN IVANOV",
"passportData": {
"birthDate": "15-05-1990",
"birthPlace": "г. Москва",
"issueDate": "20-05-2010",
"series": "4510",
"number": "123456"
},
"actualAddress": {
"country": "Россия",
"region": "Московская область",
"city": "Москва",
"street": "Ленина",
"building": "1",
"apartment": "25"
},
"registrationAddress": {
"country": "Россия",
"region": "Московская область",
"city": "Москва",
"street": "Ленина",
"building": "1",
"apartment": "25"
},
"account": "RUR",
"managerPin": "U_N10J"
}'
curl https://alfa-campus-qa.ru/bank-registration/api/clients/550e8400-e29b-41d4-a716-446655440000
curl -X PUT https://alfa-campus-qa.ru/bank-registration/api/clients/550e8400-e29b-41d4-a716-446655440000/passport \
-H "Content-Type: application/json" \
-d '{
"passportData": {
"birthDate": "15-05-1990",
"birthPlace": "г. Москва",
"issueDate": "20-05-2020",
"series": "4520",
"number": "654321"
}
}'