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

# List shifts

> Returns shifts for the MDT (most recently updated first).



## OpenAPI

````yaml /openapi.yaml get /mdts/{mdtId}/shifts
openapi: 3.1.0
info:
  title: Northca Partner API
  version: 1.1.0
  description: >-
    Partner-facing REST API for ER:LC and MC communities using Northca MDT.

    ## Response format

    All endpoints return JSON wrapped as:

    **Success**: `{ "ok": true, "data": ... }` **Error**: `{ "ok": false,
    "error": "..." }` 
servers:
  - url: https://api.northca.dev/v1
    description: Production (v1)
security:
  - PartnerKey: []
tags:
  - name: Link Requests
    description: >-
      Request and manage linking a Northca MDT to your ER:LC partner
      integration.
  - name: MDT Links
    description: List linked MDTs and unlink (owner-only) in a guild.
  - name: MDT Info
    description: Read public MDT configuration/info (map, departments, settings).
  - name: Calls
    description: Create, list, and update dispatch calls (CAD).
  - name: Scene Reports
    description: Create and list scene reports (incident summaries).
  - name: Shifts
    description: Create and list shifts (duty sessions).
  - name: Tickets
    description: Create and list unit tickets (tasks/citations/notes).
  - name: Active Units
    description: Upsert, list, delete active units, and trigger panic events (10-33).
paths:
  /mdts/{mdtId}/shifts:
    get:
      tags:
        - Shifts
      summary: List shifts
      description: Returns shifts for the MDT (most recently updated first).
      parameters:
        - $ref: '#/components/parameters/MdtId'
        - $ref: '#/components/parameters/XDiscordGuild'
        - $ref: '#/components/parameters/XDiscordActor'
        - $ref: '#/components/parameters/Limit'
        - name: department
          in: query
          required: false
          schema:
            type: string
          description: Optional department filter.
        - name: status
          in: query
          required: false
          schema:
            type: string
          description: Optional status filter.
      responses:
        '200':
          description: Array of shifts.
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/OkEnvelope'
                  - type: object
                    properties:
                      data:
                        type: array
                        items:
                          $ref: '#/components/schemas/Shift'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/ServerError'
components:
  parameters:
    MdtId:
      name: mdtId
      in: path
      required: true
      schema:
        type: string
      description: MDT ID.
      example: 0c7f6a0c-2c4f-4f44-b16a-2b6b8d8fe2c2
    XDiscordGuild:
      name: x-discord-guild
      in: header
      required: true
      schema:
        type: string
      description: Discord Guild ID (server/guild context for the request).
      example: '123456789012345678'
    XDiscordActor:
      name: x-discord-actor
      in: header
      required: false
      schema:
        type: string
      description: Discord User ID for the acting user (optional; used for audit fields).
      example: '222222222222222222'
    Limit:
      name: limit
      in: query
      required: false
      schema:
        type: integer
        minimum: 1
        maximum: 200
        default: 50
      description: Maximum number of results to return (capped at 200).
  schemas:
    OkEnvelope:
      type: object
      required:
        - ok
        - data
      properties:
        ok:
          type: boolean
          const: true
        data:
          description: Response payload.
          nullable: false
          type: object
          additionalProperties: true
    Shift:
      type: object
      description: Shift record.
      additionalProperties: true
      properties:
        id:
          type: string
        mdt_code:
          type: string
          nullable: true
        officer_name:
          type: string
          nullable: true
        officer_badge:
          type: string
          nullable: true
        status:
          type: string
          nullable: true
        start_time:
          type: string
          format: date-time
          nullable: true
        end_time:
          type: string
          format: date-time
          nullable: true
        duration_ms:
          type: integer
          nullable: true
        department:
          type: string
          nullable: true
        created_by_discord_id:
          type: string
          nullable: true
        updated_at:
          type: string
          format: date-time
          nullable: true
        created_at:
          type: string
          format: date-time
          nullable: true
    ErrorEnvelope:
      type: object
      required:
        - ok
        - error
      properties:
        ok:
          type: boolean
          const: false
        error:
          type: string
      additionalProperties: true
      example:
        ok: false
        error: Unauthorized
  responses:
    Unauthorized:
      description: Missing/invalid authentication or required headers.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorEnvelope'
          example:
            ok: false
            error: Unauthorized
    Forbidden:
      description: You do not have access to this resource in the provided guild context.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorEnvelope'
          example:
            ok: false
            error: MDT not linked to this guild
    ServerError:
      description: Internal server error.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorEnvelope'
  securitySchemes:
    PartnerKey:
      type: apiKey
      in: header
      name: x-partner-key
      description: Partner API key provided by Northca.

````