Enterprise phiên bản
Licensing — Tài liệu tham chiếu chuyên sâu
Tổng quan
Phần tiêu đề “Tổng quan”Trang này là tài liệu tham chiếu chuyên sâu cho bề mặt licensing của NextPDF Enterprise — module phân giải mọi capability Enterprise khác. Nó bao quát mô hình trạng thái quyền sử dụng (EntitlementEvaluator, EntitlementStatus, EntitlementResult), việc kiểm soát capability được thực thi (FeatureGate, CapabilityCode, CapabilityRegistry), máy thực thi kênh hai bộ đếm thời gian (ChannelEnforcementPolicy, OnlineCheckScheduler), và client trực tuyến đã ký (LicenseClient). Việc đánh giá quyền sử dụng thông thường không cần mạng. Client trực tuyến tồn tại cho các thao tác rõ ràng: activate, heartbeat, deactivate, verify-online, và thăm dò gia hạn. Chi tiết cơ chế nội bộ nằm trong tài liệu nội bộ của kho nguồn và ngoài phạm vi của cẩm nang này.
Tình trạng khả dụng và cấp phép
Phần tiêu đề “Tình trạng khả dụng và cấp phép”Capability này đi kèm trong NextPDF Enterprise (nextpdf/enterprise) và kích hoạt bằng một license envelope bậc Enterprise. Một triển khai không có quyền sử dụng đó sẽ không nạp các lớp của capability. So sánh các phiên bản và lấy giấy phép.
Licensing là một bề mặt Enterprise nền tảng. Nó luôn hiện diện một khi gói Enterprise được cài đặt cạnh gói Core, vì nó là bề mặt phân giải mọi thứ khác. NextPDF Pro không có bề mặt quyền sử dụng riêng; mô hình trạng thái, máy thực thi, và client trực tuyến chỉ đi kèm trong nextpdf/enterprise. NextPDF Core (Apache-2.0) hoàn toàn không có mô hình quyền sử dụng — một host cần hành vi Apache-2.0 không cấp phép thì dùng engine Core trực tiếp, không phải quy trình Enterprise.
Bề mặt API công khai
Phần tiêu đề “Bề mặt API công khai”Mọi kiểu đều nằm dưới NextPDF\Enterprise\Licensing. Máy thực thi nằm trong sub-namespace Channel, thành phần runtime trong Runtime, và các kiểu trạng thái đã ký trong Online.
| Ký hiệu | Tham số | Hành vi mặc định | Trả về | Ném hoặc thất bại với | Ghi chú |
|---|---|---|---|---|---|
EntitlementEvaluator::evaluate() | ?LicenseKey $license, ?DateTimeImmutable $now = null | Ánh xạ một giấy phép đã xác minh (hoặc null) sang quyết định quyền sử dụng đầy đủ | EntitlementResult | Không | Một giấy phép null cho ra kết quả no-license fail-closed |
EntitlementEvaluator::evaluateEnforced() | ?LicenseKey $license, EnforcementOutcome $outcome | Chuyển một kết cục thực thi đã tính sẵn thành một kết quả quyền sử dụng | EntitlementResult | Không | Phiên bản hiệu lực đến từ kết cục; mọi lần hạ cấp thực thi đều rơi về Core |
EntitlementEvaluator::resolveBrandingMode(), ::resolveBrandingStrategy() | ?LicenseKey $license, ?DateTimeImmutable $now = null | Phân giải quyết định branding cho đầu ra được tạo ra | BrandingMode / BrandingStrategy | Không | Thẩm quyền branding duy nhất; chỉ kênh đánh giá mới đóng hình mờ |
EntitlementResult | Value object chỉ đọc | Mang theo trạng thái, phiên bản, kênh, chế độ branding, các cờ runtime/cập nhật/hỗ trợ, và một cảnh báo tùy chọn | — | Không | Trợ giúp: isFullyActive(), isExpired(), isDowngradedToCore(), shouldApplyEvaluationBranding() |
EntitlementStatus | Enum nền chuỗi | Active, GracePeriod, DowngradedToCore, EvaluationExpired, NoLicense | — | Không | PerpetualFallback được giữ lại nhưng đã lỗi thời; chỉ giữ để các consumer trước 6.0 vẫn biên dịch được |
FeatureGate::hasCapability() | CapabilityCode $capability | Kiểm tra capability so với phiên bản hiệu lực được thực thi và trạng thái gói | bool | Không | Fail-closed về core khi có bất kỳ lỗi resolver nào |
FeatureGate::requireCapability() | CapabilityCode $capability | Vượt qua âm thầm hoặc ném kèm bối cảnh upsell có cấu trúc | void | SpectrumAuthenticationException SPEC-LIC-001 (chưa cấp phép) hoặc SPEC-LIC-002 (gói hết hạn) | Bối cảnh mang theo required_capability, required_pack, current_packs, upgrade_info_url |
FeatureGate::isFeatureEnabled(), ::requireFeature() | string $feature | Kiểm tra định danh feature kế thừa | bool / void | SpectrumAuthenticationException SPEC-AUTH-007 (đường require) | Tương thích kế thừa; ưu tiên kiểm tra capability |
FeatureGate accessors | Không | Nội quan giấy phép | Tùy | Không | currentEdition(), isLicenseValid(), isInGracePeriod(), getActivePacks(), trialPolicy() |
CapabilityCode | Enum nền chuỗi | Các định danh capability chuẩn tắc (core.*, pro.*, enterprise.*, pack.*) | — | Không | isPack(), packName(), minimumEdition(), forEdition() |
CapabilityRegistry | LicenseKey, các mẫu route | Phân giải route-to-capability và tra cứu gói trước khi dispatch | Tùy | Không | registerDefaultRoutes() bao quát các route dịch vụ đã được tài liệu hóa |
LicenseKey | Value object chỉ đọc | Các claim giấy phép đã phân tích và xác minh | — | Không | isExpired(), isInGracePeriod(), isFullyExpired(), hasFeature(), hasCapability(), activePackNames(); maxSlots chỉ mang tính hợp đồng |
LicenseValidator::buildVerifiedLicenseKey() | array $data | Dựng một LicenseKey có kiểu từ một payload đã được xác minh | LicenseKey | SpectrumAuthenticationException SPEC-AUTH-001 khi vi phạm schema | Hỗ trợ schema 2.0, 1.0, và các payload kế thừa |
PackDefinition / PackRegistry | Các value object chỉ đọc | Trạng thái gói bổ trợ với thời hạn và ân hạn độc lập | Tùy | Không | isActive(), isFullyExpired(), activePacks(), activeCapabilities() |
TrialPolicy | bool $enabled, int $maxPagesPerSecond = 2, các trường hình mờ | Chính sách giới hạn thông lượng dùng thử | — | Không | fromLicenseKey(), disabled(), isThrottled(); thẩm quyền branding vẫn thuộc bộ đánh giá |
ChannelEnforcementPolicy::enforce() | LicenseKey $license, LocalState $state, int $systemNow, bool $revoked = false | Chạy máy hai bộ đếm thời gian cộng với thu hồi và gắn nhãn lại dùng thử | EnforcementOutcome | Không | Việc thu hồi ghi đè mọi bộ đếm thời gian và trạng thái dùng thử |
OnlineCheckScheduler::evaluate(), ::recordSuccessfulOnlineCheck() | Giấy phép, trạng thái cục bộ, các dấu thời gian | Đánh giá hai bộ đếm thời gian; gia hạn lease từ thời gian máy chủ đã xác minh | EnforcementOutcome / LocalState | Không | ONLINE_GRACE_SECONDS cấp 48 giờ ân hạn liveness sau khi lease hết |
EnforcementDecision / EnforcementReason / EnforcementOutcome | Các enum + value object chỉ đọc | Active, Grace, DowngradedToCore cộng với lý do chính xác | — | Không | Mỗi lý do ánh xạ tất định tới một quyết định |
Runtime\EntitlementResolver::currentEntitlement() | Không | Interface: quyền sử dụng được thực thi mà runtime phục vụ | EntitlementResult | Do hiện thực quy định | EnforcedEntitlementResolver kết hợp cache, state, policy, và evaluator, fail-closed về Core |
LicenseStateCache::get(), ::getOrThrow() | bool $forceRefresh = false | Cache giấy phép đã xác minh làm nền cho gate | ?LicenseKey | getOrThrow(): SpectrumAuthenticationException SPEC-AUTH-008; LicenseConfigurationException khi đấu nối không hợp lệ | invalidate(), isCacheValid() |
LicenseClient::activate(), ::heartbeat(), ::deactivate(), ::verifyOnline() | string $licenseJws, string $deploymentId, ?string $machineFingerprintHash = null, ?string $expectedLicenseId = null, ?string $clientNonce = null | Một lần trao đổi trạng thái đã ký; phản hồi được xác minh so với pinned root và ràng buộc với nonce đã gửi | StatusResponse | LicenseClientException (transport, không phải 200, nonce cung cấp sai); SpectrumAuthenticationException (phản hồi giả mạo, bị can thiệp, cũ, sai nonce, sai giấy phép, sai kiểu) | Chỉ hash fingerprint đã salt mới được gửi, không bao giờ gửi fingerprint thô |
LicenseClient::checkRenewal() | string $licenseId, string $customerId | Thăm dò khả dụng gia hạn; 404 là câu trả lời “none available” bình thường | Mảng gia hạn (available, download_url, expires_at) | LicenseClientException (không truy cập được, không phải 200/404, hoặc download_url bị chính sách từ chối) | URL trong body không ký được sàng lọc SSRF trước khi có thể thoát ra |
LicenseClient::__construct() | Xem khối chữ ký | Xác thực transport, scheme URL, và pin set khi khởi tạo | — | LicenseConfigurationException (transport không thực thi chính sách, scheme không được phép, HTTP thuần không có pin, pin set dị dạng) | getPinSet() hiển thị pin set đang hoạt động cho công cụ xoay vòng |
Online\StatusResponse | Value object chỉ đọc | Trạng thái đã ký đã xác minh | — | Không | isLive() là false với revoked / expired / released; mang theo leaseExpiresAt, số lượng slot, và một ảnh chụp quyền sử dụng |
LicenseChannelMode / OnlineMode / OnlinePolicy | Các enum + value object chỉ đọc | Các claim về kênh và chính sách trực tuyến | — | Không | signed_source so với ioncube; chế độ trực tuyến required / optional / disabled với intervalDays và leaseDays |
LicenseEdition | Enum nền chuỗi | Core, Pro, Enterprise | — | Không | satisfies() hiện thực phân cấp bậc |
public function __construct(private ?EvaluationBrandingConfig $evaluationBrandingConfig = null)public function evaluate(?LicenseKey $license, ?DateTimeImmutable $now = null): EntitlementResultpublic function evaluateEnforced(?LicenseKey $license, EnforcementOutcome $outcome): EntitlementResultpublic function resolveBrandingMode(?LicenseKey $license, ?DateTimeImmutable $now = null): BrandingModepublic function resolveBrandingStrategy(?LicenseKey $license, ?DateTimeImmutable $now = null): BrandingStrategypublic function __construct(private readonly LicenseStateCache $licenseCache, private readonly EntitlementResolver $entitlementResolver, private readonly string $upgradeInfoUrl = self::DEFAULT_UPGRADE_URL)public function isFeatureEnabled(string $feature): boolpublic function requireFeature(string $feature): voidpublic function currentEdition(): ?stringpublic function isLicenseValid(): boolpublic function isInGracePeriod(): boolpublic function hasCapability(CapabilityCode $capability): boolpublic function requireCapability(CapabilityCode $capability): voidpublic function getActivePacks(): arraypublic function trialPolicy(): TrialPolicypublic function __construct(private readonly ClientInterface $httpClient, private readonly RequestFactoryInterface $requestFactory, private readonly StreamFactoryInterface $streamFactory, private readonly StatusX5cValidator $statusValidator, private readonly string $baseUrl = self::DEFAULT_BASE_URL, #[SensitiveParameter] private readonly ?string $apiKey = null, array $pinnedPublicKeys = [], array $backupPins = [], private readonly OutboundHttpPolicy $policy = new OutboundHttpPolicy(allowedSchemes: ['https'], connectTimeoutSeconds: 10, readTimeoutSeconds: 30, maxResponseBytes: 10_485_760, followRedirects: false, allowPrivateTargets: false, retryAttempts: 0, retryBaseBackoffMs: 250))public function activate(string $licenseJws, string $deploymentId, ?string $machineFingerprintHash = null, ?string $expectedLicenseId = null, ?string $clientNonce = null): StatusResponsepublic function heartbeat(string $licenseJws, string $deploymentId, ?string $machineFingerprintHash = null, ?string $expectedLicenseId = null, ?string $clientNonce = null): StatusResponsepublic function deactivate(string $licenseJws, string $deploymentId, ?string $machineFingerprintHash = null, ?string $expectedLicenseId = null, ?string $clientNonce = null): StatusResponsepublic function verifyOnline(string $licenseJws, string $deploymentId, ?string $machineFingerprintHash = null, ?string $expectedLicenseId = null, ?string $clientNonce = null): StatusResponsepublic function getPinSet(): ?PinSetpublic function checkRenewal(string $licenseId, string $customerId): arrayHợp đồng hành vi
Phần tiêu đề “Hợp đồng hành vi”Việc đánh giá quyền sử dụng tạo ra một trong năm trạng thái hiện tại, mỗi trạng thái kèm một hệ quả runtime cố định:
| Trạng thái | Runtime | Capability hiệu lực | Cập nhật / hỗ trợ | Branding |
|---|---|---|---|---|
Active | cho phép | phiên bản được cấp quyền + các gói đang hoạt động | có (trả phí); không (đánh giá) | không có (trả phí); hình mờ (đánh giá) |
GracePeriod | cho phép | phiên bản được cấp quyền + các gói đang hoạt động | có | không có (trả phí) |
DowngradedToCore | cho phép | chỉ Core | không | không có (trả phí); hình mờ (dùng thử) |
EvaluationExpired | hạn chế | không có | không | hình mờ |
NoLicense | vô hiệu hóa (fail-closed) | không có | không | hình mờ |
- Việc hết hạn trả phí không bao giờ vô hiệu hóa runtime đã cài đặt.
runtimeAllowedvẫn là true với mọi trạng thái trả phí. Sau cửa sổ ân hạn, phiên bản hiệu lực hạ cấp về Core: các capability Core tiếp tục chạy vô thời hạn, mọi capability Pro/Enterprise/gói bị kiểm soát tắt, và cập nhật và hỗ trợ bị thu hồi. Case đã lỗi thờiEntitlementStatus::PerpetualFallbackđặt tên cho chính sách hết hạn trước 6.0 và chỉ tồn tại để tương thích biên dịch. - Không phải trạng thái nào cũng kết thúc ở việc thực thi Core. Ân hạn giữ nguyên phiên bản được cấp quyền đầy đủ kèm một cảnh báo gia hạn có ghi ngày. Việc hết hạn đánh giá hạn chế runtime và giữ hình mờ. Trạng thái no-license vô hiệu hóa các đường Enterprise theo fail-closed và đóng hình mờ hiển thị rõ lên mọi đầu ra kế thừa, nên nó không bao giờ có thể bị nhầm thành một lần thực thi trả phí.
- Thứ tự phân giải cố định. Một giấy phép đã hết hạn hoàn toàn không phân giải capability nào. Các capability gói nhường cho trạng thái hoạt động và thời hạn độc lập của riêng gói. Các capability phiên bản phân giải so với phiên bản hiệu lực được thực thi theo phân cấp chặt Enterprise ⊇ Pro ⊇ Core.
LicenseKey::$editionthô không bao giờ được tham chiếu để kiểm soát. - Hai bộ đếm thời gian; cái hạn chế nhất thắng. Bộ đếm quyền sử dụng (cả hai kênh) điều khiển Active, Grace, và việc hạ cấp Core sau ân hạn. Bộ đếm liveness trực tuyến chỉ áp dụng cho kênh
ioncubevới chế độ trực tuyếnrequired: lease, cộng thêm 48 giờ ân hạn liveness, phải còn sống. Ngoại tuyến sau khi lease hết, premium tạm dừng ở bậc Core; một lần kiểm tra trực tuyến đã xác minh sau đó tái lập lease và premium tiếp tục. Kênhsigned_source— và bất kỳ chế độ trực tuyến không-required nào — không có bộ đếm liveness và vẫn ngoại tuyến và có khả năng air-gap. - Chống lùi thời gian là tất định. Việc thực thi đánh giá so với một sàn đơn điệu: thời gian hiệu lực là giá trị lớn nhất giữa đồng hồ hệ thống và thời gian đã xác minh gần nhất, nên một thay đổi đồng hồ về sau không cấp thêm thời gian. Một lần lùi vượt quá dung sai lệch và phần ân hạn còn lại buộc hạ cấp Core.
- Lease chỉ tiến theo thời gian đáng tin cậy. Một lần kiểm tra trực tuyến thành công ghi lại thời gian máy chủ đã ký và đã xác minh, không bao giờ ghi đồng hồ cục bộ, nên một cú nhảy đồng hồ cục bộ về phía trước không thể thổi phồng lease.
- Branding có một thẩm quyền duy nhất. Chỉ kênh đánh giá mới kích hoạt hình mờ. Một giấy phép trả phí phân giải thành không có branding ở mọi trạng thái, kể cả các trạng thái đã hạ cấp.
- Dùng thử là một lớp chính sách trên cùng các bộ đếm thời gian đó. Thông lượng bị giới hạn (mặc định 2 trang/giây), hình mờ đánh giá được áp dụng, và việc hết hạn là nghiêm ngặt không có ân hạn. Chỉ lý do được báo cáo thay đổi; quyết định và phiên bản hiệu lực đi theo máy trả phí.
- Hợp đồng trực tuyến được ký đầu-cuối. Mỗi yêu cầu mang theo một client nonce CSPRNG. Mỗi phản hồi là một JWS EdDSA compact có media type
application/nextpdf-status+jwt, được xác minh qua một chuỗi x5c tới một pinned root biên dịch sẵn và ràng buộc với nonce đã gửi, id giấy phép đã cài đặt, và endpoint được gọi. Transport envelope không ký kế thừa đã bị loại bỏ; đúng một đường tin cậy còn lại. Các pin SPKI được cấu hình đi trong headerX-NextPDF-Pinned-Public-Key, và một pin set phải bao gồm một backup pin. - Không thực thi số ghế tại runtime.
maxSlotschỉ mang tính hợp đồng — không có telemetry và không có phone-home bắt buộc cho hoạt động thông thường.
Trường hợp biên và chế độ lỗi
Phần tiêu đề “Trường hợp biên và chế độ lỗi”- Một lần kiểm tra capability trên một giấy phép đã hết hạn hoàn toàn rẽ tắt thành “unavailable” trước khi bất kỳ logic gói hay phiên bản nào chạy.
- Một gói bổ trợ có thể hết hạn trong khi giấy phép nền tảng đang hoạt động. Việc từ chối khi đó đọc là gói hết hạn (
SPEC-LIC-002), không phải chưa cấp phép (SPEC-LIC-001), và liệt kê các gói đang hoạt động hiện tại. - Một tệp trạng thái thực thi cục bộ hiện diện nhưng không đọc được hoặc không phân tích được là một tín hiệu can thiệp. Máy fail-closed về hạ cấp Core với
EnforcementReason::CorruptState. Một tệp vắng mặt một cách hợp lệ thì không hỏng và tiếp tục bình thường. - Một lần lùi đồng hồ xuống dưới sàn đơn điệu, vượt quá dung sai lệch (mặc định 120 giây) và phần ân hạn còn lại, buộc hạ cấp Core một cách tất định.
- Một lease liveness đã hết hạ cấp một giấy phép
ioncubevốn đang Active; việc hết hạn quyền sử dụng hạ cấp bất kể trạng thái lease. evaluate(null)là fail-closed: runtime bị cấm, hình mờ được áp dụng, và cảnh báo nêu tên URL bảng giá. Các host cần hành vi Core không cấp phép phải dựng engine Core trực tiếp.- Một giấy phép đánh giá đã hết hạn không có ân hạn và không có dự phòng; runtime bị hạn chế và hình mờ vẫn còn.
checkRenewal()coi HTTP 404 là câu trả lời “none available” bình thường. Bất kỳ non-200 nào khác đều némLicenseClientException, và mộtdownload_urlvi phạm chính sách ra ngoài sẽ fail-closed trước khi có thể thoát khỏi phương thức.- Một phản hồi trạng thái giả mạo, bị can thiệp, cũ, sai nonce, hoặc sai giấy phép không bao giờ cho ra một
StatusResponse; việc xác minh némSpectrumAuthenticationException. Một trạng thái đã ký nhưngrevoked,expired, hoặcreleasedthì xác minh được và hiện lên như một tín hiệu hạ cấp (isLive()là false). - Một phản hồi trạng thái được đúc cho một lần trao đổi khác sẽ bị từ chối:
response_typeđã xác minh phải khớp với endpoint được gọi. FeatureGatefail-closed khi có bất kỳ lỗi resolver nào: phiên bản hiệu lực suy giảm vềcorevà không capability premium nào được cấp.EnforcedEntitlementResolverlà fail-closed đầu-cuối: bất kỳ ngoại lệ nào trong chuỗi của nó đều cho ra kết quả no-license (Core) và một log lỗi PSR-3, không bao giờ cấp premium.
Hành vi ở chế độ FIPS
Phần tiêu đề “Hành vi ở chế độ FIPS”Lớp licensing không thêm chính sách mật mã nào của riêng nó. Chữ ký giấy phép và trạng thái là các phép xác minh Ed25519 do host crypto provider thực hiện. Trong một build bị ràng buộc FIPS, một thuật toán mà provider không phê duyệt sẽ thất bại tại ranh giới mật mã với một lỗi rõ ràng; không có gì âm thầm hạ cấp. Đây là các tuyên bố về khả năng của mã NextPDF: NextPDF không phải là một module mật mã đã được thẩm định, không nắm giữ chứng nhận nào, và không cấp chứng nhận nào.
Phù hợp tiêu chuẩn
Phần tiêu đề “Phù hợp tiêu chuẩn”| Tuyên bố | Tiêu chuẩn | Điều khoản |
|---|---|---|
| Các tệp giấy phép và phản hồi trạng thái là JWS compact-serialization, được xác minh fail-closed. | RFC 7515 | §3.1 |
| Chữ ký giấy phép và trạng thái là Ed25519. | RFC 8032 | §5.1 |
| Chuỗi x5c trong một phản hồi đã ký xác thực ngược về một trust anchor được ghim biên dịch sẵn. | RFC 5280 | §6.1 |
| Một pin set SPKI được cấu hình phải bao gồm một backup pin cho một key chưa được triển khai. | RFC 7469 | §4.3 |
Các claim đã xác minh (iss, aud, exp, nbf, iat) là các registered claim name. | RFC 7519 | §4.1 |
Mọi điều khoản đều được diễn giải lại; không có văn bản quy phạm nào được tái hiện. NextPDF không đưa ra tuyên bố chứng nhận nào. Hỗ trợ không đồng nghĩa với phù hợp, và phù hợp không đồng nghĩa với chứng nhận. Module căn chỉnh hành vi của nó theo các điều khoản được trích dẫn như một khả năng; việc chấp nhận một license hay status envelope do bộ xác minh pinned-root của riêng NextPDF quyết định, không phải do một cơ quan bên ngoài.
Ghi chú phát triển
Phần tiêu đề “Ghi chú phát triển”- Dựng
LicenseClientvới một transport thực thi chính sách (chuẩn tắc làSecurityAwareHttpClient). Một client PSR-18 thô bị từ chối khi khởi tạo để lưu lượng giấy phép không bao giờ có thể được gửi mà thiếu các kiểm soát chống SSRF, không redirect, giới hạn byte, và timeout. - Một client nonce do bên gọi cung cấp phải giải mã ra ít nhất 16 byte entropy. Mã nguồn căn cứ giới hạn này vào RFC 8555 §6.5; điều khoản đó nằm ngoài kho được trích dẫn, nên giới hạn ở đây chỉ được nêu từ mã nguồn sản phẩm.
- Kiểm soát các feature qua
FeatureGate; không bao giờ rẽ nhánh trênLicenseKey::$editionthô. Gate chỉ tham chiếu phiên bản hiệu lực được thực thi và fail-closed vềcore. - Đừng switch trên case đã lỗi thời
EntitlementStatus::PerpetualFallbacktrong mã mới. Thay vào đó hãy kiểm traisDowngradedToCore()hoặc matchDowngradedToCore. - Hãy coi việc từ chối capability như một payload khắc phục. Đưa bối cảnh có cấu trúc và URL nâng cấp của nó lên bên gọi thay vì rút gọn thành một lỗi chung chung.
- Module này liên quan đến chức năng mật mã; hãy coi nó là nhạy cảm về bảo mật trong quá trình rà soát của riêng bạn. Các điều khoản về dung lượng và số ghế do thỏa thuận giấy phép quản lý, không phải do việc thực thi tại runtime. Tài liệu tham chiếu này không phải là một ý kiến pháp lý; hãy tham khảo các cố vấn tuân thủ và pháp lý của riêng bạn.
Ranh giới công bố
Phần tiêu đề “Ranh giới công bố”Trang này chỉ mô tả hành vi quan sát được từ bên ngoài và bề mặt API công khai được hỗ trợ. Các đường dẫn namespace nội bộ, các lớp trợ giúp, các bảng cơ chế, tên tệp runbook, và các tiền tố ticket nằm ngoài phạm vi.
Xem thêm
Phần tiêu đề “Xem thêm”- Licensing — NextPDF Enterprise — trang capability kèm hướng dẫn thiết lập và tích hợp.
- Billing — tài liệu tham chiếu chuyên sâu — các bậc gói, chính sách vượt hạn mức, và chuyển tiếp.
- SaaS — Tài liệu tham chiếu chuyên sâu — bề mặt dịch vụ đa-tenant mà bản đồ route bảo vệ.
- Branding — tài liệu tham chiếu chuyên sâu — các chiến lược branding mà bộ đánh giá phân giải.