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

# Absorb

> Connect to Absorb LMS to track courses, enrollments, and learner progress.

Humm reads your Absorb courses, enrollments, users, and learning paths. Ask about completion rates, which learners are behind on training, or how enrollment is trending across groups.

## Source Types

<CardGroup cols={2}>
  <Card title="SaaS (Live)" icon="bolt">
    Humm queries the Absorb API directly in real time. Data is never stored by Humm.
  </Card>

  <Card title="Sync" icon="arrows-rotate">
    Humm syncs your Absorb data into your warehouse via Airbyte, then queries the copy. Better performance and lets you join LMS data with everything else in your warehouse.
  </Card>
</CardGroup>

See [Choosing a Source Type](/integrations/overview#choosing-a-source-type) for help deciding.

## Tools

| Tool                                      | Description                                                                                              |
| ----------------------------------------- | -------------------------------------------------------------------------------------------------------- |
| `ABSORB_LIST_COURSES`                     | List courses with pagination, filtering, and sorting                                                     |
| `ABSORB_GET_COURSE`                       | Get detailed course information by ID                                                                    |
| `ABSORB_LIST_USER_ENROLLMENTS`            | List a user's course enrollments with status and progress                                                |
| `ABSORB_GET_USER_ENROLLMENT`              | Get a user's enrollment details for a specific course                                                    |
| `ABSORB_LIST_COURSE_ENROLLMENTS`          | List enrollments for a course, including progress, score, time spent, and date fields returned by Absorb |
| `ABSORB_LIST_COURSE_EVALUATION_ANSWERS`   | List evaluation answers for a course                                                                     |
| `ABSORB_LIST_COURSE_EVALUATION_QUESTIONS` | List evaluation questions for a course                                                                   |
| `ABSORB_LIST_USERS`                       | List learners with pagination and filtering                                                              |
| `ABSORB_GET_USER`                         | Get detailed learner information by ID                                                                   |
| `ABSORB_LIST_GROUPS`                      | List organizational groups                                                                               |
| `ABSORB_GET_GROUP`                        | Get group details by ID                                                                                  |
| `ABSORB_LIST_ILC_SESSIONS`                | List sessions for an instructor-led course                                                               |
| `ABSORB_LIST_ILC_SESSION_DETAILS`         | List session details, including enrollment counts and limits, for one or more instructor-led courses     |
| `ABSORB_LIST_DEPARTMENTS`                 | List departments for mapping learner department IDs to department names                                  |
| `ABSORB_GET_DEPARTMENT`                   | Get a department by ID, including child departments referenced by learner records                        |
| `ABSORB_LIST_USER_LEARNING_PATHS`         | List a user's assigned learning paths and curricula                                                      |

## Common Workflows

For course-level reporting, use `ABSORB_LIST_COURSE_ENROLLMENTS` instead of calling `ABSORB_LIST_USER_ENROLLMENTS` once per learner. Enrollment responses include the progress, score, time spent, and date fields that Absorb returns for the course.

For evaluation reporting, use `ABSORB_LIST_COURSE_EVALUATION_QUESTIONS` to retrieve question metadata and `ABSORB_LIST_COURSE_EVALUATION_ANSWERS` to retrieve learner responses. Use the optional `questionId` parameter when you want answers for one question only, and join answers to questions with the `questionId` field.

Absorb returns one evaluation-answer row per learner-question pair even when the learner did not answer. Unanswered rows come back with `rating=0` and `text=null`, so filter to answered rows when you calculate averages or review free-text responses. For example, use `_filter="rating gt 0"` for rating questions or `_filter="text ne null"` for free-text questions.

For instructor-led course reporting, use `ABSORB_LIST_COURSES` with a `courseType` filter to find instructor-led courses, then use `ABSORB_LIST_ILC_SESSIONS` and `ABSORB_LIST_ILC_SESSION_DETAILS` for session dates, class sizes, enrollment counts, and enrollment limits. Pass instructor-led course IDs in the `courseIds` body parameter to `ABSORB_LIST_ILC_SESSION_DETAILS`, not session IDs. The endpoint returns an empty list if you pass session IDs.

For department or company grouping, use `ABSORB_LIST_USERS` to read each learner's department identifier and `ABSORB_GET_DEPARTMENT` to resolve that department directly. Use `ABSORB_LIST_DEPARTMENTS` when you need to browse or filter the broader department list.

## OData Filter Syntax

Absorb uses OData filter syntax for querying data. Most paginated list tools support the `_filter` parameter.

### Supported Operators

* **Comparison**: `eq`, `ne`, `gt`, `ge`, `lt`, `le`
* **Logical**: `and`, `or`, `not`, `()`
* **Functions**: `substringof`, `endswith`, `startswith`, `tolower`, `toupper`

### Filter Examples

```
# Users with last name starting with "Smith"
startsWith(lastname, 'Smith')

# Users added after a specific date
dateAdded ge datetime'2024-01-01T00:00:00Z'

# Combine multiple conditions
startsWith(lastname, 'Smith') or dateAdded ge datetime'2024-01-01T00:00:00Z'

# Search by email domain
substringof('@example.com', emailAddress)

# Filter by custom field
customFields/string1 eq 'Department A'
```

## Pagination and Sorting

Most paginated list tools support pagination and sorting parameters:

| Parameter | Description                                                                                                                        |
| --------- | ---------------------------------------------------------------------------------------------------------------------------------- |
| `_offset` | Row offset. Use `0` for the first records, `100` for rows `100-199` when `_limit=100`, and `1000` for rows `1000-1099`. Default: 0 |
| `_limit`  | Maximum number of records to return. Default: 100, max: 1000                                                                       |
| `_sort`   | Sort field. Prefix with `-` for descending order                                                                                   |

Enrollment list tools also support `modifiedSince` for incremental refreshes. Pass an ISO 8601 date-time, such as `2026-05-01T00:00:00Z`, to return enrollments edited after that time.

Most Absorb list tools auto-paginate within a single call. Set `_offset` manually only when you need records beyond the per-call cap.

### Sorting Examples

```
# Sort by name ascending
_sort=name

# Sort by creation date descending
_sort=-dateCreated

# Multi-field sort
_sort=lastname,firstname
```

## Authentication

<Card title="Username + Password + API Key" icon="key">
  Absorb uses custom authentication requiring three credentials:

  * **Username**: Your Absorb account username
  * **Password**: Your Absorb account password
  * **Private API Key**: Obtain from Absorb Portal Settings

  All three credentials are required to authenticate API requests.
</Card>
