> ## Documentation Index
> Fetch the complete documentation index at: https://docs.meitner.se/llms.txt
> Use this file to discover all available pages before exploring further.

# Update a Student

> Update a Student



## OpenAPI

````yaml https://spec.speakeasy.com/meitner-2u8/api/directory-api-with-code-samples patch /student/{id}
openapi: 3.1.0
info:
  title: Directory API
  description: Generated API documentation
  contact:
    name: Meitner
    url: https://meitner.se
    email: support@meitner.se
  license:
    name: Proprietary - Licensed to Authorized Customers Only
    url: https://meitner.se
  version: v1
servers:
  - url: https://api.meitner.se/directory/v1
    description: Server to use in production
    x-speakeasy-server-id: production
  - url: https://api.staging.meitner.se/directory/v1
    description: Server to use when building and testing the API
    x-speakeasy-server-id: staging
security:
  - ClientCredentials: []
    ClientSecret: []
  - OAuth2: []
tags:
  - name: School
    description: >
      The `School` resource represents a school where daily operations occur. A
      school must exist before you can create StudentPlacements,
      EmployeePlacements, or Groups.
       
      This resource can be created, updated, listed, retrieved, and searched
      using the standard resource structure.
  - name: Group
    description: Group holds the information about a group of students.
  - name: Employee
    description: >-
      Employee holds the personal information about an employee in the
      organization.
  - name: EmployeePlacement
    description: >-
      EmployeePlacement holds the information about an employee's placement in a
      school.
  - name: Guardian
    description: Guardian holds the information about a guardian of a student.
  - name: Student
    description: >-
      Student holds the personal information about a student, information about
      the school is stored in the StudentPlacement-resource.
  - name: StudentPlacement
    description: >-
      StudentPlacement holds the placement information about a student in a
      specific school.
  - name: AuditEvent
    description: AuditEvent holds the information about an audit event.
  - name: GradeElementary
    description: >
      GradeElementary represents a grade awarded to a student in elementary
      school (Swedish: grundskola).

      Grades are scoped to the organization of the API key used. The SubjectCode
      field uses the subject code as defined by the Swedish school authorities
      (e.g. "MA" for Mathematics).
  - name: GradeUpperSecondary
    description: >
      GradeUpperSecondary represents a grade awarded to a student in upper
      secondary school (Swedish: gymnasieskola).

      Grades are scoped to the organization of the API key used. The CourseCode
      field uses the national course code as defined by the Swedish school
      authorities (e.g. "MATMAT01a").
  - name: Unit
    description: >
      The `Unit` resource represents an organizational unit that schools can
      belong to.

      This resource can be created, updated, listed, retrieved, and searched
      using the standard resource structure.
