# GetPosition

## Overview

Retrieves a single Position generation by its id, returning the post's Department/Site placement, JobProfile reference, and headcount as of that generation.

## Business Rules

- Returns the Position generation exactly as stored, including `effectiveStart`, `effectiveEnd` (nullable), and `versionOf`
- Does not resolve "as of" a date — this query returns one specific generation by id
- A Position may be returned even though it has no incumbent Assignment (vacancy is derived, not stored)

## Process Flow

```mermaid
flowchart TD
    A[Caller requests Position by id] --> B{Generation exists?}
    B -- No --> C[Reject: POSITION_NOT_FOUND]
    B -- Yes --> D[Return Position: Department, Site, JobProfile, headcount, effectiveStart/End]
```

## External Dependencies

- [workforce::Position](../model/Position.md) model — entity being queried
- [workforce::JobProfile](../model/JobProfile.md) model — referenced by the position's `jobProfileId`

## Error Scenarios

- **POSITION_NOT_FOUND**: the specified Position does not exist

## Test Cases

- returns the Position generation when found by id
- returns NOT_FOUND when the id does not exist
- a returned Position includes its Department, JobProfile, and headcount
- a Position with no incumbent is returned successfully
