Here's a script I just wrote to publish all courses in a specific account. Hopefully someone will find this helpful.
import requests
def chunks(source_list, chunk_size):
"""
Method to split up your list into chunks
Yield successive chunk_size-sized chunks from list.
Source: https://www.datacamp.com/community/tutorials/18-most-common-python-list-questions-learn-python
"""
for i in range(0, len(source_list), chunk_size):
yield source_list[i:i + chunk_size]
def publish_account_courses(base_url, token, sub_account_id):
account_courses_url = base_url + 'accounts/' + str(sub_account_id) + '/courses'
header = {'Authorization': 'Bearer ' + token}
all_course_ids = []
payload = {
'per_page': 100
}
response = requests.get(url=account_courses_url, headers=header, data=payload)
courses = response.json()
for course in courses:
all_course_ids.append(course['id'])
while 'next' in response.links:
response = requests.get(url=response.links['next']['url'], headers=header)
courses = response.json()
for course in courses:
all_course_ids.append(course['id'])
course_id_lists = list(chunks(all_course_ids, 500))
for course_list in course_id_lists:
payload = {
'course_ids[]': course_list,
'event': 'offer'
}
response = requests.put(url=account_courses_url, headers=header, data=payload)
response.raise_for_status()
BASE_URL = 'PUT URL HERE'
TOKEN = 'PUT TOKEN HERE'
publish_account_courses(base_url=BASE_URL, token=TOKEN, sub_account_id=8)