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

# v2.98.0 - Share Agreement Expiration Behaviour Clarification

> Clarified that expiration_date stops data access without changing the agreement status

**Released 15th October 2026**

This patch release clarifies the behaviour of the `expiration_date` field across all share agreement endpoints. No functional API behaviour has changed.

<Check>
  **Patch Release:** Documentation-only changes that clarify existing expiration behaviour. No breaking changes or functional modifications.
</Check>

## Documentation Updates

<AccordionGroup>
  <Accordion title="Share Agreement expiration_date clarification" icon="calendar-day">
    **Updated endpoints:**

    * `GET /v2/orgs/share-agreements`
    * `GET /v2/orgs/share-agreements/{share_agreement_id}`
    * `PATCH /v2/orgs/share-agreements/{share_agreement_id}`
    * `POST /v2/orgs/share-agreements/{share_agreement_id}/activate`
    * `POST /v2/orgs/share-agreements/{share_agreement_id}/cancel`
    * `POST /v2/orgs/share-agreements/{share_agreement_id}/pause`
    * `GET /v2/orgs/tms-share-agreements`
    * `GET /v2/orgs/tms-share-agreements/{tms_share_agreement_id}`
    * `PATCH /v2/orgs/tms-share-agreements/{tms_share_agreement_id}`
    * `POST /v2/orgs/tms-share-agreements/{tms_share_agreement_id}/activate`
    * `POST /v2/orgs/tms-share-agreements/{tms_share_agreement_id}/cancel`
    * `POST /v2/orgs/tms-share-agreements/{tms_share_agreement_id}/pause`

    **What changed:**

    The description of the `expiration_date` field has been updated to accurately reflect that data access stops at the expiration time but the agreement's `status` field is **not** automatically changed to `EXPIRED`.

    **Before:**

    ```
    When data access ends. Null means no expiration.
    Status automatically changes to EXPIRED after this date.
    ```

    **After:**

    ```
    When data access ends. Null means no expiration.
    Access stops at this time even though the status stays unchanged.
    ```

    **Impact:**

    * No changes to API behaviour
    * Existing integrations are unaffected
    * If your code checks `status == "expired"` to detect expired agreements, note that the status is **not** updated automatically — use `expiration_date` directly to determine whether access has lapsed
  </Accordion>
</AccordionGroup>

## Integration Notes

<Steps>
  <Step title="Check expiration_date directly">
    If you need to know whether a share agreement's data access has ended, compare `expiration_date` against the current time rather than relying on the `status` field:

    ```python theme={null}
    from datetime import datetime, timezone

    def is_access_expired(agreement):
        if agreement["expiration_date"] is None:
            return False
        expiry = datetime.fromisoformat(agreement["expiration_date"])
        return expiry < datetime.now(timezone.utc)
    ```
  </Step>

  <Step title="No action required for most integrations">
    This is a documentation-only update. If your integration is currently working, no changes are needed.
  </Step>
</Steps>

***

## Need Help?

<CardGroup cols={2}>
  <Card title="API Reference" icon="book" href="/api-reference/organizations-api">
    View complete endpoint documentation for the Organizations API
  </Card>

  <Card title="Contact Support" icon="life-ring" href="mailto:support@catenaclearing.io">
    Questions about your integration? Our team is here to help
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.