Doc tooling for static API docs
This commit is contained in:
17
Makefile
17
Makefile
@@ -1,5 +1,6 @@
|
||||
# Do things in edx-platform
|
||||
.PHONY: clean docs extract_translations help pull pull_translations push_translations requirements shell upgrade
|
||||
.PHONY: clean extract_translations help pull pull_translations push_translations requirements shell upgrade
|
||||
.PHONY: api-docs docs guides swagger
|
||||
|
||||
# Careful with mktemp syntax: it has to work on Mac and Ubuntu, which have differences.
|
||||
PRIVATE_FILES := $(shell mktemp -u /tmp/private_files.XXXXXX)
|
||||
@@ -18,7 +19,19 @@ clean: ## archive and delete most git-ignored files
|
||||
tar xf $(PRIVATE_FILES)
|
||||
rm $(PRIVATE_FILES)
|
||||
|
||||
docs: ## build the developer documentation for this repository
|
||||
SWAGGER = docs/swagger.yaml
|
||||
|
||||
docs: api-docs guides ## build all the developer documentation for this repository
|
||||
|
||||
swagger: ## generate the swagger.yaml file
|
||||
DJANGO_SETTINGS_MODULE=docs.docs_settings python manage.py lms generate_swagger --generator-class=openedx.core.openapi.ApiSchemaGenerator -o $(SWAGGER)
|
||||
|
||||
api-docs: swagger ## build the REST api docs
|
||||
rm -f docs/api/gen/*
|
||||
python docs/sw2md.py $(SWAGGER) docs/api/gen
|
||||
cd docs/api; make html
|
||||
|
||||
guides: ## build the developer guide docs
|
||||
cd docs/guides; make clean html
|
||||
|
||||
extract_translations: ## extract localizable strings from sources
|
||||
|
||||
0
docs/__init__.py
Normal file
0
docs/__init__.py
Normal file
2
docs/api/.gitignore
vendored
Normal file
2
docs/api/.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
_build
|
||||
gen
|
||||
19
docs/api/Makefile
Normal file
19
docs/api/Makefile
Normal file
@@ -0,0 +1,19 @@
|
||||
# Minimal makefile for Sphinx documentation
|
||||
#
|
||||
|
||||
# You can set these variables from the command line.
|
||||
SPHINXOPTS =
|
||||
SPHINXBUILD = sphinx-build
|
||||
SOURCEDIR = .
|
||||
BUILDDIR = _build
|
||||
|
||||
# Put it first so that "make" without argument is like "make help".
|
||||
help:
|
||||
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
|
||||
|
||||
.PHONY: help Makefile
|
||||
|
||||
# Catch-all target: route all unknown targets to Sphinx using the new
|
||||
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
|
||||
%: Makefile
|
||||
$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
|
||||
0
docs/api/__init__.py
Normal file
0
docs/api/__init__.py
Normal file
190
docs/api/conf.py
Normal file
190
docs/api/conf.py
Normal file
@@ -0,0 +1,190 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Configuration file for the Sphinx documentation builder.
|
||||
#
|
||||
# This file does only contain a selection of the most common options. For a
|
||||
# full list see the documentation:
|
||||
# http://www.sphinx-doc.org/en/master/config
|
||||
|
||||
from __future__ import absolute_import, unicode_literals
|
||||
|
||||
import os
|
||||
|
||||
import edx_theme
|
||||
|
||||
# -- Path setup --------------------------------------------------------------
|
||||
|
||||
# If extensions (or modules to document with autodoc) are in another directory,
|
||||
# add these directories to sys.path here. If the directory is relative to the
|
||||
# documentation root, use os.path.abspath to make it absolute, like shown here.
|
||||
#
|
||||
# import os
|
||||
# import sys
|
||||
# sys.path.insert(0, os.path.abspath('.'))
|
||||
|
||||
|
||||
# -- Project information -----------------------------------------------------
|
||||
|
||||
project = u'Open edX REST APIs'
|
||||
copyright = edx_theme.COPYRIGHT
|
||||
author = edx_theme.AUTHOR
|
||||
|
||||
# The short X.Y version
|
||||
version = u''
|
||||
# The full version, including alpha/beta/rc tags
|
||||
release = u''
|
||||
|
||||
|
||||
# -- General configuration ---------------------------------------------------
|
||||
|
||||
# If your documentation needs a minimal Sphinx version, state it here.
|
||||
#
|
||||
# needs_sphinx = '1.0'
|
||||
|
||||
# Add any Sphinx extension module names here, as strings. They can be
|
||||
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
|
||||
# ones.
|
||||
extensions = [
|
||||
'recommonmark',
|
||||
'sphinx.ext.autosectionlabel',
|
||||
]
|
||||
|
||||
# Prefix document path to section labels, otherwise autogenerated labels would look like 'heading'
|
||||
# rather than 'path/to/file:heading'
|
||||
autosectionlabel_prefix_document = True
|
||||
|
||||
# Add any paths that contain templates here, relative to this directory.
|
||||
templates_path = ['_templates']
|
||||
|
||||
# The suffix(es) of source filenames.
|
||||
# You can specify multiple suffix as a list of string:
|
||||
#
|
||||
source_suffix = ['.rst', '.md']
|
||||
|
||||
# The master toctree document.
|
||||
master_doc = 'index'
|
||||
|
||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||
# for a list of supported languages.
|
||||
#
|
||||
# This is also used if you do content translation via gettext catalogs.
|
||||
# Usually you set "language" from the command line for these cases.
|
||||
language = None
|
||||
|
||||
# List of patterns, relative to source directory, that match files and
|
||||
# directories to ignore when looking for source files.
|
||||
# This pattern also affects html_static_path and html_extra_path.
|
||||
exclude_patterns = [u'_build', 'Thumbs.db', '.DS_Store']
|
||||
|
||||
# The name of the Pygments (syntax highlighting) style to use.
|
||||
pygments_style = None
|
||||
|
||||
|
||||
# -- Options for HTML output -------------------------------------------------
|
||||
|
||||
# The theme to use for HTML and HTML Help pages. See the documentation for
|
||||
# a list of builtin themes.
|
||||
#
|
||||
html_theme = 'edx_theme'
|
||||
|
||||
html_theme_path = [edx_theme.get_html_theme_path()]
|
||||
|
||||
html_theme_options = {'navigation_depth': 3}
|
||||
|
||||
html_favicon = os.path.join(edx_theme.get_html_theme_path(), 'edx_theme', 'static', 'css', 'favicon.ico')
|
||||
|
||||
# Theme options are theme-specific and customize the look and feel of a theme
|
||||
# further. For a list of options available for each theme, see the
|
||||
# documentation.
|
||||
#
|
||||
# html_theme_options = {}
|
||||
|
||||
# Add any paths that contain custom static files (such as style sheets) here,
|
||||
# relative to this directory. They are copied after the builtin static files,
|
||||
# so a file named "default.css" will overwrite the builtin "default.css".
|
||||
html_static_path = ['_static']
|
||||
|
||||
# Custom sidebar templates, must be a dictionary that maps document names
|
||||
# to template names.
|
||||
#
|
||||
# The default sidebars (for documents that don't match any pattern) are
|
||||
# defined by theme itself. Builtin themes are using these templates by
|
||||
# default: ``['localtoc.html', 'relations.html', 'sourcelink.html',
|
||||
# 'searchbox.html']``.
|
||||
#
|
||||
# html_sidebars = {}
|
||||
|
||||
|
||||
# -- Options for HTMLHelp output ---------------------------------------------
|
||||
|
||||
# Output file base name for HTML help builder.
|
||||
htmlhelp_basename = 'api-docsdoc'
|
||||
|
||||
|
||||
# -- Options for LaTeX output ------------------------------------------------
|
||||
|
||||
latex_elements = {
|
||||
# The paper size ('letterpaper' or 'a4paper').
|
||||
#
|
||||
# 'papersize': 'letterpaper',
|
||||
|
||||
# The font size ('10pt', '11pt' or '12pt').
|
||||
#
|
||||
# 'pointsize': '10pt',
|
||||
|
||||
# Additional stuff for the LaTeX preamble.
|
||||
#
|
||||
# 'preamble': '',
|
||||
|
||||
# Latex figure (float) alignment
|
||||
#
|
||||
# 'figure_align': 'htbp',
|
||||
}
|
||||
|
||||
# Grouping the document tree into LaTeX files. List of tuples
|
||||
# (source start file, target name, title,
|
||||
# author, documentclass [howto, manual, or own class]).
|
||||
latex_documents = [
|
||||
(master_doc, 'api-docs.tex', u'api-docs Documentation',
|
||||
u'Nobody', 'manual'),
|
||||
]
|
||||
|
||||
|
||||
# -- Options for manual page output ------------------------------------------
|
||||
|
||||
# One entry per manual page. List of tuples
|
||||
# (source start file, name, description, authors, manual section).
|
||||
man_pages = [
|
||||
(master_doc, 'api-docs', u'api-docs Documentation',
|
||||
[author], 1)
|
||||
]
|
||||
|
||||
|
||||
# -- Options for Texinfo output ----------------------------------------------
|
||||
|
||||
# Grouping the document tree into Texinfo files. List of tuples
|
||||
# (source start file, target name, title, author,
|
||||
# dir menu entry, description, category)
|
||||
texinfo_documents = [
|
||||
(master_doc, 'api-docs', u'api-docs Documentation',
|
||||
author, 'api-docs', 'One line description of project.',
|
||||
'Miscellaneous'),
|
||||
]
|
||||
|
||||
|
||||
# -- Options for Epub output -------------------------------------------------
|
||||
|
||||
# Bibliographic Dublin Core info.
|
||||
epub_title = project
|
||||
|
||||
# The unique identifier of the text. This can be a ISBN number
|
||||
# or the project homepage.
|
||||
#
|
||||
# epub_identifier = ''
|
||||
|
||||
# A unique identification for the text.
|
||||
#
|
||||
# epub_uid = ''
|
||||
|
||||
# A list of files that should not be packed into the epub file.
|
||||
epub_exclude_files = ['search.html']
|
||||
14
docs/api/index.rst
Normal file
14
docs/api/index.rst
Normal file
@@ -0,0 +1,14 @@
|
||||
##################
|
||||
Open edX REST APIs
|
||||
##################
|
||||
|
||||
TODO: What should go here?
|
||||
|
||||
See all the endpoints at :doc:`The Endpoints <gen/index>`.
|
||||
|
||||
.. toctree::
|
||||
:glob:
|
||||
:maxdepth: 1
|
||||
|
||||
gen/index
|
||||
gen/*
|
||||
@@ -3,6 +3,7 @@ Django settings for use when generating API documentation.
|
||||
Basically the LMS devstack settings plus a few items needed to successfully
|
||||
import all the Studio code.
|
||||
"""
|
||||
|
||||
from __future__ import absolute_import, unicode_literals
|
||||
|
||||
import os
|
||||
@@ -24,7 +25,14 @@ else:
|
||||
VIDEO_TRANSCRIPT_MIGRATIONS_JOB_QUEUE,
|
||||
)
|
||||
|
||||
FEATURES['ENABLE_LTI_PROVIDER'] = True
|
||||
# Turn on all the boolean feature flags, so that conditionally included
|
||||
# API endpoints will be found.
|
||||
for key, value in FEATURES.items():
|
||||
if value is False:
|
||||
FEATURES[key] = True
|
||||
|
||||
# Settings that will fail if we enable them, and we don't need them for docs anyway.
|
||||
FEATURES['RUN_AS_ANALYTICS_SERVER_ENABLED'] = False
|
||||
|
||||
INSTALLED_APPS.extend([
|
||||
'contentstore.apps.ContentstoreConfig',
|
||||
@@ -19,4 +19,4 @@ clean:
|
||||
# Catch-all target: route all unknown targets to Sphinx using the new
|
||||
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
|
||||
%: Makefile
|
||||
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
|
||||
$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
|
||||
|
||||
@@ -39,7 +39,7 @@ sys.path.append(root / "openedx/features")
|
||||
# without errors. If running sphinx-apidoc, we already set a different
|
||||
# settings module to use in the on_init() hook of the parent process
|
||||
if 'DJANGO_SETTINGS_MODULE' not in os.environ:
|
||||
os.environ['DJANGO_SETTINGS_MODULE'] = 'docs_settings'
|
||||
os.environ['DJANGO_SETTINGS_MODULE'] = 'docs.docs_settings'
|
||||
|
||||
django.setup()
|
||||
|
||||
|
||||
333
docs/sw2md.py
Normal file
333
docs/sw2md.py
Normal file
@@ -0,0 +1,333 @@
|
||||
"""Generate Markdown documents from an OpenAPI swagger file."""
|
||||
|
||||
from __future__ import print_function
|
||||
|
||||
import contextlib
|
||||
import functools
|
||||
import os
|
||||
import os.path
|
||||
import re
|
||||
import sys
|
||||
|
||||
import yaml
|
||||
|
||||
|
||||
# JSON Reference helpers
|
||||
|
||||
class JRefable(object):
|
||||
"""An object that can be indexed with JSON Pointers, and supports $ref."""
|
||||
def __init__(self, data, doc=None, ref=None):
|
||||
self.data = data
|
||||
self.doc = doc or data
|
||||
self.ref = ref or '/'
|
||||
self.name = None
|
||||
|
||||
def __repr__(self):
|
||||
return repr(self.data)
|
||||
|
||||
def wrap(self, data, ref):
|
||||
if isinstance(data, dict):
|
||||
if '$ref' in data:
|
||||
ref = data['$ref']
|
||||
ret = JRefableObject(self.doc)[ref]
|
||||
ret.name = ref.split('/')[-1]
|
||||
return ret
|
||||
return JRefableObject(data, self.doc, ref)
|
||||
if isinstance(data, list):
|
||||
return JRefableArray(data, self.doc, ref)
|
||||
return data
|
||||
|
||||
|
||||
class JRefableObject(JRefable):
|
||||
"""Make a dictionary into a JSON Reference-capable object."""
|
||||
def __getitem__(self, jref):
|
||||
if jref.startswith('#/'):
|
||||
parts = jref[2:]
|
||||
data = self.doc
|
||||
ref = '/'
|
||||
else:
|
||||
parts = jref
|
||||
data = self.data
|
||||
ref = self.ref
|
||||
for part in parts.split('/'):
|
||||
try:
|
||||
data = data[part]
|
||||
except KeyError:
|
||||
raise KeyError("{!r} not in {!r} then {!r}".format(part, self.ref, jref))
|
||||
ref = ref + part + '/'
|
||||
return self.wrap(data, ref=ref)
|
||||
|
||||
def get(self, key, default=None):
|
||||
if key in self.data:
|
||||
return self.wrap(self.data[key], self.ref + key + '/')
|
||||
return default
|
||||
|
||||
def keys(self):
|
||||
return self.data.keys()
|
||||
|
||||
def items(self):
|
||||
for k, v in self.data.items():
|
||||
yield k, self.wrap(v, self.ref + k.replace('/', ':') + '/')
|
||||
|
||||
def __contains__(self, val):
|
||||
return val in self.data
|
||||
|
||||
|
||||
class JRefableArray(JRefable):
|
||||
"""Make a list into a JSON Reference-capable array."""
|
||||
def __getitem__(self, index):
|
||||
try:
|
||||
data = self.data[index]
|
||||
except IndexError:
|
||||
raise IndexError("{!r} not in {!r}".format(index, self.ref))
|
||||
return self.wrap(data, self.ref + str(index) + '/')
|
||||
|
||||
def __iter__(self):
|
||||
for i, elt in enumerate(self.data):
|
||||
yield self.wrap(elt, self.ref + str(i) + '/')
|
||||
|
||||
|
||||
class OutputFiles(object):
|
||||
"""A context manager to manage a series of files.
|
||||
|
||||
Use like this::
|
||||
|
||||
with OutputFiles() as outfiles:
|
||||
...
|
||||
if some_condition():
|
||||
f = outfiles.open("filename.txt", "w")
|
||||
|
||||
Each open will close the previously opened file, and the end of the with
|
||||
statement will close the last one.
|
||||
|
||||
"""
|
||||
def __init__(self):
|
||||
self.file = None
|
||||
|
||||
def __enter__(self):
|
||||
return self
|
||||
|
||||
def __exit__(self, *args, **kwargs):
|
||||
if self.file:
|
||||
self.file.close()
|
||||
return False
|
||||
|
||||
def open(self, *args, **kwargs):
|
||||
if self.file:
|
||||
self.file.close()
|
||||
self.file = open(*args, **kwargs)
|
||||
return self.file
|
||||
|
||||
|
||||
sluggers = [
|
||||
r"^.*?/v\d+/[\w_-]+",
|
||||
r"^(/[\w_-]+){,3}",
|
||||
]
|
||||
|
||||
method_order = ['get', 'post', 'put', 'patch', 'delete', 'head', 'options']
|
||||
|
||||
|
||||
def method_ordered_items(method_data):
|
||||
keys = [k for k in method_order if k in method_data]
|
||||
for key in keys:
|
||||
yield key, method_data[key]
|
||||
|
||||
|
||||
class MarkdownWriter(object):
|
||||
"""Help write markdown, managing indentation and header nesting."""
|
||||
|
||||
def __init__(self, outfile):
|
||||
self.outfile = outfile
|
||||
self.cur_indent = 0
|
||||
|
||||
def print(self, text='', increase_headers=0):
|
||||
if increase_headers:
|
||||
text = re.sub(r"^#", "#" * (increase_headers + 1), text, flags=re.MULTILINE)
|
||||
if self.cur_indent:
|
||||
text = re.sub(r"^", " " * self.cur_indent, text, flags=re.MULTILINE)
|
||||
print(text, file=self.outfile)
|
||||
|
||||
@contextlib.contextmanager
|
||||
def indent(self, spaces):
|
||||
old_indent = self.cur_indent
|
||||
self.cur_indent += spaces
|
||||
try:
|
||||
yield
|
||||
finally:
|
||||
self.cur_indent = old_indent
|
||||
|
||||
|
||||
def convert_swagger_to_markdown(swagger_data, output_dir):
|
||||
"""Convert a swagger.yaml file to a series of markdown documents."""
|
||||
sw = JRefableObject(swagger_data)
|
||||
|
||||
if not os.path.exists(output_dir):
|
||||
os.makedirs(output_dir)
|
||||
|
||||
with open(os.path.join(output_dir, 'index.md'), 'w') as index:
|
||||
indexmd = MarkdownWriter(index)
|
||||
indexmd.print("# {}\n".format(sw['info/title']))
|
||||
indexmd.print(sw['info/description'])
|
||||
indexmd.print()
|
||||
|
||||
with OutputFiles() as outfiles:
|
||||
slug = None
|
||||
|
||||
for uri, methods in sorted(sw['paths'].items()):
|
||||
for slugger in sluggers:
|
||||
m = re.search(slugger, uri)
|
||||
if m:
|
||||
new_slug = m.group()
|
||||
if new_slug != slug:
|
||||
slug = new_slug
|
||||
outfile = slug.strip('/').replace('/', '_') + '.md'
|
||||
outf = outfiles.open(os.path.join(output_dir, outfile), 'w')
|
||||
outmd = MarkdownWriter(outf)
|
||||
outmd.print("# {}\n".format(slug))
|
||||
indexmd.print("## {}\n".format(slug))
|
||||
break
|
||||
|
||||
common_params = methods.get('parameters', [])
|
||||
for method, op_data in method_ordered_items(methods):
|
||||
summary = ''
|
||||
if 'summary' in op_data:
|
||||
summary = " --- {}".format(op_data['summary'])
|
||||
indexmd.print("[{} {}]({}){}\n".format(method.upper(), uri, outfile, summary))
|
||||
write_one_method(outmd, method, uri, op_data, common_params)
|
||||
|
||||
|
||||
def write_one_method(outmd, method, uri, op_data, common_params):
|
||||
"""Write one entry (uri and method) to the markdown output."""
|
||||
outmd.print("\n## {} {}\n".format(method.upper(), uri))
|
||||
if 'summary' in op_data:
|
||||
outmd.print(op_data['summary'])
|
||||
outmd.print()
|
||||
outmd.print(op_data['description'], increase_headers=2)
|
||||
|
||||
params = list(op_data.get('parameters', []))
|
||||
params.extend(common_params)
|
||||
if params:
|
||||
outmd.print("\n### Parameters\n")
|
||||
for param in params:
|
||||
description = param.get('description', '').strip()
|
||||
if description:
|
||||
description = ": " + description
|
||||
where = param['in']
|
||||
required = param.get('required', False)
|
||||
required = "required" if required else "optional"
|
||||
if where == 'body':
|
||||
schema = param['schema']
|
||||
outmd.print("- **{}** (body, {}){}".format(
|
||||
param['name'],
|
||||
schema.name or schema['type'],
|
||||
description,
|
||||
))
|
||||
with outmd.indent(2):
|
||||
write_schema(outmd, schema)
|
||||
else:
|
||||
outmd.print("- **{}** ({}, {}, {}){}".format(
|
||||
param['name'],
|
||||
where,
|
||||
param['type'],
|
||||
required,
|
||||
description,
|
||||
))
|
||||
|
||||
responses = op_data.get('responses', [])
|
||||
if responses:
|
||||
outmd.print("\n### Responses\n")
|
||||
for status, response in sorted(responses.items()):
|
||||
description = response.get('description', '').strip()
|
||||
if description:
|
||||
description = ": " + description
|
||||
schema = response.get('schema')
|
||||
if schema:
|
||||
type_note = " ({})".format(type_name(schema))
|
||||
else:
|
||||
type_note = ""
|
||||
outmd.print("- **{}**{}{}".format(
|
||||
status,
|
||||
type_note,
|
||||
description,
|
||||
))
|
||||
if schema:
|
||||
with outmd.indent(2):
|
||||
write_schema(outmd, schema)
|
||||
|
||||
|
||||
def type_name(schema):
|
||||
"""What is the short type name for `schema`?"""
|
||||
if schema['type'] == 'object':
|
||||
return schema.name or schema.get('type') or "object"
|
||||
elif schema['type'] == 'array':
|
||||
item_type = type_name(schema['items'])
|
||||
return "array of " + item_type
|
||||
else:
|
||||
return schema['type']
|
||||
|
||||
|
||||
def write_schema(outmd, schema):
|
||||
"""Write a schema to the markdown output."""
|
||||
if schema['type'] == 'object':
|
||||
required = set(schema.get('required', ()))
|
||||
for prop_name, prop in sorted(schema['properties'].items()):
|
||||
attrs = []
|
||||
type = type_name(prop)
|
||||
if prop['type'] == 'array':
|
||||
item_type = prop['items']
|
||||
else:
|
||||
item_type = None
|
||||
attrs.append(type)
|
||||
if prop_name in required:
|
||||
attrs.append("required")
|
||||
else:
|
||||
attrs.append("optional")
|
||||
if 'format' in prop:
|
||||
attrs.append("format {}".format(prop["format"]))
|
||||
if 'pattern' in prop:
|
||||
attrs.append("pattern `{}`".format(prop["pattern"]))
|
||||
if 'minLength' in prop:
|
||||
attrs.append("min length {}".format(prop["minLength"]))
|
||||
if 'maxLength' in prop:
|
||||
attrs.append("max length {}".format(prop["maxLength"]))
|
||||
if 'minimum' in prop:
|
||||
attrs.append("minimum {}".format(prop["minimum"]))
|
||||
if 'maximum' in prop:
|
||||
attrs.append("maximum {}".format(prop["maximum"]))
|
||||
if prop.get('readOnly', False):
|
||||
attrs.append("read only")
|
||||
# TODO: enum
|
||||
# TODO: x-nullable
|
||||
|
||||
title = prop.get('title', '').strip()
|
||||
if title:
|
||||
title = ": " + title
|
||||
description = prop.get('description', '').strip()
|
||||
if description:
|
||||
if title:
|
||||
title = title + ". " + description
|
||||
else:
|
||||
title = ": " + description
|
||||
|
||||
outmd.print("- **{name}** ({attrs}){title}".format(
|
||||
name=prop_name,
|
||||
attrs=", ".join(attrs),
|
||||
title=title,
|
||||
))
|
||||
if item_type and item_type['type'] in ['object', 'array']:
|
||||
with outmd.indent(2):
|
||||
write_schema(outmd, item_type)
|
||||
elif schema['type'] == 'array':
|
||||
write_schema(outmd, schema['items'])
|
||||
else:
|
||||
raise ValueError("Don't understand schema type {!r} at {}".format(schema['type'], schema.ref))
|
||||
|
||||
|
||||
def main(args):
|
||||
with open(args[0]) as swyaml:
|
||||
swagger_data = yaml.safe_load(swyaml)
|
||||
convert_swagger_to_markdown(swagger_data, output_dir=args[1])
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
sys.exit(main(sys.argv[1:]))
|
||||
5596
docs/swagger.yaml
Executable file
5596
docs/swagger.yaml
Executable file
@@ -0,0 +1,5596 @@
|
||||
swagger: '2.0'
|
||||
info:
|
||||
title: Open edX API
|
||||
description: APIs for access to Open edX information
|
||||
contact:
|
||||
email: oscm@edx.org
|
||||
version: v1
|
||||
basePath: /api
|
||||
consumes:
|
||||
- application/json
|
||||
produces:
|
||||
- application/json
|
||||
securityDefinitions:
|
||||
Basic:
|
||||
type: basic
|
||||
security:
|
||||
- Basic: []
|
||||
paths:
|
||||
/badges/v1/assertions/user/{username}/:
|
||||
get:
|
||||
operationId: badges_v1_assertions_user_read
|
||||
summary: '** Use cases **'
|
||||
description: "Request a list of assertions for a user, optionally constrained\
|
||||
\ to a course.\n\n** Example Requests **\n\n GET /api/badges/v1/assertions/user/{username}/\n\
|
||||
\n** Response Values **\n\n Body comprised of a list of objects with the\
|
||||
\ following fields:\n\n * badge_class: The badge class the assertion was\
|
||||
\ awarded for. Represented as an object\n with the following fields:\n\
|
||||
\ * slug: The identifier for the badge class\n * issuing_component:\
|
||||
\ The software component responsible for issuing this badge.\n * display_name:\
|
||||
\ The display name of the badge.\n * course_id: The course key of the\
|
||||
\ course this badge is scoped to, or null if it isn't scoped to a course.\n\
|
||||
\ * description: A description of the award and its significance.\n\
|
||||
\ * criteria: A description of what is needed to obtain this award.\n\
|
||||
\ * image_url: A URL to the icon image used to represent this award.\n\
|
||||
\ * image_url: The baked assertion image derived from the badge_class icon--\
|
||||
\ contains metadata about the award\n in its headers.\n * assertion_url:\
|
||||
\ The URL to the OpenBadges BadgeAssertion object, for verification by compatible\
|
||||
\ tools\n and software.\n\n** Params **\n\n * slug (optional): The\
|
||||
\ identifier for a particular badge class to filter by.\n * issuing_component\
|
||||
\ (optional): The issuing component for a particular badge class to filter\
|
||||
\ by\n (requires slug to have been specified, or this will be ignored.)\
|
||||
\ If slug is provided and this is not,\n assumes the issuing_component\
|
||||
\ should be empty.\n * course_id (optional): Returns assertions that were\
|
||||
\ awarded as part of a particular course. If slug is\n provided, and\
|
||||
\ this field is not specified, assumes that the target badge has an empty\
|
||||
\ course_id field.\n '*' may be used to get all badges with the specified\
|
||||
\ slug, issuing_component combination across all courses.\n\n** Returns **\n\
|
||||
\n * 200 on success, with a list of Badge Assertion objects.\n * 403\
|
||||
\ if a user who does not have permission to masquerade as\n another user\
|
||||
\ specifies a username other than their own.\n * 404 if the specified user\
|
||||
\ does not exist\n\n {\n \"count\": 7,\n \"previous\": null,\n\
|
||||
\ \"num_pages\": 1,\n \"results\": [\n {\n \
|
||||
\ \"badge_class\": {\n \"slug\": \"special_award\"\
|
||||
,\n \"issuing_component\": \"openedx__course\",\n \
|
||||
\ \"display_name\": \"Very Special Award\",\n \
|
||||
\ \"course_id\": \"course-v1:edX+DemoX+Demo_Course\",\n \
|
||||
\ \"description\": \"Awarded for people who did something incredibly\
|
||||
\ special\",\n \"criteria\": \"Do something incredibly\
|
||||
\ special.\",\n \"image\": \"http://example.com/media/badge_classes/badges/special_xdpqpBv_9FYOZwN.png\"\
|
||||
\n },\n \"image_url\": \"http://badges.example.com/media/issued/cd75b69fc1c979fcc1697c8403da2bdf.png\"\
|
||||
,\n \"assertion_url\": \"http://badges.example.com/public/assertions/07020647-e772-44dd-98b7-d13d34335ca6\"\
|
||||
\n },\n ...\n ]\n }"
|
||||
parameters:
|
||||
- name: page
|
||||
in: query
|
||||
description: A page number within the paginated result set.
|
||||
required: false
|
||||
type: integer
|
||||
- name: page_size
|
||||
in: query
|
||||
description: Number of results to return per page.
|
||||
required: false
|
||||
type: integer
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
schema:
|
||||
required:
|
||||
- count
|
||||
- results
|
||||
type: object
|
||||
properties:
|
||||
count:
|
||||
type: integer
|
||||
next:
|
||||
type: string
|
||||
format: uri
|
||||
x-nullable: true
|
||||
previous:
|
||||
type: string
|
||||
format: uri
|
||||
x-nullable: true
|
||||
results:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/definitions/BadgeAssertion'
|
||||
tags:
|
||||
- badges
|
||||
parameters:
|
||||
- name: username
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/bookmarks/v1/bookmarks/:
|
||||
get:
|
||||
operationId: bookmarks_v1_bookmarks_list
|
||||
summary: Get a paginated list of bookmarks for a user.
|
||||
description: "The list can be filtered by passing parameter \"course_id=<course_id>\"\
|
||||
\nto only include bookmarks from a particular course.\n\nThe bookmarks are\
|
||||
\ always sorted in descending order by creation date.\n\nEach page in the\
|
||||
\ list contains 10 bookmarks by default. The page\nsize can be altered by\
|
||||
\ passing parameter \"page_size=<page_size>\".\n\nTo include the optional\
|
||||
\ fields pass the values in \"fields\" parameter\nas a comma separated list.\
|
||||
\ Possible values are:\n\n* \"display_name\"\n* \"path\"\n\n# Example Requests\n\
|
||||
\nGET /api/bookmarks/v1/bookmarks/?course_id={course_id1}&fields=display_name,path\n\
|
||||
\n# Response Values\n\n* count: The number of bookmarks in a course.\n\n*\
|
||||
\ next: The URI to the next page of bookmarks.\n\n* previous: The URI to the\
|
||||
\ previous page of bookmarks.\n\n* num_pages: The number of pages listing\
|
||||
\ bookmarks.\n\n* results: A list of bookmarks returned. Each collection\
|
||||
\ in the list\n contains these fields.\n\n * id: String. The identifier\
|
||||
\ string for the bookmark: {user_id},{usage_id}.\n\n * course_id: String.\
|
||||
\ The identifier string of the bookmark's course.\n\n * usage_id: String.\
|
||||
\ The identifier string of the bookmark's XBlock.\n\n * display_name: String.\
|
||||
\ (optional) Display name of the XBlock.\n\n * path: List. (optional) List\
|
||||
\ of dicts containing {\"usage_id\": <usage-id>, display_name:<display-name>}\n\
|
||||
\ for the XBlocks from the top of the course tree till the parent of\
|
||||
\ the bookmarked XBlock.\n\n * created: ISO 8601 String. The timestamp\
|
||||
\ of bookmark's creation.\n\n"
|
||||
parameters:
|
||||
- name: page
|
||||
in: query
|
||||
description: A page number within the paginated result set.
|
||||
required: false
|
||||
type: integer
|
||||
- name: page_size
|
||||
in: query
|
||||
description: Number of results to return per page.
|
||||
required: false
|
||||
type: integer
|
||||
- name: course_id
|
||||
in: query
|
||||
description: The id of the course, of course
|
||||
type: string
|
||||
- name: fields
|
||||
in: query
|
||||
description: "The fields to return: display_name, path.\n"
|
||||
type: string
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- bookmarks
|
||||
post:
|
||||
operationId: bookmarks_v1_bookmarks_create
|
||||
summary: Create a new bookmark for a user.
|
||||
description: "The POST request only needs to contain one parameter \"usage_id\"\
|
||||
.\n\nHttp400 is returned if the format of the request is not correct,\nthe\
|
||||
\ usage_id is invalid or a block corresponding to the usage_id\ncould not\
|
||||
\ be found.\n\n# Example Requests\n\nPOST /api/bookmarks/v1/bookmarks/\nRequest\
|
||||
\ data: {\"usage_id\": <usage-id>}\n\n"
|
||||
parameters: []
|
||||
responses:
|
||||
'201':
|
||||
description: ''
|
||||
tags:
|
||||
- bookmarks
|
||||
parameters: []
|
||||
/bookmarks/v1/bookmarks/{username},{usage_id}/:
|
||||
get:
|
||||
operationId: bookmarks_v1_bookmarks_read
|
||||
summary: Get a specific bookmark for a user.
|
||||
description: "# Example Requests\n\nGET /api/bookmarks/v1/bookmarks/{username},{usage_id}/?fields=display_name,path\n\
|
||||
\n"
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- bookmarks
|
||||
delete:
|
||||
operationId: bookmarks_v1_bookmarks_delete
|
||||
description: DELETE /api/bookmarks/v1/bookmarks/{username},{usage_id}
|
||||
parameters: []
|
||||
responses:
|
||||
'204':
|
||||
description: ''
|
||||
tags:
|
||||
- bookmarks
|
||||
parameters:
|
||||
- name: usage_id
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
- name: username
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/bulk_enroll/v1/bulk_enroll:
|
||||
post:
|
||||
operationId: bulk_enroll_v1_bulk_enroll_create
|
||||
summary: '**Use Case**'
|
||||
description: "Enroll multiple users in one or more courses.\n\n**Example Request**\n\
|
||||
\n POST /api/bulk_enroll/v1/bulk_enroll/ {\n \"auto_enroll\": true,\n\
|
||||
\ \"email_students\": true,\n \"action\": \"enroll\",\n \
|
||||
\ \"courses\": \"course-v1:edX+Demo+123,course-v1:edX+Demo2+456\",\n \
|
||||
\ \"cohorts\": \"cohortA,cohortA\",\n \"identifiers\": \"brandon@example.com,yamilah@example.com\"\
|
||||
\n }\n\n **POST Parameters**\n\n A POST request can include the\
|
||||
\ following parameters.\n\n * auto_enroll: When set to `true`, students\
|
||||
\ will be enrolled as soon\n as they register.\n * email_students:\
|
||||
\ When set to `true`, students will be sent email\n notifications upon\
|
||||
\ enrollment.\n * action: Can either be set to \"enroll\" or \"unenroll\"\
|
||||
. This determines the behavior\n * cohorts: Optional. If provided, the\
|
||||
\ number of items in the list should be equal to\n the number of courses.\
|
||||
\ first cohort coressponds with the first course and so on.\n The learners\
|
||||
\ will be added to the corresponding cohort.\n\n**Response Values**\n\n \
|
||||
\ If the supplied course data is valid and the enrollments were\n successful,\
|
||||
\ an HTTP 200 \"OK\" response is returned.\n\n The HTTP 200 response body\
|
||||
\ contains a list of response data for each\n enrollment. (See the `instructor.views.api.students_update_enrollment`\n\
|
||||
\ docstring for the specifics of the response data available for each\n\
|
||||
\ enrollment)\n\n If a cohorts list is provided, additional 'cohort'\
|
||||
\ keys will be added\n to the 'before' and 'after' states."
|
||||
parameters: []
|
||||
responses:
|
||||
'201':
|
||||
description: ''
|
||||
tags:
|
||||
- bulk_enroll
|
||||
parameters: []
|
||||
/ccx/v0/ccx/:
|
||||
get:
|
||||
operationId: ccx_v0_ccx_list
|
||||
summary: Gets a list of CCX Courses for a given Master Course.
|
||||
description: "Additional parameters are allowed for pagination purposes.\n\n\
|
||||
Args:\n request (Request): Django request object.\n\nReturn:\n A JSON\
|
||||
\ serialized representation of a list of CCX courses."
|
||||
parameters:
|
||||
- name: page
|
||||
in: query
|
||||
description: A page number within the paginated result set.
|
||||
required: false
|
||||
type: integer
|
||||
- name: page_size
|
||||
in: query
|
||||
description: Number of results to return per page.
|
||||
required: false
|
||||
type: integer
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
schema:
|
||||
required:
|
||||
- count
|
||||
- results
|
||||
type: object
|
||||
properties:
|
||||
count:
|
||||
type: integer
|
||||
next:
|
||||
type: string
|
||||
format: uri
|
||||
x-nullable: true
|
||||
previous:
|
||||
type: string
|
||||
format: uri
|
||||
x-nullable: true
|
||||
results:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/definitions/CCXCourse'
|
||||
tags:
|
||||
- ccx
|
||||
post:
|
||||
operationId: ccx_v0_ccx_create
|
||||
summary: Creates a new CCX course for a given Master Course.
|
||||
description: "Args:\n request (Request): Django request object.\n\nReturn:\n\
|
||||
\ A JSON serialized representation a newly created CCX course."
|
||||
parameters:
|
||||
- name: data
|
||||
in: body
|
||||
required: true
|
||||
schema:
|
||||
$ref: '#/definitions/CCXCourse'
|
||||
responses:
|
||||
'201':
|
||||
description: ''
|
||||
schema:
|
||||
$ref: '#/definitions/CCXCourse'
|
||||
tags:
|
||||
- ccx
|
||||
parameters: []
|
||||
/ccx/v0/ccx/{ccx_course_id}/:
|
||||
get:
|
||||
operationId: ccx_v0_ccx_read
|
||||
summary: Gets a CCX Course information.
|
||||
description: "Args:\n request (Request): Django request object.\n ccx_course_id\
|
||||
\ (string): URI element specifying the CCX course location.\n\nReturn:\n \
|
||||
\ A JSON serialized representation of the CCX course."
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
schema:
|
||||
$ref: '#/definitions/CCXCourse'
|
||||
tags:
|
||||
- ccx
|
||||
patch:
|
||||
operationId: ccx_v0_ccx_partial_update
|
||||
summary: Modifies a CCX course.
|
||||
description: "Args:\n request (Request): Django request object.\n ccx_course_id\
|
||||
\ (string): URI element specifying the CCX course location."
|
||||
parameters:
|
||||
- name: data
|
||||
in: body
|
||||
required: true
|
||||
schema:
|
||||
$ref: '#/definitions/CCXCourse'
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
schema:
|
||||
$ref: '#/definitions/CCXCourse'
|
||||
tags:
|
||||
- ccx
|
||||
delete:
|
||||
operationId: ccx_v0_ccx_delete
|
||||
summary: Deletes a CCX course.
|
||||
description: "Args:\n request (Request): Django request object.\n ccx_course_id\
|
||||
\ (string): URI element specifying the CCX course location."
|
||||
parameters: []
|
||||
responses:
|
||||
'204':
|
||||
description: ''
|
||||
tags:
|
||||
- ccx
|
||||
parameters:
|
||||
- name: ccx_course_id
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/certificates/v0/certificates/{username}/:
|
||||
get:
|
||||
operationId: certificates_v0_certificates_read
|
||||
summary: Get a paginated list of bookmarks for a user.
|
||||
description: "**Use Case**\n\n * Get the list of viewable course certificates\
|
||||
\ for a specific user.\n\n**Example Request**\n\n GET /api/certificates/v0/certificates/{username}\n\
|
||||
\n**GET Parameters**\n\n A GET request must include the following parameters.\n\
|
||||
\n * username: A string representation of an user's username.\n\n**GET\
|
||||
\ Response Values**\n\n If the request for information about the user's\
|
||||
\ certificates is successful,\n an HTTP 200 \"OK\" response is returned.\n\
|
||||
\n The HTTP 200 response contains a list of dicts with the following keys/values.\n\
|
||||
\n * username: A string representation of an user's username passed in\
|
||||
\ the request.\n\n * course_id: A string representation of a Course ID.\n\
|
||||
\n * course_display_name: A string representation of the Course name.\n\
|
||||
\n * course_organization: A string representation of the organization associated\
|
||||
\ with the Course.\n\n * certificate_type: A string representation of the\
|
||||
\ certificate type.\n Can be honor|verified|professional\n\n * created_date:\
|
||||
\ Date/time the certificate was created, in ISO-8661 format.\n\n * status:\
|
||||
\ A string representation of the certificate status.\n\n * is_passing:\
|
||||
\ True if the certificate has a passing status, False if not.\n\n * download_url:\
|
||||
\ A string representation of the certificate url.\n\n * grade: A string\
|
||||
\ representation of a float for the user's course grade.\n\n**Example GET\
|
||||
\ Response**\n\n [{\n \"username\": \"bob\",\n \"course_id\"\
|
||||
: \"edX/DemoX/Demo_Course\",\n \"certificate_type\": \"verified\",\n\
|
||||
\ \"created_date\": \"2015-12-03T13:14:28+0000\",\n \"status\"\
|
||||
: \"downloadable\",\n \"is_passing\": true,\n \"download_url\"\
|
||||
: \"http://www.example.com/cert.pdf\",\n \"grade\": \"0.98\"\n }]\n"
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- certificates
|
||||
parameters:
|
||||
- name: username
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/certificates/v0/certificates/{username}/courses/{course_id}/:
|
||||
get:
|
||||
operationId: certificates_v0_certificates_courses_read
|
||||
summary: Gets a certificate information.
|
||||
description: "Args:\n request (Request): Django request object.\n username\
|
||||
\ (string): URI element specifying the user's username.\n course_id (string):\
|
||||
\ URI element specifying the course location.\n\nReturn:\n A JSON serialized\
|
||||
\ representation of the certificate."
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- certificates
|
||||
parameters:
|
||||
- name: course_id
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
- name: username
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/cohorts/v1/courses/{course_key_string}/cohorts/{cohort_id}:
|
||||
get:
|
||||
operationId: cohorts_v1_courses_cohorts_read
|
||||
description: Endpoint to get either one or all cohorts.
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
schema:
|
||||
type: object
|
||||
properties: {}
|
||||
tags:
|
||||
- cohorts
|
||||
post:
|
||||
operationId: cohorts_v1_courses_cohorts_create
|
||||
description: Endpoint to create a new cohort, must not include cohort_id.
|
||||
parameters:
|
||||
- name: data
|
||||
in: body
|
||||
required: true
|
||||
schema:
|
||||
type: object
|
||||
properties: {}
|
||||
responses:
|
||||
'201':
|
||||
description: ''
|
||||
schema:
|
||||
type: object
|
||||
properties: {}
|
||||
tags:
|
||||
- cohorts
|
||||
patch:
|
||||
operationId: cohorts_v1_courses_cohorts_partial_update
|
||||
description: Endpoint to update a cohort name and/or assignment type.
|
||||
parameters:
|
||||
- name: data
|
||||
in: body
|
||||
required: true
|
||||
schema:
|
||||
type: object
|
||||
properties: {}
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
schema:
|
||||
type: object
|
||||
properties: {}
|
||||
tags:
|
||||
- cohorts
|
||||
parameters:
|
||||
- name: cohort_id
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
- name: course_key_string
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/cohorts/v1/courses/{course_key_string}/cohorts/{cohort_id}/users/{username}:
|
||||
get:
|
||||
operationId: cohorts_v1_courses_cohorts_users_read
|
||||
description: Lists the users in a specific cohort.
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
schema:
|
||||
$ref: '#/definitions/CohortUsersAPI'
|
||||
tags:
|
||||
- cohorts
|
||||
post:
|
||||
operationId: cohorts_v1_courses_cohorts_users_create
|
||||
description: Add given users to the cohort.
|
||||
parameters:
|
||||
- name: data
|
||||
in: body
|
||||
required: true
|
||||
schema:
|
||||
$ref: '#/definitions/CohortUsersAPI'
|
||||
responses:
|
||||
'201':
|
||||
description: ''
|
||||
schema:
|
||||
$ref: '#/definitions/CohortUsersAPI'
|
||||
tags:
|
||||
- cohorts
|
||||
delete:
|
||||
operationId: cohorts_v1_courses_cohorts_users_delete
|
||||
summary: Removes and user from a specific cohort.
|
||||
description: "Note: It's better to use the post method to move users between\
|
||||
\ cohorts."
|
||||
parameters: []
|
||||
responses:
|
||||
'204':
|
||||
description: ''
|
||||
tags:
|
||||
- cohorts
|
||||
parameters:
|
||||
- name: cohort_id
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
- name: course_key_string
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
- name: username
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/cohorts/v1/courses/{course_key_string}/users:
|
||||
post:
|
||||
operationId: cohorts_v1_courses_users_create
|
||||
description: "View method that accepts an uploaded file (using key \"uploaded-file\"\
|
||||
)\ncontaining cohort assignments for users. This method spawns a celery task\n\
|
||||
to do the assignments, and a CSV file with results is provided via data downloads."
|
||||
parameters: []
|
||||
responses:
|
||||
'201':
|
||||
description: ''
|
||||
tags:
|
||||
- cohorts
|
||||
parameters:
|
||||
- name: course_key_string
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/cohorts/v1/settings/{course_key_string}:
|
||||
get:
|
||||
operationId: cohorts_v1_settings_read
|
||||
description: Endpoint to fetch the course cohort settings.
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
schema:
|
||||
type: object
|
||||
properties: {}
|
||||
tags:
|
||||
- cohorts
|
||||
put:
|
||||
operationId: cohorts_v1_settings_update
|
||||
description: Endpoint to set the course cohort settings.
|
||||
parameters:
|
||||
- name: data
|
||||
in: body
|
||||
required: true
|
||||
schema:
|
||||
type: object
|
||||
properties: {}
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
schema:
|
||||
type: object
|
||||
properties: {}
|
||||
tags:
|
||||
- cohorts
|
||||
parameters:
|
||||
- name: course_key_string
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/commerce/v0/baskets/:
|
||||
post:
|
||||
operationId: commerce_v0_baskets_create
|
||||
description: Attempt to enroll the user.
|
||||
parameters: []
|
||||
responses:
|
||||
'201':
|
||||
description: ''
|
||||
tags:
|
||||
- commerce
|
||||
parameters: []
|
||||
/commerce/v0/baskets/{basket_id}/order/:
|
||||
get:
|
||||
operationId: commerce_v0_baskets_order_list
|
||||
description: HTTP handler.
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- commerce
|
||||
parameters:
|
||||
- name: basket_id
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/commerce/v1/courses/:
|
||||
get:
|
||||
operationId: commerce_v1_courses_list
|
||||
description: List courses and modes.
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
schema:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/definitions/commerce.Course'
|
||||
tags:
|
||||
- commerce
|
||||
parameters: []
|
||||
/commerce/v1/courses/{course_id}/:
|
||||
get:
|
||||
operationId: commerce_v1_courses_read
|
||||
description: Retrieve, update, or create courses/modes.
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
schema:
|
||||
$ref: '#/definitions/commerce.Course'
|
||||
tags:
|
||||
- commerce
|
||||
put:
|
||||
operationId: commerce_v1_courses_update
|
||||
description: Retrieve, update, or create courses/modes.
|
||||
parameters:
|
||||
- name: data
|
||||
in: body
|
||||
required: true
|
||||
schema:
|
||||
$ref: '#/definitions/commerce.Course'
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
schema:
|
||||
$ref: '#/definitions/commerce.Course'
|
||||
tags:
|
||||
- commerce
|
||||
patch:
|
||||
operationId: commerce_v1_courses_partial_update
|
||||
description: Retrieve, update, or create courses/modes.
|
||||
parameters:
|
||||
- name: data
|
||||
in: body
|
||||
required: true
|
||||
schema:
|
||||
$ref: '#/definitions/commerce.Course'
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
schema:
|
||||
$ref: '#/definitions/commerce.Course'
|
||||
tags:
|
||||
- commerce
|
||||
parameters:
|
||||
- name: course_id
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/commerce/v1/orders/{number}/:
|
||||
get:
|
||||
operationId: commerce_v1_orders_read
|
||||
description: HTTP handler.
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- commerce
|
||||
parameters:
|
||||
- name: number
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/completion/v1/completion-batch:
|
||||
post:
|
||||
operationId: completion_v1_completion-batch_create
|
||||
summary: Inserts a batch of completions.
|
||||
description: "REST Endpoint Format:\n{\n \"username\": \"username\",\n \"\
|
||||
course_key\": \"course-key\",\n \"blocks\": {\n \"block_key1\": 0.0,\n\
|
||||
\ \"block_key2\": 1.0,\n \"block_key3\": 1.0,\n }\n}\n\n**Returns**\n\
|
||||
\nA Response object, with an appropriate status code.\n\nIf successful, status\
|
||||
\ code is 200.\n{\n \"detail\" : _(\"ok\")\n}\n\nOtherwise, a 400 or 404\
|
||||
\ may be returned, and the \"detail\" content will explain the error."
|
||||
parameters: []
|
||||
responses:
|
||||
'201':
|
||||
description: ''
|
||||
tags:
|
||||
- completion
|
||||
parameters: []
|
||||
/completion/v1/subsection-completion/{username}/{course_key}/(P{subsection_id}[/]*):
|
||||
get:
|
||||
operationId: completion_v1_subsection-completion_]*)_list
|
||||
description: Returns completion for a (user, subsection, course).
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- completion
|
||||
parameters:
|
||||
- name: course_key
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
- name: subsection_id
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
- name: username
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/course_goals/v0/course_goals/:
|
||||
get:
|
||||
operationId: course_goals_v0_course_goals_list
|
||||
description: description from swagger_auto_schema via method_decorator
|
||||
parameters:
|
||||
- name: page
|
||||
in: query
|
||||
description: A page number within the paginated result set.
|
||||
required: false
|
||||
type: integer
|
||||
- name: page_size
|
||||
in: query
|
||||
description: Number of results to return per page.
|
||||
required: false
|
||||
type: integer
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
schema:
|
||||
required:
|
||||
- count
|
||||
- results
|
||||
type: object
|
||||
properties:
|
||||
count:
|
||||
type: integer
|
||||
next:
|
||||
type: string
|
||||
format: uri
|
||||
x-nullable: true
|
||||
previous:
|
||||
type: string
|
||||
format: uri
|
||||
x-nullable: true
|
||||
results:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/definitions/CourseGoal'
|
||||
tags:
|
||||
- course_goals
|
||||
post:
|
||||
operationId: course_goals_v0_course_goals_create
|
||||
description: Create a new goal if one does not exist, otherwise update the existing
|
||||
goal.
|
||||
parameters:
|
||||
- name: data
|
||||
in: body
|
||||
required: true
|
||||
schema:
|
||||
$ref: '#/definitions/CourseGoal'
|
||||
responses:
|
||||
'201':
|
||||
description: ''
|
||||
schema:
|
||||
$ref: '#/definitions/CourseGoal'
|
||||
tags:
|
||||
- course_goals
|
||||
parameters: []
|
||||
/course_goals/v0/course_goals/{id}/:
|
||||
get:
|
||||
operationId: course_goals_v0_course_goals_read
|
||||
summary: API calls to create and update a course goal.
|
||||
description: "Validates incoming data to ensure that course_key maps to an actual\n\
|
||||
course and that the goal_key is a valid option.\n\n**Use Case**\n * Create\
|
||||
\ a new goal for a user.\n * Update an existing goal for a user\n\n**Example\
|
||||
\ Requests**\n POST /api/course_goals/v0/course_goals/\n Request\
|
||||
\ data: {\"course_key\": <course-key>, \"goal_key\": \"<goal-key>\", \"user\"\
|
||||
: \"<username>\"}\n\nReturns Http400 response if the course_key does not map\
|
||||
\ to a known\ncourse or if the goal_key does not map to a valid goal key."
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
schema:
|
||||
$ref: '#/definitions/CourseGoal'
|
||||
tags:
|
||||
- course_goals
|
||||
put:
|
||||
operationId: course_goals_v0_course_goals_update
|
||||
summary: API calls to create and update a course goal.
|
||||
description: "Validates incoming data to ensure that course_key maps to an actual\n\
|
||||
course and that the goal_key is a valid option.\n\n**Use Case**\n * Create\
|
||||
\ a new goal for a user.\n * Update an existing goal for a user\n\n**Example\
|
||||
\ Requests**\n POST /api/course_goals/v0/course_goals/\n Request\
|
||||
\ data: {\"course_key\": <course-key>, \"goal_key\": \"<goal-key>\", \"user\"\
|
||||
: \"<username>\"}\n\nReturns Http400 response if the course_key does not map\
|
||||
\ to a known\ncourse or if the goal_key does not map to a valid goal key."
|
||||
parameters:
|
||||
- name: data
|
||||
in: body
|
||||
required: true
|
||||
schema:
|
||||
$ref: '#/definitions/CourseGoal'
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
schema:
|
||||
$ref: '#/definitions/CourseGoal'
|
||||
tags:
|
||||
- course_goals
|
||||
patch:
|
||||
operationId: course_goals_v0_course_goals_partial_update
|
||||
summary: API calls to create and update a course goal.
|
||||
description: "Validates incoming data to ensure that course_key maps to an actual\n\
|
||||
course and that the goal_key is a valid option.\n\n**Use Case**\n * Create\
|
||||
\ a new goal for a user.\n * Update an existing goal for a user\n\n**Example\
|
||||
\ Requests**\n POST /api/course_goals/v0/course_goals/\n Request\
|
||||
\ data: {\"course_key\": <course-key>, \"goal_key\": \"<goal-key>\", \"user\"\
|
||||
: \"<username>\"}\n\nReturns Http400 response if the course_key does not map\
|
||||
\ to a known\ncourse or if the goal_key does not map to a valid goal key."
|
||||
parameters:
|
||||
- name: data
|
||||
in: body
|
||||
required: true
|
||||
schema:
|
||||
$ref: '#/definitions/CourseGoal'
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
schema:
|
||||
$ref: '#/definitions/CourseGoal'
|
||||
tags:
|
||||
- course_goals
|
||||
delete:
|
||||
operationId: course_goals_v0_course_goals_delete
|
||||
summary: API calls to create and update a course goal.
|
||||
description: "Validates incoming data to ensure that course_key maps to an actual\n\
|
||||
course and that the goal_key is a valid option.\n\n**Use Case**\n * Create\
|
||||
\ a new goal for a user.\n * Update an existing goal for a user\n\n**Example\
|
||||
\ Requests**\n POST /api/course_goals/v0/course_goals/\n Request\
|
||||
\ data: {\"course_key\": <course-key>, \"goal_key\": \"<goal-key>\", \"user\"\
|
||||
: \"<username>\"}\n\nReturns Http400 response if the course_key does not map\
|
||||
\ to a known\ncourse or if the goal_key does not map to a valid goal key."
|
||||
parameters: []
|
||||
responses:
|
||||
'204':
|
||||
description: ''
|
||||
tags:
|
||||
- course_goals
|
||||
parameters:
|
||||
- name: id
|
||||
in: path
|
||||
description: A unique integer value identifying this course goal.
|
||||
required: true
|
||||
type: integer
|
||||
/course_modes/v1/courses/{course_id}/:
|
||||
get:
|
||||
operationId: course_modes_v1_courses_read
|
||||
summary: View to list or create course modes for a course.
|
||||
description: "**Use Case**\n\n List all course modes for a course, or create\
|
||||
\ a new\n course mode.\n\n**Example Requests**\n\n GET /api/course_modes/v1/courses/{course_id}/\n\
|
||||
\n Returns a list of all existing course modes for a course.\n\n \
|
||||
\ POST /api/course_modes/v1/courses/{course_id}/\n\n Creates a new\
|
||||
\ course mode in a course.\n\n**Response Values**\n\n For each HTTP verb\
|
||||
\ below, an HTTP 404 \"Not Found\" response is returned if the\n requested\
|
||||
\ course id does not exist.\n\n GET: If the request is successful, an HTTP\
|
||||
\ 200 \"OK\" response is returned\n along with a list of course mode dictionaries\
|
||||
\ within a course.\n The details are contained in a JSON dictionary as\
|
||||
\ follows:\n\n * course_id: The course identifier.\n * mode_slug:\
|
||||
\ The short name for the course mode.\n * mode_display_name: The verbose\
|
||||
\ name for the course mode.\n * min_price: The minimum price for which\
|
||||
\ a user can\n enroll in this mode.\n * currency: The currency\
|
||||
\ of the listed prices.\n * expiration_datetime: The date and time after\
|
||||
\ which\n users cannot enroll in the course in this mode (not required\
|
||||
\ for POST).\n * expiration_datetime_is_explicit: Whether the expiration_datetime\
|
||||
\ field was\n explicitly set (not required for POST).\n * description:\
|
||||
\ A description of this mode (not required for POST).\n * sku: The SKU\
|
||||
\ for this mode (for ecommerce purposes, not required for POST).\n *\
|
||||
\ bulk_sku: The bulk SKU for this mode (for ecommerce purposes, not required\
|
||||
\ for POST).\n\n POST: If the request is successful, an HTTP 201 \"Created\"\
|
||||
\ response is returned."
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
schema:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/definitions/course_modes.CourseMode'
|
||||
tags:
|
||||
- course_modes
|
||||
post:
|
||||
operationId: course_modes_v1_courses_create
|
||||
summary: View to list or create course modes for a course.
|
||||
description: "**Use Case**\n\n List all course modes for a course, or create\
|
||||
\ a new\n course mode.\n\n**Example Requests**\n\n GET /api/course_modes/v1/courses/{course_id}/\n\
|
||||
\n Returns a list of all existing course modes for a course.\n\n \
|
||||
\ POST /api/course_modes/v1/courses/{course_id}/\n\n Creates a new\
|
||||
\ course mode in a course.\n\n**Response Values**\n\n For each HTTP verb\
|
||||
\ below, an HTTP 404 \"Not Found\" response is returned if the\n requested\
|
||||
\ course id does not exist.\n\n GET: If the request is successful, an HTTP\
|
||||
\ 200 \"OK\" response is returned\n along with a list of course mode dictionaries\
|
||||
\ within a course.\n The details are contained in a JSON dictionary as\
|
||||
\ follows:\n\n * course_id: The course identifier.\n * mode_slug:\
|
||||
\ The short name for the course mode.\n * mode_display_name: The verbose\
|
||||
\ name for the course mode.\n * min_price: The minimum price for which\
|
||||
\ a user can\n enroll in this mode.\n * currency: The currency\
|
||||
\ of the listed prices.\n * expiration_datetime: The date and time after\
|
||||
\ which\n users cannot enroll in the course in this mode (not required\
|
||||
\ for POST).\n * expiration_datetime_is_explicit: Whether the expiration_datetime\
|
||||
\ field was\n explicitly set (not required for POST).\n * description:\
|
||||
\ A description of this mode (not required for POST).\n * sku: The SKU\
|
||||
\ for this mode (for ecommerce purposes, not required for POST).\n *\
|
||||
\ bulk_sku: The bulk SKU for this mode (for ecommerce purposes, not required\
|
||||
\ for POST).\n\n POST: If the request is successful, an HTTP 201 \"Created\"\
|
||||
\ response is returned."
|
||||
parameters:
|
||||
- name: data
|
||||
in: body
|
||||
required: true
|
||||
schema:
|
||||
$ref: '#/definitions/course_modes.CourseMode'
|
||||
responses:
|
||||
'201':
|
||||
description: ''
|
||||
schema:
|
||||
$ref: '#/definitions/course_modes.CourseMode'
|
||||
tags:
|
||||
- course_modes
|
||||
parameters:
|
||||
- name: course_id
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/course_modes/v1/courses/{course_id}/{mode_slug}:
|
||||
get:
|
||||
operationId: course_modes_v1_courses_read
|
||||
summary: View to retrieve, update, or delete a specific course mode for a course.
|
||||
description: "**Use Case**\n\n Get or update course mode details for a specific\
|
||||
\ course mode on a course.\n Or you may delete a specific course mode from\
|
||||
\ a course.\n\n**Example Requests**\n\n GET /api/course_modes/v1/courses/{course_id}/{mode_slug}\n\
|
||||
\n Returns details on an existing course mode for a course.\n\n \
|
||||
\ PATCH /api/course_modes/v1/courses/{course_id}/{mode_slug}\n\n Updates\
|
||||
\ (via merge) details of an existing course mode for a course.\n\n DELETE\
|
||||
\ /api/course_modes/v1/courses/{course_id}/{mode_slug}\n\n Deletes\
|
||||
\ an existing course mode for a course.\n\n**Response Values**\n\n For\
|
||||
\ each HTTP verb below, an HTTP 404 \"Not Found\" response is returned if\
|
||||
\ the\n requested course id does not exist, or the mode slug does not exist\
|
||||
\ within the course.\n\n GET: If the request is successful, an HTTP 200\
|
||||
\ \"OK\" response is returned\n along with a details for a single course\
|
||||
\ mode within a course. The details are contained\n in a JSON dictionary\
|
||||
\ as follows:\n\n * course_id: The course identifier.\n * mode_slug:\
|
||||
\ The short name for the course mode.\n * mode_display_name: The verbose\
|
||||
\ name for the course mode.\n * min_price: The minimum price for which\
|
||||
\ a user can\n enroll in this mode.\n * currency: The currency\
|
||||
\ of the listed prices.\n * expiration_datetime: The date and time after\
|
||||
\ which\n users cannot enroll in the course in this mode (not required\
|
||||
\ for PATCH).\n * expiration_datetime_is_explicit: Whether the expiration_datetime\
|
||||
\ field was\n explicitly set (not required for PATCH).\n * description:\
|
||||
\ A description of this mode (not required for PATCH).\n * sku: The SKU\
|
||||
\ for this mode (for ecommerce purposes, not required for PATCH).\n *\
|
||||
\ bulk_sku: The bulk SKU for this mode (for ecommerce purposes, not required\
|
||||
\ for PATCH).\n\n PATCH: If the request is successful, an HTTP 204 \"No\
|
||||
\ Content\" response is returned.\n If \"application/merge-patch+json\"\
|
||||
\ is not the specified content type,\n a 415 \"Unsupported Media Type\"\
|
||||
\ response is returned.\n\n DELETE: If the request is successful, an HTTP\
|
||||
\ 204 \"No Content\" response is returned."
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
schema:
|
||||
$ref: '#/definitions/course_modes.CourseMode'
|
||||
consumes:
|
||||
- application/merge-patch+json
|
||||
tags:
|
||||
- course_modes
|
||||
patch:
|
||||
operationId: course_modes_v1_courses_partial_update
|
||||
description: Performs a partial update of a CourseMode instance.
|
||||
parameters:
|
||||
- name: data
|
||||
in: body
|
||||
required: true
|
||||
schema:
|
||||
$ref: '#/definitions/course_modes.CourseMode'
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
schema:
|
||||
$ref: '#/definitions/course_modes.CourseMode'
|
||||
consumes:
|
||||
- application/merge-patch+json
|
||||
tags:
|
||||
- course_modes
|
||||
delete:
|
||||
operationId: course_modes_v1_courses_delete
|
||||
summary: View to retrieve, update, or delete a specific course mode for a course.
|
||||
description: "**Use Case**\n\n Get or update course mode details for a specific\
|
||||
\ course mode on a course.\n Or you may delete a specific course mode from\
|
||||
\ a course.\n\n**Example Requests**\n\n GET /api/course_modes/v1/courses/{course_id}/{mode_slug}\n\
|
||||
\n Returns details on an existing course mode for a course.\n\n \
|
||||
\ PATCH /api/course_modes/v1/courses/{course_id}/{mode_slug}\n\n Updates\
|
||||
\ (via merge) details of an existing course mode for a course.\n\n DELETE\
|
||||
\ /api/course_modes/v1/courses/{course_id}/{mode_slug}\n\n Deletes\
|
||||
\ an existing course mode for a course.\n\n**Response Values**\n\n For\
|
||||
\ each HTTP verb below, an HTTP 404 \"Not Found\" response is returned if\
|
||||
\ the\n requested course id does not exist, or the mode slug does not exist\
|
||||
\ within the course.\n\n GET: If the request is successful, an HTTP 200\
|
||||
\ \"OK\" response is returned\n along with a details for a single course\
|
||||
\ mode within a course. The details are contained\n in a JSON dictionary\
|
||||
\ as follows:\n\n * course_id: The course identifier.\n * mode_slug:\
|
||||
\ The short name for the course mode.\n * mode_display_name: The verbose\
|
||||
\ name for the course mode.\n * min_price: The minimum price for which\
|
||||
\ a user can\n enroll in this mode.\n * currency: The currency\
|
||||
\ of the listed prices.\n * expiration_datetime: The date and time after\
|
||||
\ which\n users cannot enroll in the course in this mode (not required\
|
||||
\ for PATCH).\n * expiration_datetime_is_explicit: Whether the expiration_datetime\
|
||||
\ field was\n explicitly set (not required for PATCH).\n * description:\
|
||||
\ A description of this mode (not required for PATCH).\n * sku: The SKU\
|
||||
\ for this mode (for ecommerce purposes, not required for PATCH).\n *\
|
||||
\ bulk_sku: The bulk SKU for this mode (for ecommerce purposes, not required\
|
||||
\ for PATCH).\n\n PATCH: If the request is successful, an HTTP 204 \"No\
|
||||
\ Content\" response is returned.\n If \"application/merge-patch+json\"\
|
||||
\ is not the specified content type,\n a 415 \"Unsupported Media Type\"\
|
||||
\ response is returned.\n\n DELETE: If the request is successful, an HTTP\
|
||||
\ 204 \"No Content\" response is returned."
|
||||
parameters: []
|
||||
responses:
|
||||
'204':
|
||||
description: ''
|
||||
consumes:
|
||||
- application/merge-patch+json
|
||||
tags:
|
||||
- course_modes
|
||||
parameters:
|
||||
- name: course_id
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
- name: mode_slug
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/courses/v1/blocks/:
|
||||
get:
|
||||
operationId: courses_v1_blocks_list
|
||||
summary: '**Use Case**'
|
||||
description: "Returns the blocks in the course according to the requesting user's\n\
|
||||
\ access level.\n\n**Example requests**:\n\n GET /api/courses/v1/blocks/?course_id=<course_id>\n\
|
||||
\ GET /api/courses/v1/blocks/?course_id=<course_id>\n &username=anjali\n\
|
||||
\ &depth=all\n &requested_fields=graded,format,student_view_multi_device,lti_url\n\
|
||||
\ &block_counts=video\n &student_view_data=video\n &block_types_filter=problem,html\n\
|
||||
\n**Parameters**:\n\n This view redirects to /api/courses/v1/blocks/<root_usage_key>/\
|
||||
\ for the\n root usage key of the course specified by course_id. The view\
|
||||
\ accepts\n all parameters accepted by :class:`BlocksView`, plus the following\n\
|
||||
\ required parameter\n\n * course_id: (string, required) The ID of the\
|
||||
\ course whose block data\n we want to return\n\n**Response Values**\n\
|
||||
\n Responses are identical to those returned by :class:`BlocksView` when\n\
|
||||
\ passed the root_usage_key of the requested course.\n\n If the course_id\
|
||||
\ is not supplied, a 400: Bad Request is returned, with\n a message indicating\
|
||||
\ that course_id is required.\n\n If an invalid course_id is supplied,\
|
||||
\ a 400: Bad Request is returned,\n with a message indicating that the\
|
||||
\ course_id is not valid."
|
||||
parameters:
|
||||
- name: page
|
||||
in: query
|
||||
description: A page number within the paginated result set.
|
||||
required: false
|
||||
type: integer
|
||||
- name: page_size
|
||||
in: query
|
||||
description: Number of results to return per page.
|
||||
required: false
|
||||
type: integer
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- courses
|
||||
parameters: []
|
||||
? /courses/v1/blocks/(P{usage_key_string}{var}|api/courses/v1/blocks/(P{usage_key_string}(:i4x://[/]+/[/]+/[/]+/[@]+(:@[/]+))|{var})
|
||||
: get:
|
||||
operationId: courses_v1_blocks_courses_v1_blocks__[_]+_[_]+_[_]+_[@]+(:@[_read
|
||||
summary: '**Use Case**'
|
||||
description: "Returns the blocks within the requested block tree according to\
|
||||
\ the\n requesting user's access level.\n\n**Example requests**:\n\n \
|
||||
\ GET /api/courses/v1/blocks/<root_block_usage_id>/?depth=all\n GET /api/courses/v1/blocks/<usage_id>/?\n\
|
||||
\ username=anjali\n &depth=all\n &requested_fields=graded,format,student_view_multi_device,lti_url,due\n\
|
||||
\ &block_counts=video\n &student_view_data=video\n &block_types_filter=problem,html\n\
|
||||
\n**Parameters**:\n\n * all_blocks: (boolean) Provide a value of \"true\"\
|
||||
\ to return all\n blocks. Returns all blocks only if the requesting user\
|
||||
\ has course\n staff permissions. Blocks that are visible only to specific\
|
||||
\ learners\n (for example, based on group membership or randomized content)\
|
||||
\ are\n all included. If all_blocks is not specified, you must specify\
|
||||
\ the\n username for the user whose course blocks are requested.\n\n\
|
||||
\ * username: (string) Required, unless ``all_blocks`` is specified.\n\
|
||||
\ Specify the username for the user whose course blocks are requested.\n\
|
||||
\ Only users with course staff permissions can specify other users'\n\
|
||||
\ usernames. If a username is specified, results include blocks that\n\
|
||||
\ are visible to that user, including those based on group or cohort\n\
|
||||
\ membership or randomized content assigned to that user.\n\n Example:\
|
||||
\ username=anjali\n\n * student_view_data: (list) Indicates for which block\
|
||||
\ types to return\n student_view_data.\n\n Example: student_view_data=video\n\
|
||||
\n * block_counts: (list) Indicates for which block types to return the\n\
|
||||
\ aggregate count of the blocks.\n\n Example: block_counts=video,problem\n\
|
||||
\n * requested_fields: (list) Indicates which additional fields to return\n\
|
||||
\ for each block. For a list of available fields see under `Response\n\
|
||||
\ Values -> blocks`, below.\n\n The following fields are always\
|
||||
\ returned: id, type, display_name\n\n Example: requested_fields=graded,format,student_view_multi_device\n\
|
||||
\n * depth: (integer or all) Indicates how deep to traverse into the blocks\n\
|
||||
\ hierarchy. A value of all means the entire hierarchy.\n\n Default\
|
||||
\ is 0\n\n Example: depth=all\n\n * nav_depth: (integer)\n\n \
|
||||
\ WARNING: nav_depth is not supported, and may be removed at any time.\n\n\
|
||||
\ Indicates how far deep to traverse into the\n course hierarchy\
|
||||
\ before bundling all the descendants.\n\n Default is 3 since typical\
|
||||
\ navigational views of the course show a\n maximum of chapter->sequential->vertical.\n\
|
||||
\n Example: nav_depth=3\n\n * return_type (string) Indicates in what\
|
||||
\ data type to return the\n blocks.\n\n Default is dict. Supported\
|
||||
\ values are: dict, list\n\n Example: return_type=dict\n\n * block_types_filter:\
|
||||
\ (list) Requested types of blocks used to filter the final result\n \
|
||||
\ of returned blocks. Possible values include sequential, vertical, html,\
|
||||
\ problem,\n video, and discussion.\n\n Example: block_types_filter=vertical,html\n\
|
||||
\n**Response Values**\n\n The following fields are returned with a successful\
|
||||
\ response.\n\n * root: The ID of the root node of the requested course\
|
||||
\ block\n structure.\n\n * blocks: A dictionary or list, based on\
|
||||
\ the value of the\n \"return_type\" parameter. Maps block usage IDs\
|
||||
\ to a collection of\n information about each block. Each block contains\
|
||||
\ the following\n fields.\n\n * id: (string) The usage ID of the\
|
||||
\ block.\n\n * type: (string) The type of block. Possible values the\
|
||||
\ names of any\n XBlock type in the system, including custom blocks.\
|
||||
\ Examples are\n course, chapter, sequential, vertical, html, problem,\
|
||||
\ video, and\n discussion.\n\n * display_name: (string) The display\
|
||||
\ name of the block.\n\n * children: (list) If the block has child blocks,\
|
||||
\ a list of IDs of\n the child blocks. Returned only if \"children\"\
|
||||
\ is included in the\n \"requested_fields\" parameter.\n\n * completion:\
|
||||
\ (float or None) The level of completion of the block.\n Its value\
|
||||
\ can vary between 0.0 and 1.0 or be equal to None\n if block is not\
|
||||
\ completable. Returned only if \"completion\"\n is included in the\
|
||||
\ \"requested_fields\" parameter.\n\n * block_counts: (dict) For each\
|
||||
\ block type specified in the\n block_counts parameter to the endpoint,\
|
||||
\ the aggregate number of\n blocks of that type for this block and\
|
||||
\ all of its descendants.\n\n * graded (boolean) Whether or not the block\
|
||||
\ or any of its descendants\n is graded. Returned only if \"graded\"\
|
||||
\ is included in the\n \"requested_fields\" parameter.\n\n * format:\
|
||||
\ (string) The assignment type of the block. Possible values\n can\
|
||||
\ be \"Homework\", \"Lab\", \"Midterm Exam\", and \"Final Exam\".\n \
|
||||
\ Returned only if \"format\" is included in the \"requested_fields\"\n \
|
||||
\ parameter.\n\n * student_view_data: (dict) The JSON data for\
|
||||
\ this block.\n Returned only if the \"student_view_data\" input parameter\
|
||||
\ contains\n this block's type.\n\n * student_view_url: (string)\
|
||||
\ The URL to retrieve the HTML rendering\n of this block's student\
|
||||
\ view. The HTML could include CSS and\n Javascript code. This field\
|
||||
\ can be used in combination with the\n student_view_multi_device field\
|
||||
\ to decide whether to display this\n content to the user.\n\n \
|
||||
\ This URL can be used as a fallback if the student_view_data for\n \
|
||||
\ this block type is not supported by the client or the block.\n\n \
|
||||
\ * student_view_multi_device: (boolean) Whether or not the HTML of\n \
|
||||
\ the student view that is rendered at \"student_view_url\" supports\n\
|
||||
\ responsive web layouts, touch-based inputs, and interactive state\n\
|
||||
\ management for a variety of device sizes and types, including\n \
|
||||
\ mobile and touch devices. Returned only if\n \"student_view_multi_device\"\
|
||||
\ is included in the \"requested_fields\"\n parameter.\n\n * lms_web_url:\
|
||||
\ (string) The URL to the navigational container of the\n xBlock on\
|
||||
\ the web LMS. This URL can be used as a further fallback\n if the\
|
||||
\ student_view_url and the student_view_data fields are not\n supported.\n\
|
||||
\n * lti_url: The block URL for an LTI consumer. Returned only if the\n\
|
||||
\ \"ENABLE_LTI_PROVIDER\" Django settign is set to \"True\".\n\n \
|
||||
\ * due: The due date of the block. Returned only if \"due\" is included\n\
|
||||
\ in the \"requested_fields\" parameter.\n\n * show_correctness:\
|
||||
\ Whether to show scores/correctness to learners for the current sequence\
|
||||
\ or problem.\n Returned only if \"show_correctness\" is included in\
|
||||
\ the \"requested_fields\" parameter."
|
||||
parameters:
|
||||
- name: page
|
||||
in: query
|
||||
description: A page number within the paginated result set.
|
||||
required: false
|
||||
type: integer
|
||||
- name: page_size
|
||||
in: query
|
||||
description: Number of results to return per page.
|
||||
required: false
|
||||
type: integer
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- courses
|
||||
parameters:
|
||||
- name: usage_key_string
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
- name: var
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/courses/v1/courses/:
|
||||
get:
|
||||
operationId: courses_v1_courses_list
|
||||
summary: '**Use Cases**'
|
||||
description: "Request information on all courses visible to the specified user.\n\
|
||||
\n**Example Requests**\n\n GET /api/courses/v1/courses/\n\n**Response Values**\n\
|
||||
\n Body comprises a list of objects as returned by `CourseDetailView`.\n\
|
||||
\n**Parameters**\n search_term (optional):\n Search term to filter\
|
||||
\ courses (used by ElasticSearch).\n\n username (optional):\n The\
|
||||
\ username of the specified user whose visible courses we\n want to\
|
||||
\ see. The username is not required only if the API is\n requested\
|
||||
\ by an Anonymous user.\n\n org (optional):\n If specified, visible\
|
||||
\ `CourseOverview` objects are filtered\n such that only those belonging\
|
||||
\ to the organization with the\n provided org code (e.g., \"HarvardX\"\
|
||||
) are returned.\n Case-insensitive.\n\n role (optional):\n \
|
||||
\ If specified, visible `CourseOverview` objects are filtered\n such\
|
||||
\ that only those for which the user has the specified role\n are returned.\
|
||||
\ Multiple role parameters can be specified.\n Case-insensitive.\n\n\
|
||||
**Returns**\n\n * 200 on success, with a list of course discovery objects\
|
||||
\ as returned\n by `CourseDetailView`.\n * 400 if an invalid parameter\
|
||||
\ was sent or the username was not provided\n for an authenticated request.\n\
|
||||
\ * 403 if a user who does not have permission to masquerade as\n \
|
||||
\ another user specifies a username other than their own.\n * 404 if the\
|
||||
\ specified user does not exist, or the requesting user does\n not have\
|
||||
\ permission to view their courses.\n\n Example response:\n\n [\n\
|
||||
\ {\n \"blocks_url\": \"/api/courses/v1/blocks/?course_id=edX%2Fexample%2F2012_Fall\"\
|
||||
,\n \"media\": {\n \"course_image\": {\n \
|
||||
\ \"uri\": \"/c4x/edX/example/asset/just_a_test.jpg\",\n \
|
||||
\ \"name\": \"Course Image\"\n }\n },\n \
|
||||
\ \"description\": \"An example course.\",\n \"end\": \"2015-09-19T18:00:00Z\"\
|
||||
,\n \"enrollment_end\": \"2015-07-15T00:00:00Z\",\n \
|
||||
\ \"enrollment_start\": \"2015-06-15T00:00:00Z\",\n \"course_id\"\
|
||||
: \"edX/example/2012_Fall\",\n \"name\": \"Example Course\",\n\
|
||||
\ \"number\": \"example\",\n \"org\": \"edX\",\n \
|
||||
\ \"start\": \"2015-07-17T12:00:00Z\",\n \"start_display\"\
|
||||
: \"July 17, 2015\",\n \"start_type\": \"timestamp\"\n \
|
||||
\ }\n ]"
|
||||
parameters:
|
||||
- name: page
|
||||
in: query
|
||||
description: A page number within the paginated result set.
|
||||
required: false
|
||||
type: integer
|
||||
- name: page_size
|
||||
in: query
|
||||
description: Number of results to return per page.
|
||||
required: false
|
||||
type: integer
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
schema:
|
||||
required:
|
||||
- count
|
||||
- results
|
||||
type: object
|
||||
properties:
|
||||
count:
|
||||
type: integer
|
||||
next:
|
||||
type: string
|
||||
format: uri
|
||||
x-nullable: true
|
||||
previous:
|
||||
type: string
|
||||
format: uri
|
||||
x-nullable: true
|
||||
results:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/definitions/Course'
|
||||
tags:
|
||||
- courses
|
||||
parameters: []
|
||||
? /courses/v1/courses/(P{course_key_string}[/+]+{var}[/+]+api/courses/v1/courses/(P{course_key_string}[/+]+(/|+)[/+]+{var}[/]+)
|
||||
: get:
|
||||
operationId: courses_v1_courses_+]+api_courses_v1_courses_+]+(_|+)[_]+)_read
|
||||
summary: '**Use Cases**'
|
||||
description: "Request details for a course\n\n**Example Requests**\n\n GET\
|
||||
\ /api/courses/v1/courses/{course_key}/\n\n**Response Values**\n\n Body\
|
||||
\ consists of the following fields:\n\n * effort: A textual description\
|
||||
\ of the weekly hours of effort expected\n in the course.\n * end:\
|
||||
\ Date the course ends, in ISO 8601 notation\n * enrollment_end: Date enrollment\
|
||||
\ ends, in ISO 8601 notation\n * enrollment_start: Date enrollment begins,\
|
||||
\ in ISO 8601 notation\n * id: A unique identifier of the course; a serialized\
|
||||
\ representation\n of the opaque key identifying the course.\n *\
|
||||
\ media: An object that contains named media items. Included here:\n \
|
||||
\ * course_image: An image to show for the course. Represented\n \
|
||||
\ as an object with the following fields:\n * uri: The location\
|
||||
\ of the image\n * name: Name of the course\n * number: Catalog number\
|
||||
\ of the course\n * org: Name of the organization that owns the course\n\
|
||||
\ * overview: A possibly verbose HTML textual description of the course.\n\
|
||||
\ Note: this field is only included in the Course Detail view, not\n\
|
||||
\ the Course List view.\n * short_description: A textual description\
|
||||
\ of the course\n * start: Date the course begins, in ISO 8601 notation\n\
|
||||
\ * start_display: Readably formatted start of the course\n * start_type:\
|
||||
\ Hint describing how `start_display` is set. One of:\n * `\"string\"\
|
||||
`: manually set by the course author\n * `\"timestamp\"`: generated\
|
||||
\ from the `start` timestamp\n * `\"empty\"`: no start date is specified\n\
|
||||
\ * pacing: Course pacing. Possible values: instructor, self\n\n Deprecated\
|
||||
\ fields:\n\n * blocks_url: Used to fetch the course blocks\n * course_id:\
|
||||
\ Course key (use 'id' instead)\n\n**Parameters:**\n\n username (optional):\n\
|
||||
\ The username of the specified user for whom the course data\n \
|
||||
\ is being accessed. The username is not only required if the API is\n\
|
||||
\ requested by an Anonymous user.\n\n**Returns**\n\n * 200 on success\
|
||||
\ with above fields.\n * 400 if an invalid parameter was sent or the username\
|
||||
\ was not provided\n for an authenticated request.\n * 403 if a user\
|
||||
\ who does not have permission to masquerade as\n another user specifies\
|
||||
\ a username other than their own.\n * 404 if the course is not available\
|
||||
\ or cannot be seen.\n\n Example response:\n\n {\n \"\
|
||||
blocks_url\": \"/api/courses/v1/blocks/?course_id=edX%2Fexample%2F2012_Fall\"\
|
||||
,\n \"media\": {\n \"course_image\": {\n \
|
||||
\ \"uri\": \"/c4x/edX/example/asset/just_a_test.jpg\",\n \
|
||||
\ \"name\": \"Course Image\"\n }\n \
|
||||
\ },\n \"description\": \"An example course.\",\n \"\
|
||||
end\": \"2015-09-19T18:00:00Z\",\n \"enrollment_end\": \"2015-07-15T00:00:00Z\"\
|
||||
,\n \"enrollment_start\": \"2015-06-15T00:00:00Z\",\n \
|
||||
\ \"course_id\": \"edX/example/2012_Fall\",\n \"name\": \"Example\
|
||||
\ Course\",\n \"number\": \"example\",\n \"org\": \"\
|
||||
edX\",\n \"overview: \"<p>A verbose description of the course.</p>\"\
|
||||
\n \"start\": \"2015-07-17T12:00:00Z\",\n \"start_display\"\
|
||||
: \"July 17, 2015\",\n \"start_type\": \"timestamp\",\n \
|
||||
\ \"pacing\": \"instructor\"\n }"
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
schema:
|
||||
$ref: '#/definitions/CourseDetail'
|
||||
tags:
|
||||
- courses
|
||||
parameters:
|
||||
- name: course_key_string
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
- name: var
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/courses/v2/blocks/:
|
||||
get:
|
||||
operationId: courses_v2_blocks_list
|
||||
summary: '**Use Case**'
|
||||
description: "Returns the blocks in the course according to the requesting user's\n\
|
||||
\ access level.\n\n**Example requests**:\n\n GET /api/courses/v1/blocks/?course_id=<course_id>\n\
|
||||
\ GET /api/courses/v1/blocks/?course_id=<course_id>\n &username=anjali\n\
|
||||
\ &depth=all\n &requested_fields=graded,format,student_view_multi_device,lti_url\n\
|
||||
\ &block_counts=video\n &student_view_data=video\n &block_types_filter=problem,html\n\
|
||||
\n**Parameters**:\n\n This view redirects to /api/courses/v1/blocks/<root_usage_key>/\
|
||||
\ for the\n root usage key of the course specified by course_id. The view\
|
||||
\ accepts\n all parameters accepted by :class:`BlocksView`, plus the following\n\
|
||||
\ required parameter\n\n * course_id: (string, required) The ID of the\
|
||||
\ course whose block data\n we want to return\n\n**Response Values**\n\
|
||||
\n Responses are identical to those returned by :class:`BlocksView` when\n\
|
||||
\ passed the root_usage_key of the requested course.\n\n If the course_id\
|
||||
\ is not supplied, a 400: Bad Request is returned, with\n a message indicating\
|
||||
\ that course_id is required.\n\n If an invalid course_id is supplied,\
|
||||
\ a 400: Bad Request is returned,\n with a message indicating that the\
|
||||
\ course_id is not valid."
|
||||
parameters:
|
||||
- name: page
|
||||
in: query
|
||||
description: A page number within the paginated result set.
|
||||
required: false
|
||||
type: integer
|
||||
- name: page_size
|
||||
in: query
|
||||
description: Number of results to return per page.
|
||||
required: false
|
||||
type: integer
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- courses
|
||||
parameters: []
|
||||
? /courses/v2/blocks/(P{usage_key_string}{var}|api/courses/v2/blocks/(P{usage_key_string}(:i4x://[/]+/[/]+/[/]+/[@]+(:@[/]+))|{var})
|
||||
: get:
|
||||
operationId: courses_v2_blocks_courses_v2_blocks__[_]+_[_]+_[_]+_[@]+(:@[_read
|
||||
summary: '**Use Case**'
|
||||
description: "Returns the blocks within the requested block tree according to\
|
||||
\ the\n requesting user's access level.\n\n**Example requests**:\n\n \
|
||||
\ GET /api/courses/v1/blocks/<root_block_usage_id>/?depth=all\n GET /api/courses/v1/blocks/<usage_id>/?\n\
|
||||
\ username=anjali\n &depth=all\n &requested_fields=graded,format,student_view_multi_device,lti_url,due\n\
|
||||
\ &block_counts=video\n &student_view_data=video\n &block_types_filter=problem,html\n\
|
||||
\n**Parameters**:\n\n * all_blocks: (boolean) Provide a value of \"true\"\
|
||||
\ to return all\n blocks. Returns all blocks only if the requesting user\
|
||||
\ has course\n staff permissions. Blocks that are visible only to specific\
|
||||
\ learners\n (for example, based on group membership or randomized content)\
|
||||
\ are\n all included. If all_blocks is not specified, you must specify\
|
||||
\ the\n username for the user whose course blocks are requested.\n\n\
|
||||
\ * username: (string) Required, unless ``all_blocks`` is specified.\n\
|
||||
\ Specify the username for the user whose course blocks are requested.\n\
|
||||
\ Only users with course staff permissions can specify other users'\n\
|
||||
\ usernames. If a username is specified, results include blocks that\n\
|
||||
\ are visible to that user, including those based on group or cohort\n\
|
||||
\ membership or randomized content assigned to that user.\n\n Example:\
|
||||
\ username=anjali\n\n * student_view_data: (list) Indicates for which block\
|
||||
\ types to return\n student_view_data.\n\n Example: student_view_data=video\n\
|
||||
\n * block_counts: (list) Indicates for which block types to return the\n\
|
||||
\ aggregate count of the blocks.\n\n Example: block_counts=video,problem\n\
|
||||
\n * requested_fields: (list) Indicates which additional fields to return\n\
|
||||
\ for each block. For a list of available fields see under `Response\n\
|
||||
\ Values -> blocks`, below.\n\n The following fields are always\
|
||||
\ returned: id, type, display_name\n\n Example: requested_fields=graded,format,student_view_multi_device\n\
|
||||
\n * depth: (integer or all) Indicates how deep to traverse into the blocks\n\
|
||||
\ hierarchy. A value of all means the entire hierarchy.\n\n Default\
|
||||
\ is 0\n\n Example: depth=all\n\n * nav_depth: (integer)\n\n \
|
||||
\ WARNING: nav_depth is not supported, and may be removed at any time.\n\n\
|
||||
\ Indicates how far deep to traverse into the\n course hierarchy\
|
||||
\ before bundling all the descendants.\n\n Default is 3 since typical\
|
||||
\ navigational views of the course show a\n maximum of chapter->sequential->vertical.\n\
|
||||
\n Example: nav_depth=3\n\n * return_type (string) Indicates in what\
|
||||
\ data type to return the\n blocks.\n\n Default is dict. Supported\
|
||||
\ values are: dict, list\n\n Example: return_type=dict\n\n * block_types_filter:\
|
||||
\ (list) Requested types of blocks used to filter the final result\n \
|
||||
\ of returned blocks. Possible values include sequential, vertical, html,\
|
||||
\ problem,\n video, and discussion.\n\n Example: block_types_filter=vertical,html\n\
|
||||
\n**Response Values**\n\n The following fields are returned with a successful\
|
||||
\ response.\n\n * root: The ID of the root node of the requested course\
|
||||
\ block\n structure.\n\n * blocks: A dictionary or list, based on\
|
||||
\ the value of the\n \"return_type\" parameter. Maps block usage IDs\
|
||||
\ to a collection of\n information about each block. Each block contains\
|
||||
\ the following\n fields.\n\n * id: (string) The usage ID of the\
|
||||
\ block.\n\n * type: (string) The type of block. Possible values the\
|
||||
\ names of any\n XBlock type in the system, including custom blocks.\
|
||||
\ Examples are\n course, chapter, sequential, vertical, html, problem,\
|
||||
\ video, and\n discussion.\n\n * display_name: (string) The display\
|
||||
\ name of the block.\n\n * children: (list) If the block has child blocks,\
|
||||
\ a list of IDs of\n the child blocks. Returned only if \"children\"\
|
||||
\ is included in the\n \"requested_fields\" parameter.\n\n * completion:\
|
||||
\ (float or None) The level of completion of the block.\n Its value\
|
||||
\ can vary between 0.0 and 1.0 or be equal to None\n if block is not\
|
||||
\ completable. Returned only if \"completion\"\n is included in the\
|
||||
\ \"requested_fields\" parameter.\n\n * block_counts: (dict) For each\
|
||||
\ block type specified in the\n block_counts parameter to the endpoint,\
|
||||
\ the aggregate number of\n blocks of that type for this block and\
|
||||
\ all of its descendants.\n\n * graded (boolean) Whether or not the block\
|
||||
\ or any of its descendants\n is graded. Returned only if \"graded\"\
|
||||
\ is included in the\n \"requested_fields\" parameter.\n\n * format:\
|
||||
\ (string) The assignment type of the block. Possible values\n can\
|
||||
\ be \"Homework\", \"Lab\", \"Midterm Exam\", and \"Final Exam\".\n \
|
||||
\ Returned only if \"format\" is included in the \"requested_fields\"\n \
|
||||
\ parameter.\n\n * student_view_data: (dict) The JSON data for\
|
||||
\ this block.\n Returned only if the \"student_view_data\" input parameter\
|
||||
\ contains\n this block's type.\n\n * student_view_url: (string)\
|
||||
\ The URL to retrieve the HTML rendering\n of this block's student\
|
||||
\ view. The HTML could include CSS and\n Javascript code. This field\
|
||||
\ can be used in combination with the\n student_view_multi_device field\
|
||||
\ to decide whether to display this\n content to the user.\n\n \
|
||||
\ This URL can be used as a fallback if the student_view_data for\n \
|
||||
\ this block type is not supported by the client or the block.\n\n \
|
||||
\ * student_view_multi_device: (boolean) Whether or not the HTML of\n \
|
||||
\ the student view that is rendered at \"student_view_url\" supports\n\
|
||||
\ responsive web layouts, touch-based inputs, and interactive state\n\
|
||||
\ management for a variety of device sizes and types, including\n \
|
||||
\ mobile and touch devices. Returned only if\n \"student_view_multi_device\"\
|
||||
\ is included in the \"requested_fields\"\n parameter.\n\n * lms_web_url:\
|
||||
\ (string) The URL to the navigational container of the\n xBlock on\
|
||||
\ the web LMS. This URL can be used as a further fallback\n if the\
|
||||
\ student_view_url and the student_view_data fields are not\n supported.\n\
|
||||
\n * lti_url: The block URL for an LTI consumer. Returned only if the\n\
|
||||
\ \"ENABLE_LTI_PROVIDER\" Django settign is set to \"True\".\n\n \
|
||||
\ * due: The due date of the block. Returned only if \"due\" is included\n\
|
||||
\ in the \"requested_fields\" parameter.\n\n * show_correctness:\
|
||||
\ Whether to show scores/correctness to learners for the current sequence\
|
||||
\ or problem.\n Returned only if \"show_correctness\" is included in\
|
||||
\ the \"requested_fields\" parameter."
|
||||
parameters:
|
||||
- name: page
|
||||
in: query
|
||||
description: A page number within the paginated result set.
|
||||
required: false
|
||||
type: integer
|
||||
- name: page_size
|
||||
in: query
|
||||
description: Number of results to return per page.
|
||||
required: false
|
||||
type: integer
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- courses
|
||||
parameters:
|
||||
- name: usage_key_string
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
- name: var
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/credit/v1/courses/:
|
||||
get:
|
||||
operationId: credit_v1_courses_list
|
||||
description: CreditCourse endpoints.
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
schema:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/definitions/CreditCourse'
|
||||
tags:
|
||||
- credit
|
||||
post:
|
||||
operationId: credit_v1_courses_create
|
||||
description: CreditCourse endpoints.
|
||||
parameters:
|
||||
- name: data
|
||||
in: body
|
||||
required: true
|
||||
schema:
|
||||
$ref: '#/definitions/CreditCourse'
|
||||
responses:
|
||||
'201':
|
||||
description: ''
|
||||
schema:
|
||||
$ref: '#/definitions/CreditCourse'
|
||||
tags:
|
||||
- credit
|
||||
parameters: []
|
||||
/credit/v1/courses/{course_key}/:
|
||||
get:
|
||||
operationId: credit_v1_courses_read
|
||||
description: CreditCourse endpoints.
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
schema:
|
||||
$ref: '#/definitions/CreditCourse'
|
||||
tags:
|
||||
- credit
|
||||
put:
|
||||
operationId: credit_v1_courses_update
|
||||
description: Create/update course modes for a course.
|
||||
parameters:
|
||||
- name: data
|
||||
in: body
|
||||
required: true
|
||||
schema:
|
||||
$ref: '#/definitions/CreditCourse'
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
schema:
|
||||
$ref: '#/definitions/CreditCourse'
|
||||
tags:
|
||||
- credit
|
||||
patch:
|
||||
operationId: credit_v1_courses_partial_update
|
||||
description: CreditCourse endpoints.
|
||||
parameters:
|
||||
- name: data
|
||||
in: body
|
||||
required: true
|
||||
schema:
|
||||
$ref: '#/definitions/CreditCourse'
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
schema:
|
||||
$ref: '#/definitions/CreditCourse'
|
||||
tags:
|
||||
- credit
|
||||
parameters:
|
||||
- name: course_key
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
pattern: (?:[^/+]+(/|\+)[^/+]+(/|\+)[^/?]+)
|
||||
/credit/v1/eligibility/:
|
||||
get:
|
||||
operationId: credit_v1_eligibility_list
|
||||
description: Returns eligibility for a user-course combination.
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
schema:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/definitions/CreditEligibility'
|
||||
tags:
|
||||
- credit
|
||||
parameters: []
|
||||
/credit/v1/providers/:
|
||||
get:
|
||||
operationId: credit_v1_providers_list
|
||||
description: Credit provider endpoints.
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
schema:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/definitions/CreditProvider'
|
||||
tags:
|
||||
- credit
|
||||
parameters: []
|
||||
/credit/v1/providers/{provider_id}/:
|
||||
get:
|
||||
operationId: credit_v1_providers_read
|
||||
description: Credit provider endpoints.
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
schema:
|
||||
$ref: '#/definitions/CreditProvider'
|
||||
tags:
|
||||
- credit
|
||||
parameters:
|
||||
- name: provider_id
|
||||
in: path
|
||||
description: Unique identifier for this credit provider. Only alphanumeric
|
||||
characters and hyphens (-) are allowed. The identifier is case-sensitive.
|
||||
required: true
|
||||
type: string
|
||||
pattern: '[a-z,A-Z,0-9,\-]+'
|
||||
/credit/v1/providers/{provider_id}/callback/:
|
||||
post:
|
||||
operationId: credit_v1_providers_callback_create
|
||||
description: POST handler.
|
||||
parameters: []
|
||||
responses:
|
||||
'201':
|
||||
description: ''
|
||||
tags:
|
||||
- credit
|
||||
parameters:
|
||||
- name: provider_id
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/credit/v1/providers/{provider_id}/request/:
|
||||
post:
|
||||
operationId: credit_v1_providers_request_create
|
||||
description: POST handler.
|
||||
parameters: []
|
||||
responses:
|
||||
'201':
|
||||
description: ''
|
||||
tags:
|
||||
- credit
|
||||
parameters:
|
||||
- name: provider_id
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/discounts/course/(P{course_key_string}[/+]+{var}[/+]+api/discounts/course/(P{course_key_string}[/+]+(/|+)[/+]+{var}[/]+):
|
||||
get:
|
||||
operationId: discounts_course_+]+api_discounts_course_+]+(_|+)[_]+)_list
|
||||
description: Return the discount percent, if the user has appropriate permissions.
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- discounts
|
||||
parameters:
|
||||
- name: course_key_string
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
- name: var
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
? /discounts/user/{user_id}/course/(P{course_key_string}[/+]+{var}[/+]+api/discounts/user/{user_id}/course/(P{course_key_string}[/+]+(/|+)[/+]+{var}[/]+)
|
||||
: get:
|
||||
operationId: discounts_user_course_+]+api_discounts_user_course_+]+(_|+)[_]+)_list
|
||||
description: Return the discount percent, if the user has appropriate permissions.
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- discounts
|
||||
parameters:
|
||||
- name: course_key_string
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
- name: user_id
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
- name: var
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/discussion/v1/accounts/replace_username:
|
||||
post:
|
||||
operationId: discussion_v1_accounts_replace_username_create
|
||||
description: Implements the username replacement endpoint
|
||||
parameters: []
|
||||
responses:
|
||||
'201':
|
||||
description: ''
|
||||
tags:
|
||||
- discussion
|
||||
parameters: []
|
||||
/discussion/v1/accounts/retire_forum:
|
||||
post:
|
||||
operationId: discussion_v1_accounts_retire_forum_create
|
||||
description: Implements the retirement endpoint.
|
||||
parameters: []
|
||||
responses:
|
||||
'201':
|
||||
description: ''
|
||||
tags:
|
||||
- discussion
|
||||
parameters: []
|
||||
/discussion/v1/comments/:
|
||||
get:
|
||||
operationId: discussion_v1_comments_list
|
||||
description: "Implements the GET method for the list endpoint as described in\
|
||||
\ the\nclass docstring."
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
consumes:
|
||||
- application/json
|
||||
- application/merge-patch+json
|
||||
tags:
|
||||
- discussion
|
||||
post:
|
||||
operationId: discussion_v1_comments_create
|
||||
description: "Implements the POST method for the list endpoint as described\
|
||||
\ in the\nclass docstring."
|
||||
parameters: []
|
||||
responses:
|
||||
'201':
|
||||
description: ''
|
||||
consumes:
|
||||
- application/json
|
||||
- application/merge-patch+json
|
||||
tags:
|
||||
- discussion
|
||||
parameters: []
|
||||
/discussion/v1/comments/{comment_id}/:
|
||||
get:
|
||||
operationId: discussion_v1_comments_read
|
||||
description: Implements the GET method for comments against response ID
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
consumes:
|
||||
- application/json
|
||||
- application/merge-patch+json
|
||||
tags:
|
||||
- discussion
|
||||
patch:
|
||||
operationId: discussion_v1_comments_partial_update
|
||||
description: "Implements the PATCH method for the instance endpoint as described\
|
||||
\ in\nthe class docstring."
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
consumes:
|
||||
- application/json
|
||||
- application/merge-patch+json
|
||||
tags:
|
||||
- discussion
|
||||
delete:
|
||||
operationId: discussion_v1_comments_delete
|
||||
description: "Implements the DELETE method for the instance endpoint as described\
|
||||
\ in\nthe class docstring"
|
||||
parameters: []
|
||||
responses:
|
||||
'204':
|
||||
description: ''
|
||||
consumes:
|
||||
- application/json
|
||||
- application/merge-patch+json
|
||||
tags:
|
||||
- discussion
|
||||
parameters:
|
||||
- name: comment_id
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
? /discussion/v1/course_topics/(P{course_id}[/+]+{var}[/+]+api/discussion/v1/course_topics/(P{course_id}[/+]+(/|+)[/+]+{var}[/]+)
|
||||
: get:
|
||||
operationId: discussion_v1_course_topics_+]+api_discussion_v1_course_topics_+]+(_|+)[_]+)_list
|
||||
description: Implements the GET method as described in the class docstring.
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- discussion
|
||||
parameters:
|
||||
- name: course_id
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
- name: var
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/discussion/v1/courses/(P{course_id}[/+]+{var}[/+]+api/discussion/v1/courses/(P{course_id}[/+]+(/|+)[/+]+{var}[/]+):
|
||||
get:
|
||||
operationId: discussion_v1_courses_+]+api_discussion_v1_courses_+]+(_|+)[_]+)_list
|
||||
description: Implements the GET method as described in the class docstring.
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- discussion
|
||||
parameters:
|
||||
- name: course_id
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
- name: var
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/discussion/v1/courses/{course_id}/roles/{rolename}/:
|
||||
get:
|
||||
operationId: discussion_v1_courses_roles_read
|
||||
description: Implement a handler for the GET method.
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- discussion
|
||||
post:
|
||||
operationId: discussion_v1_courses_roles_create
|
||||
description: Implement a handler for the POST method.
|
||||
parameters: []
|
||||
responses:
|
||||
'201':
|
||||
description: ''
|
||||
tags:
|
||||
- discussion
|
||||
parameters:
|
||||
- name: course_id
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
- name: rolename
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/discussion/v1/courses/{course_id}/settings:
|
||||
get:
|
||||
operationId: discussion_v1_courses_settings_list
|
||||
description: Implement a handler for the GET method.
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
consumes:
|
||||
- application/json
|
||||
- application/merge-patch+json
|
||||
tags:
|
||||
- discussion
|
||||
patch:
|
||||
operationId: discussion_v1_courses_settings_partial_update
|
||||
description: Implement a handler for the PATCH method.
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
consumes:
|
||||
- application/json
|
||||
- application/merge-patch+json
|
||||
tags:
|
||||
- discussion
|
||||
parameters:
|
||||
- name: course_id
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/discussion/v1/threads/:
|
||||
get:
|
||||
operationId: discussion_v1_threads_list
|
||||
description: "Implements the GET method for the list endpoint as described in\
|
||||
\ the\nclass docstring."
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
consumes:
|
||||
- application/json
|
||||
- application/merge-patch+json
|
||||
tags:
|
||||
- discussion
|
||||
post:
|
||||
operationId: discussion_v1_threads_create
|
||||
description: "Implements the POST method for the list endpoint as described\
|
||||
\ in the\nclass docstring."
|
||||
parameters: []
|
||||
responses:
|
||||
'201':
|
||||
description: ''
|
||||
consumes:
|
||||
- application/json
|
||||
- application/merge-patch+json
|
||||
tags:
|
||||
- discussion
|
||||
parameters: []
|
||||
/discussion/v1/threads/{thread_id}/:
|
||||
get:
|
||||
operationId: discussion_v1_threads_read
|
||||
description: Implements the GET method for thread ID
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
consumes:
|
||||
- application/json
|
||||
- application/merge-patch+json
|
||||
tags:
|
||||
- discussion
|
||||
patch:
|
||||
operationId: discussion_v1_threads_partial_update
|
||||
description: "Implements the PATCH method for the instance endpoint as described\
|
||||
\ in\nthe class docstring."
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
consumes:
|
||||
- application/json
|
||||
- application/merge-patch+json
|
||||
tags:
|
||||
- discussion
|
||||
delete:
|
||||
operationId: discussion_v1_threads_delete
|
||||
description: "Implements the DELETE method for the instance endpoint as described\
|
||||
\ in\nthe class docstring"
|
||||
parameters: []
|
||||
responses:
|
||||
'204':
|
||||
description: ''
|
||||
consumes:
|
||||
- application/json
|
||||
- application/merge-patch+json
|
||||
tags:
|
||||
- discussion
|
||||
parameters:
|
||||
- name: thread_id
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/edx_proctoring/proctoring_review_callback/:
|
||||
post:
|
||||
operationId: edx_proctoring_proctoring_review_callback_create
|
||||
description: Post callback handler
|
||||
parameters: []
|
||||
responses:
|
||||
'201':
|
||||
description: ''
|
||||
tags:
|
||||
- edx_proctoring
|
||||
parameters: []
|
||||
/edx_proctoring/v1/instructor/{course_id}:
|
||||
get:
|
||||
operationId: edx_proctoring_v1_instructor_read
|
||||
description: Redirect to dashboard for a given course and optional exam_id
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- edx_proctoring
|
||||
parameters:
|
||||
- name: course_id
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/edx_proctoring/v1/instructor/{course_id}/{exam_id}:
|
||||
get:
|
||||
operationId: edx_proctoring_v1_instructor_read
|
||||
description: Redirect to dashboard for a given course and optional exam_id
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- edx_proctoring
|
||||
parameters:
|
||||
- name: course_id
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
- name: exam_id
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/edx_proctoring/v1/proctored_exam/active_exams_for_user:
|
||||
get:
|
||||
operationId: edx_proctoring_v1_proctored_exam_active_exams_for_user_list
|
||||
description: returns the get_active_exams_for_user
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- edx_proctoring
|
||||
parameters: []
|
||||
/edx_proctoring/v1/proctored_exam/allowance:
|
||||
get:
|
||||
operationId: edx_proctoring_v1_proctored_exam_allowance_list
|
||||
description: "HTTP GET handler. Get all allowances for a course.\nCourse and\
|
||||
\ Global staff can view both timed and proctored exam allowances."
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- edx_proctoring
|
||||
put:
|
||||
operationId: edx_proctoring_v1_proctored_exam_allowance_update
|
||||
description: HTTP GET handler. Adds or updates Allowance
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- edx_proctoring
|
||||
delete:
|
||||
operationId: edx_proctoring_v1_proctored_exam_allowance_delete
|
||||
description: HTTP DELETE handler. Removes Allowance.
|
||||
parameters: []
|
||||
responses:
|
||||
'204':
|
||||
description: ''
|
||||
tags:
|
||||
- edx_proctoring
|
||||
parameters: []
|
||||
/edx_proctoring/v1/proctored_exam/attempt:
|
||||
get:
|
||||
operationId: edx_proctoring_v1_proctored_exam_attempt_list
|
||||
description: HTTP GET Handler. Returns the status of the exam attempt.
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- edx_proctoring
|
||||
post:
|
||||
operationId: edx_proctoring_v1_proctored_exam_attempt_create
|
||||
description: HTTP POST handler. To create an exam attempt.
|
||||
parameters: []
|
||||
responses:
|
||||
'201':
|
||||
description: ''
|
||||
tags:
|
||||
- edx_proctoring
|
||||
parameters: []
|
||||
/edx_proctoring/v1/proctored_exam/attempt/course_id/{course_id}:
|
||||
get:
|
||||
operationId: edx_proctoring_v1_proctored_exam_attempt_course_id_read
|
||||
description: "HTTP GET Handler. Returns the status of the exam attempt.\nCourse\
|
||||
\ and Global staff can view both timed and proctored exam attempts."
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- edx_proctoring
|
||||
parameters:
|
||||
- name: course_id
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/edx_proctoring/v1/proctored_exam/attempt/course_id/{course_id}/search/{search_by}:
|
||||
get:
|
||||
operationId: edx_proctoring_v1_proctored_exam_attempt_course_id_search_read
|
||||
description: "HTTP GET Handler. Returns the status of the exam attempt.\nCourse\
|
||||
\ and Global staff can view both timed and proctored exam attempts."
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- edx_proctoring
|
||||
parameters:
|
||||
- name: course_id
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
- name: search_by
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/edx_proctoring/v1/proctored_exam/attempt/{attempt_id}:
|
||||
get:
|
||||
operationId: edx_proctoring_v1_proctored_exam_attempt_read
|
||||
description: HTTP GET Handler. Returns the status of the exam attempt.
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- edx_proctoring
|
||||
put:
|
||||
operationId: edx_proctoring_v1_proctored_exam_attempt_update
|
||||
description: HTTP POST handler. To stop an exam.
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- edx_proctoring
|
||||
delete:
|
||||
operationId: edx_proctoring_v1_proctored_exam_attempt_delete
|
||||
description: HTTP DELETE handler. Removes an exam attempt.
|
||||
parameters: []
|
||||
responses:
|
||||
'204':
|
||||
description: ''
|
||||
tags:
|
||||
- edx_proctoring
|
||||
parameters:
|
||||
- name: attempt_id
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/edx_proctoring/v1/proctored_exam/attempt/{attempt_id}/review_status:
|
||||
put:
|
||||
operationId: edx_proctoring_v1_proctored_exam_attempt_review_status_update
|
||||
description: Update the is_status_acknowledge flag for the specific attempt
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- edx_proctoring
|
||||
parameters:
|
||||
- name: attempt_id
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/edx_proctoring/v1/proctored_exam/attempt/{external_id}/ready:
|
||||
post:
|
||||
operationId: edx_proctoring_v1_proctored_exam_attempt_ready_create
|
||||
description: Post callback handler
|
||||
parameters: []
|
||||
responses:
|
||||
'201':
|
||||
description: ''
|
||||
tags:
|
||||
- edx_proctoring
|
||||
parameters:
|
||||
- name: external_id
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/edx_proctoring/v1/proctored_exam/attempt/{external_id}/reviewed:
|
||||
post:
|
||||
operationId: edx_proctoring_v1_proctored_exam_attempt_reviewed_create
|
||||
description: "Called when 3rd party proctoring service has finished its review\
|
||||
\ of\nan attempt."
|
||||
parameters: []
|
||||
responses:
|
||||
'201':
|
||||
description: ''
|
||||
tags:
|
||||
- edx_proctoring
|
||||
parameters:
|
||||
- name: external_id
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/edx_proctoring/v1/proctored_exam/exam:
|
||||
get:
|
||||
operationId: edx_proctoring_v1_proctored_exam_exam_list
|
||||
description: "HTTP GET handler.\n Scenarios:\n by exam_id: calls get_exam_by_id()\n\
|
||||
\ by course_id, content_id: get_exam_by_content_id()"
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- edx_proctoring
|
||||
post:
|
||||
operationId: edx_proctoring_v1_proctored_exam_exam_create
|
||||
description: Http POST handler. Creates an exam.
|
||||
parameters: []
|
||||
responses:
|
||||
'201':
|
||||
description: ''
|
||||
tags:
|
||||
- edx_proctoring
|
||||
put:
|
||||
operationId: edx_proctoring_v1_proctored_exam_exam_update
|
||||
description: "HTTP PUT handler. To update an exam.\ncalls the update_exam"
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- edx_proctoring
|
||||
parameters: []
|
||||
/edx_proctoring/v1/proctored_exam/exam/course_id/{course_id}:
|
||||
get:
|
||||
operationId: edx_proctoring_v1_proctored_exam_exam_course_id_read
|
||||
description: "HTTP GET handler.\n Scenarios:\n by exam_id: calls get_exam_by_id()\n\
|
||||
\ by course_id, content_id: get_exam_by_content_id()"
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- edx_proctoring
|
||||
post:
|
||||
operationId: edx_proctoring_v1_proctored_exam_exam_course_id_create
|
||||
description: Http POST handler. Creates an exam.
|
||||
parameters: []
|
||||
responses:
|
||||
'201':
|
||||
description: ''
|
||||
tags:
|
||||
- edx_proctoring
|
||||
put:
|
||||
operationId: edx_proctoring_v1_proctored_exam_exam_course_id_update
|
||||
description: "HTTP PUT handler. To update an exam.\ncalls the update_exam"
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- edx_proctoring
|
||||
parameters:
|
||||
- name: course_id
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/edx_proctoring/v1/proctored_exam/exam/course_id/{course_id}/content_id/{content_id}:
|
||||
get:
|
||||
operationId: edx_proctoring_v1_proctored_exam_exam_course_id_content_id_read
|
||||
description: "HTTP GET handler.\n Scenarios:\n by exam_id: calls get_exam_by_id()\n\
|
||||
\ by course_id, content_id: get_exam_by_content_id()"
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- edx_proctoring
|
||||
post:
|
||||
operationId: edx_proctoring_v1_proctored_exam_exam_course_id_content_id_create
|
||||
description: Http POST handler. Creates an exam.
|
||||
parameters: []
|
||||
responses:
|
||||
'201':
|
||||
description: ''
|
||||
tags:
|
||||
- edx_proctoring
|
||||
put:
|
||||
operationId: edx_proctoring_v1_proctored_exam_exam_course_id_content_id_update
|
||||
description: "HTTP PUT handler. To update an exam.\ncalls the update_exam"
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- edx_proctoring
|
||||
parameters:
|
||||
- name: content_id
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
- name: course_id
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/edx_proctoring/v1/proctored_exam/exam/exam_id/{exam_id}:
|
||||
get:
|
||||
operationId: edx_proctoring_v1_proctored_exam_exam_exam_id_read
|
||||
description: "HTTP GET handler.\n Scenarios:\n by exam_id: calls get_exam_by_id()\n\
|
||||
\ by course_id, content_id: get_exam_by_content_id()"
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- edx_proctoring
|
||||
post:
|
||||
operationId: edx_proctoring_v1_proctored_exam_exam_exam_id_create
|
||||
description: Http POST handler. Creates an exam.
|
||||
parameters: []
|
||||
responses:
|
||||
'201':
|
||||
description: ''
|
||||
tags:
|
||||
- edx_proctoring
|
||||
put:
|
||||
operationId: edx_proctoring_v1_proctored_exam_exam_exam_id_update
|
||||
description: "HTTP PUT handler. To update an exam.\ncalls the update_exam"
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- edx_proctoring
|
||||
parameters:
|
||||
- name: exam_id
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/edx_proctoring/v1/proctored_exam/{course_id}/allowance:
|
||||
get:
|
||||
operationId: edx_proctoring_v1_proctored_exam_allowance_list
|
||||
description: "HTTP GET handler. Get all allowances for a course.\nCourse and\
|
||||
\ Global staff can view both timed and proctored exam allowances."
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- edx_proctoring
|
||||
put:
|
||||
operationId: edx_proctoring_v1_proctored_exam_allowance_update
|
||||
description: HTTP GET handler. Adds or updates Allowance
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- edx_proctoring
|
||||
delete:
|
||||
operationId: edx_proctoring_v1_proctored_exam_allowance_delete
|
||||
description: HTTP DELETE handler. Removes Allowance.
|
||||
parameters: []
|
||||
responses:
|
||||
'204':
|
||||
description: ''
|
||||
tags:
|
||||
- edx_proctoring
|
||||
parameters:
|
||||
- name: course_id
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/edx_proctoring/v1/retire_backend_user/{user_id}/:
|
||||
post:
|
||||
operationId: edx_proctoring_v1_retire_backend_user_create
|
||||
description: "Deletes all user data for the particular user_id\nfrom all configured\
|
||||
\ backends"
|
||||
parameters: []
|
||||
responses:
|
||||
'201':
|
||||
description: ''
|
||||
tags:
|
||||
- edx_proctoring
|
||||
parameters:
|
||||
- name: user_id
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/edxnotes/v1/retire_user/:
|
||||
post:
|
||||
operationId: edxnotes_v1_retire_user_create
|
||||
description: Implements the retirement endpoint.
|
||||
parameters: []
|
||||
responses:
|
||||
'201':
|
||||
description: ''
|
||||
tags:
|
||||
- edxnotes
|
||||
parameters: []
|
||||
/embargo/v1/course_access/:
|
||||
get:
|
||||
operationId: embargo_v1_course_access_list
|
||||
summary: GET /api/embargo/v1/course_access/
|
||||
description: "Arguments:\n request (HttpRequest)\n\nReturn:\n Response:\
|
||||
\ True or False depending on the check."
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- embargo
|
||||
parameters: []
|
||||
/enrollment/v1/course/{course_id}:
|
||||
get:
|
||||
operationId: enrollment_v1_course_read
|
||||
summary: Read enrollment information for a particular course.
|
||||
description: "HTTP Endpoint for retrieving course level enrollment information.\n\
|
||||
\nArgs:\n request (Request): To get current course enrollment information,\
|
||||
\ a GET request will return\n information for the specified course.\n\
|
||||
\ course_id (str): URI element specifying the course location. Enrollment\
|
||||
\ information will be\n returned.\n\nReturn:\n A JSON serialized\
|
||||
\ representation of the course enrollment details."
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- enrollment
|
||||
parameters:
|
||||
- name: course_id
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/enrollment/v1/enrollment:
|
||||
get:
|
||||
operationId: enrollment_v1_enrollment_list
|
||||
summary: Gets a list of all course enrollments for a user.
|
||||
description: "Returns a list for the currently logged in user, or for the user\
|
||||
\ named by the 'user' GET\nparameter. If the username does not match that\
|
||||
\ of the currently logged in user, only\ncourses for which the currently logged\
|
||||
\ in user has the Staff or Admin role are listed.\nAs a result, a course team\
|
||||
\ member can find out which of his or her own courses a particular\nlearner\
|
||||
\ is enrolled in.\n\nOnly the Staff or Admin role (granted on the Django administrative\
|
||||
\ console as the staff\nor instructor permission) in individual courses gives\
|
||||
\ the requesting user access to\nenrollment data. Permissions granted at the\
|
||||
\ organizational level do not give a user\naccess to enrollment data for all\
|
||||
\ of that organization's courses.\n\nUsers who have the global staff permission\
|
||||
\ can access all enrollment data for all\ncourses."
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- enrollment
|
||||
post:
|
||||
operationId: enrollment_v1_enrollment_create
|
||||
summary: Enrolls the currently logged-in user in a course.
|
||||
description: "Server-to-server calls may deactivate or modify the mode of existing\
|
||||
\ enrollments. All other requests\ngo through `add_enrollment()`, which allows\
|
||||
\ creation of new and reactivation of old enrollments."
|
||||
parameters: []
|
||||
responses:
|
||||
'201':
|
||||
description: ''
|
||||
tags:
|
||||
- enrollment
|
||||
parameters: []
|
||||
/enrollment/v1/enrollment/{course_id}:
|
||||
get:
|
||||
operationId: enrollment_v1_enrollment_read
|
||||
summary: Create, read, or update enrollment information for a user.
|
||||
description: "HTTP Endpoint for all CRUD operations for a user course enrollment.\
|
||||
\ Allows creation, reading, and\nupdates of the current enrollment for a particular\
|
||||
\ course.\n\nArgs:\n request (Request): To get current course enrollment\
|
||||
\ information, a GET request will return\n information for the current\
|
||||
\ user and the specified course.\n course_id (str): URI element specifying\
|
||||
\ the course location. Enrollment information will be\n returned, created,\
|
||||
\ or updated for this particular course.\n username (str): The username\
|
||||
\ associated with this enrollment request.\n\nReturn:\n A JSON serialized\
|
||||
\ representation of the course enrollment."
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- enrollment
|
||||
parameters:
|
||||
- name: course_id
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/enrollment/v1/enrollment/{username},{course_id}:
|
||||
get:
|
||||
operationId: enrollment_v1_enrollment_read
|
||||
summary: Create, read, or update enrollment information for a user.
|
||||
description: "HTTP Endpoint for all CRUD operations for a user course enrollment.\
|
||||
\ Allows creation, reading, and\nupdates of the current enrollment for a particular\
|
||||
\ course.\n\nArgs:\n request (Request): To get current course enrollment\
|
||||
\ information, a GET request will return\n information for the current\
|
||||
\ user and the specified course.\n course_id (str): URI element specifying\
|
||||
\ the course location. Enrollment information will be\n returned, created,\
|
||||
\ or updated for this particular course.\n username (str): The username\
|
||||
\ associated with this enrollment request.\n\nReturn:\n A JSON serialized\
|
||||
\ representation of the course enrollment."
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- enrollment
|
||||
parameters:
|
||||
- name: course_id
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
- name: username
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/enrollment/v1/enrollments/:
|
||||
get:
|
||||
operationId: enrollment_v1_enrollments_list
|
||||
summary: '**Use Cases**'
|
||||
description: "Get a list of all course enrollments, optionally filtered by a\
|
||||
\ course ID or list of usernames.\n\n**Example Requests**\n\n GET /api/enrollment/v1/enrollments\n\
|
||||
\n GET /api/enrollment/v1/enrollments?course_id={course_id}\n\n GET\
|
||||
\ /api/enrollment/v1/enrollments?username={username},{username},{username}\n\
|
||||
\n GET /api/enrollment/v1/enrollments?course_id={course_id}&username={username}\n\
|
||||
\n**Query Parameters for GET**\n\n * course_id: Filters the result to course\
|
||||
\ enrollments for the course corresponding to the\n given course ID.\
|
||||
\ The value must be URL encoded. Optional.\n\n * username: List of comma-separated\
|
||||
\ usernames. Filters the result to the course enrollments\n of the given\
|
||||
\ users. Optional.\n\n * page_size: Number of results to return per page.\
|
||||
\ Optional.\n\n * page: Page number to retrieve. Optional.\n\n**Response\
|
||||
\ Values**\n\n If the request for information about the course enrollments\
|
||||
\ is successful, an HTTP 200 \"OK\" response\n is returned.\n\n The\
|
||||
\ HTTP 200 response has the following values.\n\n * results: A list of\
|
||||
\ the course enrollments matching the request.\n\n * created: Date\
|
||||
\ and time when the course enrollment was created.\n\n * mode: Mode\
|
||||
\ for the course enrollment.\n\n * is_active: Whether the course enrollment\
|
||||
\ is active or not.\n\n * user: Username of the user in the course\
|
||||
\ enrollment.\n\n * course_id: Course ID of the course in the course\
|
||||
\ enrollment.\n\n * next: The URL to the next page of results, or null\
|
||||
\ if this is the\n last page.\n\n * previous: The URL to the next\
|
||||
\ page of results, or null if this\n is the first page.\n\n If the\
|
||||
\ user is not logged in, a 401 error is returned.\n\n If the user is not\
|
||||
\ global staff, a 403 error is returned.\n\n If the specified course_id\
|
||||
\ is not valid or any of the specified usernames\n are not valid, a 400\
|
||||
\ error is returned.\n\n If the specified course_id does not correspond\
|
||||
\ to a valid course or if all the specified\n usernames do not correspond\
|
||||
\ to valid users, an HTTP 200 \"OK\" response is returned with an\n empty\
|
||||
\ 'results' field."
|
||||
parameters:
|
||||
- name: cursor
|
||||
in: query
|
||||
description: The pagination cursor value.
|
||||
required: false
|
||||
type: string
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
schema:
|
||||
required:
|
||||
- results
|
||||
type: object
|
||||
properties:
|
||||
next:
|
||||
type: string
|
||||
format: uri
|
||||
x-nullable: true
|
||||
previous:
|
||||
type: string
|
||||
format: uri
|
||||
x-nullable: true
|
||||
results:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/definitions/CourseEnrollmentsApiList'
|
||||
tags:
|
||||
- enrollment
|
||||
parameters: []
|
||||
/enrollment/v1/roles/:
|
||||
get:
|
||||
operationId: enrollment_v1_roles_list
|
||||
description: Gets a list of all roles for the currently logged-in user, filtered
|
||||
by course_id if supplied
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- enrollment
|
||||
parameters: []
|
||||
/enrollment/v1/unenroll/:
|
||||
post:
|
||||
operationId: enrollment_v1_unenroll_create
|
||||
description: Unenrolls the specified user from all courses.
|
||||
parameters: []
|
||||
responses:
|
||||
'201':
|
||||
description: ''
|
||||
tags:
|
||||
- enrollment
|
||||
parameters: []
|
||||
/entitlements/v1/entitlements/:
|
||||
get:
|
||||
operationId: entitlements_v1_entitlements_list
|
||||
description: "Override the list method to expire records that are past the\n\
|
||||
policy and requested via the API before returning those records."
|
||||
parameters:
|
||||
- name: uuid
|
||||
in: query
|
||||
description: ''
|
||||
required: false
|
||||
type: string
|
||||
- name: user
|
||||
in: query
|
||||
description: ''
|
||||
required: false
|
||||
type: string
|
||||
- name: page
|
||||
in: query
|
||||
description: A page number within the paginated result set.
|
||||
required: false
|
||||
type: integer
|
||||
- name: page_size
|
||||
in: query
|
||||
description: Number of results to return per page.
|
||||
required: false
|
||||
type: integer
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
schema:
|
||||
required:
|
||||
- count
|
||||
- results
|
||||
type: object
|
||||
properties:
|
||||
count:
|
||||
type: integer
|
||||
next:
|
||||
type: string
|
||||
format: uri
|
||||
x-nullable: true
|
||||
previous:
|
||||
type: string
|
||||
format: uri
|
||||
x-nullable: true
|
||||
results:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/definitions/CourseEntitlement'
|
||||
tags:
|
||||
- entitlements
|
||||
post:
|
||||
operationId: entitlements_v1_entitlements_create
|
||||
description: ''
|
||||
parameters:
|
||||
- name: data
|
||||
in: body
|
||||
required: true
|
||||
schema:
|
||||
$ref: '#/definitions/CourseEntitlement'
|
||||
responses:
|
||||
'201':
|
||||
description: ''
|
||||
schema:
|
||||
$ref: '#/definitions/CourseEntitlement'
|
||||
tags:
|
||||
- entitlements
|
||||
parameters: []
|
||||
/entitlements/v1/entitlements/{uuid}/:
|
||||
get:
|
||||
operationId: entitlements_v1_entitlements_read
|
||||
description: "Override the retrieve method to expire a record that is past the\n\
|
||||
policy and is requested via the API before returning that record."
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
schema:
|
||||
$ref: '#/definitions/CourseEntitlement'
|
||||
tags:
|
||||
- entitlements
|
||||
put:
|
||||
operationId: entitlements_v1_entitlements_update
|
||||
description: ''
|
||||
parameters:
|
||||
- name: data
|
||||
in: body
|
||||
required: true
|
||||
schema:
|
||||
$ref: '#/definitions/CourseEntitlement'
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
schema:
|
||||
$ref: '#/definitions/CourseEntitlement'
|
||||
tags:
|
||||
- entitlements
|
||||
patch:
|
||||
operationId: entitlements_v1_entitlements_partial_update
|
||||
description: ''
|
||||
parameters:
|
||||
- name: data
|
||||
in: body
|
||||
required: true
|
||||
schema:
|
||||
$ref: '#/definitions/CourseEntitlement'
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
schema:
|
||||
$ref: '#/definitions/CourseEntitlement'
|
||||
tags:
|
||||
- entitlements
|
||||
delete:
|
||||
operationId: entitlements_v1_entitlements_delete
|
||||
description: ''
|
||||
parameters: []
|
||||
responses:
|
||||
'204':
|
||||
description: ''
|
||||
tags:
|
||||
- entitlements
|
||||
parameters:
|
||||
- name: uuid
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
pattern: '[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}'
|
||||
/experiments/v0/data/:
|
||||
get:
|
||||
operationId: experiments_v0_data_list
|
||||
description: ''
|
||||
parameters:
|
||||
- name: experiment_id
|
||||
in: query
|
||||
description: ''
|
||||
required: false
|
||||
type: number
|
||||
- name: key
|
||||
in: query
|
||||
description: ''
|
||||
required: false
|
||||
type: string
|
||||
- name: page
|
||||
in: query
|
||||
description: A page number within the paginated result set.
|
||||
required: false
|
||||
type: integer
|
||||
- name: page_size
|
||||
in: query
|
||||
description: Number of results to return per page.
|
||||
required: false
|
||||
type: integer
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
schema:
|
||||
required:
|
||||
- count
|
||||
- results
|
||||
type: object
|
||||
properties:
|
||||
count:
|
||||
type: integer
|
||||
next:
|
||||
type: string
|
||||
format: uri
|
||||
x-nullable: true
|
||||
previous:
|
||||
type: string
|
||||
format: uri
|
||||
x-nullable: true
|
||||
results:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/definitions/ExperimentData'
|
||||
tags:
|
||||
- experiments
|
||||
post:
|
||||
operationId: experiments_v0_data_create
|
||||
description: ''
|
||||
parameters:
|
||||
- name: data
|
||||
in: body
|
||||
required: true
|
||||
schema:
|
||||
$ref: '#/definitions/ExperimentDataCreate'
|
||||
responses:
|
||||
'201':
|
||||
description: ''
|
||||
schema:
|
||||
$ref: '#/definitions/ExperimentDataCreate'
|
||||
tags:
|
||||
- experiments
|
||||
put:
|
||||
operationId: experiments_v0_data_update
|
||||
description: ''
|
||||
parameters:
|
||||
- name: data
|
||||
in: body
|
||||
required: true
|
||||
schema:
|
||||
$ref: '#/definitions/ExperimentData'
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
schema:
|
||||
$ref: '#/definitions/ExperimentData'
|
||||
tags:
|
||||
- experiments
|
||||
parameters: []
|
||||
/experiments/v0/data/bulk_upsert/:
|
||||
put:
|
||||
operationId: experiments_v0_data_bulk_upsert
|
||||
description: ''
|
||||
parameters:
|
||||
- name: data
|
||||
in: body
|
||||
required: true
|
||||
schema:
|
||||
$ref: '#/definitions/ExperimentData'
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
schema:
|
||||
$ref: '#/definitions/ExperimentData'
|
||||
tags:
|
||||
- experiments
|
||||
parameters: []
|
||||
/experiments/v0/data/{id}/:
|
||||
get:
|
||||
operationId: experiments_v0_data_read
|
||||
description: ''
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
schema:
|
||||
$ref: '#/definitions/ExperimentData'
|
||||
tags:
|
||||
- experiments
|
||||
put:
|
||||
operationId: experiments_v0_data_update
|
||||
description: ''
|
||||
parameters:
|
||||
- name: data
|
||||
in: body
|
||||
required: true
|
||||
schema:
|
||||
$ref: '#/definitions/ExperimentData'
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
schema:
|
||||
$ref: '#/definitions/ExperimentData'
|
||||
tags:
|
||||
- experiments
|
||||
patch:
|
||||
operationId: experiments_v0_data_partial_update
|
||||
description: ''
|
||||
parameters:
|
||||
- name: data
|
||||
in: body
|
||||
required: true
|
||||
schema:
|
||||
$ref: '#/definitions/ExperimentData'
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
schema:
|
||||
$ref: '#/definitions/ExperimentData'
|
||||
tags:
|
||||
- experiments
|
||||
delete:
|
||||
operationId: experiments_v0_data_delete
|
||||
description: ''
|
||||
parameters: []
|
||||
responses:
|
||||
'204':
|
||||
description: ''
|
||||
tags:
|
||||
- experiments
|
||||
parameters:
|
||||
- name: id
|
||||
in: path
|
||||
description: A unique integer value identifying this Experiment Data.
|
||||
required: true
|
||||
type: integer
|
||||
/experiments/v0/key-value/:
|
||||
get:
|
||||
operationId: experiments_v0_key-value_list
|
||||
description: ''
|
||||
parameters:
|
||||
- name: experiment_id
|
||||
in: query
|
||||
description: ''
|
||||
required: false
|
||||
type: number
|
||||
- name: key
|
||||
in: query
|
||||
description: ''
|
||||
required: false
|
||||
type: string
|
||||
- name: page
|
||||
in: query
|
||||
description: A page number within the paginated result set.
|
||||
required: false
|
||||
type: integer
|
||||
- name: page_size
|
||||
in: query
|
||||
description: Number of results to return per page.
|
||||
required: false
|
||||
type: integer
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
schema:
|
||||
required:
|
||||
- count
|
||||
- results
|
||||
type: object
|
||||
properties:
|
||||
count:
|
||||
type: integer
|
||||
next:
|
||||
type: string
|
||||
format: uri
|
||||
x-nullable: true
|
||||
previous:
|
||||
type: string
|
||||
format: uri
|
||||
x-nullable: true
|
||||
results:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/definitions/ExperimentKeyValue'
|
||||
tags:
|
||||
- experiments
|
||||
post:
|
||||
operationId: experiments_v0_key-value_create
|
||||
description: ''
|
||||
parameters:
|
||||
- name: data
|
||||
in: body
|
||||
required: true
|
||||
schema:
|
||||
$ref: '#/definitions/ExperimentKeyValue'
|
||||
responses:
|
||||
'201':
|
||||
description: ''
|
||||
schema:
|
||||
$ref: '#/definitions/ExperimentKeyValue'
|
||||
tags:
|
||||
- experiments
|
||||
parameters: []
|
||||
/experiments/v0/key-value/bulk_upsert/:
|
||||
put:
|
||||
operationId: experiments_v0_key-value_bulk_upsert
|
||||
description: ''
|
||||
parameters:
|
||||
- name: data
|
||||
in: body
|
||||
required: true
|
||||
schema:
|
||||
$ref: '#/definitions/ExperimentKeyValue'
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
schema:
|
||||
$ref: '#/definitions/ExperimentKeyValue'
|
||||
tags:
|
||||
- experiments
|
||||
parameters: []
|
||||
/experiments/v0/key-value/{id}/:
|
||||
get:
|
||||
operationId: experiments_v0_key-value_read
|
||||
description: ''
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
schema:
|
||||
$ref: '#/definitions/ExperimentKeyValue'
|
||||
tags:
|
||||
- experiments
|
||||
put:
|
||||
operationId: experiments_v0_key-value_update
|
||||
description: ''
|
||||
parameters:
|
||||
- name: data
|
||||
in: body
|
||||
required: true
|
||||
schema:
|
||||
$ref: '#/definitions/ExperimentKeyValue'
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
schema:
|
||||
$ref: '#/definitions/ExperimentKeyValue'
|
||||
tags:
|
||||
- experiments
|
||||
patch:
|
||||
operationId: experiments_v0_key-value_partial_update
|
||||
description: ''
|
||||
parameters:
|
||||
- name: data
|
||||
in: body
|
||||
required: true
|
||||
schema:
|
||||
$ref: '#/definitions/ExperimentKeyValue'
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
schema:
|
||||
$ref: '#/definitions/ExperimentKeyValue'
|
||||
tags:
|
||||
- experiments
|
||||
delete:
|
||||
operationId: experiments_v0_key-value_delete
|
||||
description: ''
|
||||
parameters: []
|
||||
responses:
|
||||
'204':
|
||||
description: ''
|
||||
tags:
|
||||
- experiments
|
||||
parameters:
|
||||
- name: id
|
||||
in: path
|
||||
description: A unique integer value identifying this Experiment Key-Value
|
||||
Pair.
|
||||
required: true
|
||||
type: integer
|
||||
/grades/v1/courses/:
|
||||
get:
|
||||
operationId: grades_v1_courses_list
|
||||
description: "Gets a course progress status.\nArgs:\n request (Request):\
|
||||
\ Django request object.\n course_id (string): URI element specifying the\
|
||||
\ course location.\n Can also be passed as a GET parameter\
|
||||
\ instead.\nReturn:\n A JSON serialized representation of the requesting\
|
||||
\ user's current grade status."
|
||||
parameters:
|
||||
- name: cursor
|
||||
in: query
|
||||
description: The pagination cursor value.
|
||||
required: false
|
||||
type: string
|
||||
- name: page_size
|
||||
in: query
|
||||
description: Number of results to return per page.
|
||||
required: false
|
||||
type: integer
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- grades
|
||||
parameters: []
|
||||
/grades/v1/courses/{course_id}/:
|
||||
get:
|
||||
operationId: grades_v1_courses_read
|
||||
description: "Gets a course progress status.\nArgs:\n request (Request):\
|
||||
\ Django request object.\n course_id (string): URI element specifying the\
|
||||
\ course location.\n Can also be passed as a GET parameter\
|
||||
\ instead.\nReturn:\n A JSON serialized representation of the requesting\
|
||||
\ user's current grade status."
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- grades
|
||||
parameters:
|
||||
- name: course_id
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/grades/v1/gradebook/{course_id}/:
|
||||
get:
|
||||
operationId: grades_v1_gradebook_read
|
||||
description: "Checks for course author access for the given course by the requesting\
|
||||
\ user.\nCalls the view function if has access, otherwise raises a 403."
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- grades
|
||||
parameters:
|
||||
- name: course_id
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/grades/v1/gradebook/{course_id}/bulk-update:
|
||||
post:
|
||||
operationId: grades_v1_gradebook_bulk-update_create
|
||||
description: "Checks for course author access for the given course by the requesting\
|
||||
\ user.\nCalls the view function if has access, otherwise raises a 403."
|
||||
parameters: []
|
||||
responses:
|
||||
'201':
|
||||
description: ''
|
||||
tags:
|
||||
- grades
|
||||
parameters:
|
||||
- name: course_id
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/grades/v1/gradebook/{course_id}/grading-info:
|
||||
get:
|
||||
operationId: grades_v1_gradebook_grading-info_list
|
||||
description: "Checks for course author access for the given course by the requesting\
|
||||
\ user.\nCalls the view function if has access, otherwise raises a 403."
|
||||
parameters:
|
||||
- name: page
|
||||
in: query
|
||||
description: A page number within the paginated result set.
|
||||
required: false
|
||||
type: integer
|
||||
- name: page_size
|
||||
in: query
|
||||
description: Number of results to return per page.
|
||||
required: false
|
||||
type: integer
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- grades
|
||||
parameters:
|
||||
- name: course_id
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/grades/v1/policy/courses/{course_id}/:
|
||||
get:
|
||||
operationId: grades_v1_policy_courses_read
|
||||
summary: '**Use Case**'
|
||||
description: "Get the course grading policy.\n\n**Example requests**:\n\n \
|
||||
\ GET /api/grades/v1/policy/courses/{course_id}/\n\n**Response Values**\n\
|
||||
\n * assignment_type: The type of the assignment, as configured by course\n\
|
||||
\ staff. For example, course staff might make the assignment types Homework,\n\
|
||||
\ Quiz, and Exam.\n\n * count: The number of assignments of the type.\n\
|
||||
\n * dropped: Number of assignments of the type that are dropped.\n\n \
|
||||
\ * weight: The weight, or effect, of the assignment type on the learner's\n\
|
||||
\ final grade."
|
||||
parameters:
|
||||
- name: page
|
||||
in: query
|
||||
description: A page number within the paginated result set.
|
||||
required: false
|
||||
type: integer
|
||||
- name: page_size
|
||||
in: query
|
||||
description: Number of results to return per page.
|
||||
required: false
|
||||
type: integer
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- grades
|
||||
parameters:
|
||||
- name: course_id
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/grades/v1/subsection/{subsection_id}/:
|
||||
get:
|
||||
operationId: grades_v1_subsection_read
|
||||
description: "Returns subection grade data, override grade data and a history\
|
||||
\ of changes made to\na specific users specific subsection grade.\n\nArgs:\n\
|
||||
\ subsection_id: String representation of a usage_key, which is an opaque\
|
||||
\ key of\n a persistant subection grade.\n user_id: An integer represenation\
|
||||
\ of a user"
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- grades
|
||||
parameters:
|
||||
- name: subsection_id
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/mobile/{api_version}/course_info/{course_id}/handouts:
|
||||
get:
|
||||
operationId: mobile_course_info_handouts_list
|
||||
summary: '**Use Case**'
|
||||
description: "Get the HTML for course handouts.\n\n**Example Request**\n\n \
|
||||
\ GET /api/mobile/v0.5/course_info/{course_id}/handouts\n\n**Response Values**\n\
|
||||
\n If the request is successful, the request returns an HTTP 200 \"OK\"\
|
||||
\n response along with the following value.\n\n * handouts_html: The\
|
||||
\ HTML for course handouts."
|
||||
parameters:
|
||||
- name: page
|
||||
in: query
|
||||
description: A page number within the paginated result set.
|
||||
required: false
|
||||
type: integer
|
||||
- name: page_size
|
||||
in: query
|
||||
description: Number of results to return per page.
|
||||
required: false
|
||||
type: integer
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- mobile
|
||||
parameters:
|
||||
- name: api_version
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
- name: course_id
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/mobile/{api_version}/course_info/{course_id}/updates:
|
||||
get:
|
||||
operationId: mobile_course_info_updates_list
|
||||
summary: '**Use Case**'
|
||||
description: "Get the content for course updates.\n\n**Example Request**\n\n\
|
||||
\ GET /api/mobile/v0.5/course_info/{course_id}/updates\n\n**Response Values**\n\
|
||||
\n If the request is successful, the request returns an HTTP 200 \"OK\"\
|
||||
\n response along with an array of course updates. Each course update\n\
|
||||
\ contains the following values.\n\n * content: The content, as\
|
||||
\ an HTML string, of the course update.\n * date: The date of the course\
|
||||
\ update.\n * id: The unique identifier of the update.\n * status:\
|
||||
\ Whether the update is visible or not."
|
||||
parameters:
|
||||
- name: page
|
||||
in: query
|
||||
description: A page number within the paginated result set.
|
||||
required: false
|
||||
type: integer
|
||||
- name: page_size
|
||||
in: query
|
||||
description: Number of results to return per page.
|
||||
required: false
|
||||
type: integer
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- mobile
|
||||
parameters:
|
||||
- name: api_version
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
- name: course_id
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/mobile/{api_version}/my_user_info:
|
||||
get:
|
||||
operationId: mobile_my_user_info_list
|
||||
description: Redirect to the currently-logged-in user's info page
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- mobile
|
||||
parameters:
|
||||
- name: api_version
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/mobile/{api_version}/users/{username}:
|
||||
get:
|
||||
operationId: mobile_users_read
|
||||
summary: '**Use Case**'
|
||||
description: "Get information about the specified user and access other resources\n\
|
||||
\ the user has permissions for.\n\n Users are redirected to this endpoint\
|
||||
\ after they sign in.\n\n You can use the **course_enrollments** value\
|
||||
\ in the response to get a\n list of courses the user is enrolled in.\n\
|
||||
\n**Example Request**\n\n GET /api/mobile/{version}/users/{username}\n\n\
|
||||
**Response Values**\n\n If the request is successful, the request returns\
|
||||
\ an HTTP 200 \"OK\" response.\n\n The HTTP 200 response has the following\
|
||||
\ values.\n\n * course_enrollments: The URI to list the courses the currently\
|
||||
\ signed\n in user is enrolled in.\n * email: The email address of\
|
||||
\ the currently signed in user.\n * id: The ID of the user.\n * name:\
|
||||
\ The full name of the currently signed in user.\n * username: The username\
|
||||
\ of the currently signed in user."
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
schema:
|
||||
$ref: '#/definitions/mobile_api.User'
|
||||
tags:
|
||||
- mobile
|
||||
parameters:
|
||||
- name: api_version
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
- name: username
|
||||
in: path
|
||||
description: Required. 150 characters or fewer. Letters, digits and @/./+/-/_
|
||||
only.
|
||||
required: true
|
||||
type: string
|
||||
pattern: ^[\w.@+-]+$
|
||||
/mobile/{api_version}/users/{username}/course_enrollments/:
|
||||
get:
|
||||
operationId: mobile_users_course_enrollments_list
|
||||
summary: '**Use Case**'
|
||||
description: "Get information about the courses that the currently signed in\
|
||||
\ user is\n enrolled in.\n\n v1 differs from v0.5 version by returning\
|
||||
\ ALL enrollments for\n a user rather than only the enrollments the user\
|
||||
\ has access to (that haven't expired).\n An additional attribute \"expiration\"\
|
||||
\ has been added to the response, which lists the date\n when access to\
|
||||
\ the course will expire or null if it doesn't expire.\n\n**Example Request**\n\
|
||||
\n GET /api/mobile/v1/users/{username}/course_enrollments/\n\n**Response\
|
||||
\ Values**\n\n If the request for information about the user is successful,\
|
||||
\ the\n request returns an HTTP 200 \"OK\" response.\n\n The HTTP 200\
|
||||
\ response has the following values.\n\n * expiration: The course expiration\
|
||||
\ date for given user course pair\n or null if the course does not expire.\n\
|
||||
\ * certificate: Information about the user's earned certificate in the\n\
|
||||
\ course.\n * course: A collection of the following data about the\
|
||||
\ course.\n\n * courseware_access: A JSON representation with access information\
|
||||
\ for the course,\n including any access errors.\n\n * course_about:\
|
||||
\ The URL to the course about page.\n * course_sharing_utm_parameters:\
|
||||
\ Encoded UTM parameters to be included in course sharing url\n * course_handouts:\
|
||||
\ The URI to get data for course handouts.\n * course_image: The path\
|
||||
\ to the course image.\n * course_updates: The URI to get data for course\
|
||||
\ updates.\n * discussion_url: The URI to access data for course discussions\
|
||||
\ if\n it is enabled, otherwise null.\n * end: The end date of\
|
||||
\ the course.\n * id: The unique ID of the course.\n * name: The\
|
||||
\ name of the course.\n * number: The course number.\n * org: The\
|
||||
\ organization that created the course.\n * start: The date and time\
|
||||
\ when the course starts.\n * start_display:\n If start_type is\
|
||||
\ a string, then the advertised_start date for the course.\n If start_type\
|
||||
\ is a timestamp, then a formatted date for the start of the course.\n \
|
||||
\ If start_type is empty, then the value is None and it indicates that\
|
||||
\ the course has not yet started.\n * start_type: One of either \"string\"\
|
||||
, \"timestamp\", or \"empty\"\n * subscription_id: A unique \"clean\"\
|
||||
\ (alphanumeric with '_') ID of\n the course.\n * video_outline:\
|
||||
\ The URI to get the list of all videos that the user\n can access\
|
||||
\ in the course.\n\n * created: The date the course was created.\n *\
|
||||
\ is_active: Whether the course is currently active. Possible values\n \
|
||||
\ are true or false.\n * mode: The type of certificate registration for\
|
||||
\ this course (honor or\n certified).\n * url: URL to the downloadable\
|
||||
\ version of the certificate, if exists."
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
schema:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/definitions/CourseEnrollment'
|
||||
tags:
|
||||
- mobile
|
||||
parameters:
|
||||
- name: api_version
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
- name: username
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
? /mobile/{api_version}/users/{username}/course_status_info/(P{course_id}[/+]+{var}[/+]+api/mobile/{api_version}/users/{username}/course_status_info/(P{course_id}[/+]+(/|+)[/+]+{var}[/]+)
|
||||
: get:
|
||||
operationId: mobile_users_course_status_info_+]+api_mobile_users_course_status_info_+]+(_|+)[_]+)_list
|
||||
description: Get the ID of the module that the specified user last visited in
|
||||
the specified course.
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- mobile
|
||||
patch:
|
||||
operationId: mobile_users_course_status_info_+]+api_mobile_users_course_status_info_+]+(_|+)[_]+)_partial_update
|
||||
description: Update the ID of the module that the specified user last visited
|
||||
in the specified course.
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- mobile
|
||||
parameters:
|
||||
- name: api_version
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
- name: course_id
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
- name: username
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
- name: var
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/notifier/v1/users/:
|
||||
get:
|
||||
operationId: notifier_v1_users_list
|
||||
description: "An endpoint that the notifier can use to retrieve users who have\
|
||||
\ enabled\ndaily forum digests, including all information that the notifier\
|
||||
\ needs about\nsuch users."
|
||||
parameters:
|
||||
- name: page
|
||||
in: query
|
||||
description: A page number within the paginated result set.
|
||||
required: false
|
||||
type: integer
|
||||
- name: page_size
|
||||
in: query
|
||||
description: Number of results to return per page.
|
||||
required: false
|
||||
type: integer
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
schema:
|
||||
required:
|
||||
- count
|
||||
- results
|
||||
type: object
|
||||
properties:
|
||||
count:
|
||||
type: integer
|
||||
next:
|
||||
type: string
|
||||
format: uri
|
||||
x-nullable: true
|
||||
previous:
|
||||
type: string
|
||||
format: uri
|
||||
x-nullable: true
|
||||
results:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/definitions/NotifierUser'
|
||||
tags:
|
||||
- notifier
|
||||
parameters: []
|
||||
/notifier/v1/users/{id}/:
|
||||
get:
|
||||
operationId: notifier_v1_users_read
|
||||
description: "An endpoint that the notifier can use to retrieve users who have\
|
||||
\ enabled\ndaily forum digests, including all information that the notifier\
|
||||
\ needs about\nsuch users."
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
schema:
|
||||
$ref: '#/definitions/NotifierUser'
|
||||
tags:
|
||||
- notifier
|
||||
parameters:
|
||||
- name: id
|
||||
in: path
|
||||
description: A unique integer value identifying this user.
|
||||
required: true
|
||||
type: integer
|
||||
/organizations/v0/organizations/:
|
||||
get:
|
||||
operationId: organizations_v0_organizations_list
|
||||
description: "Organization view to fetch list organization data or single organization\n\
|
||||
using organization short name."
|
||||
parameters:
|
||||
- name: page
|
||||
in: query
|
||||
description: A page number within the paginated result set.
|
||||
required: false
|
||||
type: integer
|
||||
- name: page_size
|
||||
in: query
|
||||
description: Number of results to return per page.
|
||||
required: false
|
||||
type: integer
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
schema:
|
||||
required:
|
||||
- count
|
||||
- results
|
||||
type: object
|
||||
properties:
|
||||
count:
|
||||
type: integer
|
||||
next:
|
||||
type: string
|
||||
format: uri
|
||||
x-nullable: true
|
||||
previous:
|
||||
type: string
|
||||
format: uri
|
||||
x-nullable: true
|
||||
results:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/definitions/Organization'
|
||||
tags:
|
||||
- organizations
|
||||
parameters: []
|
||||
/organizations/v0/organizations/{short_name}/:
|
||||
get:
|
||||
operationId: organizations_v0_organizations_read
|
||||
description: "Organization view to fetch list organization data or single organization\n\
|
||||
using organization short name."
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
schema:
|
||||
$ref: '#/definitions/Organization'
|
||||
tags:
|
||||
- organizations
|
||||
parameters:
|
||||
- name: short_name
|
||||
in: path
|
||||
description: Please do not use spaces or special characters. Only allowed
|
||||
special characters are period (.), hyphen (-) and underscore (_).
|
||||
required: true
|
||||
type: string
|
||||
/profile_images/v1/{username}/remove:
|
||||
post:
|
||||
operationId: profile_images_v1_remove_create
|
||||
description: POST /api/profile_images/v1/{username}/remove
|
||||
parameters: []
|
||||
responses:
|
||||
'201':
|
||||
description: ''
|
||||
tags:
|
||||
- profile_images
|
||||
parameters:
|
||||
- name: username
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/profile_images/v1/{username}/upload:
|
||||
post:
|
||||
operationId: profile_images_v1_upload_create
|
||||
description: POST /api/profile_images/v1/{username}/upload
|
||||
parameters: []
|
||||
responses:
|
||||
'201':
|
||||
description: ''
|
||||
consumes:
|
||||
- multipart/form-data
|
||||
- application/x-www-form-urlencoded
|
||||
tags:
|
||||
- profile_images
|
||||
parameters:
|
||||
- name: username
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/program_enrollments/v1/integration-reset:
|
||||
post:
|
||||
operationId: program_enrollments_v1_integration-reset_create
|
||||
description: Reset enrollment and user data for organization
|
||||
parameters: []
|
||||
responses:
|
||||
'201':
|
||||
description: ''
|
||||
tags:
|
||||
- program_enrollments
|
||||
parameters: []
|
||||
/program_enrollments/v1/programs/enrollments/:
|
||||
get:
|
||||
operationId: program_enrollments_v1_programs_enrollments_list
|
||||
description: How to respond to a GET request to this endpoint
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- program_enrollments
|
||||
parameters: []
|
||||
/program_enrollments/v1/programs/readonly_access/:
|
||||
get:
|
||||
operationId: program_enrollments_v1_programs_readonly_access_list
|
||||
description: How to respond to a GET request to this endpoint
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- program_enrollments
|
||||
parameters: []
|
||||
/program_enrollments/v1/programs/{program_uuid}/courses/{course_id}/enrollments/:
|
||||
get:
|
||||
operationId: program_enrollments_v1_programs_courses_enrollments_list
|
||||
description: Defines the GET list endpoint for ProgramCourseEnrollment objects.
|
||||
parameters:
|
||||
- name: cursor
|
||||
in: query
|
||||
description: The pagination cursor value.
|
||||
required: false
|
||||
type: string
|
||||
- name: page_size
|
||||
in: query
|
||||
description: Number of results to return per page.
|
||||
required: false
|
||||
type: integer
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- program_enrollments
|
||||
post:
|
||||
operationId: program_enrollments_v1_programs_courses_enrollments_create
|
||||
description: Enroll a list of students in a course in a program
|
||||
parameters: []
|
||||
responses:
|
||||
'201':
|
||||
description: ''
|
||||
tags:
|
||||
- program_enrollments
|
||||
put:
|
||||
operationId: program_enrollments_v1_programs_courses_enrollments_update
|
||||
description: Create or Update the program course enrollments of a list of learners
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- program_enrollments
|
||||
patch:
|
||||
operationId: program_enrollments_v1_programs_courses_enrollments_partial_update
|
||||
description: Modify the program course enrollments of a list of learners
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- program_enrollments
|
||||
parameters:
|
||||
- name: course_id
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
- name: program_uuid
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/program_enrollments/v1/programs/{program_uuid}/courses/{course_id}/grades/:
|
||||
get:
|
||||
operationId: program_enrollments_v1_programs_courses_grades_list
|
||||
description: Defines the GET list endpoint for ProgramCourseGrade objects.
|
||||
parameters:
|
||||
- name: cursor
|
||||
in: query
|
||||
description: The pagination cursor value.
|
||||
required: false
|
||||
type: string
|
||||
- name: page_size
|
||||
in: query
|
||||
description: Number of results to return per page.
|
||||
required: false
|
||||
type: integer
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- program_enrollments
|
||||
parameters:
|
||||
- name: course_id
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
- name: program_uuid
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/program_enrollments/v1/programs/{program_uuid}/enrollments/:
|
||||
get:
|
||||
operationId: program_enrollments_v1_programs_enrollments_list
|
||||
description: Defines the GET list endpoint for ProgramEnrollment objects.
|
||||
parameters:
|
||||
- name: cursor
|
||||
in: query
|
||||
description: The pagination cursor value.
|
||||
required: false
|
||||
type: string
|
||||
- name: page_size
|
||||
in: query
|
||||
description: Number of results to return per page.
|
||||
required: false
|
||||
type: integer
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- program_enrollments
|
||||
post:
|
||||
operationId: program_enrollments_v1_programs_enrollments_create
|
||||
description: Create program enrollments for a list of learners
|
||||
parameters: []
|
||||
responses:
|
||||
'201':
|
||||
description: ''
|
||||
tags:
|
||||
- program_enrollments
|
||||
put:
|
||||
operationId: program_enrollments_v1_programs_enrollments_update
|
||||
description: Create/modify program enrollments for a list of learners
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- program_enrollments
|
||||
patch:
|
||||
operationId: program_enrollments_v1_programs_enrollments_partial_update
|
||||
description: Modify program enrollments for a list of learners
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- program_enrollments
|
||||
parameters:
|
||||
- name: program_uuid
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/program_enrollments/v1/programs/{program_uuid}/overview/:
|
||||
get:
|
||||
operationId: program_enrollments_v1_programs_overview_list
|
||||
description: "Defines the GET endpoint for overviews of course enrollments\n\
|
||||
for a user as part of a program."
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- program_enrollments
|
||||
parameters:
|
||||
- name: program_uuid
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/team/v0/team_membership/:
|
||||
get:
|
||||
operationId: team_v0_team_membership_list
|
||||
description: GET /api/team/v0/team_membership
|
||||
parameters:
|
||||
- name: page
|
||||
in: query
|
||||
description: A page number within the paginated result set.
|
||||
required: false
|
||||
type: integer
|
||||
- name: page_size
|
||||
in: query
|
||||
description: Number of results to return per page.
|
||||
required: false
|
||||
type: integer
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- team
|
||||
post:
|
||||
operationId: team_v0_team_membership_create
|
||||
description: POST /api/team/v0/team_membership
|
||||
parameters: []
|
||||
responses:
|
||||
'201':
|
||||
description: ''
|
||||
tags:
|
||||
- team
|
||||
parameters: []
|
||||
/team/v0/team_membership/{team_id},{username}:
|
||||
get:
|
||||
operationId: team_v0_team_membership_read
|
||||
description: GET /api/team/v0/team_membership/{team_id},{username}
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- team
|
||||
delete:
|
||||
operationId: team_v0_team_membership_delete
|
||||
description: DELETE /api/team/v0/team_membership/{team_id},{username}
|
||||
parameters: []
|
||||
responses:
|
||||
'204':
|
||||
description: ''
|
||||
tags:
|
||||
- team
|
||||
parameters:
|
||||
- name: team_id
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
- name: username
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/team/v0/teams/:
|
||||
get:
|
||||
operationId: team_v0_teams_list
|
||||
description: GET /api/team/v0/teams/
|
||||
parameters:
|
||||
- name: page
|
||||
in: query
|
||||
description: A page number within the paginated result set.
|
||||
required: false
|
||||
type: integer
|
||||
- name: page_size
|
||||
in: query
|
||||
description: Number of results to return per page.
|
||||
required: false
|
||||
type: integer
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- team
|
||||
post:
|
||||
operationId: team_v0_teams_create
|
||||
description: POST /api/team/v0/teams/
|
||||
parameters: []
|
||||
responses:
|
||||
'201':
|
||||
description: ''
|
||||
tags:
|
||||
- team
|
||||
parameters: []
|
||||
/team/v0/teams/{team_id}:
|
||||
get:
|
||||
operationId: team_v0_teams_read
|
||||
description: Retrieves the specified resource using the RetrieveModelMixin.
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
consumes:
|
||||
- application/merge-patch+json
|
||||
tags:
|
||||
- team
|
||||
patch:
|
||||
operationId: team_v0_teams_partial_update
|
||||
description: Checks for validation errors, then updates the model using the
|
||||
UpdateModelMixin.
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
consumes:
|
||||
- application/merge-patch+json
|
||||
tags:
|
||||
- team
|
||||
delete:
|
||||
operationId: team_v0_teams_delete
|
||||
description: DELETE /api/team/v0/teams/{team_id}
|
||||
parameters: []
|
||||
responses:
|
||||
'204':
|
||||
description: ''
|
||||
consumes:
|
||||
- application/merge-patch+json
|
||||
tags:
|
||||
- team
|
||||
parameters:
|
||||
- name: team_id
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/team/v0/topics/:
|
||||
get:
|
||||
operationId: team_v0_topics_list
|
||||
description: GET /api/team/v0/topics/?course_id={course_id}
|
||||
parameters:
|
||||
- name: page
|
||||
in: query
|
||||
description: A page number within the paginated result set.
|
||||
required: false
|
||||
type: integer
|
||||
- name: page_size
|
||||
in: query
|
||||
description: Number of results to return per page.
|
||||
required: false
|
||||
type: integer
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- team
|
||||
parameters: []
|
||||
/team/v0/topics/{topic_id},{course_id}:
|
||||
get:
|
||||
operationId: team_v0_topics_read
|
||||
description: GET /api/team/v0/topics/{topic_id},{course_id}/
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- team
|
||||
parameters:
|
||||
- name: course_id
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
- name: topic_id
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/third_party_auth/v0/providers/user_status:
|
||||
get:
|
||||
operationId: third_party_auth_v0_providers_user_status_list
|
||||
summary: GET /api/third_party_auth/v0/providers/user_status/
|
||||
description: "**GET Response Values**\n{\n \"accepts_logins\": true,\n \
|
||||
\ \"name\": \"Google\",\n \"disconnect_url\": \"/auth/disconnect/google-oauth2/?\"\
|
||||
,\n \"connect_url\": \"/auth/login/google-oauth2/?auth_entry=account_settings&next=%2Faccount%2Fsettings\"\
|
||||
,\n \"connected\": false,\n \"id\": \"oa2-google-oauth2\"\n}"
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- third_party_auth
|
||||
parameters: []
|
||||
/third_party_auth/v0/providers/{provider_id}{var}/users:
|
||||
get:
|
||||
operationId: third_party_auth_v0_providers_users_list
|
||||
summary: Map between the third party auth account IDs (remote_id) and EdX username.
|
||||
description: "This API is intended to be a server-to-server endpoint. An on-campus\
|
||||
\ middleware or system should consume this.\n\n**Use Case**\n\n Get a paginated\
|
||||
\ list of mappings between edX users and remote user IDs for all users currently\n\
|
||||
\ linked to the given backend.\n\n The list can be filtered by edx username\
|
||||
\ or third party ids. The filter is limited by the max length of URL.\n \
|
||||
\ It is suggested to query no more than 50 usernames or remote_ids in each\
|
||||
\ request to stay within above\n limitation\n\n The page size can be\
|
||||
\ changed by specifying `page_size` parameter in the request.\n\n**Example\
|
||||
\ Requests**\n\n GET /api/third_party_auth/v0/providers/{provider_id}/users\n\
|
||||
\n GET /api/third_party_auth/v0/providers/{provider_id}/users?username={username1},{username2}\n\
|
||||
\n GET /api/third_party_auth/v0/providers/{provider_id}/users?username={username1}&usernames={username2}\n\
|
||||
\n GET /api/third_party_auth/v0/providers/{provider_id}/users?remote_id={remote_id1},{remote_id2}\n\
|
||||
\n GET /api/third_party_auth/v0/providers/{provider_id}/users?remote_id={remote_id1}&remote_id={remote_id2}\n\
|
||||
\n GET /api/third_party_auth/v0/providers/{provider_id}/users?username={username1}&remote_id={remote_id1}\n\
|
||||
\n**URL Parameters**\n\n * provider_id: The unique identifier of third_party_auth\
|
||||
\ provider (e.g. \"saml-ubc\", \"oa2-google\", etc.\n This is not the\
|
||||
\ same thing as the backend_name.). (Optional/future: We may also want to\
|
||||
\ allow\n this to be an 'external domain' like 'ssl:MIT' so that this\
|
||||
\ API can also search the legacy\n ExternalAuthMap table used by Standford/MIT)\n\
|
||||
\n**Query Parameters**\n\n * remote_ids: Optional. List of comma separated\
|
||||
\ remote (third party) user IDs to filter the result set.\n e.g. ?remote_ids=8721384623\n\
|
||||
\n * usernames: Optional. List of comma separated edX usernames to filter\
|
||||
\ the result set.\n e.g. ?usernames=bob123,jane456\n\n * page, page_size:\
|
||||
\ Optional. Used for paging the result set, especially when getting\n \
|
||||
\ an unfiltered list.\n\n**Response Values**\n\n If the request for information\
|
||||
\ about the user is successful, an HTTP 200 \"OK\" response\n is returned.\n\
|
||||
\n The HTTP 200 response has the following values:\n\n * count: The\
|
||||
\ number of mappings for the backend.\n\n * next: The URI to the next page\
|
||||
\ of the mappings.\n\n * previous: The URI to the previous page of the\
|
||||
\ mappings.\n\n * num_pages: The number of pages listing the mappings.\n\
|
||||
\n * results: A list of mappings returned. Each collection in the list\n\
|
||||
\ contains these fields.\n\n * username: The edx username\n\n\
|
||||
\ * remote_id: The Id from third party auth provider"
|
||||
parameters:
|
||||
- name: page
|
||||
in: query
|
||||
description: A page number within the paginated result set.
|
||||
required: false
|
||||
type: integer
|
||||
- name: page_size
|
||||
in: query
|
||||
description: Number of results to return per page.
|
||||
required: false
|
||||
type: integer
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
schema:
|
||||
required:
|
||||
- count
|
||||
- results
|
||||
type: object
|
||||
properties:
|
||||
count:
|
||||
type: integer
|
||||
next:
|
||||
type: string
|
||||
format: uri
|
||||
x-nullable: true
|
||||
previous:
|
||||
type: string
|
||||
format: uri
|
||||
x-nullable: true
|
||||
results:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/definitions/UserMapping'
|
||||
tags:
|
||||
- third_party_auth
|
||||
parameters:
|
||||
- name: provider_id
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
- name: var
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/third_party_auth/v0/users/:
|
||||
get:
|
||||
operationId: third_party_auth_v0_users_list
|
||||
summary: Read provider information for a user.
|
||||
description: "Allows reading the list of providers for a specified user.\n\n\
|
||||
Args:\n request (Request): The HTTP GET request\n\nRequest Parameters:\n\
|
||||
\ Must provide one of 'email' or 'username'. If both are provided,\n \
|
||||
\ the username will be ignored.\n\nReturn:\n JSON serialized list of\
|
||||
\ the providers linked to this user."
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- third_party_auth
|
||||
parameters: []
|
||||
/third_party_auth/v0/users/{username}:
|
||||
get:
|
||||
operationId: third_party_auth_v0_users_read
|
||||
summary: Read provider information for a user.
|
||||
description: "Allows reading the list of providers for a specified user.\n\n\
|
||||
Args:\n request (Request): The HTTP GET request\n username (str): Fetch\
|
||||
\ the list of providers linked to this user\n\nReturn:\n JSON serialized\
|
||||
\ list of the providers linked to this user."
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- third_party_auth
|
||||
parameters:
|
||||
- name: username
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/user/v1/accounts:
|
||||
get:
|
||||
operationId: user_v1_accounts_list
|
||||
description: GET /api/user/v1/accounts?username={username1,username2}
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
consumes:
|
||||
- application/merge-patch+json
|
||||
tags:
|
||||
- user
|
||||
parameters: []
|
||||
/user/v1/accounts/deactivate_logout/:
|
||||
post:
|
||||
operationId: user_v1_accounts_deactivate_logout_create
|
||||
summary: POST /api/user/v1/accounts/deactivate_logout/
|
||||
description: "Marks the user as having no password set for deactivation purposes,\n\
|
||||
and logs the user out."
|
||||
parameters: []
|
||||
responses:
|
||||
'201':
|
||||
description: ''
|
||||
tags:
|
||||
- user
|
||||
parameters: []
|
||||
/user/v1/accounts/replace_usernames/:
|
||||
post:
|
||||
operationId: user_v1_accounts_replace_usernames_create
|
||||
description: "POST /api/user/v1/accounts/replace_usernames/\n{\n \"username_mappings\"\
|
||||
: [\n {\"current_username_1\": \"desired_username_1\"},\n {\"\
|
||||
current_username_2\": \"desired_username_2\"}\n ]\n}\n\n**POST Parameters**\n\
|
||||
\nA POST request must include the following parameter.\n\n* username_mappings:\
|
||||
\ Required. A list of objects that map the current username (key)\n to the\
|
||||
\ desired username (value)\n\n**POST Response Values**\n\nAs long as data\
|
||||
\ validation passes, the request will return a 200 with a new mapping\nof\
|
||||
\ old usernames (key) to new username (value)\n\n{\n \"successful_replacements\"\
|
||||
: [\n {\"old_username_1\": \"new_username_1\"}\n ],\n \"failed_replacements\"\
|
||||
: [\n {\"old_username_2\": \"new_username_2\"}\n ]\n}"
|
||||
parameters: []
|
||||
responses:
|
||||
'201':
|
||||
description: ''
|
||||
tags:
|
||||
- user
|
||||
parameters: []
|
||||
/user/v1/accounts/retire/:
|
||||
post:
|
||||
operationId: user_v1_accounts_post
|
||||
summary: POST /api/user/v1/accounts/retire/
|
||||
description: "{\n 'username': 'user_to_retire'\n}\n\nRetires the user with\
|
||||
\ the given username. This includes\nretiring this username, the associated\
|
||||
\ email address, and\nany other PII associated with this user."
|
||||
parameters: []
|
||||
responses:
|
||||
'201':
|
||||
description: ''
|
||||
tags:
|
||||
- user
|
||||
parameters: []
|
||||
/user/v1/accounts/retire_misc/:
|
||||
post:
|
||||
operationId: user_v1_accounts_post
|
||||
summary: POST /api/user/v1/accounts/retire_misc/
|
||||
description: "{\n 'username': 'user_to_retire'\n}\n\nRetires the user with\
|
||||
\ the given username in the LMS."
|
||||
parameters: []
|
||||
responses:
|
||||
'201':
|
||||
description: ''
|
||||
tags:
|
||||
- user
|
||||
parameters: []
|
||||
/user/v1/accounts/retirement_cleanup/:
|
||||
post:
|
||||
operationId: user_v1_accounts_cleanup
|
||||
summary: POST /api/user/v1/accounts/retirement_cleanup/
|
||||
description: "{\n 'usernames': ['user1', 'user2', ...]\n}\n\nDeletes a batch\
|
||||
\ of retirement requests by username."
|
||||
parameters: []
|
||||
responses:
|
||||
'201':
|
||||
description: ''
|
||||
tags:
|
||||
- user
|
||||
parameters: []
|
||||
/user/v1/accounts/retirement_partner_report/:
|
||||
post:
|
||||
operationId: user_v1_accounts_retirement_partner_report_create
|
||||
summary: POST /api/user/v1/accounts/retirement_partner_report/
|
||||
description: "Returns the list of UserRetirementPartnerReportingStatus users\n\
|
||||
that are not already being processed and updates their status\nto indicate\
|
||||
\ they are currently being processed."
|
||||
parameters: []
|
||||
responses:
|
||||
'201':
|
||||
description: ''
|
||||
tags:
|
||||
- user
|
||||
put:
|
||||
operationId: user_v1_accounts_retirement_partner_report_update
|
||||
summary: PUT /api/user/v1/accounts/retirement_partner_report/
|
||||
description: "{\n 'username': 'user_to_retire'\n}\n\nCreates a UserRetirementPartnerReportingStatus\
|
||||
\ object for the given user\nas part of the retirement pipeline."
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- user
|
||||
parameters: []
|
||||
/user/v1/accounts/retirement_partner_report_cleanup/:
|
||||
post:
|
||||
operationId: user_v1_accounts_retirement_partner_cleanup
|
||||
summary: POST /api/user/v1/accounts/retirement_partner_report_cleanup/
|
||||
description: "[{'original_username': 'user1'}, {'original_username': 'user2'},\
|
||||
\ ...]\n\nDeletes UserRetirementPartnerReportingStatus objects for a list\
|
||||
\ of users\nthat have been reported on."
|
||||
parameters: []
|
||||
responses:
|
||||
'201':
|
||||
description: ''
|
||||
tags:
|
||||
- user
|
||||
parameters: []
|
||||
/user/v1/accounts/retirement_queue/:
|
||||
get:
|
||||
operationId: user_v1_accounts_retirement_queue
|
||||
summary: "GET /api/user/v1/accounts/retirement_queue/\n{'cool_off_days': 7,\
|
||||
\ 'states': ['PENDING', 'COMPLETE']}"
|
||||
description: "Returns the list of RetirementStatus users in the given states\
|
||||
\ that were\ncreated in the retirement queue at least `cool_off_days` ago."
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- user
|
||||
parameters: []
|
||||
/user/v1/accounts/retirements_by_status_and_date/:
|
||||
get:
|
||||
operationId: user_v1_accounts_retirements_by_status_and_date
|
||||
summary: "GET /api/user/v1/accounts/retirements_by_status_and_date/\n?start_date=2018-09-05&end_date=2018-09-07&state=COMPLETE"
|
||||
description: "Returns a list of UserRetirementStatusSerializer serialized\n\
|
||||
RetirementStatus rows in the given state that were created in the\nretirement\
|
||||
\ queue between the dates given. Date range is inclusive,\nso to get one day\
|
||||
\ you would set both dates to that day."
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- user
|
||||
parameters: []
|
||||
/user/v1/accounts/update_retirement_status/:
|
||||
patch:
|
||||
operationId: user_v1_accounts_update_retirement_status_partial_update
|
||||
summary: PATCH /api/user/v1/accounts/update_retirement_status/
|
||||
description: "{\n 'username': 'user_to_retire',\n 'new_state': 'LOCKING_COMPLETE',\n\
|
||||
\ 'response': 'User account locked and logged out.'\n}\n\nUpdates the RetirementStatus\
|
||||
\ row for the given user to the new\nstatus, and append any messages to the\
|
||||
\ message log.\n\nNote that this implementation DOES NOT use the \"merge patch\"\
|
||||
\nimplementation seen in AccountViewSet. Slumber, the project\nwe use to power\
|
||||
\ edx-rest-api-client, does not currently support\nit. The content type for\
|
||||
\ this request is 'application/json'."
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- user
|
||||
parameters: []
|
||||
/user/v1/accounts/{username}:
|
||||
get:
|
||||
operationId: user_v1_accounts_read
|
||||
description: GET /api/user/v1/accounts/{username}/
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
consumes:
|
||||
- application/merge-patch+json
|
||||
tags:
|
||||
- user
|
||||
patch:
|
||||
operationId: user_v1_accounts_partial_update
|
||||
summary: PATCH /api/user/v1/accounts/{username}/
|
||||
description: "Note that this implementation is the \"merge patch\" implementation\
|
||||
\ proposed in\nhttps://tools.ietf.org/html/rfc7396. The content_type must\
|
||||
\ be \"application/merge-patch+json\" or\nelse an error response with status\
|
||||
\ code 415 will be returned."
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
consumes:
|
||||
- application/merge-patch+json
|
||||
tags:
|
||||
- user
|
||||
parameters:
|
||||
- name: username
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/user/v1/accounts/{username}/deactivate/:
|
||||
post:
|
||||
operationId: user_v1_accounts_deactivate_create
|
||||
summary: POST /api/user/v1/accounts/{username}/deactivate/
|
||||
description: Marks the user as having no password set for deactivation purposes.
|
||||
parameters: []
|
||||
responses:
|
||||
'201':
|
||||
description: ''
|
||||
tags:
|
||||
- user
|
||||
parameters:
|
||||
- name: username
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/user/v1/accounts/{username}/image:
|
||||
post:
|
||||
operationId: user_v1_accounts_image_create
|
||||
description: POST /api/user/v1/accounts/{username}/image
|
||||
parameters: []
|
||||
responses:
|
||||
'201':
|
||||
description: ''
|
||||
consumes:
|
||||
- multipart/form-data
|
||||
- application/x-www-form-urlencoded
|
||||
tags:
|
||||
- user
|
||||
delete:
|
||||
operationId: user_v1_accounts_image_delete
|
||||
description: DELETE /api/user/v1/accounts/{username}/image
|
||||
parameters: []
|
||||
responses:
|
||||
'204':
|
||||
description: ''
|
||||
consumes:
|
||||
- multipart/form-data
|
||||
- application/x-www-form-urlencoded
|
||||
tags:
|
||||
- user
|
||||
parameters:
|
||||
- name: username
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/user/v1/accounts/{username}/retirement_status/:
|
||||
get:
|
||||
operationId: user_v1_accounts_retirement_status_read
|
||||
description: "GET /api/user/v1/accounts/{username}/retirement_status/\nReturns\
|
||||
\ the RetirementStatus of a given user, or 404 if that row\ndoesn't exist."
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- user
|
||||
parameters:
|
||||
- name: username
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/user/v1/accounts/{username}/verification_status/:
|
||||
get:
|
||||
operationId: user_v1_accounts_verification_status_read
|
||||
description: IDVerificationStatus detail endpoint.
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- user
|
||||
parameters:
|
||||
- name: username
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/user/v1/me:
|
||||
get:
|
||||
operationId: user_v1_get
|
||||
description: GET /api/user/v1/me
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
consumes:
|
||||
- application/merge-patch+json
|
||||
tags:
|
||||
- user
|
||||
parameters: []
|
||||
/user/v1/preferences/{username}:
|
||||
get:
|
||||
operationId: user_v1_preferences_read
|
||||
description: GET /api/user/v1/preferences/{username}/
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
consumes:
|
||||
- application/merge-patch+json
|
||||
tags:
|
||||
- user
|
||||
patch:
|
||||
operationId: user_v1_preferences_partial_update
|
||||
description: PATCH /api/user/v1/preferences/{username}/
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
consumes:
|
||||
- application/merge-patch+json
|
||||
tags:
|
||||
- user
|
||||
parameters:
|
||||
- name: username
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/user/v1/preferences/{username}/{preference_key}:
|
||||
get:
|
||||
operationId: user_v1_preferences_read
|
||||
description: GET /api/user/v1/preferences/{username}/{preference_key}
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- user
|
||||
put:
|
||||
operationId: user_v1_preferences_update
|
||||
description: PUT /api/user/v1/preferences/{username}/{preference_key}
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- user
|
||||
delete:
|
||||
operationId: user_v1_preferences_delete
|
||||
description: DELETE /api/user/v1/preferences/{username}/{preference_key}
|
||||
parameters: []
|
||||
responses:
|
||||
'204':
|
||||
description: ''
|
||||
tags:
|
||||
- user
|
||||
parameters:
|
||||
- name: preference_key
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
- name: username
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/user/v1/validation/registration:
|
||||
post:
|
||||
operationId: user_v1_validation_registration_create
|
||||
summary: POST /api/user/v1/validation/registration/
|
||||
description: "Expects request of the form\n>>> {\n>>> \"name\": \"Dan the\
|
||||
\ Validator\",\n>>> \"username\": \"mslm\",\n>>> \"email\": \"mslm@gmail.com\"\
|
||||
,\n>>> \"confirm_email\": \"mslm@gmail.com\",\n>>> \"password\": \"\
|
||||
password123\",\n>>> \"country\": \"PK\"\n>>> }\nwhere each key is the\
|
||||
\ appropriate form field name and the value is\nuser input. One may enter\
|
||||
\ individual inputs if needed. Some inputs\ncan get extra verification checks\
|
||||
\ if entered along with others,\nlike when the password may not equal the\
|
||||
\ username."
|
||||
parameters: []
|
||||
responses:
|
||||
'201':
|
||||
description: ''
|
||||
tags:
|
||||
- user
|
||||
parameters: []
|
||||
/val/v0/videos/:
|
||||
get:
|
||||
operationId: val_v0_videos_list
|
||||
description: GETs or POST video objects
|
||||
parameters:
|
||||
- name: page
|
||||
in: query
|
||||
description: A page number within the paginated result set.
|
||||
required: false
|
||||
type: integer
|
||||
- name: page_size
|
||||
in: query
|
||||
description: Number of results to return per page.
|
||||
required: false
|
||||
type: integer
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
schema:
|
||||
required:
|
||||
- count
|
||||
- results
|
||||
type: object
|
||||
properties:
|
||||
count:
|
||||
type: integer
|
||||
next:
|
||||
type: string
|
||||
format: uri
|
||||
x-nullable: true
|
||||
previous:
|
||||
type: string
|
||||
format: uri
|
||||
x-nullable: true
|
||||
results:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/definitions/Video'
|
||||
tags:
|
||||
- val
|
||||
post:
|
||||
operationId: val_v0_videos_create
|
||||
description: GETs or POST video objects
|
||||
parameters:
|
||||
- name: data
|
||||
in: body
|
||||
required: true
|
||||
schema:
|
||||
$ref: '#/definitions/Video'
|
||||
responses:
|
||||
'201':
|
||||
description: ''
|
||||
schema:
|
||||
$ref: '#/definitions/Video'
|
||||
tags:
|
||||
- val
|
||||
parameters: []
|
||||
/val/v0/videos/missing-hls/:
|
||||
post:
|
||||
operationId: val_v0_videos_missing-hls_create
|
||||
summary: 'Retrieve video IDs that are missing HLS profiles. This endpoint supports
|
||||
2 types of input data:'
|
||||
description: "1. If we want a batch of video ids which are missing HLS profile\
|
||||
\ irrespective of their courses, the request\n data should be in following\
|
||||
\ format:\n {\n 'batch_size': 50,\n 'offset':\
|
||||
\ 0\n }\n And response will be in following format:\n {\n\
|
||||
\ 'videos': ['video_id1', 'video_id2', 'video_id3', ... , video_id50],\n\
|
||||
\ 'total': 300,\n 'offset': 50,\n 'batch_size':\
|
||||
\ 50\n }\n\n2. If we want all the videos which are missing HLS profiles\
|
||||
\ in a set of specific courses, the request data\n should be in following\
|
||||
\ format:\n {\n 'courses': [\n 'course_id1',\n\
|
||||
\ 'course_id2',\n ...\n ]\n \
|
||||
\ }\n And response will be in following format:\n {\n \
|
||||
\ 'videos': ['video_id1', 'video_id2', 'video_id3', ...]\n }"
|
||||
parameters: []
|
||||
responses:
|
||||
'201':
|
||||
description: ''
|
||||
tags:
|
||||
- val
|
||||
put:
|
||||
operationId: val_v0_videos_missing-hls_update
|
||||
summary: Update a single profile for a given video.
|
||||
description: "Example request data:\n {\n 'edx_video_id': '1234'\n\
|
||||
\ 'profile': 'hls',\n 'encode_data': {\n 'url': 'foo.com/qwe.m3u8'\n\
|
||||
\ 'file_size': 34\n 'bitrate': 12\n }\n }"
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- val
|
||||
parameters: []
|
||||
/val/v0/videos/status/:
|
||||
patch:
|
||||
operationId: val_v0_videos_status_partial_update
|
||||
description: Update the status of a video.
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- val
|
||||
parameters: []
|
||||
/val/v0/videos/video-images/update/:
|
||||
post:
|
||||
operationId: val_v0_videos_video-images_update_create
|
||||
description: Update a course video image instance with auto generated image
|
||||
names.
|
||||
parameters: []
|
||||
responses:
|
||||
'201':
|
||||
description: ''
|
||||
tags:
|
||||
- val
|
||||
parameters: []
|
||||
/val/v0/videos/video-transcripts/create/:
|
||||
post:
|
||||
operationId: val_v0_videos_video-transcripts_create_create
|
||||
summary: Creates a video transcript instance with the given information.
|
||||
description: "Arguments:\n request: A WSGI request."
|
||||
parameters: []
|
||||
responses:
|
||||
'201':
|
||||
description: ''
|
||||
tags:
|
||||
- val
|
||||
parameters: []
|
||||
/val/v0/videos/{edx_video_id}:
|
||||
get:
|
||||
operationId: val_v0_videos_read
|
||||
description: Gets a video instance given its edx_video_id
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
schema:
|
||||
$ref: '#/definitions/Video'
|
||||
tags:
|
||||
- val
|
||||
put:
|
||||
operationId: val_v0_videos_update
|
||||
description: Gets a video instance given its edx_video_id
|
||||
parameters:
|
||||
- name: data
|
||||
in: body
|
||||
required: true
|
||||
schema:
|
||||
$ref: '#/definitions/Video'
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
schema:
|
||||
$ref: '#/definitions/Video'
|
||||
tags:
|
||||
- val
|
||||
patch:
|
||||
operationId: val_v0_videos_partial_update
|
||||
description: Gets a video instance given its edx_video_id
|
||||
parameters:
|
||||
- name: data
|
||||
in: body
|
||||
required: true
|
||||
schema:
|
||||
$ref: '#/definitions/Video'
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
schema:
|
||||
$ref: '#/definitions/Video'
|
||||
tags:
|
||||
- val
|
||||
delete:
|
||||
operationId: val_v0_videos_delete
|
||||
description: Gets a video instance given its edx_video_id
|
||||
parameters: []
|
||||
responses:
|
||||
'204':
|
||||
description: ''
|
||||
tags:
|
||||
- val
|
||||
parameters:
|
||||
- name: edx_video_id
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
pattern: ^[a-zA-Z0-9\-_]*$
|
||||
definitions:
|
||||
BadgeClass:
|
||||
title: Badge class
|
||||
required:
|
||||
- slug
|
||||
- display_name
|
||||
- description
|
||||
- criteria
|
||||
type: object
|
||||
properties:
|
||||
slug:
|
||||
title: Slug
|
||||
type: string
|
||||
format: slug
|
||||
pattern: ^[-a-zA-Z0-9_]+$
|
||||
maxLength: 255
|
||||
minLength: 1
|
||||
issuing_component:
|
||||
title: Issuing component
|
||||
type: string
|
||||
format: slug
|
||||
pattern: ^[-a-zA-Z0-9_]+$
|
||||
default: ''
|
||||
maxLength: 50
|
||||
display_name:
|
||||
title: Display name
|
||||
type: string
|
||||
maxLength: 255
|
||||
minLength: 1
|
||||
course_id:
|
||||
title: Course id
|
||||
type: string
|
||||
maxLength: 255
|
||||
description:
|
||||
title: Description
|
||||
type: string
|
||||
minLength: 1
|
||||
criteria:
|
||||
title: Criteria
|
||||
type: string
|
||||
minLength: 1
|
||||
image_url:
|
||||
title: Image url
|
||||
type: string
|
||||
readOnly: true
|
||||
format: uri
|
||||
BadgeAssertion:
|
||||
required:
|
||||
- image_url
|
||||
- assertion_url
|
||||
type: object
|
||||
properties:
|
||||
badge_class:
|
||||
$ref: '#/definitions/BadgeClass'
|
||||
image_url:
|
||||
title: Image url
|
||||
type: string
|
||||
format: uri
|
||||
maxLength: 200
|
||||
minLength: 1
|
||||
assertion_url:
|
||||
title: Assertion url
|
||||
type: string
|
||||
format: uri
|
||||
maxLength: 200
|
||||
minLength: 1
|
||||
created:
|
||||
title: Created
|
||||
type: string
|
||||
format: date-time
|
||||
readOnly: true
|
||||
CCXCourse:
|
||||
required:
|
||||
- master_course_id
|
||||
- display_name
|
||||
- coach_email
|
||||
- start
|
||||
- due
|
||||
- max_students_allowed
|
||||
type: object
|
||||
properties:
|
||||
ccx_course_id:
|
||||
title: Ccx course id
|
||||
type: string
|
||||
readOnly: true
|
||||
master_course_id:
|
||||
title: Master course id
|
||||
type: string
|
||||
minLength: 1
|
||||
display_name:
|
||||
title: Display name
|
||||
type: string
|
||||
minLength: 1
|
||||
coach_email:
|
||||
title: Coach email
|
||||
type: string
|
||||
format: email
|
||||
minLength: 1
|
||||
start:
|
||||
title: Start
|
||||
type: string
|
||||
due:
|
||||
title: Due
|
||||
type: string
|
||||
max_students_allowed:
|
||||
title: Max students allowed
|
||||
type: integer
|
||||
course_modules:
|
||||
title: Course modules
|
||||
type: string
|
||||
readOnly: true
|
||||
CohortUsersAPI:
|
||||
required:
|
||||
- username
|
||||
type: object
|
||||
properties:
|
||||
username:
|
||||
title: Username
|
||||
description: Required. 150 characters or fewer. Letters, digits and @/./+/-/_
|
||||
only.
|
||||
type: string
|
||||
pattern: ^[\w.@+-]+$
|
||||
maxLength: 150
|
||||
minLength: 1
|
||||
email:
|
||||
title: Email address
|
||||
type: string
|
||||
format: email
|
||||
maxLength: 254
|
||||
name:
|
||||
title: Name
|
||||
type: string
|
||||
readOnly: true
|
||||
commerce.CourseMode:
|
||||
required:
|
||||
- name
|
||||
- price
|
||||
type: object
|
||||
properties:
|
||||
name:
|
||||
title: Name
|
||||
type: string
|
||||
minLength: 1
|
||||
currency:
|
||||
title: Currency
|
||||
type: string
|
||||
maxLength: 8
|
||||
minLength: 1
|
||||
price:
|
||||
title: Price
|
||||
type: integer
|
||||
sku:
|
||||
title: SKU
|
||||
description: 'OPTIONAL: This is the SKU (stock keeping unit) of this mode
|
||||
in the external ecommerce service. Leave this blank if the course has not
|
||||
yet been migrated to the ecommerce service.'
|
||||
type: string
|
||||
maxLength: 255
|
||||
x-nullable: true
|
||||
bulk_sku:
|
||||
title: Bulk SKU
|
||||
description: This is the bulk SKU (stock keeping unit) of this mode in the
|
||||
external ecommerce service.
|
||||
type: string
|
||||
maxLength: 255
|
||||
x-nullable: true
|
||||
expires:
|
||||
title: Expires
|
||||
type: string
|
||||
format: date-time
|
||||
x-nullable: true
|
||||
commerce.Course:
|
||||
required:
|
||||
- id
|
||||
- modes
|
||||
type: object
|
||||
properties:
|
||||
id:
|
||||
title: Id
|
||||
type: string
|
||||
minLength: 1
|
||||
name:
|
||||
title: Name
|
||||
type: string
|
||||
readOnly: true
|
||||
minLength: 1
|
||||
verification_deadline:
|
||||
title: Verification deadline
|
||||
type: string
|
||||
format: date-time
|
||||
x-nullable: true
|
||||
modes:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/definitions/commerce.CourseMode'
|
||||
CourseGoal:
|
||||
required:
|
||||
- user
|
||||
- course_key
|
||||
type: object
|
||||
properties:
|
||||
user:
|
||||
title: User
|
||||
type: string
|
||||
pattern: ^[\w.@+-]+$
|
||||
course_key:
|
||||
title: Course key
|
||||
type: string
|
||||
maxLength: 255
|
||||
minLength: 1
|
||||
goal_key:
|
||||
title: Goal key
|
||||
type: string
|
||||
enum:
|
||||
- certify
|
||||
- complete
|
||||
- explore
|
||||
- unsure
|
||||
course_modes.CourseMode:
|
||||
required:
|
||||
- course_id
|
||||
- mode_slug
|
||||
- mode_display_name
|
||||
- currency
|
||||
type: object
|
||||
properties:
|
||||
course_id:
|
||||
title: Course id
|
||||
type: string
|
||||
minLength: 1
|
||||
mode_slug:
|
||||
title: Mode slug
|
||||
type: string
|
||||
minLength: 1
|
||||
mode_display_name:
|
||||
title: Mode display name
|
||||
type: string
|
||||
minLength: 1
|
||||
min_price:
|
||||
title: Min price
|
||||
type: integer
|
||||
currency:
|
||||
title: Currency
|
||||
type: string
|
||||
minLength: 1
|
||||
expiration_datetime:
|
||||
title: Expiration datetime
|
||||
type: string
|
||||
format: date-time
|
||||
expiration_datetime_is_explicit:
|
||||
title: Expiration datetime is explicit
|
||||
type: boolean
|
||||
description:
|
||||
title: Description
|
||||
type: string
|
||||
minLength: 1
|
||||
sku:
|
||||
title: Sku
|
||||
type: string
|
||||
minLength: 1
|
||||
bulk_sku:
|
||||
title: Bulk sku
|
||||
type: string
|
||||
minLength: 1
|
||||
_Media:
|
||||
title: Course image
|
||||
type: object
|
||||
properties:
|
||||
uri:
|
||||
title: Uri
|
||||
type: string
|
||||
readOnly: true
|
||||
Image:
|
||||
title: Image
|
||||
required:
|
||||
- raw
|
||||
- small
|
||||
- large
|
||||
type: object
|
||||
properties:
|
||||
raw:
|
||||
title: Raw
|
||||
type: string
|
||||
format: uri
|
||||
minLength: 1
|
||||
small:
|
||||
title: Small
|
||||
type: string
|
||||
format: uri
|
||||
minLength: 1
|
||||
large:
|
||||
title: Large
|
||||
type: string
|
||||
format: uri
|
||||
minLength: 1
|
||||
_CourseApiMediaCollection:
|
||||
title: Media
|
||||
required:
|
||||
- course_image
|
||||
- course_video
|
||||
- image
|
||||
type: object
|
||||
properties:
|
||||
course_image:
|
||||
$ref: '#/definitions/_Media'
|
||||
course_video:
|
||||
$ref: '#/definitions/_Media'
|
||||
image:
|
||||
$ref: '#/definitions/Image'
|
||||
Course:
|
||||
required:
|
||||
- effort
|
||||
- end
|
||||
- enrollment_start
|
||||
- enrollment_end
|
||||
- id
|
||||
- media
|
||||
- name
|
||||
- number
|
||||
- org
|
||||
- short_description
|
||||
- start
|
||||
- start_display
|
||||
- start_type
|
||||
- pacing
|
||||
- mobile_available
|
||||
- invitation_only
|
||||
type: object
|
||||
properties:
|
||||
blocks_url:
|
||||
title: Blocks url
|
||||
type: string
|
||||
readOnly: true
|
||||
effort:
|
||||
title: Effort
|
||||
type: string
|
||||
minLength: 1
|
||||
end:
|
||||
title: End
|
||||
type: string
|
||||
format: date-time
|
||||
enrollment_start:
|
||||
title: Enrollment start
|
||||
type: string
|
||||
format: date-time
|
||||
enrollment_end:
|
||||
title: Enrollment end
|
||||
type: string
|
||||
format: date-time
|
||||
id:
|
||||
title: Id
|
||||
type: string
|
||||
minLength: 1
|
||||
media:
|
||||
$ref: '#/definitions/_CourseApiMediaCollection'
|
||||
name:
|
||||
title: Name
|
||||
type: string
|
||||
minLength: 1
|
||||
number:
|
||||
title: Number
|
||||
type: string
|
||||
minLength: 1
|
||||
org:
|
||||
title: Org
|
||||
type: string
|
||||
minLength: 1
|
||||
short_description:
|
||||
title: Short description
|
||||
type: string
|
||||
minLength: 1
|
||||
start:
|
||||
title: Start
|
||||
type: string
|
||||
format: date-time
|
||||
start_display:
|
||||
title: Start display
|
||||
type: string
|
||||
minLength: 1
|
||||
start_type:
|
||||
title: Start type
|
||||
type: string
|
||||
minLength: 1
|
||||
pacing:
|
||||
title: Pacing
|
||||
type: string
|
||||
minLength: 1
|
||||
mobile_available:
|
||||
title: Mobile available
|
||||
type: boolean
|
||||
hidden:
|
||||
title: Hidden
|
||||
type: string
|
||||
readOnly: true
|
||||
invitation_only:
|
||||
title: Invitation only
|
||||
type: boolean
|
||||
course_id:
|
||||
title: Course id
|
||||
type: string
|
||||
readOnly: true
|
||||
minLength: 1
|
||||
CourseDetail:
|
||||
required:
|
||||
- effort
|
||||
- end
|
||||
- enrollment_start
|
||||
- enrollment_end
|
||||
- id
|
||||
- media
|
||||
- name
|
||||
- number
|
||||
- org
|
||||
- short_description
|
||||
- start
|
||||
- start_display
|
||||
- start_type
|
||||
- pacing
|
||||
- mobile_available
|
||||
- invitation_only
|
||||
type: object
|
||||
properties:
|
||||
blocks_url:
|
||||
title: Blocks url
|
||||
type: string
|
||||
readOnly: true
|
||||
effort:
|
||||
title: Effort
|
||||
type: string
|
||||
minLength: 1
|
||||
end:
|
||||
title: End
|
||||
type: string
|
||||
format: date-time
|
||||
enrollment_start:
|
||||
title: Enrollment start
|
||||
type: string
|
||||
format: date-time
|
||||
enrollment_end:
|
||||
title: Enrollment end
|
||||
type: string
|
||||
format: date-time
|
||||
id:
|
||||
title: Id
|
||||
type: string
|
||||
minLength: 1
|
||||
media:
|
||||
$ref: '#/definitions/_CourseApiMediaCollection'
|
||||
name:
|
||||
title: Name
|
||||
type: string
|
||||
minLength: 1
|
||||
number:
|
||||
title: Number
|
||||
type: string
|
||||
minLength: 1
|
||||
org:
|
||||
title: Org
|
||||
type: string
|
||||
minLength: 1
|
||||
short_description:
|
||||
title: Short description
|
||||
type: string
|
||||
minLength: 1
|
||||
start:
|
||||
title: Start
|
||||
type: string
|
||||
format: date-time
|
||||
start_display:
|
||||
title: Start display
|
||||
type: string
|
||||
minLength: 1
|
||||
start_type:
|
||||
title: Start type
|
||||
type: string
|
||||
minLength: 1
|
||||
pacing:
|
||||
title: Pacing
|
||||
type: string
|
||||
minLength: 1
|
||||
mobile_available:
|
||||
title: Mobile available
|
||||
type: boolean
|
||||
hidden:
|
||||
title: Hidden
|
||||
type: string
|
||||
readOnly: true
|
||||
invitation_only:
|
||||
title: Invitation only
|
||||
type: boolean
|
||||
course_id:
|
||||
title: Course id
|
||||
type: string
|
||||
readOnly: true
|
||||
minLength: 1
|
||||
overview:
|
||||
title: Overview
|
||||
type: string
|
||||
readOnly: true
|
||||
CreditCourse:
|
||||
required:
|
||||
- course_key
|
||||
type: object
|
||||
properties:
|
||||
course_key:
|
||||
title: Course key
|
||||
type: string
|
||||
enabled:
|
||||
title: Enabled
|
||||
type: boolean
|
||||
CreditEligibility:
|
||||
required:
|
||||
- username
|
||||
type: object
|
||||
properties:
|
||||
username:
|
||||
title: Username
|
||||
type: string
|
||||
maxLength: 255
|
||||
minLength: 1
|
||||
course_key:
|
||||
title: Course key
|
||||
type: string
|
||||
readOnly: true
|
||||
deadline:
|
||||
title: Deadline
|
||||
description: Deadline for purchasing and requesting credit.
|
||||
type: string
|
||||
format: date-time
|
||||
CreditProvider:
|
||||
required:
|
||||
- id
|
||||
- display_name
|
||||
- url
|
||||
- status_url
|
||||
- description
|
||||
type: object
|
||||
properties:
|
||||
id:
|
||||
title: Id
|
||||
type: string
|
||||
minLength: 1
|
||||
display_name:
|
||||
title: Display name
|
||||
description: Name of the credit provider displayed to users
|
||||
type: string
|
||||
maxLength: 255
|
||||
minLength: 1
|
||||
url:
|
||||
title: Url
|
||||
type: string
|
||||
format: uri
|
||||
minLength: 1
|
||||
status_url:
|
||||
title: Status url
|
||||
type: string
|
||||
format: uri
|
||||
minLength: 1
|
||||
description:
|
||||
title: Description
|
||||
type: string
|
||||
minLength: 1
|
||||
enable_integration:
|
||||
title: Enable integration
|
||||
description: When true, automatically notify the credit provider when a user
|
||||
requests credit. In order for this to work, a shared secret key MUST be
|
||||
configured for the credit provider in secure auth settings.
|
||||
type: boolean
|
||||
fulfillment_instructions:
|
||||
title: Fulfillment instructions
|
||||
description: Plain text or html content for displaying further steps on receipt
|
||||
page *after* paying for the credit to get credit for a credit course against
|
||||
a credit provider.
|
||||
type: string
|
||||
x-nullable: true
|
||||
thumbnail_url:
|
||||
title: Thumbnail url
|
||||
description: Thumbnail image url of the credit provider.
|
||||
type: string
|
||||
format: uri
|
||||
maxLength: 255
|
||||
minLength: 1
|
||||
CourseEnrollmentsApiList:
|
||||
required:
|
||||
- course_id
|
||||
type: object
|
||||
properties:
|
||||
created:
|
||||
title: Created
|
||||
type: string
|
||||
format: date-time
|
||||
readOnly: true
|
||||
mode:
|
||||
title: Mode
|
||||
type: string
|
||||
maxLength: 100
|
||||
minLength: 1
|
||||
is_active:
|
||||
title: Is active
|
||||
type: boolean
|
||||
user:
|
||||
title: User
|
||||
type: string
|
||||
readOnly: true
|
||||
course_id:
|
||||
title: Course id
|
||||
type: string
|
||||
minLength: 1
|
||||
CourseEntitlement:
|
||||
required:
|
||||
- user
|
||||
- course_uuid
|
||||
- mode
|
||||
type: object
|
||||
properties:
|
||||
user:
|
||||
title: User
|
||||
type: string
|
||||
pattern: ^[\w.@+-]+$
|
||||
uuid:
|
||||
title: Uuid
|
||||
type: string
|
||||
format: uuid
|
||||
readOnly: true
|
||||
course_uuid:
|
||||
title: Course uuid
|
||||
description: UUID for the Course, not the Course Run
|
||||
type: string
|
||||
format: uuid
|
||||
enrollment_course_run:
|
||||
title: Enrollment course run
|
||||
type: string
|
||||
readOnly: true
|
||||
minLength: 1
|
||||
expired_at:
|
||||
title: Expired at
|
||||
description: The date that an entitlement expired, if NULL the entitlement
|
||||
has not expired.
|
||||
type: string
|
||||
format: date-time
|
||||
x-nullable: true
|
||||
created:
|
||||
title: Created
|
||||
type: string
|
||||
format: date-time
|
||||
readOnly: true
|
||||
modified:
|
||||
title: Modified
|
||||
type: string
|
||||
format: date-time
|
||||
readOnly: true
|
||||
mode:
|
||||
title: Mode
|
||||
description: The mode of the Course that will be applied on enroll.
|
||||
type: string
|
||||
maxLength: 100
|
||||
minLength: 1
|
||||
refund_locked:
|
||||
title: Refund locked
|
||||
type: boolean
|
||||
order_number:
|
||||
title: Order number
|
||||
type: string
|
||||
maxLength: 128
|
||||
minLength: 1
|
||||
x-nullable: true
|
||||
support_details:
|
||||
title: Support details
|
||||
type: string
|
||||
readOnly: true
|
||||
ExperimentData:
|
||||
required:
|
||||
- experiment_id
|
||||
- key
|
||||
- value
|
||||
type: object
|
||||
properties:
|
||||
id:
|
||||
title: ID
|
||||
type: integer
|
||||
readOnly: true
|
||||
experiment_id:
|
||||
title: Experiment ID
|
||||
type: integer
|
||||
maximum: 65535
|
||||
minimum: 0
|
||||
user:
|
||||
title: User
|
||||
type: string
|
||||
pattern: ^[\w.@+-]+$
|
||||
readOnly: true
|
||||
key:
|
||||
title: Key
|
||||
type: string
|
||||
maxLength: 255
|
||||
minLength: 1
|
||||
value:
|
||||
title: Value
|
||||
type: string
|
||||
minLength: 1
|
||||
created:
|
||||
title: Created
|
||||
type: string
|
||||
format: date-time
|
||||
readOnly: true
|
||||
modified:
|
||||
title: Modified
|
||||
type: string
|
||||
format: date-time
|
||||
readOnly: true
|
||||
ExperimentDataCreate:
|
||||
required:
|
||||
- experiment_id
|
||||
- key
|
||||
- value
|
||||
type: object
|
||||
properties:
|
||||
id:
|
||||
title: ID
|
||||
type: integer
|
||||
readOnly: true
|
||||
experiment_id:
|
||||
title: Experiment ID
|
||||
type: integer
|
||||
maximum: 65535
|
||||
minimum: 0
|
||||
user:
|
||||
title: User
|
||||
type: string
|
||||
pattern: ^[\w.@+-]+$
|
||||
key:
|
||||
title: Key
|
||||
type: string
|
||||
maxLength: 255
|
||||
minLength: 1
|
||||
value:
|
||||
title: Value
|
||||
type: string
|
||||
minLength: 1
|
||||
created:
|
||||
title: Created
|
||||
type: string
|
||||
format: date-time
|
||||
readOnly: true
|
||||
modified:
|
||||
title: Modified
|
||||
type: string
|
||||
format: date-time
|
||||
readOnly: true
|
||||
ExperimentKeyValue:
|
||||
required:
|
||||
- experiment_id
|
||||
- key
|
||||
- value
|
||||
type: object
|
||||
properties:
|
||||
id:
|
||||
title: ID
|
||||
type: integer
|
||||
readOnly: true
|
||||
experiment_id:
|
||||
title: Experiment ID
|
||||
type: integer
|
||||
maximum: 65535
|
||||
minimum: 0
|
||||
key:
|
||||
title: Key
|
||||
type: string
|
||||
maxLength: 255
|
||||
minLength: 1
|
||||
value:
|
||||
title: Value
|
||||
type: string
|
||||
minLength: 1
|
||||
created:
|
||||
title: Created
|
||||
type: string
|
||||
format: date-time
|
||||
readOnly: true
|
||||
modified:
|
||||
title: Modified
|
||||
type: string
|
||||
format: date-time
|
||||
readOnly: true
|
||||
mobile_api.User:
|
||||
required:
|
||||
- username
|
||||
type: object
|
||||
properties:
|
||||
id:
|
||||
title: ID
|
||||
type: integer
|
||||
readOnly: true
|
||||
username:
|
||||
title: Username
|
||||
description: Required. 150 characters or fewer. Letters, digits and @/./+/-/_
|
||||
only.
|
||||
type: string
|
||||
pattern: ^[\w.@+-]+$
|
||||
maxLength: 150
|
||||
minLength: 1
|
||||
email:
|
||||
title: Email address
|
||||
type: string
|
||||
format: email
|
||||
maxLength: 254
|
||||
name:
|
||||
title: Name
|
||||
type: string
|
||||
readOnly: true
|
||||
course_enrollments:
|
||||
title: Course enrollments
|
||||
type: string
|
||||
readOnly: true
|
||||
CourseEnrollment:
|
||||
type: object
|
||||
properties:
|
||||
audit_access_expires:
|
||||
title: Audit access expires
|
||||
type: string
|
||||
readOnly: true
|
||||
created:
|
||||
title: Created
|
||||
type: string
|
||||
format: date-time
|
||||
readOnly: true
|
||||
mode:
|
||||
title: Mode
|
||||
type: string
|
||||
maxLength: 100
|
||||
minLength: 1
|
||||
is_active:
|
||||
title: Is active
|
||||
type: boolean
|
||||
course:
|
||||
title: Course
|
||||
type: string
|
||||
readOnly: true
|
||||
certificate:
|
||||
title: Certificate
|
||||
type: string
|
||||
readOnly: true
|
||||
NotifierUser:
|
||||
type: object
|
||||
properties:
|
||||
id:
|
||||
title: ID
|
||||
type: integer
|
||||
readOnly: true
|
||||
email:
|
||||
title: Email address
|
||||
type: string
|
||||
format: email
|
||||
readOnly: true
|
||||
minLength: 1
|
||||
name:
|
||||
title: Name
|
||||
type: string
|
||||
readOnly: true
|
||||
preferences:
|
||||
title: Preferences
|
||||
type: string
|
||||
readOnly: true
|
||||
course_info:
|
||||
title: Course info
|
||||
type: string
|
||||
readOnly: true
|
||||
Organization:
|
||||
required:
|
||||
- name
|
||||
- short_name
|
||||
type: object
|
||||
properties:
|
||||
id:
|
||||
title: ID
|
||||
type: integer
|
||||
readOnly: true
|
||||
created:
|
||||
title: Created
|
||||
type: string
|
||||
format: date-time
|
||||
readOnly: true
|
||||
modified:
|
||||
title: Modified
|
||||
type: string
|
||||
format: date-time
|
||||
readOnly: true
|
||||
name:
|
||||
title: Name
|
||||
type: string
|
||||
maxLength: 255
|
||||
minLength: 1
|
||||
short_name:
|
||||
title: Short Name
|
||||
description: Please do not use spaces or special characters. Only allowed
|
||||
special characters are period (.), hyphen (-) and underscore (_).
|
||||
type: string
|
||||
maxLength: 255
|
||||
minLength: 1
|
||||
description:
|
||||
title: Description
|
||||
type: string
|
||||
x-nullable: true
|
||||
logo:
|
||||
title: Logo
|
||||
description: Please add only .PNG files for logo images. This logo will be
|
||||
used on certificates.
|
||||
type: string
|
||||
readOnly: true
|
||||
x-nullable: true
|
||||
format: uri
|
||||
active:
|
||||
title: Active
|
||||
type: boolean
|
||||
UserMapping:
|
||||
type: object
|
||||
properties:
|
||||
username:
|
||||
title: Username
|
||||
type: string
|
||||
readOnly: true
|
||||
remote_id:
|
||||
title: Remote id
|
||||
type: string
|
||||
readOnly: true
|
||||
EncodedVideo:
|
||||
required:
|
||||
- url
|
||||
- file_size
|
||||
- bitrate
|
||||
- profile
|
||||
type: object
|
||||
properties:
|
||||
created:
|
||||
title: Created
|
||||
type: string
|
||||
format: date-time
|
||||
modified:
|
||||
title: Modified
|
||||
type: string
|
||||
format: date-time
|
||||
url:
|
||||
title: Url
|
||||
type: string
|
||||
maxLength: 200
|
||||
minLength: 1
|
||||
file_size:
|
||||
title: File size
|
||||
type: integer
|
||||
minimum: 0
|
||||
bitrate:
|
||||
title: Bitrate
|
||||
type: integer
|
||||
minimum: 0
|
||||
profile:
|
||||
title: Profile
|
||||
type: string
|
||||
pattern: ^[a-zA-Z0-9\-_]*$
|
||||
Video:
|
||||
required:
|
||||
- encoded_videos
|
||||
- edx_video_id
|
||||
- duration
|
||||
- status
|
||||
type: object
|
||||
properties:
|
||||
encoded_videos:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/definitions/EncodedVideo'
|
||||
courses:
|
||||
type: array
|
||||
items:
|
||||
type: string
|
||||
uniqueItems: true
|
||||
url:
|
||||
title: Url
|
||||
type: string
|
||||
readOnly: true
|
||||
created:
|
||||
title: Created
|
||||
type: string
|
||||
format: date-time
|
||||
edx_video_id:
|
||||
title: Edx video id
|
||||
type: string
|
||||
pattern: ^[a-zA-Z0-9\-_]*$
|
||||
maxLength: 100
|
||||
minLength: 1
|
||||
client_video_id:
|
||||
title: Client video id
|
||||
type: string
|
||||
maxLength: 255
|
||||
duration:
|
||||
title: Duration
|
||||
type: number
|
||||
minimum: 0
|
||||
status:
|
||||
title: Status
|
||||
type: string
|
||||
maxLength: 255
|
||||
minLength: 1
|
||||
@@ -20,3 +20,4 @@ pyinotify # More efficient checking for runserver relo
|
||||
sphinx==1.8.5 # Pinned because 2.0.0 release requires Python '>=3.5' but current Python is 2.7.12
|
||||
vulture # Detects possible dead/unused code, used in scripts/find-dead-code.sh
|
||||
modernize # Used to make Python 2 code more modern with the intention of eventually porting it over to Python 3.
|
||||
recommonmark # To use markdown in sphinx
|
||||
|
||||
Reference in New Issue
Block a user