Перейти к содержимому

gRPC method

gRPC метод для создания заявки на досрочное расторжение договора

Назначение

Метод предназначен для создания заявки на досрочное расторжение договора в backend-сервисе ContractTerminationService.

Service

service ContractTerminationService {
  rpc CreateTerminationRequest(CreateTerminationRequestRequest)
      returns (CreateTerminationRequestResponse);
}

Proto contract

syntax = "proto3";

package contract.termination.v1;

import "google/protobuf/timestamp.proto";

service ContractTerminationService {
  rpc CreateTerminationRequest(CreateTerminationRequestRequest)
      returns (CreateTerminationRequestResponse);
}

message CreateTerminationRequestRequest {
  string contract_id = 1;
  string customer_id = 2;
  string reason_code = 3;
  string desired_termination_date = 4;
  BankDetails bank_details = 5;
  string comment = 6;
  repeated string document_ids = 7;
  string idempotency_key = 8;
  string correlation_id = 9;
  RequestSource source = 10;
}

message BankDetails {
  string bik = 1;
  string account_number = 2;
  string recipient_name = 3;
}

enum RequestSource {
  REQUEST_SOURCE_UNSPECIFIED = 0;
  REQUEST_SOURCE_WEB = 1;
  REQUEST_SOURCE_MOBILE = 2;
}

message CreateTerminationRequestResponse {
  string request_id = 1;
  string request_number = 2;
  TerminationRequestStatus status = 3;
  google.protobuf.Timestamp created_at = 4;
  bool idempotent_replay = 5;
}

enum TerminationRequestStatus {
  TERMINATION_REQUEST_STATUS_UNSPECIFIED = 0;
  TERMINATION_REQUEST_STATUS_DRAFT = 1;
  TERMINATION_REQUEST_STATUS_SUBMITTED = 2;
  TERMINATION_REQUEST_STATUS_IN_REVIEW = 3;
  TERMINATION_REQUEST_STATUS_WAITING_FOR_DOCUMENTS = 4;
  TERMINATION_REQUEST_STATUS_APPROVED = 5;
  TERMINATION_REQUEST_STATUS_REJECTED = 6;
  TERMINATION_REQUEST_STATUS_CANCELLED = 7;
  TERMINATION_REQUEST_STATUS_COMPLETED = 8;
}

Request parameters

ПолеТипОбязательностьОписание
contract_idstring UUIDДаИдентификатор договора
customer_idstring UUIDДаИдентификатор клиента из доверенного контура авторизации
reason_codestringДаКод причины расторжения
desired_termination_datestring dateДаЖелаемая дата расторжения в формате YYYY-MM-DD
bank_detailsBankDetailsДаБанковские реквизиты
bank_details.bikstringДаБИК банка
bank_details.account_numberstringДаНомер счета
bank_details.recipient_namestringДаПолучатель
commentstringНетКомментарий клиента
document_idsrepeated string UUIDНетИдентификаторы документов
idempotency_keystring UUIDДаКлюч идемпотентности
correlation_idstring UUIDДаИдентификатор трассировки
sourceRequestSourceДаКанал, из которого пришла заявка

Response parameters

ПолеТипОбязательностьОписание
request_idstring UUIDДаИдентификатор созданной заявки
request_numberstringДаНомер заявки
statusTerminationRequestStatusДаСтатус заявки
created_atgoogle.protobuf.TimestampДаДата и время создания заявки
idempotent_replayboolДаПризнак, что результат возвращен по повторному идемпотентному запросу

gRPC error codes

gRPC codeБизнес-кодОписание
INVALID_ARGUMENTVALIDATION_ERRORНекорректные входные параметры
NOT_FOUNDCONTRACT_NOT_FOUNDДоговор не найден
PERMISSION_DENIEDACCESS_DENIEDДоговор не принадлежит клиенту
FAILED_PRECONDITIONCONTRACT_NOT_ACTIVEДоговор не активен
ALREADY_EXISTSACTIVE_REQUEST_ALREADY_EXISTSПо договору уже есть активная заявка
INVALID_ARGUMENTINVALID_TERMINATION_DATEНекорректная желаемая дата расторжения
INVALID_ARGUMENTINVALID_BANK_DETAILSНекорректные банковские реквизиты
NOT_FOUNDDOCUMENT_NOT_FOUNDОдин или несколько документов не найдены
INTERNALINTERNAL_ERRORВнутренняя ошибка сервиса
UNAVAILABLESERVICE_UNAVAILABLEЗависимый сервис недоступен

Пример gRPC request

{
  "contract_id": "9f4d7b1a-7e8a-4c5e-91b1-1d73f9e25c01",
  "customer_id": "2a6f3f3e-12a4-42aa-81ab-6b7f98ce1e22",
  "reason_code": "CLIENT_INITIATIVE",
  "desired_termination_date": "2026-05-15",
  "bank_details": {
    "bik": "044525225",
    "account_number": "40817810099910004312",
    "recipient_name": "Иванов Иван Иванович"
  },
  "comment": "Прошу расторгнуть договор по личной инициативе.",
  "document_ids": ["4dc4ef79-863e-4b36-8bc4-e5a27fd73291"],
  "idempotency_key": "6a7c8e9a-0a4d-4a72-8c3e-61dbf9023311",
  "correlation_id": "3e4b5a27-8888-4e9a-9111-926b97e2d123",
  "source": "REQUEST_SOURCE_WEB"
}