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

# Get the caller's compensation role, salary band and placement.



## OpenAPI

````yaml /api-reference/portal.v1.json get /api/v1/portal/employee/compensation
openapi: 3.0.3
info:
  title: Swiss HR Easy — Employee Portal API
  version: 1.0.0
  description: >-
    Versioned contract for the employee self-service portal endpoints consumed
    by the mobile app. Generated from Zod schemas — do not edit by hand (run
    `npm run gen:openapi`).
servers:
  - url: https://{tenantHost}
    description: >-
      Per-tenant deployment host. Swiss HR Easy is single-tenant, so each
      customer install serves this contract from its own host.
security: []
tags:
  - name: profile
    description: Employee profile overview and entitlements.
  - name: leave
    description: Employee leave balances and requests.
  - name: time
    description: Employee time tracking and weekly summaries.
  - name: sick-leave
    description: Employee sick-leave reports and summaries.
  - name: payslips
    description: Employee payslips and deduction breakdowns.
  - name: compensation
    description: The caller's compensation role, salary band and placement rationale.
  - name: auth
    description: Current-session retrieval and logout for the mobile app.
  - name: holidays
    description: >-
      The days behind the vacation day count that cost less than a full day:
      public holidays, school holidays, and Betriebsferien days the caller was
      approved to work through.
paths:
  /api/v1/portal/employee/compensation:
    get:
      tags:
        - compensation
      summary: Get the caller's compensation role, salary band and placement.
      operationId: getCompensationView
      responses:
        '200':
          description: >-
            The caller's compensation view. `role`, `band` and `actualSalary`
            are null when unassigned, no band is valid today, or the
            installation hides actual salary, respectively.
          content:
            application/json:
              schema:
                type: object
                required:
                  - success
                  - data
                additionalProperties: false
                properties:
                  success:
                    type: boolean
                    enum:
                      - true
                  data:
                    $ref: '#/components/schemas/CompensationViewDTO'
        '401':
          description: The caller is not authenticated.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                properties:
                  error:
                    type: string
        '404':
          description: No employee record is linked to the caller's account.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                properties:
                  error:
                    type: string