paths:
  /student/{id}:
    patch:
      tags:
        - Student
      summary: Update a Student
      description: Update a Student
      operationId: StudentUpdate
      parameters:
        - name: id
          in: path
          description: The unique identifier of the Student to update
          required: true
          schema:
            type: string
            examples:
              - 123e4567-e89b-12d3-a456-426614174000
            format: uuid
      requestBody:
        $ref: '#/components/requestBodies/StudentUpdate'
      responses:
        '200':
          $ref: '#/components/responses/StudentUpdate'
          description: Response for Student Update operation - returns the updated Student
        '400':
          $ref: '#/components/responses/Error400ResponseBody'
          description: >-
            Bad Request error for Student Update operation - request contains
            invalid parameters
        '401':
          $ref: '#/components/responses/Error401ResponseBody'
          description: >-
            Unauthorized error for Student Update operation - authentication
            required
        '403':
          $ref: '#/components/responses/Error403ResponseBody'
          description: >-
            Forbidden error for Student Update operation - insufficient
            permissions
        '404':
          $ref: '#/components/responses/Error404ResponseBody'
          description: >-
            Not Found error for Student Update operation - resource does not
            exist
        '409':
          $ref: '#/components/responses/Error409ResponseBody'
          description: >-
            Conflict error for Student Update operation - request conflicts with
            current state
        '422':
          $ref: '#/components/responses/StudentUpdate422ResponseBody'
          description: >-
            Validation error for Student Update operation - request data failed
            validation
        '429':
          $ref: '#/components/responses/Error429ResponseBody'
          description: Rate Limit error for Student Update operation - too many requests
        '500':
          $ref: '#/components/responses/Error500ResponseBody'
          description: >-
            Internal Server error for Student Update operation - unexpected
            server error
      x-codeSamples:
        - lang: csharp
          label: Csharp (SDK)
          source: |-
            using Meitner;
            using Meitner.Models.Components;
            using System;

            var sdk = new MeitnerSDK(security: new Security() {
                Option1 = new SecurityOption1() {
                    ClientCredentials = "<YOUR_API_KEY_HERE>",
                    ClientSecret = "<YOUR_API_KEY_HERE>",
                },
            });

            var res = await sdk.Students.UpdateAsync(
                id: "123e4567-e89b-12d3-a456-426614174000",
                studentUpdate: new StudentUpdate() {
                    External = new StudentUpdateExternal() {
                        SourceID = "12345678",
                    },
                    Gender = StudentUpdateGender.Female,
                    IdentityNumber = "20191216-1234",
                    IdentityTemporary = true,
                    FirstName = "Lise",
                    LastName = "Meitner",
                    DateOfBirth = DateOnly.Parse("2019-12-16"),
                    Address = new StudentUpdateAddress() {
                        PostalAddress = "Dalvägen 14",
                        PostalCode = "169 56",
                        PostalCity = "Solna",
                        CountryCode = "SWE",
                        MunicipalityCode = "0184",
                    },
                    EmailAddress1 = "lise@meitner.se",
                    EmailAddress2 = "lise@gmail.com",
                    PhoneNumber1 = "+46701234567",
                    PhoneNumber2 = "example",
                    EduPersonPrincipalName = "kalko@edu.goteborg.se",
                }
            );

            // handle response
        - lang: python
          label: Python (SDK)
          source: |-
            from datetime import date
            from 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.students.update(id="123e4567-e89b-12d3-a456-426614174000", identity_number="20191216-1234", first_name="Lise", last_name="Meitner", external={
                    "source_id": "12345678",
                }, gender="Female", identity_temporary=True, date_of_birth=date.fromisoformat("2019-12-16"), address={
                    "postal_address": "Dalvägen 14",
                    "postal_code": "169 56",
                    "postal_city": "Solna",
                    "country_code": "SWE",
                    "municipality_code": "0184",
                }, email_address1="lise@meitner.se", email_address2="lise@gmail.com", phone_number1="+46701234567", phone_number2="example", edu_person_principal_name="kalko@edu.goteborg.se")

                # Handle response
                print(res)
