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

# Preview an import before running it

> Count the upstream entities and detect conflicts with existing Orbit data for the selected source, so the wizard can show an accurate ETA and conflict count before the operator commits to a run. Post the encrypted credentials envelope and the entity kinds to import (optionally capping Twilio conversation history at 90 days); nothing is written. Use this in the wizard's "pick what to import" step, ahead of the run call.



## OpenAPI

````yaml /openapi.yaml post /api/v1/imports/{source}/dry-run
openapi: 3.1.0
info:
  title: Devotel CPaaS API
  description: Orbit by Devotel — Communications Platform as a Service API
  version: 1.0.0
  contact:
    name: Devotel
    url: https://devotel.io
    email: support@devotel.io
  license:
    name: Proprietary
servers:
  - url: https://api.orbit.devotel.io
    description: Production
security:
  - Bearer: []
  - ApiKey: []
tags:
  - name: Messages
    description: >-
      Send and manage messages across all channels (SMS, WhatsApp, RCS, Email,
      Viber, etc.)
  - name: Fax
    description: >-
      List and track fax (MMS/T.38) transmissions on Telnyx-backed fax numbers
      (sending flows through the Messaging API)
  - name: Agents
    description: AI agent creation, configuration, and execution
  - name: Voice
    description: Voice calls, IVR, conferencing, and SIP trunking
  - name: OnCall
    description: On-call rotations and escalation policy planning for incident alerting
  - name: Webhooks
    description: Webhook endpoint management and delivery logs
  - name: Numbers
    description: Phone number search, provisioning, and configuration
  - name: Brand Identity
    description: >-
      Unified cross-channel brand trust posture (10DLC, toll-free, WhatsApp,
      RCS, branded calling, number KYC)
  - name: Contacts
    description: Contact management, segmentation, and lifecycle tracking
  - name: Campaigns
    description: Marketing campaign orchestration and analytics
  - name: Flows
    description: Automation flow builder and execution engine
  - name: Templates
    description: Message template management and approval workflows
  - name: Settings
    description: Organization, channel, and user preference settings
  - name: Verify
    description: OTP generation and verification across channels
  - name: Push
    description: Push notification delivery via FCM and APNs
  - name: Integrations
    description: Third-party service connections and OAuth management
  - name: CDP
    description: >-
      Customer Data Platform — activation surface (CRM object sync, streaming
      destinations, ad-audience activation)
  - name: Files
    description: >-
      Server-to-server media upload, listing, retrieval, and deletion
      (signed-URL backed)
  - name: Commerce
    description: >-
      Omnichannel conversational-commerce — persistent cart + checkout state
      machine, channel-agnostic hosted pay-by-link, native WhatsApp checkout,
      and AP2-style agent payment mandates.
  - name: Sync
    description: >-
      Real-time shared-state primitive (Twilio Sync parity) — Documents, Maps,
      Lists, and ephemeral Streams, with change events relayed over the
      /api/v1/ws/sync WebSocket gateway
  - name: Risk
    description: >-
      Unified cross-channel Trust & Fraud risk scoring — fuses SMS-pumping,
      URL-reputation, Verify Fraud Guard, and Voice Biometrics signals into one
      composite verdict queryable before a send or a call.
  - name: Orby
    description: >-
      In-dashboard Orby operator assistant: streamed assistant turns,
      conversation threads, product knowledge-base search, and the tool-action
      approval gate. Available to signed-in operators only (dashboard session
      auth — API-key requests are rejected).
paths:
  /api/v1/imports/{source}/dry-run:
    post:
      tags:
        - Imports
      summary: Preview an import before running it
      description: >-
        Count the upstream entities and detect conflicts with existing Orbit
        data for the selected source, so the wizard can show an accurate ETA and
        conflict count before the operator commits to a run. Post the encrypted
        credentials envelope and the entity kinds to import (optionally capping
        Twilio conversation history at 90 days); nothing is written. Use this in
        the wizard's "pick what to import" step, ahead of the run call.
      parameters:
        - schema:
            type: string
          in: path
          name: source
          required: true
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - envelope
                - entities
              properties:
                envelope:
                  type: string
                  description: >-
                    Encrypted credentials envelope returned by the connect /
                    manual-credentials step.
                entities:
                  type: array
                  minItems: 1
                  maxItems: 10
                  items:
                    type: string
                  description: >-
                    Entity kinds to preview (e.g. `phone_numbers`, `contacts`,
                    `messaging_services`).
                conversationDays:
                  type: integer
                  minimum: 1
                  maximum: 90
                  description: >-
                    Optional lookback window for conversation history (Twilio
                    caps this at 90 days).
            example:
              envelope: enc:v1:pZ3k9x...redacted
              entities:
                - phone_numbers
                - contacts
              conversationDays: 90
      responses:
        '200':
          description: >-
            Per-entity counts, estimated duration, and detected conflicts for
            the selected source.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      source:
                        type: string
                      entities:
                        type: array
                        items:
                          type: object
                          properties:
                            kind:
                              type: string
                            estimatedCount:
                              type: integer
                              description: Estimated total rows in the upstream account.
                            knownConflicts:
                              type: integer
                              description: >-
                                Already-known conflicts on the Orbit side (e.g.
                                a number already claimed).
                      etaSeconds:
                        type: integer
                        description: >-
                          Estimated total runtime in seconds at the per-source
                          rate-limit budget.
                      generatedAt:
                        type: string
                        format: date-time
                  meta:
                    $ref: '#/components/schemas/ResponseMeta'
              example:
                data:
                  source: twilio
                  entities:
                    - kind: phone_numbers
                      estimatedCount: 128
                      knownConflicts: 3
                    - kind: contacts
                      estimatedCount: 5400
                      knownConflicts: 0
                  etaSeconds: 60
                  generatedAt: '2026-08-15T12:00:00Z'
                meta:
                  request_id: req_01J9Z8ABCDEF
                  timestamp: '2026-08-15T12:00:00Z'
        '404':
          description: Unknown import source.
        '422':
          description: The request body failed validation.
components:
  schemas:
    ResponseMeta:
      type: object
      required:
        - request_id
        - timestamp
      additionalProperties: false
      properties:
        request_id:
          type: string
          description: Unique request identifier (also returned as X-Request-Id header)
        timestamp:
          type: string
          format: date-time
        docs_url:
          type: string
          format: uri
          nullable: true
  securitySchemes:
    Bearer:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: Dashboard JWT token from Clerk
    ApiKey:
      type: apiKey
      name: X-API-Key
      in: header
      description: Server-to-server API key (dv_live_sk_*)

````