# Grade(s)

## Get the list of available grades

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

Use this endpoint to retrieve the list of available grades within the d6+ SAMS.&#x20;

The list is not generic across all d6+ SAMS clients, and could be customised per school. This endpoint allows you to specify a school Login ID in order to retrieve the list of grades offered by the school, along with their potentially customised names.&#x20;

By default all available grades are returned.&#x20;

It is also possible to retrieve the information for a single grade by providing the optional `grade_id` query parameter.

#### 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                |
| --------- | ------ | -------------------------- |
| grade\_id | String | The ID of a specific grade |

#### 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
[
    {
        "id": "1",
        "name": "Grade RR"
    },
    {
        "id": "2",
        "name": "Grade R"
    },
    {
        "id": "3",
        "name": "Grade 1"
    },
    {
        "id": "4",
        "name": "Grade 2"
    },
    {
        "id": "5",
        "name": "Grade 3"
    },
    {
        "id": "6",
        "name": "Grade 4"
    },
    {
        "id": "7",
        "name": "Grade 5"
    },
    {
        "id": "8",
        "name": "Grade 6"
    }
]
```

{% endtab %}

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

```json
{
    "error": "Not found",
    "error_description": "No grade(s) found"
}
```

{% endtab %}

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

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

{% endtab %}
{% endtabs %}

## Examples

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

```php
<?php

const BASE_URL = 'https://integrate.d6plus.co.za/api/v1/adminplus/lookup/grade';
const SCHOOL_LOGIN_ID = '1000';
const PARAMS = [
    'grade_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/adminplus/lookup/grade/1000?grade_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/reference/administration+/lookups/grade-s.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.
