Adobe Learning Manager Webhooks API

Webhooks API for Adobe Learning Manager that enables real-time event notifications for learner activities, course completions, enrollments, and other learning management events.

Documentation

Specifications

Schemas & Data

AsyncAPI Specification

adobe-captivate-learning-manager-webhooks-asyncapi.yml Raw ↑
asyncapi: 2.6.0
info:
  title: Adobe Learning Manager Webhooks API
  description: >-
    The Adobe Learning Manager Webhooks API enables real-time event
    notifications for learning management activities. When configured,
    Adobe Learning Manager sends HTTP POST requests to registered webhook
    URLs whenever significant events occur, such as learner enrollments,
    course completions, certification achievements, badge awards, and
    administrative changes. Webhooks support real-time integration with
    external systems, enabling automated workflows for learner management,
    reporting, and compliance tracking. Events are delivered as JSON
    payloads with retry logic for failed deliveries.
  version: '1.0'
  contact:
    name: Adobe Learning Manager Support
    url: https://helpx.adobe.com/learning-manager/kb/helpdesk.html
  termsOfService: https://www.adobe.com/legal/terms.html
externalDocs:
  description: Adobe Learning Manager Webhooks Documentation
  url: https://experienceleague.adobe.com/docs/learning-manager/using/integration/feature-summary/webhooks.html
servers:
  webhookReceiver:
    url: '{webhookUrl}'
    protocol: https
    description: >-
      Your webhook receiver endpoint. Adobe Learning Manager sends HTTP
      POST requests to this URL when events occur. The URL must be HTTPS
      and publicly accessible.
    variables:
      webhookUrl:
        description: >-
          The HTTPS URL of your webhook endpoint registered in Adobe
          Learning Manager
    security:
    - hmacSignature: []