components:
  requestBodies:
    StudentUpdate:
      description: Request body
      content:
        application/json:
          schema:
            type: object
            properties:
              external:
                allOf:
                  - $ref: '#/components/schemas/ExternalRequest'
                examples:
                  - sourceID: '12345678'
                description: >-
                  ExternalRequest is the External-object used on Update and
                  Create operations, since it should only be allowed to set
                  SourceID for the student, the Source-field is not included.
              gender:
                allOf:
                  - $ref: '#/components/schemas/Gender'
                examples:
                  - Female
                  - null
                description: The gender of the student
                nullable: true
              identityNumber:
                type: string
                examples:
                  - 20191216-1234
                description: >-
                  The identity number of the student in the format
                  YYYYMMDD-NNNN, must be unique within the organization.
              identityTemporary:
                type: boolean
                examples:
                  - true
                description: If the identity number is temporary for the student
                default: false
              firstName:
                type: string
                examples:
                  - Lise
                description: The first name of the student
              lastName:
                type: string
                examples:
                  - Meitner
                description: The last name of the student
              dateOfBirth:
                type: string
                examples:
                  - '2019-12-16'
                  - null
                format: date
                description: The date of birth of the student
                nullable: true
              address:
                allOf:
                  - $ref: '#/components/schemas/Address'
                examples:
                  - postalAddress: Dalvägen 14
                    postalCode: 169 56
                    postalCity: Solna
                    countryCode: SWE
                    municipalityCode: '0184'
                description: The address of the student
              emailAddress1:
                type: string
                examples:
                  - lise@meitner.se
                  - null
                description: >
                  The primary email address of the student, will be used for
                  communication with the student from the system and must be
                  unique within the organization.

                  Can be used to login to the system if password-authentication
                  is enabled for the organization.
                nullable: true
              emailAddress2:
                type: string
                examples:
                  - lise@gmail.com
                  - null
                description: >-
                  The secondary email address of the student, will not be used
                  within the system, but will be displayed for contact
                  information.
                nullable: true
              phoneNumber1:
                type: string
                examples:
                  - '+46701234567'
                  - null
                description: >-
                  The primary phone number of the student, will be used for
                  communication with the student from the system.
                nullable: true
              phoneNumber2:
                type: string
                examples:
                  - example
                  - null
                description: >-
                  The secondary phone number of the student, will not be used
                  within the system, but will be displayed for contact
                  information.
                nullable: true
              eduPersonPrincipalName:
                type: string
                examples:
                  - kalko@edu.goteborg.se
                  - null
                description: >
                  The eduPersonPrincipalName (EPPN) of the student, as defined
                  in the SS12000:2020 standard (TK450). A globally unique,
                  persistent identifier used to identify users across Swedish
                  e-services (e-tjänster).

                  Format: `localIdentifier@domain` — e.g.
                  `kalko@edu.goteborg.se`
                nullable: true
            required:
              - identityNumber
              - firstName
              - lastName
          examples:
            requestExample:
              summary: Request body example
              value:
                external:
                  sourceID: '12345678'
                gender: Female
                identityNumber: 20191216-1234
                identityTemporary: true
                firstName: Lise
                lastName: Meitner
                dateOfBirth: '2019-12-16'
                address:
                  postalAddress: Dalvägen 14
                  postalCode: 169 56
                  postalCity: Solna
                  countryCode: SWE
                  municipalityCode: '0184'
                emailAddress1: lise@meitner.se
                emailAddress2: lise@gmail.com
                phoneNumber1: '+46701234567'
                phoneNumber2: example
                eduPersonPrincipalName: kalko@edu.goteborg.se
      required: true
  responses:
    StudentUpdate:
      description: Response for Student Update operation - returns the updated Student
      headers:
        RateLimit-Limit:
          description: >-
            The maximum number of API requests you're permitted to make per
            hour.
          schema:
            type: integer
            examples:
              - 5000
        RateLimit-Remaining:
          description: >-
            The number of API requests remaining in the current rate limit
            window.
          schema:
            type: integer
            examples:
              - 4999
        RateLimit-Reset:
          description: >-
            The time at which the current rate limit window resets in UTC epoch
            milliseconds.
          schema:
            type: string
            examples:
              - '1728316800000'
      content:
        application/json:
          schema:
            allOf:
              - $ref: '#/components/schemas/Student'
          examples:
            responseExample:
              summary: Response body example
              value:
                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
                gender: Female
                identityNumber: 20191216-1234
                identityTemporary: true
                firstName: Lise
                lastName: Meitner
                dateOfBirth: '2019-12-16'
                address:
                  postalAddress: Dalvägen 14
                  postalCode: 169 56
                  postalCity: Solna
                  countryCode: SWE
                  municipalityCode: '0184'
                emailAddress1: lise@meitner.se
                emailAddress2: lise@gmail.com
                phoneNumber1: '+46701234567'
                phoneNumber2: example
                eduPersonPrincipalName: kalko@edu.goteborg.se
    Error400ResponseBody:
      description: Bad Request - The request was malformed or contained invalid parameters
      headers:
        RateLimit-Limit:
          description: >-
            The maximum number of API requests you're permitted to make per
            hour.
          schema:
            type: integer
            examples:
              - 5000
        RateLimit-Remaining:
          description: >-
            The number of API requests remaining in the current rate limit
            window.
          schema:
            type: integer
            examples:
              - 4999
        RateLimit-Reset:
          description: >-
            The time at which the current rate limit window resets in UTC epoch
            milliseconds.
          schema:
            type: string
            examples:
              - '1728316800000'
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                allOf:
                  - $ref: '#/components/schemas/Error'
                examples:
                  - code: BadRequest
                    message: The request contains invalid parameters or malformed data
                    requestID: 550e8400-e29b-41d4-a716-446655440000
            required:
              - error
          examples:
            errorExample:
              summary: Bad Request error example
              value:
                error:
                  code: BadRequest
                  message: The request contains invalid parameters or malformed data
                  requestID: 550e8400-e29b-41d4-a716-446655440000
    Error401ResponseBody:
      description: Unauthorized - The request is missing valid authentication credentials
      headers:
        RateLimit-Limit:
          description: >-
            The maximum number of API requests you're permitted to make per
            hour.
          schema:
            type: integer
            examples:
              - 5000
        RateLimit-Remaining:
          description: >-
            The number of API requests remaining in the current rate limit
            window.
          schema:
            type: integer
            examples:
              - 4999
        RateLimit-Reset:
          description: >-
            The time at which the current rate limit window resets in UTC epoch
            milliseconds.
          schema:
            type: string
            examples:
              - '1728316800000'
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                allOf:
                  - $ref: '#/components/schemas/Error'
                examples:
                  - code: BadRequest
                    message: The request contains invalid parameters or malformed data
                    requestID: 550e8400-e29b-41d4-a716-446655440000
            required:
              - error
          examples:
            errorExample:
              summary: Unauthorized error example
              value:
                error:
                  code: Unauthorized
                  message: Authentication credentials are missing or invalid
                  requestID: 550e8400-e29b-41d4-a716-446655440000
    Error403ResponseBody:
      description: >-
        Forbidden - Request is authenticated, but the user is not allowed to
        perform the operation
      headers:
        RateLimit-Limit:
          description: >-
            The maximum number of API requests you're permitted to make per
            hour.
          schema:
            type: integer
            examples:
              - 5000
        RateLimit-Remaining:
          description: >-
            The number of API requests remaining in the current rate limit
            window.
          schema:
            type: integer
            examples:
              - 4999
        RateLimit-Reset:
          description: >-
            The time at which the current rate limit window resets in UTC epoch
            milliseconds.
          schema:
            type: string
            examples:
              - '1728316800000'
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                allOf:
                  - $ref: '#/components/schemas/Error'
                examples:
                  - code: BadRequest
                    message: The request contains invalid parameters or malformed data
                    requestID: 550e8400-e29b-41d4-a716-446655440000
            required:
              - error
          examples:
            errorExample:
              summary: Forbidden error example
              value:
                error:
                  code: Forbidden
                  message: You do not have permission to perform this operation
                  requestID: 550e8400-e29b-41d4-a716-446655440000
    Error404ResponseBody:
      description: Not Found - The requested resource does not exist
      headers:
        RateLimit-Limit:
          description: >-
            The maximum number of API requests you're permitted to make per
            hour.
          schema:
            type: integer
            examples:
              - 5000
        RateLimit-Remaining:
          description: >-
            The number of API requests remaining in the current rate limit
            window.
          schema:
            type: integer
            examples:
              - 4999
        RateLimit-Reset:
          description: >-
            The time at which the current rate limit window resets in UTC epoch
            milliseconds.
          schema:
            type: string
            examples:
              - '1728316800000'
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                allOf:
                  - $ref: '#/components/schemas/Error'
                examples:
                  - code: BadRequest
                    message: The request contains invalid parameters or malformed data
                    requestID: 550e8400-e29b-41d4-a716-446655440000
            required:
              - error
          examples:
            errorExample:
              summary: Not Found error example
              value:
                error:
                  code: NotFound
                  message: The requested resource could not be found
                  requestID: 550e8400-e29b-41d4-a716-446655440000
    Error409ResponseBody:
      description: Conflict - The request could not be completed due to a conflict
      headers:
        RateLimit-Limit:
          description: >-
            The maximum number of API requests you're permitted to make per
            hour.
          schema:
            type: integer
            examples:
              - 5000
        RateLimit-Remaining:
          description: >-
            The number of API requests remaining in the current rate limit
            window.
          schema:
            type: integer
            examples:
              - 4999
        RateLimit-Reset:
          description: >-
            The time at which the current rate limit window resets in UTC epoch
            milliseconds.
          schema:
            type: string
            examples:
              - '1728316800000'
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                allOf:
                  - $ref: '#/components/schemas/Error'
                examples:
                  - code: BadRequest
                    message: The request contains invalid parameters or malformed data
                    requestID: 550e8400-e29b-41d4-a716-446655440000
            required:
              - error
          examples:
            errorExample:
              summary: Conflict error example
              value:
                error:
                  code: Conflict
                  message: The request conflicts with the current state of the resource
                  requestID: 550e8400-e29b-41d4-a716-446655440000
    StudentUpdate422ResponseBody:
      description: >-
        Validation error for Student Update operation - request data failed
        validation
      headers:
        RateLimit-Limit:
          description: >-
            The maximum number of API requests you're permitted to make per
            hour.
          schema:
            type: integer
            examples:
              - 5000
        RateLimit-Remaining:
          description: >-
            The number of API requests remaining in the current rate limit
            window.
          schema:
            type: integer
            examples:
              - 4999
        RateLimit-Reset:
          description: >-
            The time at which the current rate limit window resets in UTC epoch
            milliseconds.
          schema:
            type: string
            examples:
              - '1728316800000'
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                allOf:
                  - $ref: '#/components/schemas/Error'
                examples:
                  - code: UnprocessableEntity
                    message: Validation failed for Student Update endpoint
                    requestID: 550e8400-e29b-41d4-a716-446655440000
            required:
              - error
          examples:
            validationError:
              summary: Validation error example
              value:
                error:
                  code: UnprocessableEntity
                  message: Validation failed for Student Update endpoint
                  requestID: 550e8400-e29b-41d4-a716-446655440000
    Error429ResponseBody:
      description: Too Many Requests - When the rate limit has been exceeded
      headers:
        RateLimit-Limit:
          description: >-
            The maximum number of API requests you're permitted to make per
            hour.
          schema:
            type: integer
            examples:
              - 5000
        RateLimit-Remaining:
          description: >-
            The number of API requests remaining in the current rate limit
            window.
          schema:
            type: integer
            examples:
              - 4999
        RateLimit-Reset:
          description: >-
            The time at which the current rate limit window resets in UTC epoch
            milliseconds.
          schema:
            type: string
            examples:
              - '1728316800000'
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                allOf:
                  - $ref: '#/components/schemas/Error'
                examples:
                  - code: BadRequest
                    message: The request contains invalid parameters or malformed data
                    requestID: 550e8400-e29b-41d4-a716-446655440000
            required:
              - error
          examples:
            errorExample:
              summary: Rate Limited error example
              value:
                error:
                  code: RateLimited
                  message: Too many requests - rate limit exceeded
                  requestID: 550e8400-e29b-41d4-a716-446655440000
    Error500ResponseBody:
      description: Internal Server Error - An unexpected server error occurred
      headers:
        RateLimit-Limit:
          description: >-
            The maximum number of API requests you're permitted to make per
            hour.
          schema:
            type: integer
            examples:
              - 5000
        RateLimit-Remaining:
          description: >-
            The number of API requests remaining in the current rate limit
            window.
          schema:
            type: integer
            examples:
              - 4999
        RateLimit-Reset:
          description: >-
            The time at which the current rate limit window resets in UTC epoch
            milliseconds.
          schema:
            type: string
            examples:
              - '1728316800000'
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                allOf:
                  - $ref: '#/components/schemas/Error'
                examples:
                  - code: BadRequest
                    message: The request contains invalid parameters or malformed data
                    requestID: 550e8400-e29b-41d4-a716-446655440000
            required:
              - error
          examples:
            errorExample:
              summary: Internal Server error example
              value:
                error:
                  code: Internal
                  message: An unexpected server error occurred
                  requestID: 550e8400-e29b-41d4-a716-446655440000
  schemas:
    ExternalRequest:
      type: object
      properties:
        sourceID:
          type: string
          examples:
            - '12345678'
          description: The ID of the external source
      required:
        - sourceID
      description: >-
        ExternalRequest is the External-object used on Update and Create
        operations, since it should only be allowed to set SourceID, the
        Source-field is not included.
    Gender:
      type: string
      enum:
        - Female
        - Male
        - Other
      description: The gender of the person
    Address:
      type: object
      properties:
        postalAddress:
          type: string
          examples:
            - Dalvägen 14
            - null
          description: The postal address of the address
          nullable: true
        postalCode:
          type: string
          examples:
            - 169 56
            - null
          description: >-
            The postal code (also known as ZIP or postcode) of the address, used
            together with the city to identify the delivery area.
          nullable: true
        postalCity:
          type: string
          examples:
            - Solna
            - null
          description: The city of the address
          nullable: true
        countryCode:
          type: string
          examples:
            - SWE
            - null
          description: >-
            The ISO 3166-1 alpha-3 country code of the address (e.g. "SWE" for
            Sweden).
          nullable: true
        municipalityCode:
          type: string
          examples:
            - '0184'
            - null
          description: >-
            The Swedish municipality (kommun) code for the address — a
            four-digit code as defined by Statistics Sweden (SCB), e.g. "0184"
            for Solna. Identifies the administrative municipality the address
            belongs to.
          nullable: true
      description: >-
        Address is a reusable object that can be used to store address
        information.
    Student:
      type: object
      properties:
        id:
          type: string
          examples:
            - 123e4567-e89b-12d3-a456-426614174000
          format: uuid
          description: Unique identifier for the Student
        meta:
          allOf:
            - $ref: '#/components/schemas/Meta'
          examples:
            - createdAt: '2024-01-15T10:30:00Z'
              createdBy: 987fcdeb-51a2-43d1-b567-123456789abc
              updatedAt: '2024-01-15T14:45:00Z'
              updatedBy: 987fcdeb-51a2-43d1-b567-123456789abc
          description: Metadata information for the Student
        external:
          allOf:
            - $ref: '#/components/schemas/External'
          examples:
            - sourceID: '12345678'
              source: ExternalIntegrationAPI
            - null
          description: >-
            External is a reusable object that can be used to store external
            information about the student from another system, used for
            third-party integration tracking.
          nullable: true
        gender:
          allOf:
            - $ref: '#/components/schemas/Gender'
          examples:
            - Female
            - null
          description: The gender of the student
          nullable: true
        identityNumber:
          type: string
          examples:
            - 20191216-1234
          description: >-
            The identity number of the student in the format YYYYMMDD-NNNN, must
            be unique within the organization.
        identityTemporary:
          type: boolean
          examples:
            - true
          description: If the identity number is temporary for the student
          default: false
        firstName:
          type: string
          examples:
            - Lise
          description: The first name of the student
        lastName:
          type: string
          examples:
            - Meitner
          description: The last name of the student
        dateOfBirth:
          type: string
          examples:
            - '2019-12-16'
            - null
          format: date
          description: The date of birth of the student
          nullable: true
        address:
          allOf:
            - $ref: '#/components/schemas/Address'
          examples:
            - postalAddress: Dalvägen 14
              postalCode: 169 56
              postalCity: Solna
              countryCode: SWE
              municipalityCode: '0184'
          description: The address of the student
        emailAddress1:
          type: string
          examples:
            - lise@meitner.se
            - null
          description: >
            The primary email address of the student, will be used for
            communication with the student from the system and must be unique
            within the organization.

            Can be used to login to the system if password-authentication is
            enabled for the organization.
          nullable: true
        emailAddress2:
          type: string
          examples:
            - lise@gmail.com
            - null
          description: >-
            The secondary email address of the student, will not be used within
            the system, but will be displayed for contact information.
          nullable: true
        phoneNumber1:
          type: string
          examples:
            - '+46701234567'
            - null
          description: >-
            The primary phone number of the student, will be used for
            communication with the student from the system.
          nullable: true
        phoneNumber2:
          type: string
          examples:
            - example
            - null
          description: >-
            The secondary phone number of the student, will not be used within
            the system, but will be displayed for contact information.
          nullable: true
        eduPersonPrincipalName:
          type: string
          examples:
            - kalko@edu.goteborg.se
            - null
          description: >
            The eduPersonPrincipalName (EPPN) of the student, as defined in the
            SS12000:2020 standard (TK450). A globally unique, persistent
            identifier used to identify users across Swedish e-services
            (e-tjänster).

            Format: `localIdentifier@domain` — e.g. `kalko@edu.goteborg.se`
          nullable: true
      required:
        - id
        - identityNumber
        - firstName
        - lastName
      description: >-
        Student holds the personal information about a student, information
        about the school is stored in the StudentPlacement-resource.
    Error:
      type: object
      properties:
        code:
          allOf:
            - $ref: '#/components/schemas/ErrorCode'
          description: The specific error code indicating the type of error
        message:
          type: string
          examples:
            - example
          description: Human-readable error message providing additional details
        requestID:
          type: string
          examples:
            - 550e8400-e29b-41d4-a716-446655440000
          description: >-
            Unique identifier for the request that generated this error, used
            for logging and debugging
      required:
        - code
        - message
        - requestID
      description: >-
        Standard error response object containing error code, message, and
        request ID
    Meta:
      type: object
      properties:
        createdAt:
          type: string
          examples:
            - '2024-01-15T10:30:00Z'
          format: date-time
          description: Timestamp when the resource was created
        createdBy:
          type: string
          examples:
            - 987fcdeb-51a2-43d1-b567-123456789abc
            - null
          format: uuid
          description: User who created the resource
          nullable: true
        updatedAt:
          type: string
          examples:
            - '2024-01-15T14:45:00Z'
            - null
          format: date-time
          description: Timestamp when the resource was last updated
          nullable: true
        updatedBy:
          type: string
          examples:
            - 987fcdeb-51a2-43d1-b567-123456789abc
            - null
          format: uuid
          description: User who last updated the resource
          nullable: true
      required:
        - createdAt
      description: >-
        Meta contains information about the creation and modification of a
        resource for auditing purposes
    External:
      type: object
      properties:
        sourceID:
          type: string
          examples:
            - '12345678'
            - null
          description: The ID of the external source
          nullable: true
        source:
          type: string
          examples:
            - ExternalIntegrationAPI
            - null
          description: The source of the external information
          nullable: true
      description: >-
        External is a reusable object that can be used to store external
        information from another system, used for third-party integration
        tracking.
    ErrorCode:
      type: string
      enum:
        - BadRequest
        - Unauthorized
        - Forbidden
        - NotFound
        - Conflict
        - UnprocessableEntity
        - RateLimited
        - Internal
      description: Standard error codes used in API responses
  securitySchemes:
    ClientCredentials:
      type: apiKey
      name: Client-ID
      in: header
    ClientSecret:
      type: apiKey
      name: Client-Secret
      in: header
    OAuth2:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: /oauth/token
          scopes: {}

````