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

# Validate proposed setup without configuration effects

> At most 20 recommendations and 100 total members; bounded admission and a 20-second cooperative computation budget. Native validation determines createReady. Operational readiness remains not_verified. Returned commands and retry keys must be retained. forecastGroupKey links a scheduling recommendation to the exact reviewed forecast publication.



## OpenAPI

````yaml /api-reference/workforce/openapi.json post /api/v1/workforce/setup/preview
openapi: 3.1.0
info:
  title: Atlas workforce API
  version: 2026-10-preview
  description: >-
    Authenticated workforce staffing-to-draft operations. Released together with
    matching MCP operations. Deploy the reviewed native guard migrations before
    enabling this feature.
servers:
  - url: /
security:
  - AtlasIntegrationBearer: []
paths:
  /api/v1/workforce/setup/preview:
    post:
      summary: Validate proposed setup without configuration effects
      description: >-
        At most 20 recommendations and 100 total members; bounded admission and
        a 20-second cooperative computation budget. Native validation determines
        createReady. Operational readiness remains not_verified. Returned
        commands and retry keys must be retained. forecastGroupKey links a
        scheduling recommendation to the exact reviewed forecast publication.
      operationId: preview_workforce_setup
      parameters:
        - name: X-Workspace-Id
          in: header
          required: true
          schema:
            type: string
            format: uuid
          description: >-
            Selector within saved grants and current issuer authority; never
            grants authority.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WorkforceSetupPreview'
      responses:
        '200':
          description: >-
            Authorized native result. Configuration success does not establish
            operational readiness.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkforceSetupAssessment'
        '400':
          description: Missing or malformed transport fields
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Missing, invalid or expired bearer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Saved grant or current authority denied
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Scoped resource not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: Stale source/revision or conflicting request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '413':
          description: Body exceeds 64 KiB
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '422':
          description: Invalid or unsupported input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Concurrent compute limit; retry after 5 seconds
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '503':
          description: Required evidence or service unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    WorkforceSetupPreview:
      type: object
      properties:
        window:
          type: object
          properties:
            start:
              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|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
            end:
              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|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
            timezone:
              type: string
              minLength: 1
          required:
            - start
            - end
            - timezone
          additionalProperties: false
        recommendations:
          maxItems: 20
          type: array
          items:
            type: object
            properties:
              key:
                type: string
                minLength: 1
                maxLength: 100
              kind:
                type: string
                enum:
                  - forecast_group
                  - scheduling_group
              reason:
                type: string
                maxLength: 2000
              evidenceRefs:
                maxItems: 50
                type: array
                items:
                  type: string
                  minLength: 1
                  maxLength: 200
              assumptions:
                maxItems: 30
                type: array
                items:
                  type: string
                  maxLength: 1000
              configuration:
                type: object
                propertyNames:
                  type: string
                additionalProperties: {}
              forecastGroupKey:
                type: string
                minLength: 1
                maxLength: 100
              review:
                type: object
                properties:
                  planning:
                    type: object
                    properties:
                      from:
                        type: string
                      to:
                        type: string
                      timezone:
                        type: string
                      residualUnplannedShrinkage:
                        type: number
                        minimum: 0
                        exclusiveMaximum: 1
                      basis:
                        type: string
                        minLength: 1
                        maxLength: 2000
                      evidenceRefs:
                        minItems: 1
                        maxItems: 50
                        type: array
                        items:
                          type: string
                          minLength: 1
                          maxLength: 200
                    required:
                      - from
                      - to
                      - timezone
                      - residualUnplannedShrinkage
                      - basis
                      - evidenceRefs
                    additionalProperties: false
                  queues:
                    default: []
                    maxItems: 100
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          maxLength: 200
                        name:
                          type: string
                          maxLength: 2000
                        interactions:
                          anyOf:
                            - type: string
                              maxLength: 2000
                            - type: 'null'
                        handleTime:
                          anyOf:
                            - type: string
                              maxLength: 2000
                            - type: 'null'
                        calendar:
                          anyOf:
                            - type: string
                              maxLength: 2000
                            - type: 'null'
                        serviceTarget:
                          anyOf:
                            - type: string
                              maxLength: 2000
                            - type: 'null'
                        grain:
                          anyOf:
                            - type: string
                              maxLength: 2000
                            - type: 'null'
                        evidenceRefs:
                          minItems: 1
                          maxItems: 50
                          type: array
                          items:
                            type: string
                            minLength: 1
                            maxLength: 200
                      required:
                        - id
                        - name
                        - interactions
                        - handleTime
                        - calendar
                        - serviceTarget
                        - grain
                        - evidenceRefs
                      additionalProperties: false
                  people:
                    default: []
                    maxItems: 100
                    type: array
                    items:
                      type: object
                      properties:
                        name:
                          type: string
                          maxLength: 2000
                        personId:
                          anyOf:
                            - type: string
                              format: uuid
                              pattern: >-
                                ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
                            - type: 'null'
                        memberRequestKey:
                          anyOf:
                            - type: string
                              format: uuid
                              pattern: >-
                                ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
                            - type: 'null'
                        providerLink:
                          type: string
                          maxLength: 2000
                        workHandled:
                          type: string
                          maxLength: 2000
                        assignment:
                          type: string
                          maxLength: 2000
                        qualification:
                          type: string
                          maxLength: 2000
                        availability:
                          type: string
                          maxLength: 2000
                        exclusion:
                          anyOf:
                            - type: string
                              maxLength: 2000
                            - type: 'null'
                        evidenceRefs:
                          minItems: 1
                          maxItems: 50
                          type: array
                          items:
                            type: string
                            minLength: 1
                            maxLength: 200
                      required:
                        - name
                        - personId
                        - memberRequestKey
                        - providerLink
                        - workHandled
                        - assignment
                        - qualification
                        - availability
                        - exclusion
                        - evidenceRefs
                      additionalProperties: false
                  decisions:
                    default: []
                    maxItems: 20
                    type: array
                    items:
                      type: object
                      properties:
                        key:
                          type: string
                          maxLength: 100
                        question:
                          type: string
                          maxLength: 2000
                        explanation:
                          type: string
                          maxLength: 2000
                        field:
                          type: string
                          enum:
                            - calendar
                            - service_target
                            - context
                      required:
                        - key
                        - question
                        - explanation
                        - field
                      additionalProperties: false
                  evidence:
                    default: []
                    maxItems: 50
                    type: array
                    items:
                      type: object
                      properties:
                        summary:
                          type: string
                          maxLength: 2000
                        resultRefs:
                          minItems: 1
                          maxItems: 50
                          type: array
                          items:
                            type: string
                            minLength: 1
                            maxLength: 200
                      required:
                        - summary
                        - resultRefs
                      additionalProperties: false
                  reuses:
                    default: []
                    maxItems: 30
                    type: array
                    items:
                      type: string
                      maxLength: 2000
                additionalProperties: false
              members:
                default: []
                maxItems: 100
                type: array
                items:
                  type: object
                  properties:
                    request_key:
                      type: string
                      format: uuid
                      pattern: >-
                        ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
                    subject:
                      anyOf:
                        - type: object
                          properties:
                            person_id:
                              type: string
                              format: uuid
                              pattern: >-
                                ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
                          required:
                            - person_id
                          additionalProperties: false
                        - type: object
                          properties:
                            employment_assignment_id:
                              type: string
                              format: uuid
                              pattern: >-
                                ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
                          required:
                            - employment_assignment_id
                          additionalProperties: false
                    valid_from:
                      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|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                    valid_to:
                      default: null
                      anyOf:
                        - 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|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                        - type: 'null'
                    is_primary:
                      default: false
                      type: boolean
                    fte_weight:
                      default: 1
                      type: number
                      exclusiveMinimum: 0
                      maximum: 1
                    member_state:
                      default: active
                      type: string
                      enum:
                        - active
                        - on_leave
                        - in_training
                        - ramping
                    reason:
                      type: string
                      minLength: 1
                      maxLength: 2000
                  required:
                    - request_key
                    - subject
                    - valid_from
                    - reason
                  additionalProperties: false
            required:
              - key
              - kind
              - reason
              - evidenceRefs
              - assumptions
              - configuration
            additionalProperties: false
        issues:
          maxItems: 50
          type: array
          items:
            type: object
            properties:
              code:
                type: string
                maxLength: 120
              message:
                type: string
                maxLength: 2000
              category:
                type: string
                enum:
                  - decision
                  - staffing
                  - evidence
              reason:
                type: string
                enum:
                  - missing
                  - denied
                  - unavailable
                  - stale
                  - incomplete
                  - choice
              recommendationKeys:
                maxItems: 20
                type: array
                items:
                  type: string
                  maxLength: 100
              evidenceRefs:
                minItems: 1
                maxItems: 50
                type: array
                items:
                  type: string
                  minLength: 1
                  maxLength: 200
            required:
              - code
              - message
            additionalProperties: false
      required:
        - recommendations
        - issues
      additionalProperties: false
    WorkforceSetupAssessment:
      type: object
      properties:
        kind:
          const: workforce_setup_assessment
        workspaceId:
          type: string
          format: uuid
        revision:
          type: string
          format: uuid
        observedAt:
          type: string
          format: date-time
        recommendations:
          type: array
          maxItems: 20
          items:
            type: object
            properties:
              key:
                type: string
              kind:
                enum:
                  - forecast_group
                  - scheduling_group
              reason:
                type: string
              configuration:
                type: object
              command:
                type:
                  - object
                  - 'null'
                description: >-
                  Exact native command, including generated retry key and
                  captured source fingerprint. Null when validation fails.
              createReady:
                type: boolean
              operationalReadiness:
                const: not_verified
              issues:
                type: array
                items:
                  type: string
              evidenceRefs:
                type: array
                items:
                  type: string
              assumptions:
                type: array
                items:
                  type: string
              forecastGroupKey:
                type: string
              members:
                type: array
                maxItems: 100
                items:
                  $ref: '#/components/schemas/SchedulingMemberCreate'
              review:
                $ref: '#/components/schemas/WorkforceSetupReview'
            required:
              - key
              - kind
              - configuration
              - command
              - createReady
              - operationalReadiness
              - issues
              - members
        issues:
          type: array
          items:
            $ref: '#/components/schemas/WorkforceSetupFinding'
        window:
          $ref: '#/components/schemas/WorkforceAssessmentWindow'
      required:
        - kind
        - workspaceId
        - revision
        - observedAt
        - recommendations
        - issues
    Error:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
            message:
              type: string
            details: {}
          required:
            - code
            - message
          additionalProperties: false
      required:
        - error
      additionalProperties: false
    SchedulingMemberCreate:
      type: object
      properties:
        request_key:
          type: string
          format: uuid
          pattern: >-
            ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
        subject:
          anyOf:
            - type: object
              properties:
                person_id:
                  type: string
                  format: uuid
                  pattern: >-
                    ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
              required:
                - person_id
              additionalProperties: false
            - type: object
              properties:
                employment_assignment_id:
                  type: string
                  format: uuid
                  pattern: >-
                    ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
              required:
                - employment_assignment_id
              additionalProperties: false
        valid_from:
          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|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
        valid_to:
          default: null
          anyOf:
            - 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|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
            - type: 'null'
        is_primary:
          default: false
          type: boolean
        fte_weight:
          default: 1
          type: number
          exclusiveMinimum: 0
          maximum: 1
        member_state:
          default: active
          type: string
          enum:
            - active
            - on_leave
            - in_training
            - ramping
        reason:
          type: string
          minLength: 1
          maxLength: 2000
      required:
        - subject
        - valid_from
        - reason
      additionalProperties: false
    WorkforceSetupReview:
      type: object
      properties:
        planning:
          type: object
          properties:
            from:
              type: string
            to:
              type: string
            timezone:
              type: string
            residualUnplannedShrinkage:
              type: number
              minimum: 0
              exclusiveMaximum: 1
            basis:
              type: string
              minLength: 1
              maxLength: 2000
            evidenceRefs:
              minItems: 1
              maxItems: 50
              type: array
              items:
                type: string
                minLength: 1
                maxLength: 200
          required:
            - from
            - to
            - timezone
            - residualUnplannedShrinkage
            - basis
            - evidenceRefs
          additionalProperties: false
        queues:
          default: []
          maxItems: 100
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                maxLength: 200
              name:
                type: string
                maxLength: 2000
              interactions:
                anyOf:
                  - type: string
                    maxLength: 2000
                  - type: 'null'
              handleTime:
                anyOf:
                  - type: string
                    maxLength: 2000
                  - type: 'null'
              calendar:
                anyOf:
                  - type: string
                    maxLength: 2000
                  - type: 'null'
              serviceTarget:
                anyOf:
                  - type: string
                    maxLength: 2000
                  - type: 'null'
              grain:
                anyOf:
                  - type: string
                    maxLength: 2000
                  - type: 'null'
              evidenceRefs:
                minItems: 1
                maxItems: 50
                type: array
                items:
                  type: string
                  minLength: 1
                  maxLength: 200
            required:
              - id
              - name
              - interactions
              - handleTime
              - calendar
              - serviceTarget
              - grain
              - evidenceRefs
            additionalProperties: false
        people:
          default: []
          maxItems: 100
          type: array
          items:
            type: object
            properties:
              name:
                type: string
                maxLength: 2000
              personId:
                anyOf:
                  - type: string
                    format: uuid
                    pattern: >-
                      ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
                  - type: 'null'
              memberRequestKey:
                anyOf:
                  - type: string
                    format: uuid
                    pattern: >-
                      ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
                  - type: 'null'
              providerLink:
                type: string
                maxLength: 2000
              workHandled:
                type: string
                maxLength: 2000
              assignment:
                type: string
                maxLength: 2000
              qualification:
                type: string
                maxLength: 2000
              availability:
                type: string
                maxLength: 2000
              exclusion:
                anyOf:
                  - type: string
                    maxLength: 2000
                  - type: 'null'
              evidenceRefs:
                minItems: 1
                maxItems: 50
                type: array
                items:
                  type: string
                  minLength: 1
                  maxLength: 200
            required:
              - name
              - personId
              - memberRequestKey
              - providerLink
              - workHandled
              - assignment
              - qualification
              - availability
              - exclusion
              - evidenceRefs
            additionalProperties: false
        decisions:
          default: []
          maxItems: 20
          type: array
          items:
            type: object
            properties:
              key:
                type: string
                maxLength: 100
              question:
                type: string
                maxLength: 2000
              explanation:
                type: string
                maxLength: 2000
              field:
                type: string
                enum:
                  - calendar
                  - service_target
                  - context
            required:
              - key
              - question
              - explanation
              - field
            additionalProperties: false
        evidence:
          default: []
          maxItems: 50
          type: array
          items:
            type: object
            properties:
              summary:
                type: string
                maxLength: 2000
              resultRefs:
                minItems: 1
                maxItems: 50
                type: array
                items:
                  type: string
                  minLength: 1
                  maxLength: 200
            required:
              - summary
              - resultRefs
            additionalProperties: false
        reuses:
          default: []
          maxItems: 30
          type: array
          items:
            type: string
            maxLength: 2000
      additionalProperties: false
    WorkforceSetupFinding:
      type: object
      properties:
        code:
          type: string
          maxLength: 120
        message:
          type: string
          maxLength: 2000
        category:
          type: string
          enum:
            - decision
            - staffing
            - evidence
        reason:
          type: string
          enum:
            - missing
            - denied
            - unavailable
            - stale
            - incomplete
            - choice
        recommendationKeys:
          maxItems: 20
          type: array
          items:
            type: string
            maxLength: 100
        evidenceRefs:
          minItems: 1
          maxItems: 50
          type: array
          items:
            type: string
            minLength: 1
            maxLength: 200
      required:
        - code
        - message
      additionalProperties: false
    WorkforceAssessmentWindow:
      type: object
      additionalProperties: false
      required:
        - start
        - end
        - timezone
      properties:
        start:
          type: string
          format: date-time
        end:
          type: string
          format: date-time
        timezone:
          type: string
          description: Valid IANA history timezone
      description: >-
        Requested historical evidence window, strictly positive and at most 366
        elapsed days. Does not assert source completeness.
  securitySchemes:
    AtlasIntegrationBearer:
      type: http
      scheme: bearer
      bearerFormat: atlas_mcp_
      description: >-
        Existing Atlas integration connection with explicit api:connect plus
        appropriate native domain grants. atlas_ingest_ and browser cookies are
        not accepted.

````

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