# catalog_licenses_program_retrieve API View for managing program licenses. This endpoint allows retrieving program licenses with filtering and pagination support. Query Parameters: platform_key (str, optional): The unique identifier for the platform name (str, optional): Filter by license name (exact match) source (str, optional): Filter by license source active (bool, optional): Filter by active status program_id (str, optional): Filter by program ID query (str, optional): Search licenses by name (contains) page (int, optional): Page number for pagination page_size (int, optional): Number of items per page verbose (bool, optional): Include additional details in response sort (str, optional): Field to sort results by (default: '-id') Methods: GET: Retrieve a paginated list of program licenses Returns: GET: A paginated JSON response containing program licenses: { "count": 10, "next": "https://example.com/api/catalog/licenses/program/?page=2", "previous": null, "results": [ { "id": 123, "created": "2023-06-15T14:30:00Z", "started": "2023-06-15T14:30:00Z", "expired": null, "name": "Program License 2023", "count": 100, "active": true, "metadata": {}, "source": "source", "external_id": "ext-123", "platform_key": "platform1", "program_id": "program-v1:org+program+run", "assignments": { "total": 50, "active": 45, "pending": 5 } }, ... ] } Error Responses: 400 Bad Request: If query parameters are invalid 401 Unauthorized: If the user is not authenticated 403 Forbidden: If the user does not have permission to access this resource 500 Internal Server Error: If an unexpected error occurs Access Control: - Requires IsDMAdmin or IsPlatformAdminReadOnly permission - Available to platform administrators (read-only) and DM admins Endpoint: GET /api/catalog/licenses/program/ Version: 3.59.0-ai-plus Security: PlatformApiKeyAuthentication ## Query parameters: - `active` (boolean) Filter by active status - `external_id` (string) Filter by external identifier - `key` (string) Alternative filter by platform key - `name` (string) Filter by license name (exact match) - `org` (string) Alternative filter by platform organization - `page` (integer) Page number for pagination - `page_size` (integer) Number of results per page - `platform_key` (string) The unique identifier for the platform - `platform_org` (string) The organization identifier for the platform - `program_id` (string) Filter by program ID - `query` (string) Search license names (contains) - `sort` (string) Field to sort results by (e.g., '-id', 'created', '-created') - `source` (string) Filter by license source - `verbose` (boolean) Include detailed assignment data in the response ## Response 200 fields (application/json): - `count` (integer, required) Total number of results - `next_page` (string,null, required) URL for next page of results - `previous_page` (string,null, required) URL for previous page of results - `results` (array, required) List of program licenses - `results.id` (integer, required) The unique identifier for the license - `results.created` (string, required) When the license was created - `results.started` (string, required) When the license becomes active - `results.expired` (string,null, required) When the license expires (null if no expiration) - `results.name` (string, required) The display name of the license - `results.count` (integer, required) The number of seats purchased - `results.active` (boolean, required) Whether the license is active - `results.metadata` (object, required) Additional license metadata - `results.source` (string, required) The source identifier for the license - `results.external_id` (string,null, required) External identifier for the license (null if none) - `results.platform_key` (string, required) The platform key associated with the license - `results.program_id` (string) The program ID associated with the license - `results.program_key` (string) The program key associated with the license - `results.program_name` (string) The name of the program associated with the license - `results.usage_count` (integer, required) Number of assignments using this license - `results.assignments` (object) Assignment counts by status (only included in verbose mode)