Skip to main content

Schul-Cloud Content API

Project description

The resources API package allows easy access to the Schul-Cloud resources 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_resources_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_resources_server_tests.

# import the api classes for access
from schul_cloud_resources_api_v1 import ApiClient, ResourceApi

# create the client objects
url = "http://localhost:8080/v1"
client = ApiClient(url)
api = ResourceApi(client)

The api object gives access to the server. Here, you can see how to access the api:

# import the resource examples
from schul_cloud_resources_api_v1.schema import get_valid_examples

# get a valid resource
resource = get_valid_examples()[0]
print(resource)

# add the resource to the server
response = api.add_resource({"data": {"type": "resource", "attributes": resource}})

# verify the resource is on the server
all_my_resssources_on_the_server = [
    _id.id for _id in api.get_resource_ids().data]
assert response.data.id in all_my_resssources_on_the_server

# get the resource from the server
resource_copy = api.get_resource(response.data.id)
assert resource_copy == resource.data.attributes

# delete the resource
api.delete_resource(response.data.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_resources_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 Resources

When you use resources, you may want to verify if they have the correct format. The format is specified in the resource-schema. This schema is included in the api.

from schul_cloud_resources_api_v1.schema import (
    get_valid_examples, get_invalid_examples, validate_resource, is_valid_resource
)

You can test if a resource is valid or not using is_valid_resource

valid_resource = get_valid_examples()[0]
assert is_valid_resource(valid_resource)

invalid_resource = get_invalid_examples()[0]
assert not is_valid_resource(invalid_resource)

If you would like to find out more about why the resource is not valid, you can use validate_resource.

validate_resource({'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 resource.',
                              'example': 'Schul-Cloud',
                              'type': 'string'},
                    'url': {'$ref': '#/definitions/URL'}},
     'required': ['title',
                  'url',
                  'licenses',
                  'mimeType',
                  'contentCategory',
                  'languages'],
     'type': 'object'}

On instance:
    {'title': 'hello'}

Further Reading

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

schul_cloud_resources_api_v1-1.0.0.85.tar.gz (25.3 kB view details)

Uploaded Source

Built Distribution

File details

Details for the file schul_cloud_resources_api_v1-1.0.0.85.tar.gz.

File metadata

File hashes

Hashes for schul_cloud_resources_api_v1-1.0.0.85.tar.gz
Algorithm Hash digest
SHA256 107ef6a048929d02f8ed1a27314a6b56628ab2b76a44a78f5d1841de1f28c8db
MD5 e1879dd40b97e9348a83ae0555f90231
BLAKE2b-256 3bc4bfd73f81c2ff6324fd5e9d69b899e1df7ece19021500bd25560abc3d8316

See more details on using hashes here.

File details

Details for the file schul_cloud_resources_api_v1-1.0.0.85-py3-none-any.whl.

File metadata

File hashes

Hashes for schul_cloud_resources_api_v1-1.0.0.85-py3-none-any.whl
Algorithm Hash digest
SHA256 c76781a3ecf2e9afa6b8088cd156f2ef3d472ddec3542288535c587b5ad2b97b
MD5 9aa45d578e0c5d1068dbf85eeb74bcc1
BLAKE2b-256 1749076fcb412f92a173917778ebe7e6259f2dd2498585eaa328db19630d2b9b

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page