Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 30 Next »

Udemy connector

Udemy is an online learning and teaching marketplace with over 183000 courses and 40 million students where they can learn programming, marketing, data science and more.

Udemy Business is a next-gen learning solution that transforms the workplace learning experience through a consumer-first on-demand learning solution. Built for businesses striving to be at the forefront of innovation, Udemy Business offers fresh, relevant learning anytime, anywhere. The collection features thousands of high-quality courses, taught by real-world experts, which cover a wide range of topics from development and IT to design, leadership and stress management. In addition to its curated content collection, organizations can also securely host and distribute their own proprietary content.

This connector allows fetching courses information from Udemy and Udemy Business through their API.

Method of identifying updates

The Udemy API does not provide a way of filtering results based on a field, such a timestamp, for that reason a full scan is performed each time a scan is run whether incremental or full.

When running incremental crawls a list of fields must be provided in order to generate a checksum to verify if a course has changed since the last time a crawl was run. The following three fields are recommended for that purpose:

  • id
  • url
  • last_update_date

Udemy advises refreshing your library every week to ensure the latest Udemy Courses are made available.

API version

This connector was built on top of the Udemy Business API v2.11.

Crawled objects

This connector only fetches information about courses. It allows you to retrieve your Udemy Catalog and import all courses into your environment, allowing you to browse Udemy content from the Learning Management System (LMS).

In order to retrieve courses through the API the following parameter is the only one that can be sent.

  • Fields[course]: Optional request parameter to specify which fields to return with a call. The Fields parameter object type also accepts the following field lists @min, @default, and @all.

Fetch mechanism

API endpoints

  • https://{ACCOUNT_NAME}.udemy.com/api-2.0/organizations/{ACCOUNT_ID}/courses/list/?fields[course]=@all

High Level Data Flow

Udemy Connector Data Flow

Technical constraints

For the Courses API, for performance reasons set the page_size parameter to <= 20.

A sleep time can be set between calls to make sure the API responds without major issues every time. Preliminary tests show that a sleep time of 2000 milliseconds performs well.

API Documentation

The Udemy Business API documentation can be found in the following url: https://udemy.app.box.com/s/uwa9onfjh6y3kousfqss72ufdit38iz8.

Seed Configuration

Udemy APIs require basic authentication parameters to validate requests. The authentication parameters must be provided with every call and include a Bearer token computed by the connector after credentials are set within PDP.

Credentials configuration:

{
	"config": {
		"clientId": "",
		"clientSecret": ""
	},
	"name": "credentials",
	"type": "udemy-connector"
}

Connector configuration:

{
  "seed": {
    "scan": {
      "fields": {
        "id": "id",
        "hash": [
          "id",
          "url",
          "last_update_date"
        ]
      },
      "sleepTime": 2000
    },
    "url": "https://fuseuniversal.udemy.com/api-2.0/organizations/175528/courses/list/",
    "prefix": "udemy",
    "pageSize": 20,
    "connectTimeout": 5000,
    "readTimeout": 5000
  },
  "name": "Udemy Seed",
  "credentialId": "fac719f6-82a5-45b5-910b-d691104d6b20",
  "type": "udemy-connector",
  "batchSize": 20,
  "pipelineId": "4bd59108-c01c-4a3d-a96d-c4f4abd0c22b"
}

Configuration parameters:

seed.url

(Required, String) URL used to fetch courses from Udemy API.

seed.prefix

(Required, String) String containing a prefix to append to a seed to set a unique identifier accross seeds.

seed.pageSize

(Optional, Integer) Number of courses to retrieve from Udemy. Defaults to 20. Udemy recommends a value <= 20.

seed.connectTimeout

(Optional, Integer) Number of milliseconds to time out a connection. Defaults to 10000.

seed.readTimeout

(Optional, Integer) Number of milliseconds to time out a read. Defaults to 10000.

seed.scan.fields.id

(Optional, String) Field containing the course identifier within the JSON response.

seed.scan.fields.hash

(Optional, List) List of fields to be used for incremental detection hashing.

seed.scan.fields.fetch

(Optional, String|List) List of fields to fetch from Udemy API. Defaults to @all which retrieves every field available. See Udemy API reference for predefined field list available such as @min, @default, and@all.

seed.scan.sleepTime

(Optional, Integer) Number of milliseconds to wait before sending a new request to the Udemy API.

Connector outcome

Below you can find a sample from the connector outcome.

