# Get Learner Subjects Per Term

## Get the subject records for a learner per term

<mark style="color:blue;">`GET`</mark> `https://integrate.d6plus.co.za/api/v1/currplus/learnersubjectsperterm/{school_login_id}`

Use this endpoint to fetch the subjects per term for the specified learner, for the specified school.  \
All subjects for all terms will be return, for the current d6+ administrative year. \
The results are grouped per term, per subject, for the current administrative year.&#x20;

#### Path Parameters

| Name                                                | Type    | Description                                      |
| --------------------------------------------------- | ------- | ------------------------------------------------ |
| school\_login\_id<mark style="color:red;">\*</mark> | Integer | The login ID of the school to retrieve data from |

#### Query Parameters

| Name                                          | Type    | Description                  |
| --------------------------------------------- | ------- | ---------------------------- |
| learner\_id<mark style="color:red;">\*</mark> | Integer | The ID of a specific learner |

#### Headers

| Name                                              | Type   | Description       |
| ------------------------------------------------- | ------ | ----------------- |
| HTTP-X-USERNAME<mark style="color:red;">\*</mark> | String | As provided by d6 |
| HTTP-X-PASSWORD<mark style="color:red;">\*</mark> | String | As provided by d6 |

{% tabs %}
{% tab title="200 The request was successful." %}

```json
[
    {
        "year": "2025",
        "subject_id": "10",
        "subject_name": "Afrikaans First Additional Language (Gr 07)",
        "super_subject_id": "1",
        "super_subject_name": "Afrikaans First Additional Language",
        "grade_id": "9",
        "grade": "7",
        "terms": [
            {
                "term_id": 98,
                "term": "1",
                "subject_group_id": "118",
                "subject_group_name": "Afrikaans Group 1",
                "classroom_id": "1",
                "classroom_name": "1",
                "subject_group_teacher_id": "13"
            },
            {
                "term_id": 99,
                "term": "2",
                "subject_group_id": "118",
                "subject_group_name": "Afrikaans Group 1",
                "classroom_id": "1",
                "classroom_name": "1",
                "subject_group_teacher_id": "13"
            },
            {
                "term_id": 100,
                "term": "3",
                "subject_group_id": "270",
                "subject_group_name": "Afrikaans Group 2",
                "classroom_id": "4",
                "classroom_name": "3A",
                "subject_group_teacher_id": "17"
            },
            {
                "term_id": 101,
                "term": "4",
                "subject_group_id": "270",
                "subject_group_name": "Afrikaans Group 2",
                "classroom_id": "4",
                "classroom_name": "3A",
                "subject_group_teacher_id": "17"
            }
        ]
    },
    {
        "year": "2025",
        "subject_id": "3418",
        "subject_name": "Coding and Robotics (Gr 07)",
        "super_subject_id": "2334",
        "super_subject_name": "Coding and Robotics",
        "grade_id": "9",
        "grade": "7",
        "terms": [
            {
                "term_id": 98,
                "term": "1",
                "subject_group_id": "119",
                "subject_group_name": "Coding 1A",
                "classroom_id": "2",
                "classroom_name": "2",
                "subject_group_teacher_id": "4"
            },
            {
                "term_id": 99,
                "term": "2",
                "subject_group_id": "119",
                "subject_group_name": "Coding 1A",
                "classroom_id": "2",
                "classroom_name": "2",
                "subject_group_teacher_id": "4"
            },
            {
                "term_id": 100,
                "term": "3",
                "subject_group_id": "322",
                "subject_group_name": "Coding 1B",
                "classroom_id": "9",
                "classroom_name": "K4",
                "subject_group_teacher_id": "17"
            },
            {
                "term_id": 101,
                "term": "4",
                "subject_group_id": "322",
                "subject_group_name": "Coding 1B",
                "classroom_id": "9",
                "classroom_name": "K4",
                "subject_group_teacher_id": "17"
            }
        ]
    }
]
```

{% endtab %}

{% tab title="404: Not Found The resource was not found." %}

```json
{
    "error": "Not found",
    "error_description": "No learner subject records found"
}
```

{% endtab %}

{% tab title="401: Unauthorized The server understood the request, but is refusing it or access is not allowed." %}

```json
{
    "error": "Unauthorized",
    "error_description": "Client access not authorised"
}
```

{% endtab %}

{% tab title="403: Forbidden The server understood the request, but the requested action is not allowed." %}

```json
{
    "error": "Integration not activated",
    "error_description": "Please activate the Curriculum+ API for this client before making this request"
}
```

{% endtab %}

{% tab title="400: Bad Request The server understood the request, but the request is invalid or malformed." %}

```json
{
    "error": "Bad Request",
    "error_description": "Please specify the learner_id request parameter."
}
```

{% endtab %}
{% endtabs %}

## Examples

{% tabs %}
{% tab title="PHP" %}

```php
<?php

const BASE_URL = 'https://integrate.d6plus.co.za/api/v1/currplus/learnersubjectsperterm';
const SCHOOL_LOGIN_ID = '1000';
const PARAMS = ['learner_id' => 1];
const API_USERNAME = getenv('API_USERNAME'); // Assuming you have these environment variables set
const API_PASSWORD = getenv('API_PASSWORD');

$curl = curl_init();

$query = http_build_query(PARAMS);

$options = [
    CURLOPT_URL => BASE_URL . '/' . SCHOOL_LOGIN_ID . '?' . $query,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_SSL_VERIFYPEER => true,
    CURLOPT_CUSTOMREQUEST => 'GET',
    CURLOPT_HTTPHEADER => [
        "HTTP-X-USERNAME: " . API_USERNAME,
        "HTTP-X-PASSWORD: " . API_PASSWORD
    ],
];

curl_setopt_array($curl, $options);

$response = curl_exec($curl);

if (curl_errno($curl)) {
    throw new Exception('Curl error: ' . curl_error($curl));
}

curl_close($curl);

echo $response;
```

{% endtab %}

{% tab title="cURL" %}

```bash
curl --location 'https://integrate.d6plus.co.za/api/v1/currplus/learnersubjectsperterm/1000?learner_id=1' \
--header 'HTTP-X-USERNAME: your_username' \
--header 'HTTP-X-PASSWORD: your_password'
```

{% endtab %}
{% endtabs %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://apidocs.d6plus.co.za/v2/reference/curriculum+/learner/get-learner-subjects-per-term.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
