Skip to main content

schul_cloud_resources_api_v1

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.

auth.basic("username", "password")

You can authenticate with an api key.

auth.api_key("your-api-key")

Validating 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 this package.

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 by calling 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'})

In this example, it 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

Metadata

Release files for schul-cloud-resources-api-v1 1.0.0.326

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for schul-cloud-resources-api-v1 1.0.0.326
File Size Uploaded Provenance
schul_cloud_resources_api_v1-1.0.0.326.tar.gz 34.3 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for schul-cloud-resources-api-v1 1.0.0.326
File Interpreter ABI Platform
schul_cloud_resources_api_v1-1.0.0.326-py3-none-any.whl Python 3 none any Details

Total release size: 118.9 kB

Release files / schul_cloud_resources_api_v1-1.0.0.326.tar.gz

Download URL schul_cloud_resources_api_v1-1.0.0.326.tar.gz
Size 34.3 kB
Tags Source
SHA-256 checksum
How to use checksums
21886c20a89a42bd9d91828ae147760f01ec2b3bcf9f5aaf574b2d614b9a829e
BLAKE2b-256 checksum
How to use checksums
5c501e13576662e5e1993f5497d67835b86b36f1b5b645af010bb53f16925e9a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / schul_cloud_resources_api_v1-1.0.0.326-py3-none-any.whl

Download URL schul_cloud_resources_api_v1-1.0.0.326-py3-none-any.whl
Size 84.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6c4e074d1a06b4b6ae1f2012f0478ee0594bb99418050789783503b7fabb0390
BLAKE2b-256 checksum
How to use checksums
48e62f06314f81fd2990bdd7ec347361b5841c91f969f8610ffb60f1c090d757
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Security for schul-cloud-resources-api-v1 1.0.0.326

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

1.0.0.326 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page