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

# Preview a provisioning change

> Dry-run a provisioning configuration: report which members would be enabled vs disabled if it were applied. Writes nothing. Owner only.



## OpenAPI

````yaml /openapi.json post /v1/account/provisioning/preview
openapi: 3.0.3
info:
  title: Doozy Public API
  version: 1.0.0
  description: >-
    The Doozy Public API allows you to programmatically access your
    organization's data.


    ## Authentication


    All API requests require an API key passed in the `x-api-key` header.


    ```

    x-api-key: dzy_xxxxxxxx_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

    ```


    API keys can be generated and managed through the Doozy dashboard. Each key
    is associated with a user account and inherits that user's permissions.


    ## Rate Limiting


    API requests are rate limited. Rate limiting is handled by Cloudflare. If
    you exceed the rate limit, you'll receive a 429 Too Many Requests response.


    ## Pagination


    List endpoints support cursor-based pagination using `limit` and
    `starting_after` query parameters.
  contact:
    name: Doozy Support
    email: support@doozy.live
    url: https://help.doozy.live/api
servers:
  - url: https://api.doozy.live
    description: Production
security:
  - apiKey: []
tags:
  - name: Quizzes
    description: Quiz analytics and reporting endpoints
  - name: Tracks
    description: Track management and analytics endpoints
  - name: Surveys
    description: Survey and poll analytics endpoints
  - name: Introductions
    description: Doozy Roulette and Matchmaking introduction endpoints
  - name: Account
    description: 'Owner-only workspace settings: user provisioning and feature permissions'
paths:
  /v1/account/provisioning/preview:
    post:
      tags:
        - Account
      summary: Preview a provisioning change
      description: >-
        Dry-run a provisioning configuration: report which members would be
        enabled vs disabled if it were applied. Writes nothing. Owner only.
      parameters:
        - schema:
            type: string
            maxLength: 200
          required: false
          name: search
          in: query
        - schema:
            type: integer
            minimum: 1
            maximum: 100
          required: false
          name: limit
          in: query
        - schema:
            type: integer
            nullable: true
            minimum: 0
          required: false
          name: enable_offset
          in: query
        - schema:
            type: integer
            nullable: true
            minimum: 0
          required: false
          name: disable_offset
          in: query
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateAccountProvisioningBody'
      responses:
        '200':
          description: The projected impact of the change
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountProvisioningPreviewResponse'
        '400':
          description: Invalid request body
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Authentication required - missing API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Insufficient permissions - requires owner role
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - apiKey: []
components:
  schemas:
    UpdateAccountProvisioningBody:
      type: object
      properties:
        provisioning_mode:
          type: string
          enum:
            - automatic
            - manual
          description: >-
            automatic: the workspace enforces the rules and auto
            enables/disables members. manual: no automatic provisioning.
          example: automatic
        auto_disable_users:
          type: boolean
          description: >-
            Whether people removed or deactivated in Slack, or (in automatic
            mode) no longer matching the filters, lose access.
          example: true
        filters:
          type: object
          nullable: true
          properties:
            require_groups:
              type: array
              items:
                type: string
                minLength: 1
              maxItems: 200
              description: >-
                A member must belong to at least one of these group ids to be
                auto-provisioned. Empty/omitted means no group requirement.
              example:
                - engineering
                - sales
            require_hris_connection:
              type: boolean
              description: >-
                When true, a member must have a connected HRIS record to be
                auto-provisioned.
              example: false
          additionalProperties: false
      required:
        - provisioning_mode
        - auto_disable_users
      additionalProperties: false
    AccountProvisioningPreviewResponse:
      type: object
      properties:
        object:
          type: string
          enum:
            - account_provisioning_preview
          example: account_provisioning_preview
        enable_count:
          type: integer
        disable_count:
          type: integer
        unchanged_count:
          type: integer
        total_members:
          type: integer
        enable_match_count:
          type: integer
        disable_match_count:
          type: integer
        next_enable_offset:
          type: integer
          nullable: true
        next_disable_offset:
          type: integer
          nullable: true
        to_enable:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
              display_name:
                type: string
                nullable: true
              email:
                type: string
                nullable: true
              currently_enabled:
                type: boolean
              would_be_enabled:
                type: boolean
              reason:
                type: string
                description: Why the member's state would change (e.g. failed_filters).
            required:
              - id
              - display_name
              - email
              - currently_enabled
              - would_be_enabled
              - reason
          description: >-
            A page of members that would gain access. Use next_enable_offset to
            read the next page; enable_count is the exact total.
        to_disable:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
              display_name:
                type: string
                nullable: true
              email:
                type: string
                nullable: true
              currently_enabled:
                type: boolean
              would_be_enabled:
                type: boolean
              reason:
                type: string
                description: Why the member's state would change (e.g. failed_filters).
            required:
              - id
              - display_name
              - email
              - currently_enabled
              - would_be_enabled
              - reason
          description: >-
            A page of members that would lose access. Use next_disable_offset to
            read the next page; disable_count is the exact total.
      required:
        - object
        - enable_count
        - disable_count
        - unchanged_count
        - total_members
        - enable_match_count
        - disable_match_count
        - next_enable_offset
        - next_disable_offset
        - to_enable
        - to_disable
    ErrorResponse:
      type: object
      properties:
        error:
          type: object
          properties:
            type:
              type: string
              enum:
                - api_error
                - authentication_error
                - invalid_request_error
                - rate_limit_error
              description: The type of error returned
              example: invalid_request_error
            code:
              type: string
              nullable: true
              description: Machine-readable error code for specific error conditions
              example: resource_not_found
            message:
              type: string
              description: Human-readable error message
              example: 'No such quiz: quiz_abc123'
            param:
              type: string
              nullable: true
              description: The parameter related to the error, if applicable
              example: id
            doc_url:
              type: string
              format: uri
              description: URL to documentation about this error
              example: https://docs.doozy.live/api/errors#resource_not_found
          required:
            - type
            - code
            - message
      required:
        - error
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: x-api-key
      description: API key for authentication. Generate keys in the Doozy dashboard.

````

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