{
  "__pdp__": {
    "id": "udemy-2596618",
    "checksum": "4e93e06d3d7a3f68841dee773c9d438d",
    "action": "INSERT",
    "seedId": "011bb236-d8ad-4a0d-a69b-c2852cb2442d",
    "executionId": "523f2e8d-7310-4b40-9130-13e8a1f10ca8",
    "executionStart": 1641427104572,
    "errors": null,
    "errored": false
  },
  "_class": "course",
  "id": 2596618,
  "title": ".NET Core 3.0 & C# 7 Backend Frontend Geliştirici Kursu - 3",
  "description": "<p>Bu seri daha önce klasik .NET Framework ile yayınladığım<strong> \"C# ile Backend Geliştirici Olun\" </strong>serisinin <strong>.NET Core ile yazılmış ve geliştirilmiş versiyonudur.</strong></p><p>.NET Core ile hazırlanmış kurs taleplerinden yola çıkarak hazırlanmıştır. Prestij kursları olarak hazırladığım, sektörde tecrübeli geliştiricileri ve sektöre sapasağlam adımlarla giriş yapmayı hedefleyen adayları hedef almaktadır.</p><p>Bu kursta kullanılan mimari eğitim ve danışmanlık yaptığım 300+ kurumda veya firmada kullandırdığım şekliyle birebir yansıtılmıştır. Sektörün önde gelen bir çok firmasında da kullanılmaktadır. Profilimden bu firmaların bazılarını inceleyebilirsiniz.</p><p>Serinin üçüncü bölümünü keyifle hazırladım.</p><ol><li><p><em>AOP ve Cross Cutting Altyapılarını Anlamak</em></p></li><li><p><em>Authorization Altyapısı İle Çalışmak</em></p></li><li><p><em>Rol Bazlı Profesyonel Bir Sistem Kurmak</em></p></li><li><p><em>AOP- Authorization</em></p></li><li><p><em>Yazılımda Performans Takibi Yapmak</em></p></li><li><p><em>AOP - Performance</em></p></li><li><p><em>Loglama İle Çalışmak</em></p></li><li><p><em>AOP - Logging</em></p></li><li><p><em>ve daha fazlası...</em></p></li></ol><p>Eğer kurumsal bir kariyer hedefiniz varsa, bu kurs sizin için başladığınız gibi heyecanla bitireceğiniz bir kurs olacaktır. Şimdiden başarılar dilerim.</p>",
  "url": "https://fuseuniversal.udemy.com/course/2596618/enroll/",
  "estimated_content_length": 113,
  "categories": [
    "Programming Languages"
  ],
  "num_lectures": 23,
  "num_videos": 21,
  "promo_video_url": [
    {
      "type": "video/mp4",
      "label": "720",
      "file": "https://mp4-b.udemycdn.com/2019-10-08_08-52-02-af8b7caeb52409d8a59ce61110614db9/WebHD_720p.mp4?secure=9u5epNSmku9EpkrX7hI6gw%3D%3D%2C1641443312"
    },
    {
      "type": "video/mp4",
      "label": "480",
      "file": "https://mp4-b.udemycdn.com/2019-10-08_08-52-02-af8b7caeb52409d8a59ce61110614db9/WebHD_480.mp4?secure=-Iey-Utykbv3TO2yd7cK3w%3D%3D%2C1641443312"
    },
    {
      "type": "video/mp4",
      "label": "360",
      "file": "https://mp4-b.udemycdn.com/2019-10-08_08-52-02-af8b7caeb52409d8a59ce61110614db9/WebHD.mp4?secure=FZ60Tg-m8ju81QaLKtVSqA%3D%3D%2C1641443312"
    },
    {
      "type": "video/mp4",
      "label": "144",
      "file": "https://mp4-b.udemycdn.com/2019-10-08_08-52-02-af8b7caeb52409d8a59ce61110614db9/Web_144.mp4?secure=bDpdmNHLLOVgHXymppHZKw%3D%3D%2C1641443312"
    }
  ],
  "instructors": [
    "Engin Demiroğ"
  ],
  "requirements": {
    "list": [
      "Temel C# ve teknolojileri bilgisi"
    ]
  },
  "what_you_will_learn": {
    "list": [
      "Kurumsal mimari altyapısını öğreneceksiniz.",
      "AOP ve Cross Cutting Altyapılarını Anlayacaksınız",
      "Rol bazlı profesyonel sistem oluşturabileceksiniz",
      "AOP - Authorization yazabileceksiniz",
      "AOP- Performance yazabileceksiniz",
      "AOP- Logging yazabileceksiniz"
    ]
  },
  "images": {
    "size_48x27": "https://img-c.udemycdn.com/course/48x27/2596618_4e30.jpg",
    "size_50x50": "https://img-c.udemycdn.com/course/50x50/2596618_4e30.jpg",
    "size_75x75": "https://img-b.udemycdn.com/course/75x75/2596618_4e30.jpg",
    "size_96x54": "https://img-b.udemycdn.com/course/96x54/2596618_4e30.jpg",
    "size_100x100": "https://img-c.udemycdn.com/course/100x100/2596618_4e30.jpg",
    "size_125_H": "https://img-c.udemycdn.com/course/125_H/2596618_4e30.jpg",
    "size_200_H": "https://img-c.udemycdn.com/course/200_H/2596618_4e30.jpg",
    "size_240x135": "https://img-c.udemycdn.com/course/240x135/2596618_4e30.jpg",
    "size_304x171": "https://img-b.udemycdn.com/course/304x171/2596618_4e30.jpg",
    "size_480x270": "https://img-c.udemycdn.com/course/480x270/2596618_4e30.jpg",
    "size_750x422": "https://img-b.udemycdn.com/course/750x422/2596618_4e30.jpg"
  },
  "mobile_native_deeplink": "udemyufb://discover?coursePublishedTitle=net-core-csharp-kursu",
  "locale": {
    "_class": "locale",
    "locale": "tr_TR"
  },
  "is_practice_test_course": false,
  "primary_category": {
    "_class": "course_category",
    "id": 306,
    "title": "Development",
    "url": "/courses/ufb-development/"
  },
  "primary_subcategory": {
    "_class": "course_subcategory",
    "id": 410,
    "title": "Programming Languages",
    "url": "/courses/ufb-development/ufb-programming-languages/"
  },
  "num_quizzes": 0,
  "num_practice_tests": 0,
  "has_closed_caption": false,
  "caption_languages": [],
  "caption_locales": [],
  "estimated_content_length_video": 113,
  "last_update_date": "2021-12-28",
  "xapi_activity_id": "https://www.udemy.com/course/2596618",
  "accreditations": []
}
  • No labels