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

# Reconcile burn-in policy progress (internal)

> Reconcile one cursor-paged batch of burn-in policy-progress projection rows for a site/resource-class scope. A null next_cursor marks the final page, which also runs guarded cleanup of obsolete rows.



## OpenAPI

````yaml /openapi/fleet-manager-openapi.yaml post /api/v1/burn-in/policy-progress/reconcile/
openapi: 3.0.3
info:
  title: Fleet Manager API
  version: 1.0.0
  description: API for the Nscale Fleet Manager
servers: []
security: []
paths:
  /api/v1/burn-in/policy-progress/reconcile/:
    post:
      tags:
        - Burn-in
      summary: Reconcile burn-in policy progress (internal)
      description: >-
        Reconcile one cursor-paged batch of burn-in policy-progress projection
        rows for a site/resource-class scope. A null next_cursor marks the final
        page, which also runs guarded cleanup of obsolete rows.
      operationId: api_v1_burn_in_policy_progress_reconcile_create
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BurnInPolicyProgressReconcileRequest'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/BurnInPolicyProgressReconcileRequest'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/BurnInPolicyProgressReconcileRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BurnInPolicyProgressReconcileResponse'
          description: ''
        '400':
          description: Validation error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Authentication credentials were not provided or are invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: You do not have permission to perform this action.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - oauth2:
            - burn-in-policy-progress:write
        - cookieAuth: []
components:
  schemas:
    BurnInPolicyProgressReconcileRequest:
      type: object
      properties:
        site_slug:
          type: string
          pattern: ^[-a-zA-Z0-9_]+$
        satellite_name:
          type: string
        resource_class:
          type: string
          maxLength: 255
        gate:
          type: string
          nullable: true
          maxLength: 64
          pattern: ^[a-z0-9][a-z0-9._-]*$
        limit:
          type: integer
          maximum: 500
          minimum: 1
          default: 500
        cursor:
          type: string
          nullable: true
      required:
        - resource_class
        - satellite_name
        - site_slug
    BurnInPolicyProgressReconcileResponse:
      type: object
      properties:
        written:
          type: integer
          minimum: 0
        unchanged:
          type: integer
          minimum: 0
          description: >-
            Rows already matching the derived verdict (freshness bumped only),
            including rows skipped because a concurrent reconcile wrote fresher
            state.
        deferred:
          type: integer
          minimum: 0
          description: >-
            Targets left unwritten this page because their evaluation is not
            materialised yet — distinguishes 'all matched' from 'all waiting on
            phase-1 lag' so the agent can tune its retry cadence.
        deleted:
          type: integer
          minimum: 0
        guard_tripped:
          type: boolean
          description: >-
            True when end-of-sweep cleanup refused to delete rows whose target
            disappeared, because their count exceeded the deletion guard
            thresholds; those rows remain until a later sweep or operator
            intervention. Rows for requirements the policy has retired are
            deleted regardless, so a true guard_tripped can accompany a non-zero
            deleted count.
        next_cursor:
          type: string
          nullable: true
          description: Cursor for the next page; null marks the final page of the sweep.
        target_count:
          type: integer
          minimum: 0
          description: >-
            Total targets the policy expanded to across the whole sweep, not
            just this page. Zero means the policy loaded successfully but
            currently governs nothing (e.g. no enrolled devices carry its
            resource class) — the caller should surface that, since every other
            counter also reads zero in that state.
      required:
        - deferred
        - deleted
        - guard_tripped
        - next_cursor
        - target_count
        - unchanged
        - written
    ErrorResponse:
      type: object
      description: >-
        Uniform error body for every 4xx/5xx response. `detail` is a
        human-readable message, always present, safe to display to end users.
        `code` is the machine-readable identifier. `field_errors` lists
        per-input-field validation messages and is empty for non-field errors
        (auth, permission, not-found, conflict, server).
      required:
        - detail
        - code
        - field_errors
      properties:
        detail:
          type: string
        code:
          $ref: '#/components/schemas/ErrorCodeEnum'
        field_errors:
          type: array
          items:
            $ref: '#/components/schemas/FieldError'
    ErrorCodeEnum:
      type: string
      description: >-
        Stable machine-readable error identifier. New members may be added
        within this API version; clients must tolerate unknown values.
      enum:
        - error
        - invalid
        - parse_error
        - authentication_failed
        - not_authenticated
        - permission_denied
        - not_found
        - method_not_allowed
        - not_acceptable
        - unsupported_media_type
        - conflict
        - enrollment_infrastructure_reference_pending
        - enrollment_infrastructure_reference_changed
        - unprocessable_entity
        - throttled
        - service_unavailable
    FieldError:
      type: object
      description: One input field's validation messages.
      required:
        - field
        - messages
      properties:
        field:
          type: string
          description: >-
            Dotted path to the offending input field, or to the collection row
            when the whole row is invalid (e.g. `filters.end_date`,
            `memberships.0.role`, `memberships.0`).
        messages:
          type: array
          minItems: 1
          items:
            type: string
  securitySchemes:
    oauth2:
      type: oauth2
      flows: {}
    cookieAuth:
      type: apiKey
      in: cookie
      name: sessionid

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.