channels:
  /learner-enrollment:
    description: >-
      Events triggered when a learner enrolls in a course, learning program,
      certification, or job aid. Includes both self-enrollment and
      manager/admin-initiated enrollments.
    subscribe:
      operationId: onLearnerEnrollment
      summary: Learner enrollment event
      description: >-
        Fired when a learner is enrolled in a learning object. The event
        payload contains the learner details, the learning object they
        enrolled in, and the enrollment metadata including enrollment type
        and date.
      message:
        $ref: '#/components/messages/LearnerEnrollmentEvent'
  /learner-completion:
    description: >-
      Events triggered when a learner completes a course, learning program,
      or certification module. Includes completion status, score, and
      timestamp information.
    subscribe:
      operationId: onLearnerCompletion
      summary: Learner completion event
      description: >-
        Fired when a learner completes a learning object. The event payload
        contains completion details including score, pass/fail status,
        and completion timestamp.
      message:
        $ref: '#/components/messages/LearnerCompletionEvent'
  /learner-progress:
    description: >-
      Events triggered when a learner's progress in a course or module
      is updated. Tracks incremental progress changes.
    subscribe:
      operationId: onLearnerProgress
      summary: Learner progress update event
      description: >-
        Fired when a learner's progress in a learning object changes.
        The payload includes the old and new progress percentage.
      message:
        $ref: '#/components/messages/LearnerProgressEvent'
  /learner-unenrollment:
    description: >-
      Events triggered when a learner is unenrolled from a course,
      learning program, or certification.
    subscribe:
      operationId: onLearnerUnenrollment
      summary: Learner unenrollment event
      description: >-
        Fired when a learner is removed from a learning object enrollment.
        Includes the reason for unenrollment and who initiated it.
      message:
        $ref: '#/components/messages/LearnerUnenrollmentEvent'
  /course-created:
    description: >-
      Events triggered when a new course or learning object is created
      in the Learning Manager account.
    subscribe:
      operationId: onCourseCreated
      summary: Course creation event
      description: >-
        Fired when a new learning object (course, learning program,
        certification, or job aid) is created by an author or admin.
      message:
        $ref: '#/components/messages/CourseCreatedEvent'
  /course-updated:
    description: >-
      Events triggered when an existing course or learning object is
      modified, including content updates, metadata changes, and state
      transitions.
    subscribe:
      operationId: onCourseUpdated
      summary: Course update event
      description: >-
        Fired when a learning object's content, metadata, or state is
        updated. Includes details about what changed.
      message:
        $ref: '#/components/messages/CourseUpdatedEvent'
  /badge-awarded:
    description: >-
      Events triggered when a badge is awarded to a learner upon
      achieving a specific milestone or completing a learning objective.
    subscribe:
      operationId: onBadgeAwarded
      summary: Badge awarded event
      description: >-
        Fired when a learner earns a badge. The payload contains the
        badge details and the achievement that triggered the award.
      message:
        $ref: '#/components/messages/BadgeAwardedEvent'
  /certification-completed:
    description: >-
      Events triggered when a learner completes a certification, including
      initial certification and recertification cycles.
    subscribe:
      operationId: onCertificationCompleted
      summary: Certification completion event
      description: >-
        Fired when a learner completes a certification program. Includes
        certification validity dates and recertification deadlines.
      message:
        $ref: '#/components/messages/CertificationCompletedEvent'
  /skill-achieved:
    description: >-
      Events triggered when a learner achieves a new skill level through
      course completions or skill credit assignments.
    subscribe:
      operationId: onSkillAchieved
      summary: Skill achievement event
      description: >-
        Fired when a learner achieves a new level for a skill. Includes
        the skill name, level achieved, and credits earned.
      message:
        $ref: '#/components/messages/SkillAchievedEvent'
  /user-created:
    description: >-
      Events triggered when a new user is created in the Learning Manager
      account, either through self-registration, admin creation, or bulk
      import.
    subscribe:
      operationId: onUserCreated
      summary: User creation event
      description: >-
        Fired when a new user account is created. Includes user profile
        details and the creation method.
      message:
        $ref: '#/components/messages/UserCreatedEvent'
  /user-updated:
    description: >-
      Events triggered when a user's profile or state is updated,
      including role changes, group assignments, and status changes.
    subscribe:
      operationId: onUserUpdated
      summary: User update event
      description: >-
        Fired when a user's profile information, role, or state is
        changed. Includes the updated fields.
      message:
        $ref: '#/components/messages/UserUpdatedEvent'
  /user-deleted:
    description: >-
      Events triggered when a user is deleted or purged from the Learning
      Manager account.
    subscribe:
      operationId: onUserDeleted
      summary: User deletion event
      description: >-
        Fired when a user account is deleted. Includes the user ID and
        deletion timestamp.
      message:
        $ref: '#/components/messages/UserDeletedEvent'
  /job-completed:
    description: >-
      Events triggered when a bulk import or export job completes,
      including status and result details.
    subscribe:
      operationId: onJobCompleted
      summary: Job completion event
      description: >-
        Fired when a bulk job (user import, transcript export, etc.)
        finishes processing. Includes job status and download URL for
        export jobs.
      message:
        $ref: '#/components/messages/JobCompletedEvent'
components:
  securitySchemes:
    hmacSignature:
      type: httpApiKey
      name: X-ALM-Webhook-Signature
      in: header
      description: >-
        HMAC-SHA256 signature of the webhook payload, computed using the
        shared secret configured during webhook registration. Receivers
        should validate this signature to verify the authenticity of
        incoming events.
  schemas:
    WebhookEventBase:
      type: object
      description: Base schema for all webhook event payloads
      required:
      - eventType
      - eventId
      - accountId
      - timestamp
      properties:
        eventType:
          type: string
          description: The type of event that triggered this webhook
        eventId:
          type: string
          format: uuid
          description: Unique identifier for this event instance
        accountId:
          type: string
          description: The Learning Manager account ID
        timestamp:
          type: string
          format: date-time
          description: ISO 8601 timestamp when the event occurred
        source:
          type: string
          description: The system component that generated the event
          enum:
          - learner
          - admin
          - manager
          - system
          - api
    LearnerReference:
      type: object
      description: Reference to a learner involved in an event
      properties:
        userId:
          type: string
          description: Unique user identifier
        name:
          type: string
          description: Learner's full name
        email:
          type: string
          format: email
          description: Learner's email address
    LearningObjectReference:
      type: object
      description: Reference to a learning object involved in an event
      properties:
        loId:
          type: string
          description: Learning object identifier
        loType:
          type: string
          description: Type of learning object
          enum:
          - course
          - learningProgram
          - certification
          - jobAid
        name:
          type: string
          description: Learning object name
        instanceId:
          type: string
          description: Learning object instance identifier
    LearnerEnrollmentPayload:
      allOf:
      - $ref: '#/components/schemas/WebhookEventBase'
      - type: object
        properties:
          eventType:
            const: LEARNER_ENROLLMENT
          learner:
            $ref: '#/components/schemas/LearnerReference'
          learningObject:
            $ref: '#/components/schemas/LearningObjectReference'
          enrollmentId:
            type: string
            description: Unique enrollment identifier
          enrollmentType:
            type: string
            description: How the enrollment was initiated
            enum:
            - selfEnrolled
            - managerNominated
            - adminEnrolled
            - autoEnrolled
          dateEnrolled:
            type: string
            format: date-time
            description: Enrollment timestamp
    LearnerCompletionPayload:
      allOf:
      - $ref: '#/components/schemas/WebhookEventBase'
      - type: object
        properties:
          eventType:
            const: LEARNER_COMPLETION
          learner:
            $ref: '#/components/schemas/LearnerReference'
          learningObject:
            $ref: '#/components/schemas/LearningObjectReference'
          enrollmentId:
            type: string
            description: Enrollment identifier
          completedOn:
            type: string
            format: date-time
            description: Completion timestamp
          hasPassed:
            type: boolean
            description: Whether the learner passed
          score:
            type: number
            description: Score achieved
          progressPercent:
            type: integer
            description: Final progress percentage
            const: 100
    LearnerProgressPayload:
      allOf:
      - $ref: '#/components/schemas/WebhookEventBase'
      - type: object
        properties:
          eventType:
            const: LEARNER_PROGRESS
          learner:
            $ref: '#/components/schemas/LearnerReference'
          learningObject:
            $ref: '#/components/schemas/LearningObjectReference'
          enrollmentId:
            type: string
            description: Enrollment identifier
          progressPercent:
            type: integer
            description: Current progress percentage
            minimum: 0
            maximum: 100
    LearnerUnenrollmentPayload:
      allOf:
      - $ref: '#/components/schemas/WebhookEventBase'
      - type: object
        properties:
          eventType:
            const: LEARNER_UNENROLLMENT
          learner:
            $ref: '#/components/schemas/LearnerReference'
          learningObject:
            $ref: '#/components/schemas/LearningObjectReference'
          enrollmentId:
            type: string
            description: Enrollment identifier
          unenrolledBy:
            type: string
            description: Who initiated the unenrollment
            enum:
            - learner
            - manager
            - admin
            - system
          dateUnenrolled:
            type: string
            format: date-time
            description: Unenrollment timestamp
    CourseCreatedPayload:
      allOf:
      - $ref: '#/components/schemas/WebhookEventBase'
      - type: object
        properties:
          eventType:
            const: COURSE_CREATED
          learningObject:
            $ref: '#/components/schemas/LearningObjectReference'
          createdBy:
            type: string
            description: User ID of the creator
          dateCreated:
            type: string
            format: date-time
            description: Creation timestamp
    CourseUpdatedPayload:
      allOf:
      - $ref: '#/components/schemas/WebhookEventBase'
      - type: object
        properties:
          eventType:
            const: COURSE_UPDATED
          learningObject:
            $ref: '#/components/schemas/LearningObjectReference'
          updatedBy:
            type: string
            description: User ID of who made the update
          updatedFields:
            type: array
            description: List of fields that were modified
            items:
              type: string
          dateUpdated:
            type: string
            format: date-time
            description: Update timestamp
    BadgeAwardedPayload:
      allOf:
      - $ref: '#/components/schemas/WebhookEventBase'
      - type: object
        properties:
          eventType:
            const: BADGE_AWARDED
          learner:
            $ref: '#/components/schemas/LearnerReference'
          badge:
            type: object
            properties:
              badgeId:
                type: string
                description: Badge identifier
              name:
                type: string
                description: Badge name
              imageUrl:
                type: string
                format: uri
                description: Badge image URL
          dateAwarded:
            type: string
            format: date-time
            description: Award timestamp
    CertificationCompletedPayload:
      allOf:
      - $ref: '#/components/schemas/WebhookEventBase'
      - type: object
        properties:
          eventType:
            const: CERTIFICATION_COMPLETED
          learner:
            $ref: '#/components/schemas/LearnerReference'
          certification:
            type: object
            properties:
              certificationId:
                type: string
                description: Certification identifier
              name:
                type: string
                description: Certification name
              instanceId:
                type: string
                description: Certification instance identifier
          completedOn:
            type: string
            format: date-time
            description: Completion timestamp
          validUntil:
            type: string
            format: date-time
            description: Certification validity expiration date
          recertificationDeadline:
            type: string
            format: date-time
            description: Deadline for recertification
    SkillAchievedPayload:
      allOf:
      - $ref: '#/components/schemas/WebhookEventBase'
      - type: object
        properties:
          eventType:
            const: SKILL_ACHIEVED
          learner:
            $ref: '#/components/schemas/LearnerReference'
          skill:
            type: object
            properties:
              skillId:
                type: string
                description: Skill identifier
              name:
                type: string
                description: Skill name
              levelName:
                type: string
                description: Skill level name achieved
              credits:
                type: number
                description: Skill credits earned
          dateAchieved:
            type: string
            format: date-time
            description: Achievement timestamp
    UserCreatedPayload:
      allOf:
      - $ref: '#/components/schemas/WebhookEventBase'
      - type: object
        properties:
          eventType:
            const: USER_CREATED
          user:
            type: object
            properties:
              userId:
                type: string
                description: User identifier
              name:
                type: string
                description: User's full name
              email:
                type: string
                format: email
                description: User's email address
              roles:
                type: array
                items:
                  type: string
              userType:
                type: string
                enum:
                - Internal
                - External
          creationMethod:
            type: string
            description: How the user was created
            enum:
            - selfRegistration
            - adminCreated
            - csvImport
            - apiCreated
            - ssoProvisioned
    UserUpdatedPayload:
      allOf:
      - $ref: '#/components/schemas/WebhookEventBase'
      - type: object
        properties:
          eventType:
            const: USER_UPDATED
          user:
            type: object
            properties:
              userId:
                type: string
                description: User identifier
              name:
                type: string
                description: User's full name
              email:
                type: string
                format: email
          updatedFields:
            type: array
            description: Fields that were modified
            items:
              type: string
    UserDeletedPayload:
      allOf:
      - $ref: '#/components/schemas/WebhookEventBase'
      - type: object
        properties:
          eventType:
            const: USER_DELETED
          user:
            type: object
            properties:
              userId:
                type: string
                description: Deleted user identifier
              email:
                type: string
                format: email
          dateDeleted:
            type: string
            format: date-time
            description: Deletion timestamp
    JobCompletedPayload:
      allOf:
      - $ref: '#/components/schemas/WebhookEventBase'
      - type: object
        properties:
          eventType:
            const: JOB_COMPLETED
          job:
            type: object
            properties:
              jobId:
                type: string
                description: Job identifier
              jobType:
                type: string
                description: Type of bulk operation
                enum:
                - userImport
                - learnerTranscriptExport
                - trainingReportExport
              status:
                type: string
                description: Final job status
                enum:
                - Completed
                - Failed
              downloadUrl:
                type: string
                format: uri
                description: URL to download results (for export jobs)
              recordsProcessed:
                type: integer
                description: Number of records processed
              recordsFailed:
                type: integer
                description: Number of records that failed
          dateCompleted:
            type: string
            format: date-time
            description: Job completion timestamp
  messages:
    LearnerEnrollmentEvent:
      name: LearnerEnrollmentEvent
      title: Learner Enrollment Event
      summary: Notification when a learner enrolls in a learning object
      contentType: application/json
      payload:
        $ref: '#/components/schemas/LearnerEnrollmentPayload'
      examples:
      - name: LearnerEnrollmentEventDefaultExample
        summary: Default LearnerEnrollmentEvent example payload
        x-microcks-default: true
        payload: {}
    LearnerCompletionEvent:
      name: LearnerCompletionEvent
      title: Learner Completion Event
      summary: Notification when a learner completes a learning object
      contentType: application/json
      payload:
        $ref: '#/components/schemas/LearnerCompletionPayload'
      examples:
      - name: LearnerCompletionEventDefaultExample
        summary: Default LearnerCompletionEvent example payload
        x-microcks-default: true
        payload: {}
    LearnerProgressEvent:
      name: LearnerProgressEvent
      title: Learner Progress Event
      summary: Notification when learner progress is updated
      contentType: application/json
      payload:
        $ref: '#/components/schemas/LearnerProgressPayload'
      examples:
      - name: LearnerProgressEventDefaultExample
        summary: Default LearnerProgressEvent example payload
        x-microcks-default: true
        payload: {}
    LearnerUnenrollmentEvent:
      name: LearnerUnenrollmentEvent
      title: Learner Unenrollment Event
      summary: Notification when a learner is unenrolled
      contentType: application/json
      payload:
        $ref: '#/components/schemas/LearnerUnenrollmentPayload'
      examples:
      - name: LearnerUnenrollmentEventDefaultExample
        summary: Default LearnerUnenrollmentEvent example payload
        x-microcks-default: true
        payload: {}
    CourseCreatedEvent:
      name: CourseCreatedEvent
      title: Course Created Event
      summary: Notification when a new course is created
      contentType: application/json
      payload:
        $ref: '#/components/schemas/CourseCreatedPayload'
      examples:
      - name: CourseCreatedEventDefaultExample
        summary: Default CourseCreatedEvent example payload
        x-microcks-default: true
        payload: {}
    CourseUpdatedEvent:
      name: CourseUpdatedEvent
      title: Course Updated Event
      summary: Notification when a course is updated
      contentType: application/json
      payload:
        $ref: '#/components/schemas/CourseUpdatedPayload'
      examples:
      - name: CourseUpdatedEventDefaultExample
        summary: Default CourseUpdatedEvent example payload
        x-microcks-default: true
        payload: {}
    BadgeAwardedEvent:
      name: BadgeAwardedEvent
      title: Badge Awarded Event
      summary: Notification when a badge is awarded to a learner
      contentType: application/json
      payload:
        $ref: '#/components/schemas/BadgeAwardedPayload'
      examples:
      - name: BadgeAwardedEventDefaultExample
        summary: Default BadgeAwardedEvent example payload
        x-microcks-default: true
        payload: {}
    CertificationCompletedEvent:
      name: CertificationCompletedEvent
      title: Certification Completed Event
      summary: Notification when a learner completes a certification
      contentType: application/json
      payload:
        $ref: '#/components/schemas/CertificationCompletedPayload'
      examples:
      - name: CertificationCompletedEventDefaultExample
        summary: Default CertificationCompletedEvent example payload
        x-microcks-default: true
        payload: {}
    SkillAchievedEvent:
      name: SkillAchievedEvent
      title: Skill Achieved Event
      summary: Notification when a learner achieves a new skill level
      contentType: application/json
      payload:
        $ref: '#/components/schemas/SkillAchievedPayload'
      examples:
      - name: SkillAchievedEventDefaultExample
        summary: Default SkillAchievedEvent example payload
        x-microcks-default: true
        payload: {}
    UserCreatedEvent:
      name: UserCreatedEvent
      title: User Created Event
      summary: Notification when a new user is created
      contentType: application/json
      payload:
        $ref: '#/components/schemas/UserCreatedPayload'
      examples:
      - name: UserCreatedEventDefaultExample
        summary: Default UserCreatedEvent example payload
        x-microcks-default: true
        payload: {}
    UserUpdatedEvent:
      name: UserUpdatedEvent
      title: User Updated Event
      summary: Notification when a user is updated
      contentType: application/json
      payload:
        $ref: '#/components/schemas/UserUpdatedPayload'
      examples:
      - name: UserUpdatedEventDefaultExample
        summary: Default UserUpdatedEvent example payload
        x-microcks-default: true
        payload: {}
    UserDeletedEvent:
      name: UserDeletedEvent
      title: User Deleted Event
      summary: Notification when a user is deleted
      contentType: application/json
      payload:
        $ref: '#/components/schemas/UserDeletedPayload'
      examples:
      - name: UserDeletedEventDefaultExample
        summary: Default UserDeletedEvent example payload
        x-microcks-default: true
        payload: {}
    JobCompletedEvent:
      name: JobCompletedEvent
      title: Job Completed Event
      summary: Notification when a bulk job completes
      contentType: application/json
      payload:
        $ref: '#/components/schemas/JobCompletedPayload'
      examples:
      - name: JobCompletedEventDefaultExample
        summary: Default JobCompletedEvent example payload
        x-microcks-default: true
        payload: {}