openapi: 3.0.0
info:
  title: Sandbox
  description: |
    Sandbox APIs for Zoho Books.

    These APIs help administrators manage **Sandbox environments** that are used to safely test configuration and feature changes before pushing them to the production organization. Sandboxes are also commonly used to test integrations/extensions in an isolated setup (see: [Test Extensions in Sandbox](https://www.zoho.com/books/developer/extensions/test-extensions.html)).

    ### Early access
    Sandbox is an early-access capability. Availability and behavior can vary by account/edition. Build automations (including MCP tools) should handle “not enabled / not available” responses gracefully.

    ### Concepts
    - **Sandbox as a test org copy**: A sandbox can be created as a copy of your original (production) Books organization. You can perform actions/configuration changes in the sandbox similarly to how you would in the production org, but in an isolated test environment.
    - **Production org vs Sandbox org**: Some endpoints act on sandbox configuration in the *production organization* context (create/update sandbox, list changes available to push, push changes). Other endpoints act inside the *sandbox organization* context (list changes inside sandbox, mark reviewed/unreviewed).
    - **Component changes**: A “change” represents a configuration/component modification that can be reviewed and optionally deployed to production.
    - **Review workflow**: Changes can be marked as reviewed/unreviewed to control readiness for deployment.

    ### Recommended MCP / AI workflows
    - **Discover sandboxes**: `GET /sandboxes`
    - **Inspect one sandbox**: `GET /sandboxes/{sandbox_id}`
    - **See what would be deployed**: `GET /sandboxes/{sandbox_id}/changes`
    - **Validate before deployment**: `POST /sandboxes/{sandbox_id}/changes/validatepush`
    - **Deploy to production**: `POST /sandboxes/{sandbox_id}/changes/push`
    - **Audit history**: `GET /sandboxes/logs`
    - **Inside sandbox org (triage/review)**:
      - `GET /sandboxes/changes`
      - `PUT /sandboxes/changes/markasreviewed` / `markasunreviewed`

    ### Notes for callers
    - These endpoints are **admin-only** and use `ZohoBooks.settings.*` scopes.
    - Treat IDs (`sandbox_id`, `change_ids`, `component_ids`) as opaque strings.
  contact: {}
  version: 1.0.0
servers:
  - url: https://www.zohoapis.com/books/v3
    description: API Endpoint
tags:
  - name: sandbox
    description: Sandbox Module
paths:
  /sandboxes:
    get:
      tags:
        - sandbox
      operationId: list_sandboxes
      summary: List all sandboxes
      description: |
        Get all sandbox configurations available for the production organization.

        Use this as the first step to obtain `sandbox_id` values for subsequent operations (view details, list changes, validate/push, rebuild, etc.).
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/sandboxes-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoBooks.settings.READ
    post:
      tags:
        - sandbox
      operationId: create_sandbox
      summary: Create a sandbox
      description: |
        Create a new sandbox in the production organization.

        Typical usage:
        - Create a sandbox for safe testing (configuration changes, integrations, extensions).
        - After creation, use `GET /sandboxes/{sandbox_id}` to verify status and `GET /sandboxes/{sandbox_id}/changes` once changes accumulate.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/sandbox-create-request'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/sandbox-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoBooks.settings.CREATE
  /sandboxes/{sandbox_id}:
    get:
      tags:
        - sandbox
      operationId: get_sandbox
      summary: Get a sandbox
      description: |
        Get configuration details of a particular sandbox.

        Use this to:
        - Confirm sandbox metadata (name/description/active status).
        - Validate that a `sandbox_id` from listing is still valid.
      parameters:
        - name: sandbox_id
          in: path
          required: true
          description: Unique identifier of the sandbox.
          schema:
            type: string
          example: '460000000026001'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/sandbox-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoBooks.settings.READ
    put:
      tags:
        - sandbox
      operationId: update_sandbox
      summary: Update a sandbox
      description: |
        Edit sandbox configurations (e.g., name/description).

        Use `GET /sandboxes/editpage` if you need UI-oriented edit context (such as share targets) before updating.
      parameters:
        - name: sandbox_id
          in: path
          required: true
          description: Unique identifier of the sandbox.
          schema:
            type: string
          example: '460000000026001'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/sandbox-create-request'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/sandbox-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoBooks.settings.UPDATE
    delete:
      tags:
        - sandbox
      operationId: delete_sandbox
      summary: Delete a sandbox
      description: |
        Delete the sandbox from the production organization.

        Notes:
        - Use `force_delete=true` only if you intend to delete the sandbox regardless of its current state.
        - Deleting a sandbox is destructive; consider auditing with `GET /sandboxes/logs` beforehand.
      parameters:
        - name: sandbox_id
          in: path
          required: true
          description: Unique identifier of the sandbox.
          schema:
            type: string
          example: '460000000026001'
        - name: force_delete
          in: query
          required: false
          description: Force delete the sandbox.
          schema:
            type: boolean
      responses:
        '200':
          description: OK
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoBooks.settings.DELETE
  /sandboxes/editpage:
    get:
      tags:
        - sandbox
      operationId: get_sandbox_edit_page
      summary: Get sandbox edit page details
      description: |
        Fetch edit-page context for a sandbox (production org context).

        Use this when building administrative tooling (or MCP actions) that needs:
        - Sandbox details used by edit UI
        - Sharing/visibility information (see `shared_to` in response)
      parameters:
        - name: sandbox_id
          in: query
          required: true
          description: Unique identifier of the sandbox.
          schema:
            type: string
          example: '460000000026001'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/sandbox-edit-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoBooks.settings.READ
  /sandboxes/{sandbox_id}/changes:
    get:
      tags:
        - sandbox
      operationId: list_sandbox_changes_production
      summary: List changes in production org
      description: |-
        Get all available component changes from the sandbox in the production organization context.
        This is the primary "what will be deployed?" API.
        Typical flow: - Call this to gather candidate `change_ids`. - Optionally validate with `POST /sandboxes/{sandbox_id}/changes/validatepush`. - Deploy with `POST /sandboxes/{sandbox_id}/changes/push`.
      parameters:
        - name: sandbox_id
          in: path
          required: true
          description: Unique identifier of the sandbox.
          schema:
            type: string
          example: '460000000026001'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/changes-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoBooks.settings.READ
  /sandboxes/{sandbox_id}/changes/validatepush:
    post:
      tags:
        - sandbox
      operationId: validate_push_changes
      summary: Validate push to production
      description: |
        Validate that the selected sandbox changes can be pushed to the production organization.

        Provide `change_ids` in the request body. Use the response to detect blockers/conflicts before attempting the actual push.
      parameters:
        - name: sandbox_id
          in: path
          required: true
          description: Unique identifier of the sandbox.
          schema:
            type: string
          example: '460000000026001'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/sandbox-sync-request'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/change-details-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoBooks.settings.CREATE
  /sandboxes/{sandbox_id}/changes/push:
    post:
      tags:
        - sandbox
      operationId: push_changes_to_production
      summary: Push changes to production
      description: |
        Deploy sandbox component changes to the production organization.

        Recommended flow:
        - Gather `change_ids` from `GET /sandboxes/{sandbox_id}/changes`
        - Validate using `POST /sandboxes/{sandbox_id}/changes/validatepush`
        - Push here with the same `change_ids`
      parameters:
        - name: sandbox_id
          in: path
          required: true
          description: Unique identifier of the sandbox.
          schema:
            type: string
          example: '460000000026001'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/sandbox-sync-request'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/changes-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoBooks.settings.CREATE
  /sandboxes/{sandbox_id}/status:
    put:
      tags:
        - sandbox
      operationId: update_sandbox_status
      summary: Activate or deactivate sandbox
      description: |
        Activate or deactivate a sandbox.

        Use this to temporarily disable sandbox usage without deleting it.
      parameters:
        - name: sandbox_id
          in: path
          required: true
          description: Unique identifier of the sandbox.
          schema:
            type: string
          example: '460000000026001'
        - name: active
          in: query
          required: true
          description: Set to true to activate, false to deactivate.
          schema:
            type: boolean
      responses:
        '200':
          description: OK
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoBooks.settings.UPDATE
  /sandboxes/{sandbox_id}/rebuild:
    put:
      tags:
        - sandbox
      operationId: rebuild_sandbox
      summary: Rebuild sandbox
      description: |
        Rebuild the sandbox.

        Use this when the sandbox needs to be refreshed/recreated from production state (exact behavior may vary by rollout and org settings).
      parameters:
        - name: sandbox_id
          in: path
          required: true
          description: Unique identifier of the sandbox.
          schema:
            type: string
          example: '460000000026001'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/sandbox-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoBooks.settings.UPDATE
  /sandboxes/logs:
    get:
      tags:
        - sandbox
      operationId: list_sandbox_deployment_logs
      summary: List deployment logs
      description: |-
        Fetch sandbox deployment logs (audit trail) from the production organization context.
        Use this to: - Audit pushes or sync operations - Trace who deployed what and when (optionally filter by `sandbox_id` or `user_id`) - Build "recent activity" views for admins and MCP tools.
      parameters:
        - name: page
          in: query
          required: false
          description: Page number.
          schema:
            type: integer
            default: 1
        - name: per_page
          in: query
          required: false
          description: Number of records per page.
          schema:
            type: integer
            default: 10
        - name: filter_by
          in: query
          required: false
          description: Filter for deployment logs.
          schema:
            type: string
        - name: from_date
          in: query
          required: false
          description: From date (YYYY-MM-DD).
          schema:
            type: string
            format: date
        - name: to_date
          in: query
          required: false
          description: To date (YYYY-MM-DD).
          schema:
            type: string
            format: date
        - name: sandbox_id
          in: query
          required: false
          description: Sandbox ID to filter logs.
          schema:
            type: string
        - name: user_id
          in: query
          required: false
          description: User ID to filter logs.
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/deployment-logs-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoBooks.settings.READ
  /sandboxes/changes:
    get:
      tags:
        - sandbox
      operationId: list_sandbox_changes_sandbox_org
      summary: List changes in sandbox org
      description: |
        Get all changes within the **sandbox organization** context.

        Use this when operating inside sandbox to triage what changed:
        - `change_type` is required (`new_changes` or `tested_changes`).
        - Optionally filter by `status` (e.g., already deployed vs pending).
      parameters:
        - name: change_type
          in: query
          required: true
          description: Type of changes (e.g. new_changes, tested_changes).
          schema:
            type: string
            enum:
              - new_changes
              - tested_changes
        - name: status
          in: query
          required: false
          description: Filter by deployment status (e.g. deployed, yet_to_be_deployed).
          schema:
            type: string
            enum:
              - deployed
              - yet_to_be_deployed
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/changes-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoBooks.settings.READ
  /sandboxes/changes/markasreviewed:
    put:
      tags:
        - sandbox
      operationId: mark_changes_as_reviewed
      summary: Mark changes as reviewed
      description: |
        Mark sandbox components/changes as reviewed (ready to deploy) in the sandbox org context.

        Provide `change_ids` and/or `component_ids` depending on what you are marking.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/sandbox-sync-request'
      responses:
        '200':
          description: OK
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoBooks.settings.UPDATE
  /sandboxes/changes/markasunreviewed:
    put:
      tags:
        - sandbox
      operationId: mark_changes_as_unreviewed
      summary: Mark changes as unreviewed
      description: |-
        Mark sandbox components or changes as unreviewed in the sandbox org context.
        Use this to revert "ready to deploy" status for the selected items.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/sandbox-sync-request'
      responses:
        '200':
          description: OK
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoBooks.settings.UPDATE
components:
  parameters: {}
  schemas:
    sandbox-create-request:
      type: object
      description: |
        Request body for creating or updating a sandbox.

        Note: The full set of accepted fields may expand over time as Sandbox evolves (early access). Clients should ignore unknown fields returned by the API.
      properties:
        name:
          type: string
          description: Name of the sandbox.
        description:
          type: string
          description: Description of the sandbox.
    sandbox-sync-request:
      type: object
      description: |
        Request body for sync-related operations:
        - Validate push (`/changes/validatepush`)
        - Push to production (`/changes/push`)
        - Mark reviewed/unreviewed (`/changes/markasreviewed`, `/changes/markasunreviewed`)

        Use `change_ids` when operating on whole changesets and `component_ids` when operating on specific components inside a change (as supported).
      properties:
        change_ids:
          type: array
          description: List of change IDs (from the changes listing APIs).
          items:
            type: string
        component_ids:
          type: array
          description: List of component IDs (primarily for mark as reviewed/unreviewed).
          items:
            type: string
    sandboxes-response:
      type: object
      properties:
        sandboxes:
          type: array
          description: List of sandbox configurations.
          items:
            $ref: '#/components/schemas/sandbox-details'
    sandbox-response:
      type: object
      properties:
        sandbox:
          $ref: '#/components/schemas/sandbox-details'
    sandbox-edit-response:
      type: object
      description: Edit page details for a sandbox (includes share targets in `shared_to` when applicable).
      properties:
        sandbox:
          $ref: '#/components/schemas/sandbox-details'
        shared_to:
          type: array
          description: Users/groups the sandbox is shared with.
          items:
            type: object
            properties:
              display_name_prefix:
                type: string
                description: Prefix for display name (e.g., "User" or "Group").
                example: User
              is_editable:
                type: boolean
                description: Indicates if the share target is editable.
                example: true
              shared_type:
                type: string
                description: Type of share target.
                example: user
              shared_type_formatted:
                type: string
                description: Formatted type of share target.
                example: User
              shared_id:
                type: string
                description: Unique identifier of the share target.
                example: '460000000012345'
              display_name:
                type: string
                description: Display name of the share target.
                example: John Doe
              permission:
                type: string
                description: Permission level for the share target.
                example: read
              is_portal_role:
                type: boolean
                description: Indicates if the share target is a portal role.
                example: false
    sandbox-details:
      type: object
      description: Sandbox configuration details (production org context).
      properties:
        sandbox_id:
          type: string
          description: Unique identifier of the sandbox.
        name:
          type: string
          description: Sandbox name.
        description:
          type: string
          description: Sandbox description.
        active:
          type: boolean
          description: Indicates whether the sandbox is active.
    changes-response:
      type: object
      properties:
        changes:
          type: array
          description: List of component changes.
          items:
            type: object
            properties:
              change_id:
                type: string
                description: Unique identifier of the change.
                example: '460000000098765'
              component_id:
                type: string
                description: Unique identifier of the changed component.
                example: '460000000054321'
              component_name:
                type: string
                description: Name of the changed component.
                example: Invoice Template
              action:
                type: string
                description: Type of change
                example: updated
              deployment_status:
                type: string
                description: Deployment status of the change.
                example: deployed
              module:
                type: string
                description: Module of the changed component.
                example: Invoice
              created_by:
                type: object
                description: Information about the user who made the change.
                properties:
                  user_id:
                    type: string
                    description: Unique identifier of the user.
                    example: '460000000012345'
                  zuid:
                    type: string
                    description: ZUID of the user.
                    example: '460000000012345'
                  name:
                    type: string
                    description: Name of the user.
                    example: John Doe
                  email:
                    type: string
                    description: Email of the user.
                    example: johndoe@example.com
                  role_id:
                    type: string
                    description: Unique identifier of the role of the user.
                    example: '460000000067890'
                  user_role:
                    type: string
                    description: Role of the user.
                    example: Admin
                  photo_url:
                    type: string
                    description: URL of the photo of the user.
                    example: https://example.com/photos/johndoe.jpg
              last_modified_by:
                type: object
                description: Information about the user who last modified the change.
                properties:
                  user_id:
                    type: string
                    description: Unique identifier of the user.
                    example: '460000000012345'
                  zuid:
                    type: string
                    description: ZUID of the user.
                    example: '460000000012345'
                  name:
                    type: string
                    description: Name of the user.
                    example: John Doe
                  email:
                    type: string
                    description: Email of the user.
                    example: johndoe@example.com
                  role_id:
                    type: string
                    description: Unique identifier of the role of the user.
                    example: '460000000067890'
                  user_role:
                    type: string
                    description: Role of the user.
                    example: Admin
                  photo_url:
                    type: string
                    description: URL of the photo of the user.
                    example: https://example.com/photos/johndoe.jpg
              created_time_formatted:
                type: string
                description: Formatted creation time of the change.
                example: '2024-01-01T12:00:00Z'
              last_modified_time_formatted:
                type: string
                description: Formatted last modified time of the change.
                example: '2024-01-02T15:30:00Z'
              component_description:
                type: string
                description: Description of the changed component.
                example: Invoice Template with updated terms and conditions.
              dependent_components:
                type: array
                description: List of components that depend on this change.
                items:
                  type: object
                  properties:
                    component_id:
                      type: string
                      description: Unique identifier of the dependent component.
                      example: '460000000054322'
                    component_type:
                      type: string
                      description: Type of the dependent component.
                      example: Template
    change-details-response:
      type: object
      properties:
        change_details:
          type: object
          description: Validation result for push.
    deployment-logs-response:
      type: object
      properties:
        deployment_logs:
          type: array
          description: List of deployment log entries.
          items:
            type: object
            properties:
              changeset_description:
                type: string
                description: Description of the changeset deployed.
                example: Deployment of 3 changes from sandbox "Test Sandbox".
              synced_time:
                type: string
                description: Time when the deployment occurred.
                example: '2024-01-03T10:00:00Z'
              component_details:
                type: array
                description: List of components included in the deployment.
                items:
                  type: object
                  properties:
                    component_description:
                      type: string
                      description: Description of the deployed component.
                      example: Invoice Template with updated terms and conditions.
                    component_id:
                      type: string
                      description: Unique identifier of the deployed component.
                      example: '460000000054321'
                    component_name:
                      type: string
                      description: Name of the deployed component.
                      example: Invoice Template
                    component_type:
                      type: string
                      description: Type of the deployed component.
                      example: Template
                    entity_type:
                      type: string
                      description: Entity type of the deployed component.
                      example: Invoice
                    action:
                      type: string
                      description: Type of change deployed.
                      example: updated
                    user_details:
                      type: object
                      description: Information about the user who deployed the logs.
                      properties:
                        user_id:
                          type: string
                          description: Unique identifier of the user.
                          example: '460000000012345'
                        zuid:
                          type: string
                          description: ZUID of the user.
                          example: '460000000012345'
                        name:
                          type: string
                          description: Name of the user.
                          example: John Doe
                        email:
                          type: string
                          description: Email of the user.
                          example: johndoe@example.com
                        role_id:
                          type: string
                          description: Unique identifier of the role of the user.
                          example: '460000000067890'
                        user_role:
                          type: string
                          description: Role of the user.
                          example: Admin
                        photo_url:
                          type: string
                          description: URL of the photo of the user.
                          example: https://example.com/photos/johndoe.jpg
                    sandbox_details:
                      type: object
                      description: Information about the sandbox from which the change originated.
                      properties:
                        sandbox_id:
                          type: string
                          description: Unique identifier of the sandbox.
                          example: '460000000026001'
                        sandbox_name:
                          type: string
                          description: Name of the sandbox.
                          example: Test Sandbox
                        zsid:
                          type: string
                          description: ZSID of the sandbox.
                          example: '460000000026001'
                        description:
                          type: string
                          description: Description of the sandbox.
                          example: Sandbox for testing invoice template changes.
                        status:
                          type: string
                          description: Status of the sandbox at the time of deployment.
                          example: active
                        status_formatted:
                          type: string
                          description: Formatted status of the sandbox.
                          example: Active
                        created_time:
                          type: string
                          description: Creation time of the sandbox.
                          example: '2024-01-01T12:00:00Z'
                        created_time_formatted:
                          type: string
                          description: Formatted creation time of the sandbox.
                          example: 01-01-2024 12:00:00
                        last_modified_time:
                          type: string
                          description: Last modified time of the sandbox.
                          example: '2024-01-02T15:30:00Z'
                        last_modified_time_formatted:
                          type: string
                          description: Formatted last modified time of the sandbox.
                          example: 02-01-2024 15:30:00
                        last_rebuild_time:
                          type: string
                          description: Last rebuild time of the sandbox.
                          example: '2024-01-02T20:00:00Z'
                        last_rebuild_time_formatted:
                          type: string
                          description: Formatted last rebuild time of the sandbox.
                          example: 02-01-2024 20:00:00
                        can_allow_rebuild:
                          type: boolean
                          description: Indicates if the sandbox can be rebuilt.
                          example: true
                        last_deployed_time:
                          type: string
                          description: Last deployed time of the sandbox.
                          example: '2024-01-03T10:00:00Z'
                        last_deployed_time_formatted:
                          type: string
                          description: Formatted last deployed time of the sandbox.
                          example: 03-01-2024 10:00:00
                        created_by:
                          type: object
                          description: Information about the user who created the sandbox.
                          properties:
                            user_id:
                              type: string
                              description: Unique identifier of the user.
                              example: '460000000012345'
                            zuid:
                              type: string
                              description: ZUID of the user.
                              example: '460000000012345'
                            name:
                              type: string
                              description: Name of the user.
                              example: John Doe
                            email:
                              type: string
                              description: Email of the user.
                              example: johndoe@example.com
                            role_id:
                              type: string
                              description: Unique identifier of the role of the user.
                              example: '460000000067890'
                            user_role:
                              type: string
                              description: Role of the user.
                              example: Admin
                            photo_url:
                              type: string
                              description: URL of the photo of the user.
                              example: https://example.com/photos/johndoe.jpg
                        last_modified_by:
                          type: object
                          description: Information about the user who last modified the sandbox.
                          properties:
                            user_id:
                              type: string
                              description: Unique identifier of the user.
                              example: '460000000012345'
                            zuid:
                              type: string
                              description: ZUID of the user.
                              example: '460000000012345'
                            name:
                              type: string
                              description: Name of the user.
                              example: John Doe
                            email:
                              type: string
                              description: Email of the user.
                              example: johndoe@example.com
                            role_id:
                              type: string
                              description: Unique identifier of the role of the user.
                              example: '460000000067890'
                            user_role:
                              type: string
                              description: Role of the user.
                              example: Admin
                            photo_url:
                              type: string
                              description: URL of the photo of the user.
                              example: https://example.com/photos/johndoe.jpg
                        shared_to:
                          type: array
                          description: Users/groups the sandbox is shared with.
                          items:
                            type: object
                            properties:
                              display_name_prefix:
                                type: string
                                description: Prefix for display name (e.g., "User" or "Group").
                                example: User
                              is_editable:
                                type: boolean
                                description: Indicates if the share target is editable.
                                example: true
                              shared_type:
                                type: string
                                description: Type of share target.
                                example: user
                              shared_type_formatted:
                                type: string
                                description: Formatted type of share target.
                                example: User
                              shared_id:
                                type: string
                                description: Unique identifier of the share target.
                                example: '460000000012345'
                              display_name:
                                type: string
                                description: Display name of the share target.
                                example: John Doe
                              permission:
                                type: string
                                description: Permission level for the share target.
                                example: read
                              is_portal_role:
                                type: boolean
                                description: Indicates if the share target is a portal role.
                                example: false
                        sandbox_url:
                          type: string
                          description: URL of the sandbox
                          example: https://test123.com
  securitySchemes:
    Zoho_Auth:
      type: oauth2
      flows:
        implicit:
          authorizationUrl: https://accounts.zoho.com/oauth/v2/auth
          scopes:
            ZohoBooks.settings.READ: Read Settings
            ZohoBooks.settings.CREATE: Create Settings
            ZohoBooks.settings.UPDATE: Update Settings
            ZohoBooks.settings.DELETE: Delete Settings
