using Meitner;
using Meitner.Models.Components;
var sdk = new MeitnerSDK(security: new Security() {
Option1 = new SecurityOption1() {
ClientCredentials = "<YOUR_API_KEY_HERE>",
ClientSecret = "<YOUR_API_KEY_HERE>",
},
});
var res = await sdk.StudentPlacements.ArchiveAsync(id: "123e4567-e89b-12d3-a456-426614174000");
// handle responsefrom meitner import Meitner, models
import os
with Meitner(
security=models.Security(
option1=models.SecurityOption1(
client_credentials=os.getenv("MEITNER_CLIENT_CREDENTIALS", ""),
client_secret=os.getenv("MEITNER_CLIENT_SECRET", ""),
),
),
) as m_client:
res = m_client.student_placements.archive(id="123e4567-e89b-12d3-a456-426614174000")
# Handle response
print(res)curl --request PATCH \
--url https://api.meitner.se/directory/v1/student-placement/{id}/archive \
--header 'Client-ID: <api-key>' \
--header 'Client-Secret: <api-key>'const options = {
method: 'PATCH',
headers: {'Client-ID': '<api-key>', 'Client-Secret': '<api-key>'}
};
fetch('https://api.meitner.se/directory/v1/student-placement/{id}/archive', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.meitner.se/directory/v1/student-placement/{id}/archive",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_HTTPHEADER => [
"Client-ID: <api-key>",
"Client-Secret: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.meitner.se/directory/v1/student-placement/{id}/archive"
req, _ := http.NewRequest("PATCH", url, nil)
req.Header.Add("Client-ID", "<api-key>")
req.Header.Add("Client-Secret", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.meitner.se/directory/v1/student-placement/{id}/archive")
.header("Client-ID", "<api-key>")
.header("Client-Secret", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.meitner.se/directory/v1/student-placement/{id}/archive")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Client-ID"] = '<api-key>'
request["Client-Secret"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"id": "123e4567-e89b-12d3-a456-426614174000",
"meta": {
"createdAt": "2024-01-15T10:30:00Z",
"createdBy": "987fcdeb-51a2-43d1-b567-123456789abc",
"updatedAt": "2024-01-15T14:45:00Z",
"updatedBy": "987fcdeb-51a2-43d1-b567-123456789abc"
},
"external": {
"sourceID": "12345678",
"source": "ExternalIntegrationAPI"
},
"studentID": "123e4567-e89b-12d3-a456-426614174000",
"schoolID": "123e4567-e89b-12d3-a456-426614174000",
"schoolType": "GR",
"schoolYear": "1",
"hasChildcare": true,
"childcareMaxHours": 15,
"motherTongue": "SWE",
"modernLanguageAlternative": "EN",
"swedishAsSecondLanguage": false,
"motherTongueParticipates": false,
"modernLanguageInSchoolChoice": "deu",
"modernLanguageInLanguageChoice": "fra",
"startDate": "2024-08-01",
"endDate": "2025-08-01",
"archiveYear": "2024_2025",
"archivedAt": "2024-08-01T00:00:00Z"
}{
"error": {
"code": "BadRequest",
"message": "The request contains invalid parameters or malformed data",
"requestID": "550e8400-e29b-41d4-a716-446655440000"
}
}{
"error": {
"code": "Unauthorized",
"message": "Authentication credentials are missing or invalid",
"requestID": "550e8400-e29b-41d4-a716-446655440000"
}
}{
"error": {
"code": "Forbidden",
"message": "You do not have permission to perform this operation",
"requestID": "550e8400-e29b-41d4-a716-446655440000"
}
}{
"error": {
"code": "NotFound",
"message": "The requested resource could not be found",
"requestID": "550e8400-e29b-41d4-a716-446655440000"
}
}{
"error": {
"code": "Conflict",
"message": "The request conflicts with the current state of the resource",
"requestID": "550e8400-e29b-41d4-a716-446655440000"
}
}{
"error": {
"code": "RateLimited",
"message": "Too many requests - rate limit exceeded",
"requestID": "550e8400-e29b-41d4-a716-446655440000"
}
}{
"error": {
"code": "Internal",
"message": "An unexpected server error occurred",
"requestID": "550e8400-e29b-41d4-a716-446655440000"
}
}Archive a student placement
Archive a student placement.
Recommended usage: We recommend only archiving student placements that have a passed end date. When building syncs from external systems and a studentPlacement is removed, we recommend the following workflow:
- Set the
endDateto the date when the studentPlacement was removed from the external system - Wait approximately 5 days before archiving the student placement
This grace period allows time to correct any mistakes made by administrators in the external system before the placement is permanently archived.
using Meitner;
using Meitner.Models.Components;
var sdk = new MeitnerSDK(security: new Security() {
Option1 = new SecurityOption1() {
ClientCredentials = "<YOUR_API_KEY_HERE>",
ClientSecret = "<YOUR_API_KEY_HERE>",
},
});
var res = await sdk.StudentPlacements.ArchiveAsync(id: "123e4567-e89b-12d3-a456-426614174000");
// handle responsefrom meitner import Meitner, models
import os
with Meitner(
security=models.Security(
option1=models.SecurityOption1(
client_credentials=os.getenv("MEITNER_CLIENT_CREDENTIALS", ""),
client_secret=os.getenv("MEITNER_CLIENT_SECRET", ""),
),
),
) as m_client:
res = m_client.student_placements.archive(id="123e4567-e89b-12d3-a456-426614174000")
# Handle response
print(res)curl --request PATCH \
--url https://api.meitner.se/directory/v1/student-placement/{id}/archive \
--header 'Client-ID: <api-key>' \
--header 'Client-Secret: <api-key>'const options = {
method: 'PATCH',
headers: {'Client-ID': '<api-key>', 'Client-Secret': '<api-key>'}
};
fetch('https://api.meitner.se/directory/v1/student-placement/{id}/archive', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.meitner.se/directory/v1/student-placement/{id}/archive",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_HTTPHEADER => [
"Client-ID: <api-key>",
"Client-Secret: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.meitner.se/directory/v1/student-placement/{id}/archive"
req, _ := http.NewRequest("PATCH", url, nil)
req.Header.Add("Client-ID", "<api-key>")
req.Header.Add("Client-Secret", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.meitner.se/directory/v1/student-placement/{id}/archive")
.header("Client-ID", "<api-key>")
.header("Client-Secret", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.meitner.se/directory/v1/student-placement/{id}/archive")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Client-ID"] = '<api-key>'
request["Client-Secret"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"id": "123e4567-e89b-12d3-a456-426614174000",
"meta": {
"createdAt": "2024-01-15T10:30:00Z",
"createdBy": "987fcdeb-51a2-43d1-b567-123456789abc",
"updatedAt": "2024-01-15T14:45:00Z",
"updatedBy": "987fcdeb-51a2-43d1-b567-123456789abc"
},
"external": {
"sourceID": "12345678",
"source": "ExternalIntegrationAPI"
},
"studentID": "123e4567-e89b-12d3-a456-426614174000",
"schoolID": "123e4567-e89b-12d3-a456-426614174000",
"schoolType": "GR",
"schoolYear": "1",
"hasChildcare": true,
"childcareMaxHours": 15,
"motherTongue": "SWE",
"modernLanguageAlternative": "EN",
"swedishAsSecondLanguage": false,
"motherTongueParticipates": false,
"modernLanguageInSchoolChoice": "deu",
"modernLanguageInLanguageChoice": "fra",
"startDate": "2024-08-01",
"endDate": "2025-08-01",
"archiveYear": "2024_2025",
"archivedAt": "2024-08-01T00:00:00Z"
}{
"error": {
"code": "BadRequest",
"message": "The request contains invalid parameters or malformed data",
"requestID": "550e8400-e29b-41d4-a716-446655440000"
}
}{
"error": {
"code": "Unauthorized",
"message": "Authentication credentials are missing or invalid",
"requestID": "550e8400-e29b-41d4-a716-446655440000"
}
}{
"error": {
"code": "Forbidden",
"message": "You do not have permission to perform this operation",
"requestID": "550e8400-e29b-41d4-a716-446655440000"
}
}{
"error": {
"code": "NotFound",
"message": "The requested resource could not be found",
"requestID": "550e8400-e29b-41d4-a716-446655440000"
}
}{
"error": {
"code": "Conflict",
"message": "The request conflicts with the current state of the resource",
"requestID": "550e8400-e29b-41d4-a716-446655440000"
}
}{
"error": {
"code": "RateLimited",
"message": "Too many requests - rate limit exceeded",
"requestID": "550e8400-e29b-41d4-a716-446655440000"
}
}{
"error": {
"code": "Internal",
"message": "An unexpected server error occurred",
"requestID": "550e8400-e29b-41d4-a716-446655440000"
}
}Authorizations
Path Parameters
The ID of the student placement to archive
"123e4567-e89b-12d3-a456-426614174000"
Response
Response for StudentPlacement Archive operation
StudentPlacement holds the placement information about a student in a specific school.
Unique identifier for the StudentPlacement
"123e4567-e89b-12d3-a456-426614174000"
The ID of the student the placement belongs to
"123e4567-e89b-12d3-a456-426614174000"
The ID of the school the student is placed in
"123e4567-e89b-12d3-a456-426614174000"
The school type for the student, if not provided on Create, the school type will be fetched from the school.
GR, GRAN, GY, GYAN, FS, VUX, VUXSFI "GR"
The start date of the placement
"2024-08-01"
Metadata information for the StudentPlacement
Show child attributes
Show child attributes
{
"createdAt": "2024-01-15T10:30:00Z",
"createdBy": "987fcdeb-51a2-43d1-b567-123456789abc",
"updatedAt": "2024-01-15T14:45:00Z",
"updatedBy": "987fcdeb-51a2-43d1-b567-123456789abc"
}
External is a reusable object that can be used to store external information about the student placement from another system, used for third-party integration tracking.
Show child attributes
Show child attributes
{
"sourceID": "12345678",
"source": "ExternalIntegrationAPI"
}
The school year the student is placed in
0, 1, 2, 3, 4, 5, 6, 7, 8, 9 "1"
Whether the student has childcare
true
The maximum number of childcare hours per week for the student at this school
15
null
The mother tongue of the student. Language codes follow the ISO 639-3 standard (three-letter codes).
"SWE"
null
The modern language alternative for the student
EN, ML, SV, SVA, TN "EN"
Whether the student has Swedish as their second language
false
Whether the student participates in mother tongue education
false
The language code for the student's modern language in school choice (Skolans val). Language codes follow the ISO 639-2 standard (three-letter codes).
"deu"
null
The language code for the student's modern language in language choice (Språkval, M2, B-språk). Language codes follow the ISO 639-2 standard (three-letter codes).
"fra"
null
The end date of the placement
"2025-08-01"
null
The year the placement was archived for the student, in the format YYYY_YYYY where the first year is the autumn and the second year is the spring.
"2024_2025"
null
The timestamp the placement was archived for the student
"2024-08-01T00:00:00Z"
null