learning_credentials.api.v1 package#

Submodules#

learning_credentials.api.v1.permissions module#

Django REST framework permissions.

class learning_credentials.api.v1.permissions.CanAccessLearningContext#

Bases: BasePermission

Permission to allow access to learning context if the user is enrolled.

has_permission(request: Request, view: APIView) bool#

Check if the user can access the learning context.

class learning_credentials.api.v1.permissions.IsAdminOrSelf#

Bases: BasePermission

Permission to allow only admins or the user themselves to access the API.

Non-staff users cannot pass a username that is not their own.

has_permission(request: Request, view: APIView) bool#

Check if the user is admin or accessing their own data.

learning_credentials.api.v1.serializers module#

API serializers for learning credentials.

class learning_credentials.api.v1.serializers.CredentialEligibilityResponseSerializer(*args, **kwargs)#

Bases: Serializer

Serializer for the complete credential eligibility response.

class learning_credentials.api.v1.serializers.CredentialEligibilitySerializer(*args, **kwargs)#

Bases: Serializer

Serializer for credential eligibility information with dynamic fields.

to_representation(instance: dict) dict[str, Any]#

Remove null/empty fields from representation.

class learning_credentials.api.v1.serializers.CredentialSerializer(*args, **kwargs)#

Bases: ModelSerializer

Serializer that returns credential metadata (for the public verification endpoint).

class Meta#

Bases: object

Serializer metadata.

fields = ('user_full_name', 'created', 'learning_context_name', 'status', 'invalidation_reason')#
model#

alias of Credential

learning_credentials.api.v1.urls module#

API v1 URLs.

learning_credentials.api.v1.views module#

API views for Learning Credentials.

class learning_credentials.api.v1.views.CredentialConfigurationCheckView(**kwargs)#

Bases: APIView

API view to check if any credentials are configured for a specific learning context.

get(_request: Request, learning_context_key: str) Response#

Check if any credentials are configured for the given learning context.

Example Request

GET /api/learning_credentials/v1/configured/course-v1:OpenedX+DemoX+DemoCourse/

Response Values

  • 200 OK: Request successful, returns credential configuration status.

  • 400 Bad Request: Invalid learning context key format.

  • 403 Forbidden: User is not authenticated or does not have permission to access the learning context.

  • 404 Not Found: Learning context not found or user does not have access.

Example Response

{
  "has_credentials": true,
  "credential_count": 2
}

Response Fields

  • has_credentials: Boolean indicating if any credentials are configured

  • credential_count: Number of credential configurations available

Note

This endpoint does not perform learning context existence validation, so it will not return 404 for staff users.

permission_classes = (<class 'rest_framework.permissions.IsAuthenticated'>, <class 'learning_credentials.api.v1.permissions.CanAccessLearningContext'>)#
class learning_credentials.api.v1.views.CredentialEligibilityView(**kwargs)#

Bases: APIView

API view for credential eligibility checking and generation.

GET: Returns detailed eligibility info for all configured credentials in a learning context.

Staff users can operate on behalf of other users via the username parameter.

get(request: Request, learning_context_key: str) Response#

Get credential eligibility for a learning context.

Returns detailed eligibility information for all configured credentials, including:

  • Current grades and requirements for grade-based credentials

  • Completion percentages for completion-based credentials

  • Step-by-step progress for learning paths

  • Existing credential info if already generated

Query Parameters

  • username (staff only): View eligibility for a specific user.

  • retrieval_func: Filter by credential type retrieval function (e.g. learning_credentials.processors.retrieve_subsection_grades).

Example Request

GET /api/learning_credentials/v1/eligibility/course-v1:OpenedX+DemoX+DemoCourse/

Example Response

{
  "context_key": "course-v1:OpenedX+DemoX+DemoCourse",
  "credentials": [
    {
      "credential_type_id": 1,
      "name": "Certificate of Achievement",
      "is_eligible": true,
      "existing_credential": null,
      "current_grades": {"final exam": 86, "total": 82},
      "required_grades": {"final exam": 65, "total": 80}
    }
  ]
}
permission_classes = (<class 'rest_framework.permissions.IsAuthenticated'>, <class 'learning_credentials.api.v1.permissions.IsAdminOrSelf'>, <class 'learning_credentials.api.v1.permissions.CanAccessLearningContext'>)#
class learning_credentials.api.v1.views.CredentialMetadataView(**kwargs)#

Bases: APIView

API view to retrieve credential metadata by UUID.

get(_request: Request, uuid: str) Response#

Retrieve credential metadata by its UUID.

Example Request

GET /api/learning_credentials/v1/metadata/123e4567-e89b-12d3-a456-426614174000/

Response Values

  • 200 OK: Successfully retrieved the credential metadata.

  • 404 Not Found: Credential not found or not valid.

Example Response

{
    "user_full_name": "John Doe",
    "created": "2023-01-01",
    "learning_context_name": "Demo Course",
    "status": "available",
    "invalidation_reason": ""
}


{
    "user_full_name": "John Doe",
    "created": "2023-01-01",
    "learning_context_name": "Demo Course",
    "status": "invalidated",
    "invalidation_reason": "Reissued due to name change."
}

Module contents#

Learning Credentials API v1 package.