Schul-Cloud Content API
Project description
The ressources API package allows easy access to the Schul-Cloud ressources servers. To get an overview about how the api is defined, please refer to the repository.
Installation
You can install the package with pip from PyPI
pip install schul_cloud_ressources_api_v1
Accessing the API
Suppose, a server runs under http://localhost:8080/v1. You can use the api to connect to it. If you do not have a server, you can get a test server from the package schul_cloud_ressources_server_tests.
# import the api classes for access
from schul_cloud_ressources_api_v1 import ApiClient, RessourceApi
# create the client objects
url = "http://localhost:8080/v1"
client = ApiClient(url)
api = RessourceApi(client)
The api object gives access to the server. Here, you can see how to access the api:
# import the ressource examples
from schul_cloud_ressources_api_v1.schema import get_valid_examples
# get a valid ressource
ressource = get_valid_examples()[0]
print(ressource)
# add the ressource to the server
response = api.add_ressource(ressource)
# verify the ressource is on the server
all_my_resssources_on_the_server = api.get_ressource_ids()
assert response.id in all_my_resssources_on_the_server
# get the ressource from the server
ressource_copy = api.get_ressource(response.id)
assert ressource_copy == ressource
# delete the ressource
api.delete_ressource(response.id)
Authentication
There are these options for authentication:
no authentication: this is the default and nothing needs to be done.
basic authentication: authentication with user name and password
api_key authentication: a key is supplied to authorize the requests.
The authentication is a global state. All ApiClients use this global state. Thus, you can only authenticate at one API at a time.
import schul_cloud_ressources_api_v1.auth as auth
You can remove all authentication. This is the default case.
auth.none()
You can authenticate with username and password. This is Basic Authentication <https://en.wikipedia.org/wiki/Basic_access_authentication>.
auth.basic("username", "password")
You can authenticate with an api key.
auth.api_key("your-api-key")
Verifying Ressources
When you use ressources, you may want to verify if they have the correct format. The format is specified in the ressource-schema. This schema is included in the api.
from schul_cloud_ressources_api_v1.schema import (
get_valid_examples, get_invalid_examples, validate_ressource, is_valid_ressource
)
You can test if a ressource is valid or not using is_valid_ressource
valid_ressource = get_valid_examples()[0]
assert is_valid_ressource(valid_ressource)
invalid_ressource = get_invalid_examples()[0]
assert not is_valid_ressource(invalid_ressource)
If you would like to find out more about why the ressource is not valid, you can use validate_ressource.
validate_ressource({'title': 'hello'})
Which results in an error that the url property is not present but is required.
jsonschema.exceptions.ValidationError: 'url' is a required property
Failed validating 'required' in schema:
{'properties': {'contentCategory': {'$ref': '#/definitions/ContentCategory'},
'contextUrl': {'$ref': '#/definitions/URL'},
'curricula': {'items': {'$ref': '../curriculum/curriculum.json'},
'type': 'array'},
'dimensions': {'$ref': '#/definitions/Dimensions'},
'duration': {'type': 'number'},
'languages': {'description': 'As described in IEEE '
'LOM, Section 1.3 '
'http://129.115.100.158/txlor/docs/IEEE_LOM_1484_12_1_v1_Final_Draft.pdf',
'items': {'$ref': '#/definitions/Language'},
'type': 'array'},
'licenses': {'items': {'$ref': '../license/license.json'},
'type': 'array'},
'mimeType': {'description': 'https://tools.ietf.org/html/rfc2046',
'example': 'text/html',
'type': 'string'},
'size': {'format': 'int64', 'type': 'integer'},
'thumbnail': {'$ref': '#/definitions/URL'},
'title': {'description': 'The title of the ressource.',
'example': 'Schul-Cloud',
'type': 'string'},
'url': {'$ref': '#/definitions/URL'}},
'required': ['title',
'url',
'licenses',
'mimeType',
'contentCategory',
'languages'],
'type': 'object'}
On instance:
{'title': 'hello'}
Further Reading
To edit this description, you can edit the file on Github. You can use this editor.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for schul_cloud_ressources_api_v1-1.0.0-51.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 56d9c49ad27e6db93b317b554bfb9c16b428c711321629673421d8dd0e8fea1b |
|
MD5 | 46ab293d5bc20fb33358aecc2ce51262 |
|
BLAKE2b-256 | ce78ca0a10f887f039dda8513dc24ae3e8ba83a150cc657b2e6b926a18218d48 |
Hashes for schul_cloud_ressources_api_v1-1.0.0.post51-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7440a9db594610d5638a8fb9f988598fb422c2e283cf3c62185218a43161cfb1 |
|
MD5 | 2bf60cb235efe72c1bb8c28506967829 |
|
BLAKE2b-256 | 839f7da3ff6236d05ef0d1872b4b852d7d66ec8e3ebf3a91b3d7a22fe429bee1 |