Translation. Original: limity/limity.md
Лимиты
21.10.2025
Введение
В системе KSeF 2.0 применены механизмы, ограничивающие количество и размер операций API, а также параметры, связанные с передаваемыми данными. Цель этих лимитов:
- защита стабильности системы при большом масштабе работы,
- противодействие злоупотреблениям и неэффективным интеграциям,
- предотвращение злоупотреблений и потенциальных угроз кибербезопасности,
- обеспечение равных условий доступа для всех пользователей.
Лимиты были разработаны с возможностью гибкой настройки под потребности конкретных субъектов, требующих более высокой интенсивности операций.
Лимиты запросов API
Система KSeF ограничивает количество запросов, которые можно отправлять в короткое время, чтобы обеспечить стабильную работу системы и равный доступ для всех пользователей. Подробная информация находится в разделе Лимиты запросов API.
Лимиты на контекст
| Параметр | Значение по умолчанию |
|---|---|
| Максимальный размер счета без вложения | 1 МБ |
| Максимальный размер счета с вложением | 3 МБ |
| Максимальное количество счетов в интерактивной/пакетной сессии | 10 000 |
Лимиты на аутентифицированный субъект
Заявки и активные сертификаты
| Идентификатор из сертификата | Заявки на сертификат KSeF | Активные сертификаты KSeF |
|---|---|---|
| NIP | 300 | 100 |
| PESEL | 12 | 6 |
| Отпечаток сертификата (fingerprint) | 12 | 6 |
Настройка лимитов
Система KSeF позволяет индивидуально настроить выбранные технические лимиты для:
- лимитов API - например, увеличение количества запросов для выбранного endpoint'а,
- контекста - например, увеличение максимального размера счета,
- аутентифицирующего субъекта - например, увеличение лимитов активных сертификатов KSeF для физического лица (PESEL).
В производственной среде увеличение лимитов возможно исключительно на основании обоснованной заявки, подкрепленной реальной операционной потребностью. Заявка подается через контактную форму, вместе с подробным описанием применения.
Проверка индивидуальных лимитов
Система KSeF предоставляет endpoint'ы, позволяющие проверить текущие значения лимитов для текущего контекста или субъекта:
Получение лимитов для текущего контекста
GET /limits/context
Возвращает значения действующих лимитов интерактивных и пакетных сессий для текущего контекста.
Пример на языке C#: KSeF.Client.Tests.Core/E2E/Limits/LimitsE2ETests.cs
Client.Core.Models.TestData.SessionLimitsInCurrentContextResponse limitsForContext =
await LimitsClient.GetLimitsForCurrentContextAsync(
accessToken,
CancellationToken);Пример на языке Java:
ContextLimitIntegrationTest.java
GetContextLimitResponse response = ksefClient.getContextSessionLimit(accessToken);Получение лимитов для текущего субъекта
GET /limits/subject
Возвращает действующие лимиты сертификатов и заявок на сертификацию для текущего аутентифицированного субъекта.
Пример на языке C#: KSeF.Client.Tests.Core/E2E/Limits/LimitsE2ETests.cs
Client.Core.Models.TestData.CertificatesLimitInCurrentSubjectResponse limitsForSubject =
await LimitsClient.GetLimitsForCurrentSubjectAsync(
accessToken,
CancellationToken);Пример на языке Java:
SubjectLimitIntegrationTest.java
GetSubjectLimitResponse response = ksefClient.getSubjectCertificateLimit(accessToken);Модификация лимитов в тестовой среде
В тестовой среде предоставлен набор методов, позволяющих изменить лимиты, а также восстановить их до значений по умолчанию. Эти операции доступны исключительно для аутентифицированных субъектов и не влияют на производственную среду.
Изменение лимитов сессии для текущего контекста
POST /testdata/limits/context/session
Пример на языке C#: KSeF.Client.Tests.Core/E2E/Limits/LimitsE2ETests.cs
Client.Core.Models.TestData.ChangeSessionLimitsInCurrentContextRequest newLimits =
new()
{
OnlineSession = new Client.Core.Models.TestData.SessionLimits
{
MaxInvoices = newMaxInvoices,
MaxInvoiceSizeInMB = newMaxInvoiceSizeInMB
MaxInvoiceWithAttachmentSizeInMB = newMaxInvoiceWithAttachmentSizeInMB
},
BatchSession = new Client.Core.Models.TestData.SessionLimits
{
MaxInvoices = newBatchSessionMaxInvoices
MaxInvoiceSizeInMB = newBatchSessionMaxInvoiceSizeInMB,
MaxInvoiceWithAttachmentSizeInMB = newBatchSessionMaxInvoiceWithAttachmentSizeInMB,
}
};
await TestDataClient.ChangeSessionLimitsInCurrentContextAsync(
newLimits,
accessToken);Пример на языке Java:
ContextLimitIntegrationTest.java
ChangeContextLimitRequest request = new ChangeContextLimitRequest();
OnlineSessionLimit onlineSessionLimit = new OnlineSessionLimit();
onlineSessionLimit.setMaxInvoiceSizeInMB(4);
onlineSessionLimit.setMaxInvoiceWithAttachmentSizeInMB(5);
onlineSessionLimit.setMaxInvoices(6);
BatchSessionLimit batchSessionLimit = new BatchSessionLimit();
batchSessionLimit.setMaxInvoiceSizeInMB(4);
batchSessionLimit.setMaxInvoiceWithAttachmentSizeInMB(5);
batchSessionLimit.setMaxInvoices(6);
request.setOnlineSession(onlineSessionLimit);
request.setBatchSession(batchSessionLimit);
ksefClient.changeContextLimitTest(request, accessToken);Восстановление лимитов сессии для контекста до значений по умолчанию
DELETE /testdata/limits/context/session
Пример на языке C#: KSeF.Client.Tests.Core/E2E/Limits/LimitsE2ETests.cs
await TestDataClient.RestoreDefaultSessionLimitsInCurrentContextAsync(accessToken);Пример на языке Java: ContextLimitIntegrationTest.java
ksefClient.resetContextLimitTest(accessToken);Изменение лимитов сертификатов для текущего субъекта
POST /testdata/limits/subject/certificate
Пример на языке C#: KSeF.Client.Tests.Core/E2E/Limits/LimitsE2ETests.cs
Client.Core.Models.TestData.ChangeCertificatesLimitInCurrentSubjectRequest newCertificateLimitsForSubject = new()
{
SubjectIdentifierType = Client.Core.Models.TestData.TestDataSubjectIdentifierType.Nip,
Certificate = new Client.Core.Models.TestData.TestDataCertificate
{
MaxCertificates = newMaxCertificatesValue
},
Enrollment = new Client.Core.Models.TestData.TestDataEnrollment
{
MaxEnrollments = newMaxEnrollmentsValue
}
};
await TestDataClient.ChangeCertificatesLimitInCurrentSubjectAsync(
newCertificateLimitsForSubject,
accessToken);Пример на языке Java: SubjectLimitIntegrationTest.java
ChangeSubjectCertificateLimitRequest request = new ChangeSubjectCertificateLimitRequest();
request.setCertificate(new CertificateLimit(15));
request.setEnrollment(new EnrollmentLimit(15));
request.setSubjectIdentifierType(ChangeSubjectCertificateLimitRequest.SubjectType.NIP);
ksefClient.changeSubjectLimitTest(request, accessToken);Восстановление лимитов сертификатов для субъекта до значений по умолчанию
DELETE /testdata/limits/subject/certificate
Пример на языке C#: KSeF.Client.Tests.Core/E2E/Limits/LimitsE2ETests.cs
await TestDataClient.RestoreDefaultCertificatesLimitInCurrentSubjectAsync(accessToken);Пример на языке Java: SubjectLimitIntegrationTest.java
ksefClient.resetSubjectCertificateLimit(accessToken);Связанные документы: