> ## Documentation Index
> Fetch the complete documentation index at: https://docs.stigg.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Sidecar Service

<Update label="6.120.0" description="2026-05-18">
  * Added: `REDIS_KEYS_TTL_IN_SECS` now accepts a negative value (e.g. `-1`) to disable expiration on Redis cache entries, matching Redis's own no-expiry convention. Entitlement entries are then written to Redis without the `EX` flag and remain authoritative through extended Stigg Cloud outages. Default behavior is unchanged when `REDIS_KEYS_TTL_IN_SECS` is unset (7-day TTL). This image bundles `@stigg/node-server-sdk` v4.41.0, which carries the underlying support. To get end-to-end no-expiry behavior, the same negative value must also be set on `persistent-cache-service` (`KEYS_TTL_IN_SECS=-1`, v3.6.1+). See [running the Sidecar](/documentation/high-availability-and-scale/sidecar/running-sidecar#available-options).
</Update>

<Update label="6.70.2" description="2026-04-14">
  * Security: Upgraded axios dependency to address critical vulnerability [CVE-2026-40175](https://nvd.nist.gov/vuln/detail/CVE-2026-40175).
</Update>

<Update label="5.258.0" description="2026-02-26">
  * Enhanced `getCreditEntitlement` to return currency information.
</Update>

<Update label="5.251.0" description="2026-02-25">
  * Changed: The Sidecar now allocates 75% of container memory to the V8 heap by default, leaving room for the OS and non-heap allocations. To fine-tune memory allocation for your container setup, override the `NODE_OPTIONS` environment variable (`--max-old-space-size-percentage=<value>`). See [available options](/documentation/high-availability-and-scale/sidecar/running-sidecar#available-options).
</Update>

<Update label="5.194.5" description="2026-02-04">
  * Added compatibility with persistent-cache-service v3.0.0 and its new Redis data structure for credit entitlements.
  * Note: This version **must** be deployed before upgrading persistent-cache-service to v3.0.0. See the [persistent-cache-service v3.0.0 changelog](/api-and-sdks/changelog/backend-graphql/persistent-cache) for migration steps.
</Update>

<Update label="5.81.0" description="2025-12-18">
  * Added `ReportUsageBulk` method.
</Update>

<Update label="4.0.0" description="2025-10-29">
  * **Breaking change**: Entitlements retrieval logic now correctly identifies the underlying cause for missing entitlements, whether due to no active subscription, a missing customer, or no assigned entitlements.
  * Note: If using a Persistent Caching Service, it must be updated before upgrading the Sidecar to ensure data integrity.

  ### Migration steps

  1. Upgrade the Persistent Caching Service image to version `2.40.1` or later.
  2. Upgrade the Sidecar SDK to version `4.0.0` or later.
</Update>

<Update label="3.79.0" description="2025-09-29">
  * Added `getCreditLedger` and `getCreditUsage` methods.
</Update>

<Update label="3.78.0" description="2025-09-29">
  * Added void credit grant `voidCreditGrant`.
</Update>

<Update label="3.77.0" description="2025-09-29">
  * Added credit balance subscription handling with automatic entitlement updates, expiration checks, and cache mapping for credit rate and validity.
</Update>

<Update label="3.76.0" description="2025-09-25">
  * Added credit rate mapping.
</Update>

<Update label="3.75.0" description="2025-09-23">
  * Added `awsMarketplaceCustomerId` to update and provision customers.
</Update>

<Update label="3.72.0" description="2025-09-04">
  * Added: `grantPromotionalEntitlementsGroup` or granting a promotional entitlements group - all entitlements that are not already granted to a customer, need to be included in the request.
  * Added: `revokePromotionalEntitlementsGroup` for revoking all of the entitlements of a group, unless they are a part of a different group.
  * Added: `unlinkPromotionalEntitlementsGroup` for removing the references of the group from promotional entitlements that are a part of it, while keep granting access to those entitlements.
</Update>

<Update label="3.61.0" description="2025-09-02">
  * Added: `CancelSubscription.awaitSubscriptionCancellation` for controlling whether to wait for confirmation from billing solutions that are integrated with Stigg before marking subscription as canceled in Stigg
</Update>

<Update label="3.56.0" description="2025-08-28">
  * Added: `getEntitlement` method - a unified way to check any type of feature entitlement (boolean, numeric, or metered) that automatically returns the appropriate entitlement type based on the feature configuration
</Update>

<Update label="3.47.1" description="2025-08-27">
  * Added: `AccessDeniedReason.Revoked` for determining when an entitlement has been explicitly revoked.
</Update>

<Update label="3.0.0" description="2025-08-4">
  **Breaking change**: The TLS connection method has been deprecated in favor of non-TLS. Please ensure you are running a compatible Sidecar image version `2.494.0` or later. TLS self-signed certificates will **expire on January 26, 2026**, so upgrading the Sidecar image is strongly recommended.

  ### Migration steps

  1. Upgrade the Sidecar image to version 2.498.0 or later. The new non-TLS port is set using the `GRPC_PORT` environment variable (default: 80). For backwards compatibility, legacy TLS is still supported and can be configured with the `PORT` environment variable (default: 8443).
  2. Upgrade the Sidecar SDK to version 3.0.0 or later and send requests to the new non-TLS port (same as `GRPC_PORT`). This applies to all SDK programming languages.

  ### Backwards compatibility with older Sidecar image versions

  For backwards compatibility, you can enable the legacy TLS mode in the SDKs by opt-in the legacy TLS flag.

  <CodeGroup>
    ```python Python theme={null}
    stigg = Stigg(ApiConfig(api_key=api_key), remote_sidecar_use_legacy_tls=True)
    ```

    ```ruby Ruby theme={null}
    client = Stigg::Sidecar.create_client(api_config, remote_sidecar_use_legacy_tls: true)
    ```

    ```java Java theme={null}
    stigg = Stigg.init(
      StiggConfig.builder()
        .apiConfig(ApiConfig.newBuilder().setApiKey(apiKey).build())
        .remoteSidecarUseLegacyTls(true)
        .build()
    );
    ```

    ```go Go theme={null}
    client, err := NewSidecarClient(ApiClientConfig{ApiKey: apiKey}, nil, nil, RemoteSidecarConfig{useLegacyTls: true})
    ```
  </CodeGroup>
</Update>

<Update label="2.420.0" description="2025-06-11">
  * Added: Support for [local evaluation of static entitlements](/api-and-sdks/integration/backend/sidecar#running-in-offline-or-air-gapped-environments) in the **Java SDK**.\
    Applications can now evaluate entitlements offline using a static config, without requiring real-time API calls to the Sidecar service.\
    This is especially useful for air-gapped, on-premise, or secure environments.
</Update>

<Update label="2.413.0" description="2025-05-28">
  * Changed: The [health](/documentation/high-availability-and-scale/sidecar/service-monitoring#health) and [metrics](/documentation/high-availability-and-scale/sidecar/service-monitoring#metrics) endpoints are now exposed over **HTTP** by default on port `8080`, instead of HTTPS with a self-signed certificate.
  * Added: You can configure the health and metrics port using the `METRICS_PORT` environment variable.
</Update>

<Update label="2.401.4" description="2025-05-19">
  * Improved: The Sidecar no longer crashes on startup when encountering initialization issues such as an invalid API key or unreachable Stigg API. It now starts in fallback mode and serves entitlements from Redis or fallback values.
  * Added: `/metrics` endpoint exposing service-level and Sidecar-specific metrics in [Prometheus](https://prometheus.io/) format, including:
    * `sidecar_initialization_errors_total`
    * `sidecar_invalid_api_key_errors_total`
    * `sidecar_network_request_errors_total`
    * `sidecar_redis_client_errors_total`
    * `sidecar_cache_hits_total`
    * `sidecar_cache_misses_total`
</Update>

<Update label="2.236.1" description="2024-12-25">
  * Added: [offline mode](/documentation/high-availability-and-scale/sidecar/offline-mode)
</Update>

<Update label="2.186.0" description="2024-11-05">
  * Added: Edge support for `getActiveSubscriptionsList`
</Update>

<Update label="2.171.0" description="2024-10-29">
  * Fixed: when access to entitlement was denied due to the reaching of a budget cap, `getMeteredEntitlements`  returned `AccessDeniedReason.UNSPECIFIED` instead of `AccessDeniedReason.BudgetExceeded`.
</Update>

<Update label="2.156.0" description="2024-10-09">
  * Added: ability to more easily determine the usage period of metered entitlements using:
    * `Entitlement.usagePeriodStart`
    * `Entitlement.usagePeriodEnd`
</Update>

<Update label="2.95.0" description="2024-08-27">
  * Added: ability to set sidecar log level using env var (default: `INFO`)
</Update>

<Update label="2.48.0" description="2024-07-28">
  * Added: ability to configure the "health" and "ready" endpoints by passing `HEALTH_ENDPOINT_URL` and `READY_ENDPOINT_URL` environment variables
</Update>
