Enterprise edycja
Licencjonowanie — szczegółowa referencja
W skrócie
Dział zatytułowany „W skrócie”Ta strona jest szczegółową referencją powierzchni licencjonowania NextPDF Enterprise — modułu, który rozwiązuje każdą inną możliwość Enterprise. Obejmuje model stanów uprawnień (EntitlementEvaluator, EntitlementStatus, EntitlementResult), egzekwowane bramkowanie możliwości (FeatureGate, CapabilityCode, CapabilityRegistry), dwuzegarową maszynę egzekwowania kanału (ChannelEnforcementPolicy, OnlineCheckScheduler) oraz podpisanego klienta online (LicenseClient). Zwykła ewaluacja uprawnień nie wymaga sieci. Klient online istnieje dla jawnych operacji activate, heartbeat, deactivate, verify-online oraz renewal-probe. Szczegóły mechanizmów wewnętrznych pozostają w wewnętrznej dokumentacji repozytorium źródłowego i są poza zakresem tego podręcznika.
Dostępność i licencjonowanie
Dział zatytułowany „Dostępność i licencjonowanie”Ta możliwość jest dostarczana w NextPDF Enterprise (nextpdf/enterprise) i aktywuje się wraz z kopertą licencyjną poziomu Enterprise. Wdrożenie bez tego uprawnienia nie ładuje klas tej możliwości. Porównaj edycje i uzyskaj licencję.
Licencjonowanie to podstawowa powierzchnia Enterprise. Jest zawsze obecna po zainstalowaniu pakietu Enterprise obok pakietu Core, ponieważ to ona rozwiązuje wszystko inne. NextPDF Pro nie ma osobnej powierzchni uprawnień; model stanów, maszyna egzekwowania oraz klient online są dostarczane wyłącznie w nextpdf/enterprise. NextPDF Core (Apache-2.0) nie ma w ogóle modelu uprawnień — host, który potrzebuje nielicencjonowanego zachowania Apache-2.0, używa silnika Core bezpośrednio, a nie potoku Enterprise.
Publiczna powierzchnia API
Dział zatytułowany „Publiczna powierzchnia API”Wszystkie typy znajdują się w NextPDF\Enterprise\Licensing. Maszyna egzekwowania mieści się w podprzestrzeni nazw Channel, kompozycja środowiska uruchomieniowego w Runtime, a typy podpisanego statusu w Online.
| Symbol | Parametry | Domyślne zachowanie | Zwraca | Zgłasza lub kończy się błędem | Uwagi |
|---|---|---|---|---|---|
EntitlementEvaluator::evaluate() | ?LicenseKey $license, ?DateTimeImmutable $now = null | Mapuje zweryfikowaną licencję (lub null) na pełną decyzję o uprawnieniach | EntitlementResult | Brak | Licencja null daje fail-closed wynik braku licencji |
EntitlementEvaluator::evaluateEnforced() | ?LicenseKey $license, EnforcementOutcome $outcome | Konwertuje wcześniej obliczony wynik egzekwowania na wynik uprawnień | EntitlementResult | Brak | Efektywna edycja pochodzi z wyniku; każda degradacja egzekwowania kończy się na Core |
EntitlementEvaluator::resolveBrandingMode(), ::resolveBrandingStrategy() | ?LicenseKey $license, ?DateTimeImmutable $now = null | Rozwiązuje decyzję o brandingu dla generowanego wyniku | BrandingMode / BrandingStrategy | Brak | Jedyny organ brandingu; tylko kanał ewaluacji nakłada znak wodny |
EntitlementResult | Obiekt wartości tylko do odczytu | Niesie status, edycję, kanał, tryb brandingu, flagi środowiska uruchomieniowego/aktualizacji/wsparcia oraz opcjonalne ostrzeżenie | — | Brak | Pomocnicze: isFullyActive(), isExpired(), isDowngradedToCore(), shouldApplyEvaluationBranding() |
EntitlementStatus | Enum oparty na łańcuchu znaków | Active, GracePeriod, DowngradedToCore, EvaluationExpired, NoLicense | — | Brak | PerpetualFallback jest zachowany, ale przestarzały; utrzymany tylko po to, by odbiorcy sprzed 6.0 nadal się kompilowali |
FeatureGate::hasCapability() | CapabilityCode $capability | Sprawdza możliwość względem egzekwowanej efektywnej edycji oraz stanu pakietu | bool | Brak | Fail-closed do core przy dowolnym błędzie resolvera |
FeatureGate::requireCapability() | CapabilityCode $capability | Przechodzi po cichu albo zgłasza z ustrukturyzowanym kontekstem upsell | void | SpectrumAuthenticationException SPEC-LIC-001 (nie objęte licencją) lub SPEC-LIC-002 (pakiet wygasł) | Kontekst niesie required_capability, required_pack, current_packs, upgrade_info_url |
FeatureGate::isFeatureEnabled(), ::requireFeature() | string $feature | Starsza kontrola identyfikatora funkcji | bool / void | SpectrumAuthenticationException SPEC-AUTH-007 (ścieżka require) | Zgodność ze starszym kodem; preferuj kontrole możliwości |
Akcesory FeatureGate | Brak | Introspekcja licencji | Zależnie | Brak | currentEdition(), isLicenseValid(), isInGracePeriod(), getActivePacks(), trialPolicy() |
CapabilityCode | Enum oparty na łańcuchu znaków | Kanoniczne identyfikatory możliwości (core.*, pro.*, enterprise.*, pack.*) | — | Brak | isPack(), packName(), minimumEdition(), forEdition() |
CapabilityRegistry | LicenseKey, wzorce tras | Rozwiązywanie trasy na możliwość oraz wyszukiwanie pakietu przed rozdzieleniem | Zależnie | Brak | registerDefaultRoutes() obejmuje udokumentowane trasy usługi |
LicenseKey | Obiekt wartości tylko do odczytu | Sparsowane, zweryfikowane roszczenia licencji | — | Brak | isExpired(), isInGracePeriod(), isFullyExpired(), hasFeature(), hasCapability(), activePackNames(); maxSlots jest wyłącznie umowne |
LicenseValidator::buildVerifiedLicenseKey() | array $data | Buduje typowany LicenseKey z już zweryfikowanego ładunku | LicenseKey | SpectrumAuthenticationException SPEC-AUTH-001 przy naruszeniu schematu | Obsługuje ładunki schema 2.0, 1.0 oraz starsze |
PackDefinition / PackRegistry | Obiekty wartości tylko do odczytu | Stan pakietu dodatków z niezależnym wygaśnięciem oraz karencją | Zależnie | Brak | isActive(), isFullyExpired(), activePacks(), activeCapabilities() |
TrialPolicy | bool $enabled, int $maxPagesPerSecond = 2, pola znaku wodnego | Polityka pułapu przepustowości trybu próbnego | — | Brak | fromLicenseKey(), disabled(), isThrottled(); organ brandingu pozostaje przy ewaluatorze |
ChannelEnforcementPolicy::enforce() | LicenseKey $license, LocalState $state, int $systemNow, bool $revoked = false | Uruchamia maszynę dwuzegarową oraz ponowne etykietowanie unieważnienia i trybu próbnego | EnforcementOutcome | Brak | Unieważnienie nadpisuje każdy zegar oraz stan trybu próbnego |
OnlineCheckScheduler::evaluate(), ::recordSuccessfulOnlineCheck() | Licencja, stan lokalny, znaczniki czasu | Ewaluacja dwuzegarowa; odnowienie dzierżawy z zweryfikowanego czasu serwera | EnforcementOutcome / LocalState | Brak | ONLINE_GRACE_SECONDS przyznaje 48 godzin karencji aktywności po dzierżawie |
EnforcementDecision / EnforcementReason / EnforcementOutcome | Enumy + obiekt wartości tylko do odczytu | Active, Grace, DowngradedToCore oraz dokładny powód | — | Brak | Każdy powód mapuje się deterministycznie na jedną decyzję |
Runtime\EntitlementResolver::currentEntitlement() | Brak | Interfejs: egzekwowane uprawnienie, które obsługuje środowisko uruchomieniowe | EntitlementResult | Zależne od implementacji | EnforcedEntitlementResolver komponuje pamięć podręczną, stan, politykę oraz ewaluator, fail-closed do Core |
LicenseStateCache::get(), ::getOrThrow() | bool $forceRefresh = false | Pamięć podręczna zweryfikowanej licencji wspierająca bramkę | ?LicenseKey | getOrThrow(): SpectrumAuthenticationException SPEC-AUTH-008; LicenseConfigurationException przy nieprawidłowym powiązaniu | invalidate(), isCacheValid() |
LicenseClient::activate(), ::heartbeat(), ::deactivate(), ::verifyOnline() | string $licenseJws, string $deploymentId, ?string $machineFingerprintHash = null, ?string $expectedLicenseId = null, ?string $clientNonce = null | Jedna wymiana podpisanego statusu; odpowiedź jest weryfikowana względem przypiętego korzenia i związana z wysłanym nonce | StatusResponse | LicenseClientException (transport, nie-200, błędny podany nonce); SpectrumAuthenticationException (sfałszowana, zmanipulowana, nieaktualna, błędny-nonce, błędna-licencja, błędny-typ odpowiedzi) | Wysyłany jest wyłącznie solony hash odcisku palca, nigdy surowy odcisk palca |
LicenseClient::checkRenewal() | string $licenseId, string $customerId | Sonda dostępności odnowienia; 404 to normalna odpowiedź „brak dostępnych” | Tablica odnowienia (available, download_url, expires_at) | LicenseClientException (nieosiągalny, nie-200/404 lub download_url odrzucony przez politykę) | URL z niepodpisanego ciała jest sprawdzany pod kątem SSRF, zanim zdoła się wydostać |
LicenseClient::__construct() | Zobacz blok sygnatury | Waliduje transport, schemat URL oraz zestaw przypięć podczas konstrukcji | — | LicenseConfigurationException (transport nieegzekwujący polityki, niedozwolony schemat, zwykły HTTP bez przypięć, zniekształcony zestaw przypięć) | getPinSet() udostępnia aktywny zestaw przypięć dla narzędzi rotacji |
Online\StatusResponse | Obiekt wartości tylko do odczytu | Zweryfikowany podpisany status | — | Brak | isLive() jest false przy revoked / expired / released; niesie leaseExpiresAt, liczby stanowisk oraz migawkę uprawnień |
LicenseChannelMode / OnlineMode / OnlinePolicy | Enumy + obiekt wartości tylko do odczytu | Roszczenia kanału oraz polityki online | — | Brak | signed_source kontra ioncube; tryb online required / optional / disabled z intervalDays oraz leaseDays |
LicenseEdition | Enum oparty na łańcuchu znaków | Core, Pro, Enterprise | — | Brak | satisfies() implementuje hierarchię poziomów |
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): arrayKontrakt zachowania
Dział zatytułowany „Kontrakt zachowania”Ewaluacja uprawnień wytwarza jeden z pięciu bieżących stanów, każdy z ustaloną konsekwencją w czasie wykonywania:
| Status | Środowisko uruchomieniowe | Efektywne możliwości | Aktualizacje / wsparcie | Branding |
|---|---|---|---|---|
Active | dozwolone | uprawniona edycja + aktywne pakiety | tak (płatna); nie (ewaluacja) | brak (płatna); znak wodny (ewaluacja) |
GracePeriod | dozwolone | uprawniona edycja + aktywne pakiety | tak | brak (płatna) |
DowngradedToCore | dozwolone | tylko Core | nie | brak (płatna); znak wodny (próbna) |
EvaluationExpired | ograniczone | brak | nie | znak wodny |
NoLicense | wyłączone (fail-closed) | brak | nie | znak wodny |
- Wygaśnięcie płatnej licencji nigdy nie wyłącza zainstalowanego środowiska uruchomieniowego.
runtimeAllowedpozostaje true dla każdego płatnego stanu. Po oknie karencji efektywna edycja degraduje się do Core: możliwości Core działają bezterminowo, wszystkie możliwości Pro/Enterprise/pakietów są bramkowane, a aktualizacje i wsparcie są odebrane. Przestarzały przypadekEntitlementStatus::PerpetualFallbacknazywa politykę wygaśnięcia sprzed 6.0 i istnieje wyłącznie dla zgodności kompilacji. - Nie każdy stan kończy się wykonaniem na poziomie Core. Karencja utrzymuje pełną uprawnioną edycję z datowanym ostrzeżeniem o odnowieniu. Wygaśnięcie ewaluacji ogranicza środowisko uruchomieniowe i utrzymuje znak wodny. Stan braku licencji wyłącza ścieżki Enterprise fail-closed i widocznie oznacza znakiem wodnym każdy starszy wynik, więc nigdy nie może uchodzić za płatne wykonanie.
- Ustalona kolejność rozwiązywania. Całkowicie wygasła licencja nie rozwiązuje żadnej możliwości. Możliwości pakietów zależą od własnego aktywnego stanu pakietu oraz jego niezależnego wygaśnięcia. Możliwości edycji rozwiązują się względem egzekwowanej efektywnej edycji w ścisłej hierarchii Enterprise ⊇ Pro ⊇ Core. Surowe
LicenseKey::$editionnigdy nie jest konsultowane przy bramkowaniu. - Dwa zegary; wygrywa najbardziej restrykcyjny. Zegar uprawnień (oba kanały) steruje stanami Active, Grace oraz degradacją do Core po karencji. Zegar aktywności online dotyczy wyłącznie kanału
ioncubez trybem onlinerequired: dzierżawa plus 48-godzinna karencja aktywności musi być aktywna. Offline po wygaśnięciu dzierżawy premium wstrzymuje się na poziomie Core; późniejsza zweryfikowana kontrola online ponownie ustanawia dzierżawę i premium wznawia działanie. Kanałsigned_source— oraz dowolny tryb online inny niżrequired— nie ma zegara aktywności i pozostaje zdolny do pracy offline i w izolacji sieciowej (air-gap). - Ochrona przed cofnięciem zegara jest deterministyczna. Egzekwowanie ocenia względem monotonicznej podłogi: czasem efektywnym jest maksimum z zegara systemowego oraz ostatniego zweryfikowanego czasu, więc cofnięcie zegara nie przyznaje dodatkowego czasu. Cofnięcie przekraczające tolerancję odchylenia oraz pozostałą karencję wymusza degradację do Core.
- Dzierżawy postępują wyłącznie na zaufanym czasie. Udana kontrola online zapisuje zweryfikowany, podpisany czas serwera, nigdy zegar lokalny, więc lokalny skok zegara do przodu nie może zawyżyć dzierżawy.
- Branding ma jeden organ. Tylko kanał ewaluacji wyzwala znak wodny. Płatna licencja rozwiązuje się do braku brandingu w każdym stanie, w tym w stanach zdegradowanych.
- Tryb próbny to warstwa polityki na tych samych zegarach. Przepustowość jest ograniczona (domyślnie 2 strony na sekundę), stosuje się znak wodny ewaluacji, a wygaśnięcie jest ścisłe, bez karencji. Zmienia się tylko zgłaszany powód; decyzja oraz efektywna edycja podążają za maszyną płatną.
- Kontrakt online jest podpisany od początku do końca. Każde żądanie niesie nonce klienta z CSPRNG. Każda odpowiedź to kompaktowy JWS EdDSA typu media
application/nextpdf-status+jwt, weryfikowany przez łańcuch x5c do wkompilowanego przypiętego korzenia i związany z wysłanym nonce, zainstalowanym id licencji oraz wywołanym punktem końcowym. Starszy transport niepodpisanej koperty został wycofany; pozostaje dokładnie jedna ścieżka zaufania. Skonfigurowane przypięcia SPKI podróżują jako nagłówekX-NextPDF-Pinned-Public-Key, a zestaw przypięć musi zawierać przypięcie zapasowe. - Brak egzekwowania stanowisk w czasie wykonywania.
maxSlotsjest wyłącznie umowne — brak telemetrii i brak obowiązkowego meldowania (phone-home) dla zwykłego działania.
Przypadki brzegowe i tryby awarii
Dział zatytułowany „Przypadki brzegowe i tryby awarii”- Kontrola możliwości na całkowicie wygasłej licencji zwiera się do „niedostępne” przed uruchomieniem jakiejkolwiek logiki pakietu lub edycji.
- Pakiet dodatków może wygasnąć, gdy licencja bazowa jest aktywna. Odmowa brzmi wtedy pakiet wygasł (
SPEC-LIC-002), a nie nie objęte licencją (SPEC-LIC-001), i wymienia aktualnie aktywne pakiety. - Plik stanu egzekwowania lokalnego, który jest obecny, lecz nieczytelny lub nieparsowalny, jest sygnałem manipulacji. Maszyna kończy fail-closed degradacją do Core z
EnforcementReason::CorruptState. Prawidłowo nieobecny plik nie jest uszkodzony i przebiega normalnie. - Cofnięcie zegara poniżej monotonicznej podłogi, które przekracza tolerancję odchylenia (domyślnie 120 sekund) oraz pozostałą karencję, wymusza degradację do Core deterministycznie.
- Wygasła dzierżawa aktywności degraduje w innym razie aktywną licencję
ioncube; wygaśnięcie uprawnienia degraduje niezależnie od stanu dzierżawy. evaluate(null)jest fail-closed: środowisko uruchomieniowe jest zabronione, stosuje się znak wodny, a ostrzeżenie nazywa URL cennika. Hosty potrzebujące nielicencjonowanego zachowania Core muszą skonstruować silnik Core bezpośrednio.- Wygasła licencja ewaluacyjna nie ma karencji ani rozwiązania awaryjnego; środowisko uruchomieniowe jest ograniczone, a znak wodny pozostaje.
checkRenewal()traktuje HTTP 404 jako normalną odpowiedź „brak dostępnych”. Każde inne nie-200 zgłaszaLicenseClientException, adownload_urlnaruszający politykę wychodzącą kończy fail-closed, zanim zdoła wydostać się z metody.- Sfałszowana, zmanipulowana, nieaktualna, o błędnym nonce lub błędnej licencji odpowiedź statusu nigdy nie daje
StatusResponse; weryfikacja zgłaszaSpectrumAuthenticationException. Podpisany, leczrevoked,expiredalboreleasedstatus weryfikuje się i ujawnia jako sygnał degradacji (isLive()jest false). - Odpowiedź statusu wybita dla innej wymiany jest odrzucana: zweryfikowany
response_typemusi odpowiadać wywołanemu punktowi końcowemu. FeatureGatekończy fail-closed przy dowolnym błędzie resolvera: efektywna edycja degraduje się docorei nie jest przyznawana żadna możliwość premium.EnforcedEntitlementResolverjest fail-closed od początku do końca: dowolny wyjątek w jego łańcuchu daje wynik braku licencji (Core) oraz log błędu PSR-3, nigdy przyznania premium.
Zachowanie w trybie FIPS
Dział zatytułowany „Zachowanie w trybie FIPS”Warstwa licencjonowania nie dodaje własnej polityki kryptograficznej. Podpisy licencji oraz statusu to weryfikacje Ed25519 wykonywane przez dostawcę kryptografii hosta. W kompilacji ograniczonej do FIPS algorytm, którego dostawca nie zatwierdza, kończy na granicy kryptograficznej z jawnym błędem; nic nie degraduje się po cichu. Są to twierdzenia o możliwościach kodu NextPDF: NextPDF nie jest walidowanym modułem kryptograficznym, nie posiada certyfikacji i żadnej nie przyznaje.
Zgodność
Dział zatytułowany „Zgodność”| Twierdzenie | Standard | Klauzula |
|---|---|---|
| Pliki licencji oraz odpowiedzi statusu to JWS kompaktowej serializacji, weryfikowane fail-closed. | RFC 7515 | §3.1 |
| Podpisy licencji oraz statusu to Ed25519. | RFC 8032 | §5.1 |
| Łańcuch x5c w podpisanej odpowiedzi waliduje się wstecz do wkompilowanej przypiętej kotwicy zaufania. | RFC 5280 | §6.1 |
| Skonfigurowany zestaw przypięć SPKI musi zawierać przypięcie zapasowe dla jeszcze niewdrożonego klucza. | RFC 7469 | §4.3 |
Zweryfikowane roszczenia (iss, aud, exp, nbf, iat) to zarejestrowane nazwy roszczeń. | RFC 7519 | §4.1 |
Wszystkie klauzule są sparafrazowane; nie odtworzono żadnego tekstu normatywnego. NextPDF nie zgłasza żadnego roszczenia o certyfikacji. Wsparcie nie równa się zgodności, a zgodność nie równa się certyfikacji. Moduł dostosowuje swoje zachowanie do cytowanych klauzul jako możliwość; akceptacja koperty licencji lub statusu jest rozstrzygana przez własny weryfikator NextPDF oparty na przypiętym korzeniu, a nie przez zewnętrzny organ.
Uwagi programistyczne
Dział zatytułowany „Uwagi programistyczne”- Konstruuj
LicenseClientz transportem egzekwującym politykę (kanonicznieSecurityAwareHttpClient). Surowy klient PSR-18 jest odrzucany podczas konstrukcji, tak by ruch licencyjny nigdy nie mógł zostać wysłany bez kontroli anty-SSRF, braku przekierowań, limitu bajtów oraz limitu czasu. - Podany przez wywołującego nonce klienta musi dekodować się do co najmniej 16 bajtów entropii. Źródło opiera tę granicę na RFC 8555 §6.5; ta klauzula jest poza cytowanym korpusem, więc granica jest tu podana wyłącznie na podstawie kodu źródłowego produktu.
- Bramkuj funkcje przez
FeatureGate; nigdy nie rozgałęziaj się na suroweLicenseKey::$edition. Bramka konsultuje wyłącznie egzekwowaną efektywną edycję i kończy fail-closed docore. - Nie przełączaj się na przestarzały
EntitlementStatus::PerpetualFallbackw nowym kodzie. Zamiast tego testujisDowngradedToCore()lub dopasujDowngradedToCore. - Traktuj odmowę możliwości jako ładunek naprawczy. Uwidocznij jej ustrukturyzowany kontekst oraz URL aktualizacji wywołującemu, zamiast sprowadzać go do ogólnego błędu.
- Ten moduł dotyczy funkcjonalności kryptograficznej; traktuj go jako wrażliwy pod względem bezpieczeństwa we własnym przeglądzie. Warunki pojemności oraz stanowisk są regulowane umową licencyjną, a nie egzekwowaniem w czasie wykonywania. Niniejsza referencja nie jest opinią prawną; skonsultuj się z własnymi doradcami ds. zgodności i prawnymi.
Granica publikacji
Dział zatytułowany „Granica publikacji”Ta strona dokumentuje wyłącznie zewnętrznie obserwowalne zachowanie oraz obsługiwaną publiczną powierzchnię API. Wewnętrzne ścieżki przestrzeni nazw, klasy pomocnicze, tabele mechanizmów, nazwy plików runbooków oraz prefiksy zgłoszeń są poza zakresem.
Zobacz też
Dział zatytułowany „Zobacz też”- Licencjonowanie — NextPDF Enterprise — strona możliwości z wytycznymi konfiguracji i integracji.
- Rozliczenia — szczegółowa referencja — poziomy planów, polityki przekroczeń oraz przeniesienie.
- SaaS — szczegółowa referencja — wielodostępna powierzchnia usługi strzeżona przez mapę tras.
- Branding — szczegółowa referencja — strategie brandingu, które rozwiązuje ewaluator.