components:
  schemas:
    CompensationViewDTO:
      type: object
      properties:
        role:
          nullable: true
          type: object
          properties:
            code:
              nullable: true
              type: string
            name:
              type: string
            nameEn:
              nullable: true
              type: string
            nameFr:
              nullable: true
              type: string
            description:
              nullable: true
              type: string
            descriptionEn:
              nullable: true
              type: string
            descriptionFr:
              nullable: true
              type: string
            level:
              type: integer
              minimum: -9007199254740991
              maximum: 9007199254740991
          required:
            - code
            - name
            - nameEn
            - nameFr
            - description
            - descriptionEn
            - descriptionFr
            - level
          additionalProperties: false
        placement:
          nullable: true
          type: object
          properties:
            effectiveFrom:
              type: string
              format: date-time
              pattern: >-
                ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
            stepNumber:
              nullable: true
              type: integer
              minimum: -9007199254740991
              maximum: 9007199254740991
            note:
              nullable: true
              type: string
          required:
            - effectiveFrom
            - stepNumber
            - note
          additionalProperties: false
        band:
          nullable: true
          type: object
          properties:
            shape:
              type: string
              enum:
                - RANGE
                - STEPS
            validFrom:
              type: string
              format: date-time
              pattern: >-
                ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
            fullTime:
              type: object
              properties:
                minAnnual:
                  nullable: true
                  type: string
                  pattern: ^-?\d+\.\d{2}$
                  description: >-
                    Decimal amount as an exact 2-dp string (e.g. "84500.00") for
                    monetary exactness.
                maxAnnual:
                  nullable: true
                  type: string
                  pattern: ^-?\d+\.\d{2}$
                  description: >-
                    Decimal amount as an exact 2-dp string (e.g. "84500.00") for
                    monetary exactness.
                steps:
                  type: array
                  items:
                    type: object
                    properties:
                      stepNumber:
                        type: integer
                        minimum: -9007199254740991
                        maximum: 9007199254740991
                      annualAmount:
                        type: string
                        pattern: ^-?\d+\.\d{2}$
                        description: >-
                          Decimal amount as an exact 2-dp string (e.g.
                          "84500.00") for monetary exactness.
                    required:
                      - stepNumber
                      - annualAmount
                    additionalProperties: false
              required:
                - minAnnual
                - maxAnnual
                - steps
              additionalProperties: false
            atWorkload:
              type: object
              properties:
                minAnnual:
                  nullable: true
                  type: string
                  pattern: ^-?\d+\.\d{2}$
                  description: >-
                    Decimal amount as an exact 2-dp string (e.g. "84500.00") for
                    monetary exactness.
                maxAnnual:
                  nullable: true
                  type: string
                  pattern: ^-?\d+\.\d{2}$
                  description: >-
                    Decimal amount as an exact 2-dp string (e.g. "84500.00") for
                    monetary exactness.
                steps:
                  type: array
                  items:
                    type: object
                    properties:
                      stepNumber:
                        type: integer
                        minimum: -9007199254740991
                        maximum: 9007199254740991
                      annualAmount:
                        type: string
                        pattern: ^-?\d+\.\d{2}$
                        description: >-
                          Decimal amount as an exact 2-dp string (e.g.
                          "84500.00") for monetary exactness.
                    required:
                      - stepNumber
                      - annualAmount
                    additionalProperties: false
              required:
                - minAnnual
                - maxAnnual
                - steps
              additionalProperties: false
          required:
            - shape
            - validFrom
            - fullTime
            - atWorkload
          additionalProperties: false
        workloadPercent:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
        actualSalary:
          nullable: true
          type: object
          properties:
            monthlyAmount:
              nullable: true
              type: string
              pattern: ^-?\d+\.\d{2}$
              description: >-
                Decimal amount as an exact 2-dp string (e.g. "84500.00") for
                monetary exactness.
            hourlyRate:
              nullable: true
              type: string
              pattern: ^-?\d+\.\d{2,4}$
            annualizedAmount:
              nullable: true
              type: string
              pattern: ^-?\d+\.\d{2}$
              description: >-
                Decimal amount as an exact 2-dp string (e.g. "84500.00") for
                monetary exactness.
            thirteenthMonthEnabled:
              type: boolean
          required:
            - monthlyAmount
            - hourlyRate
            - annualizedAmount
            - thirteenthMonthEnabled
          additionalProperties: false
        showActualSalary:
          type: boolean
        factors:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
              name:
                type: string
              nameEn:
                nullable: true
                type: string
              nameFr:
                nullable: true
                type: string
              description:
                nullable: true
                type: string
              descriptionEn:
                nullable: true
                type: string
              descriptionFr:
                nullable: true
                type: string
              unitLabel:
                nullable: true
                type: string
              unitLabelEn:
                nullable: true
                type: string
              unitLabelFr:
                nullable: true
                type: string
              valueKind:
                type: string
                enum:
                  - NUMERIC
                  - BOOLEAN
              value:
                nullable: true
                type: string
                pattern: ^-?\d+\.\d{2}$
              note:
                nullable: true
                type: string
              stepsPerUnit:
                type: string
                pattern: ^-?\d+\.\d{2}$
              maxSteps:
                nullable: true
                type: string
                pattern: ^-?\d+\.\d{2}$
              contributionSteps:
                type: string
                pattern: ^-?\d+\.\d{2}$
              assessedAt:
                nullable: true
                type: string
                format: date-time
                pattern: >-
                  ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
            required:
              - id
              - name
              - nameEn
              - nameFr
              - description
              - descriptionEn
              - descriptionFr
              - unitLabel
              - unitLabelEn
              - unitLabelFr
              - valueKind
              - value
              - note
              - stepsPerUnit
              - maxSteps
              - contributionSteps
              - assessedAt
            additionalProperties: false
        referencePosition:
          nullable: true
          type: object
          properties:
            totalSteps:
              type: string
              pattern: ^-?\d+\.\d{2}$
            stepNumber:
              nullable: true
              type: integer
              minimum: -9007199254740991
              maximum: 9007199254740991
            clamped:
              type: boolean
            fullTimeAnnualAmount:
              nullable: true
              type: string
              pattern: ^-?\d+\.\d{2}$
              description: >-
                Decimal amount as an exact 2-dp string (e.g. "84500.00") for
                monetary exactness.
            atWorkloadAnnualAmount:
              nullable: true
              type: string
              pattern: ^-?\d+\.\d{2}$
              description: >-
                Decimal amount as an exact 2-dp string (e.g. "84500.00") for
                monetary exactness.
          required:
            - totalSteps
            - stepNumber
            - clamped
            - fullTimeAnnualAmount
            - atWorkloadAnnualAmount
          additionalProperties: false
      required:
        - role
        - placement
        - band
        - workloadPercent
        - actualSalary
        - showActualSalary
        - factors
        - referencePosition
      additionalProperties: false

````